1. 场景介绍
有一台阿里云的云服务器,最近 “云盾 ● 态势感知” 报出了如下的安全告警:
1.1 使用 top
查看当前进程
可以看到,有个奇怪的进程,名字为 10 个随机的字母,PID 为 933:
通过
kill 933
杀掉该进程,随后又会出现另一个进程,名字为 10 个随机的字母,PID 为 28644:用 pstree
查看进程线程树。可以看到,有两个进程(vnpijaarhv
, xivxgsbduk
),分别有 3 个和 2 个线程,就是他们在发送 DDOS 攻击,占用带宽,并且相互守护的。
1.2 查看木马进程所在位置
Linux 在启动一个进程时,系统会在 /proc
下创建一个以 PID 命名的文件夹,在该文件夹下会有我们的进程的信息,这里我们使用 ls -l /proc/28644
来查看 vnpijaarhv
进程的信息:
可以看出木马源文件在
/usr/bin/vnpijaarhv
中。
用 lsof
查看某个路径下的进程列表 lsof /usr/bin/*
用 pidof
查看某个路径下进程的 PID pidof /usr/bin/*
1.3 查看网络端口
netstat -atpn
1.4 查看定时任务
通过 cat /etc/crontab
查看定时任务:
查看 /etc/cron.hourly/gcc.sh
文件内容:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libudev.so /lib/libudev.so.6
/lib/libudev.so.6
可以看出,libudev4.so
与 libudev4.so.6
均是木马源文件。
查看 /etc/cron.hourly/cron.sh
文件内容:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/udev/udev /lib/udev/debug
/lib/udev/debug
2. 清除木马
2.1 清除 cron 定时任务,删除开机启动脚本
删除 gcc4.sh
和 cron.sh
,清除 crontab 内容,并设置 /etc/crontab
无法写入,以免被修改:
rm -f /etc/cron.hourly/gcc.sh
rm -f /etc/cron.hourly/cron.sh
通过 vim 编辑 /etc/crontab
,删除 gcc4.sh
和 cron.sh
定时任务,并设置 /etc/crontab
无法写入,以免被修改:
chattr +i /etc/crontab
关于 chattr
命令,参见 http://www.runoob.com/linux/linux-comm-chattr.html
2.2 删除木马源文件
rm -f /lib/udev/udev
rm -f /lib/udev/debug
rm -f /lib/libudev4.so
rm -f /lib/libudev4.so.6
2.3 清理开机启动里的木马文件
使用 ls /etc/rc*/
查看开机启动内容:
有一堆 K90 和 S90 开头的乱码命名文件,这些开机脚本的作用是,开机后自动运行同名的木马,如果你没有把脚本清除掉的话,重启服务器后,木马还是会运行。
需要清除:
rm -f /etc/rc*/K90*
rm -f /etc/rc*/S90*
使用 ls /etc/rc*/init.d
查看开机启动内容:
删除
/etc/rc*/init.d
目录下的随机字串文件:
rm -f /etc/rc*/init.d/agentwatch
rm -f /etc/rc*/init.d/apxzkoukqb
rm -f /etc/rc*/init.d/bnplbunlet
rm -f /etc/rc*/init.d/cemsqpnbcs
rm -f /etc/rc*/init.d/cjgausrgiu
rm -f /etc/rc*/init.d/depquhrgag
rm -f /etc/rc*/init.d/dklngvgnhw
rm -f /etc/rc*/init.d/dxmllupadu
rm -f /etc/rc*/init.d/edclarqooe
rm -f /etc/rc*/init.d/gmktcgibxr
rm -f /etc/rc*/init.d/gsilpzdyez
rm -f /etc/rc*/init.d/jmuqktuusy
rm -f /etc/rc*/init.d/kacxxbksvd
rm -f /etc/rc*/init.d/kizteefnxe
rm -f /etc/rc*/init.d/kqrknfipll
rm -f /etc/rc*/init.d/lkqlswkgnq
rm -f /etc/rc*/init.d/mdxfyufhnq
rm -f /etc/rc*/init.d/ncvutytdsn
rm -f /etc/rc*/init.d/negfyfpcnm
rm -f /etc/rc*/init.d/netconsole
rm -f /etc/rc*/init.d/nvngadocun
rm -f /etc/rc*/init.d/nwidxmigxk
rm -f /etc/rc*/init.d/nxfyeyehwi
rm -f /etc/rc*/init.d/nyvbwgdgyp
rm -f /etc/rc*/init.d/oapzkeheej
rm -f /etc/rc*/init.d/oefsaiamkn
rm -f /etc/rc*/init.d/oiqoxafyrz
rm -f /etc/rc*/init.d/oukfvknmyn
rm -f /etc/rc*/init.d/pzgigylihx
rm -f /etc/rc*/init.d/srigtvzbco
rm -f /etc/rc*/init.d/tavmevogcc
rm -f /etc/rc*/init.d/uhsirkueac
rm -f /etc/rc*/init.d/uzwcznqrqz
rm -f /etc/rc*/init.d/vnpijaarhv
rm -f /etc/rc*/init.d/xcbwzwurkz
rm -f /etc/rc*/init.d/xivxgsbduk
rm -f /etc/rc*/init.d/yerrxlpxna
rm -f /etc/rc*/init.d/ystnrbffgf
rm -f /etc/rc*/init.d/yyqprcavxf
...
2.4 删除存于 /usr/bin/ 中的木马文件
使用 ls -lt /usr/bin/ | head
查看 /usr/bin/
中最近变动的文件:
删除十位随机字串木马:
rm -f /usr/bin/vnpijaarhv
rm -f /usr/bin/eaetzjhclf
2.5 重启服务并验证
重启阿里云服务器。
首先检查开机启动项,确保木马被清理:
ls /etc/rc*/
ls /etc/rc*/init.d
检查 cron 定时任务和木马源文件:
cat /etc/crontab
ls /etc/cron.hourly/gcc.sh
ls /etc/cron.hourly/cron.sh
ls /lib/udev/udev
ls /lib/udev/debug
ls /lib/libudev4.so
ls /lib/libudev4.so.6
通过 top
, lsof
查看木马是否还在运行:
top
lsof /usr/bin/*