xorddos变种病毒查杀记录

0x00 事件背景

前不久的某天,接到消息说xx服务器异常,现状是大量往外发包,当时还跑着其他重要业务,还不能停,所以情况比较紧急。通过排查分析,总算是解决了这个问题,我这就抛砖引玉的记录下排查分析过程及其过程中的一些坑,如有误的地方,请各位大佬多多指教。

0x01 现状分析

通过排查分析,发现当时情况如下:

1. 多个ssh连接及其多个连接历史记录,部分ip来自外国;
2. 4个ntpd进程占用cpu97%以上,并向外大量发包;
3. 网卡向外发送数据量多达6.8T之多;
4. 历史命令中发现下载病毒及操作命令;
5. 进程杀了过不了多久病毒会自动重启;
6. 开机启动项中存在病毒的定时启动脚本。

下面是部分图片:

1540359536604

0x02 找病毒

通过开启启动项发现如下信息:

1540362265106

1540360234845

将压缩包放到https://www.virustotal.com查毒得到如下结果:

根据进程查可疑文件位置:

  1. 查可疑进程pid: netstat、top、nethogs、lsof filename 等命令
  2. 根据pid查文件位置: ll /proc/pid

这里就不一一写详情了,直接上其他部分扫描结果:

0x03 自动杀毒

根据扫描的信息基本能够判断属于Ddos病毒,属于DdosXor变种,直接安装clamAV查杀试试:

安装clamAV杀毒软件:

apt-get install clamav

更新病毒库:

freshclam

全盘扫描:

sudo clamscan -r --remove --bell -i /

最终发现16个:

/lib/libudev.so: Unix.Trojan.DDoS_XOR-1 FOUND
/usr/bin/.sshd: Unix.Trojan.Agent-37008 FOUND
/usr/bin/chef: Unix.Trojan.Agent-37008 FOUND
/usr/bin/glitmtahmq: Unix.Trojan.DDoS_XOR-1 FOUND
/usr/bin/bsd-port/getty: Unix.Trojan.Agent-37008 FOUND
/usr/bin/bsd-port/knerl: Legacy.Trojan.Agent-1388639 FOUND
/usr/bin/lsof: Unix.Trojan.Agent-37008 FOUND
/bin/netstat: Unix.Trojan.Agent-37008 FOUND
/bin/ps: Unix.Trojan.Agent-37008 FOUND
/bin/ss: Unix.Trojan.Agent-37008 FOUND
/tmp/xm.tgz: Unix.Malware.Agent-1395346 FOUND
/etc/libstdc: Unix.Trojan.Agent-37008 FOUND
/root/xf123.1: Unix.Trojan.Agent-37008 FOUND
/root/xf123: Unix.Trojan.Agent-37008 FOUND
/mnt/.gosh/uctkone: Unix.Trojan.Agent-37008 FOUND
/mnt/uctkone: Unix.Trojan.Agent-37008 FOUND

这里可以看到netstat、ps、ss、lsof命令被替换及多个病毒。

由于病毒的多个守护进程导致杀毒软件无法杀死,杀了这个病毒文件立马生成新文件。

0x04 手动杀毒

根据扫出来的信息,虽然杀软不能杀干净,但检测出来了就很省事,先从简单的开始做,重装被替换的命令:

apt install procps

apt install iproute

apt install net-tools

apt install lsof

由于多个文件加了i属性,无法直接删除,需要手动去掉属性并删除,我以下面这个举例说明:

chattr -i /usr/bin/bsd-port/knerl

rm -rf /usr/bin/bsd-port/knerl

前面这些删除问题不大, 难点 在于文件删除后立马生成,无法删除:

/lib/libudev.so

这里直接写解决方案吧:

删定时启动脚本:rm -rf /etc/cron.hourly/gcc.sh
编辑定时启动内容:crontab -e
破坏libudev.so并+i属性不允许病毒修改 :
lsattr libudev.so
chattr -i libudev.so
echo fuck > libudev.so
chattr +i libudev.so
杀进程:
kill -9 【ntpd】的pid(现在就可以正常杀进程了)
另外发现类似的地方:
/lib/systemd/systemd-udevd

杀了这几个进程后,cpu立马降下来了:

正常来讲,后续的工作就是简单的去除下开机启动项、清理下残余文件就完了, 但是 ,没想到的是下面这个坑花了不少时间,先说下当时的情况,在下面多个目录有多个文件删了直接生成新的随机文件:

/etc/cron.hourly/niinxibu.sh (这些文件名都是随机生成的)

/usr/bin/glitmtahmq

/bin/kackzkpcy.sh

/etc/rc*.d/S90....

类似这样,删了立马出新文件:

1540363902010

关键是这些clamAV检测不到,由于是生成新的文件,这里就没办法用之前的方法破坏源文件并+i属性,就类似这样,不管是杀进程还是删文件或是改文件,只要有问题,病毒立马生成个新的;另外,此病毒有外连ip的操作:

1540364325479

最后,在说解决方案之前先说下关键点:

由于程序内部判断进程被杀或文件被删会触发自启动,这里改文件、杀进程行不通,那有没有一种方法可以在不杀进程的情况下删除文件?
​
答案是有的,我们可以通过停止进程而不是关闭进程来避免触发病毒自启动,这样进程停之后就解除了文件占用就可以正常删除病毒文件了。
​
停止进程命令是:kill -stop pid

下面是实际过程中的命令:

lsof /bin/yrphrvgclwpom

kill -stop 89777 ( 关键步骤 )

rm -rf yrphrvgclwpom

rm -rf mopwlcgvrhpry*

kill -9 89777

最后,病毒在 .ssh 目录下留了公钥,记得删除就好。

0x05 结语

通过此次应急响应,也算是一次学习和实践的过程,小弟才疏学浅,行文当中难免有误,望各位大佬不吝指教。另外,如有更好的解决方案,欢迎各位大佬多多交流。 最后,大家如有兴趣分析此病毒,可以找我拿样本。