问题现象
内存被吃的很满,top 之后发现始终有僵尸线程在占用大量资源,kill 之后又会重新起来一个。
1. 检查恶意进程及非法端口
可以看到 ESTABLISHED 状态的网络连接:
1 2 3
| tcp 0 0 10.0.0.8:52860 104.168.71.132:80 ESTABLISHED 24031/bashirc tcp 0 0 10.0.0.8:37602 185.156.179.225:80 ESTABLISHED 778145/kdevtmpfsi tcp 0 0 10.0.0.8:56536 194.5.249.24:8080 ESTABLISHED 777784/dbused
|
其中端口 52860, 37602, 56536 等都是非法的,到云服务商安全组中重新设置,只对外开放 22 端口,关闭其他端口。
百度异常 IP,发现:
1 2 3 4
| 104.168.71.132 美国纽约布法罗 185.156.179.225 俄罗斯莫斯科 209.141.40.190 美国内华达拉斯维加斯 194.5.249.24 罗马尼亚
|
明显 IP 地址有问题。
2. 解决方案
2.1 解决 kdevtmpfsi 矿机问题
参考:记一次服务器被 kdevtmpfsi 变矿机
查找矿机进程和守护进程:
1 2
| find / -name kinsing find / -name kdevtmpfsi
|
找到 /etc/kinsing,对此文件进行删除,之后 kill -9 PID 杀死进程。
查看网络状态:
查看 crond 服务状态,如果是他定时拉取木马,是否可以停止此服务再清理病毒文件呢?
1 2 3 4 5
| service crond status
service crond stop
ps -ef | grep cron
|
修改 SSH 的 22 端口增加端口 23148,先保留 22,新端口测试通后再去除 22:
1 2 3 4 5 6 7 8 9
| vim /etc/ssh/sshd_config
Port 22 Port 23148
systemctl restart sshd.service
|
修改云服务商安全组,增加 23148,本地防火墙开放 23148 端口,本地 SSH 访问成功。
2.2 解决 dbused 矿机问题
处理逻辑:
1. 查看进程中是否有 dbused
2. 查看服务器的网络链接情况
可以看到 dbused 的进程在链接网络。
3. 查看定时任务,停止 crond 定时服务
看到其中有矿机的定时任务,接下来研究怎么清除。
停止 crond 服务:
1 2 3 4
| service crond status
service crond stop
|
cron 服务虽然停止,但已经启动的定时 job 其实还是在运行的,这个时候就要手动通过 top -c 和 netstat -antop 命令查找到矿机 PID,通过 kill -9 xxxx 干掉,之后执行如下脚本,清理掉矿机程序相关文件,避免死灰复燃再下载矿机程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| chattr -ia /var/spool/cron/crontabs/root rm -f /var/spool/cron/crontabs/root chattr -ia /etc/cron.d/apache~ rm -f /etc/cron.d/apache~ chattr -ia /etc/cron.d/root rm -f /etc/cron.d/root chattr -ia /etc/cron.d/nginx rm -f /etc/cron.d/nginx chattr -ia /etc/cron.hourly/pwnrig rm -rf /etc/cron.hourly/pwnrig chattr -ia /var/spool/cron/root rm -f /var/spool/cron/root chattr -ia /etc/cron.hourly/oanacroner rm -f /etc/cron.hourly/oanacroner chattr -ia /etc/cron.weekly/pwnrig rm -rf /etc/cron.weekly/pwnrig chattr -ia /etc/cron.d/pwnrig rm -rf /etc/cron.d/pwnrig chattr -ia /etc/cron.monthly/pwnrig rm -rf /etc/cron.monthly/pwnrig chattr -ia /etc/cron.daily/pwnrig rm -rf /etc/cron.daily/pwnrig chattr -ia /etc/cron.d/apache rm -f /etc/cron.d/apache chattr -ia /etc/rc.d/init.d/pwnrig rm -rf /etc/rc.d/init.d/pwnrig chattr -ia /etc/systemd/system/multi-user.target.wants/pwnrige.service rm -rf /etc/systemd/system/multi-user.target.wants/pwnrige.service chattr -ia /usr/lib/systemd/system/pwnrigl.service rm -rf /usr/lib/systemd/system/pwnrigl.service chattr -ia /etc/systemd/system/pwnrige.service rm -rf /etc/systemd/system/pwnrige.service chattr -ia /bin/bprofr rm -rf /bin/bprofr chattr -ia /bin/sysdr rm -rf /bin/sysdr chattr -ia /bin/crondr rm -rf /bin/crondr chattr -ia /bin/initdr rm -rf /bin/initdr chattr -ia /usr/bin/bprofr rm -rf /usr/bin/bprofr chattr -ia /usr/bin/sysdr rm -rf /usr/bin/sysdr chattr -ia /usr/bin/crondr rm -rf /usr/bin/crondr chattr -ia /usr/bin/initdr rm -rf /usr/bin/initdr rm -rf /tmp/dbused rm -rf /tmp/dbusex rm -rf /tmp/xms rm -rf /tmp/x86_ rm -rf /tmp/i rm -rf /tmp/go rm -rf /tmp/x64b rm -rf /tmp/x32bchattr
|
检查是否还有矿机相关文件,如果没有再查看 top -c 和 netstat -antop。如果都没有可疑进程,说明已经清除;如果还有,再从头来一遍,操作速度要快,不等矿机程序下载恶意代码就杀死 PID,清除恶意文件。
1 2 3
| find /etc/ -name '*' | xargs grep 'xms' -n 2>/dev/null | grep init.d find /etc/ -name '*' | xargs grep 'dbuse' -n 2>/dev/null | grep init.d find /etc/ -name '*' | xargs grep 'dbuse' -n 2>/dev/null | grep systemd
|
确认清理干净后,再启动 crond 服务:
1 2 3 4
| service crond start
service crond status
|
参考资料