我在 ~okeanos 服务的虚拟机上为学生团队维护了一个(完全更新的)Wordpress,已经好几年了。今天,帮助台通知我,我正在实施 DDoS 攻击,当然,我并没有这样做(这项服务与我的学术证书有关...)。在他们暂停了机器后,我攻击了他们的邮件系统,试图找出发生了什么。
首先,我运行一下ps -ej
来检查正在运行的内容:
root@snf-25181:~# ps -ej
1545 1545 1545 ? 00:00:00 console-kit-dae
1618 1057 1057 ? 00:00:00 gdm-session-wor
1632 1632 1632 ? 00:01:40 rghuoywvrf
1767 1767 1767 ? 00:00:00 sshd
1769 1769 1769 ? 00:00:00 systemd
1770 1769 1769 ? 00:00:00 (sd-pam)
1775 1767 1767 ? 00:00:00 sshd
1776 1776 1776 pts/0 00:00:00 bash
1849 1849 1776 pts/0 00:00:00 su
1870 1870 1776 pts/0 00:00:00 bash
2246 0 0 ? 00:00:00 kworker/0:0
2797 839 839 ? 00:00:00 apache2
3158 3158 3158 ? 00:00:00 bvxktwwnsb
3162 3162 3162 ? 00:00:00 bvxktwwnsb
3163 3163 3163 ? 00:00:00 bvxktwwnsb
3164 3164 3164 ? 00:00:00 bvxktwwnsb
3165 3165 1776 pts/0 00:00:00 ps
注意bvxktwwnsb和rguoywvrf
然后我做了一些事情ps aux
来获取服务(再次,尾部):
Debian-+ 1629 0.0 0.0 178300 4444 ? Sl 16:53 0:00 /usr/lib/dconf/dconf-service
root 1667 0.0 0.0 30744 4436 ? Ss 16:53 0:00 /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
root 1670 0.0 0.1 299588 9884 ? Ssl 16:53 0:00 /usr/lib/packagekit/packagekitd
root 1674 0.0 0.1 1055004 6168 ? Ssl 16:53 0:00 /usr/sbin/console-kit-daemon --no-daemon
www-data 1923 0.0 0.1 240964 8112 ? S 16:53 0:00 /usr/sbin/apache2 -k start
pankgeo+ 5656 0.0 0.0 27416 3424 ? Ss 17:03 0:00 /lib/systemd/systemd --user
pankgeo+ 5657 0.0 0.0 143108 2408 ? S 17:03 0:00 (sd-pam)
root 5893 0.0 0.1 102420 6428 ? Ss 17:04 0:00 sshd: pankgeorg [priv]
pankgeo+ 5904 0.1 0.0 102560 4128 ? S 17:04 0:02 sshd: pankgeorg@pts/0
pankgeo+ 5905 0.2 0.1 16816 6388 pts/0 Ss+ 17:04 0:04 -bash
root 7443 0.0 0.1 102420 6496 ? Ss 17:07 0:00 sshd: pankgeorg [priv]
pankgeo+ 7448 0.0 0.0 102552 4160 ? S 17:07 0:00 sshd: pankgeorg@pts/1
pankgeo+ 7449 0.0 0.1 16468 6228 pts/1 Ss+ 17:07 0:01 -bash
root 17351 0.0 0.0 0 0 ? S 17:15 0:00 [kworker/0:0]
root 18446 0.0 0.0 0 0 ? S 17:18 0:00 [kworker/0:2]
root 18488 0.1 0.0 0 0 ? S 17:18 0:01 [kworker/1:1]
root 22680 1.5 0.0 0 0 ? S 17:28 0:08 [kworker/1:0]
root 24173 0.0 0.1 102420 6416 ? Ss 17:31 0:00 sshd: pankgeorg [priv]
pankgeo+ 24181 0.3 0.0 102420 3360 ? S 17:31 0:01 sshd: pankgeorg@pts/2
pankgeo+ 24182 0.0 0.0 16480 6112 pts/2 Ss 17:31 0:00 -bash
root 25316 2.3 0.0 0 0 ? S 17:33 0:06 [kworker/1:2]
root 26777 0.0 0.0 0 0 ? S 17:35 0:00 [kworker/0:1]
root 26778 0.0 0.0 0 0 ? S 17:35 0:00 [kworker/0:3]
root 27300 0.0 0.0 1424 1040 ? Ss 17:38 0:00 cat resolv.conf #note
root 27306 0.0 0.0 1424 1036 ? Ss 17:38 0:00 gnome-terminal #from
root 27307 0.0 0.0 1424 1036 ? Ss 17:38 0:00 ifconfig eth0 #here
root 27308 0.0 0.0 1424 1040 ? Ss 17:38 0:00 id #(DDOS?)
root 27309 0.0 0.0 1424 1040 ? Ss 17:38 0:00 ifconfig
pankgeo+ 27315 0.0 0.0 11136 2044 pts/2 R+ 17:38 0:00 ps aux
注意项目[-4:-1]。然后我在网上找到了关于,chkconfig --list
所以我运行了它,然后弹出了以下内容:
root@snf-25181:/home/pankgeorg# chkconfig --list
acdnfhruvx 0:off 1:off 2:off 3:off 4:off 5:off 6:off
flyymwddwn 0:off 1:off 2:off 3:off 4:off 5:off 6:off
1 到 5 在哪里on
,但我把它们转过来了off
。然后我重新启动,它已经改名了。然后我locate
d 了,acdnfhruvx
弹出了以下内容:
root@snf-25181:~# locate acdnfhruvx
/etc/init.d/acdnfhruvx
/etc/rc1.d/S01acdnfhruvx
/etc/rc2.d/S01acdnfhruvx
/etc/rc3.d/S01acdnfhruvx
/etc/rc4.d/S01acdnfhruvx
/etc/rc5.d/S01acdnfhruvx
其中一个的内容(它们都是一样的):root@snf-25181:~# cat /etc/init.d/acdnfhruvx #!/bin/sh
chkconfig: 12345 90 90
description: acdnfhruvx
BEGIN INIT INFO
Provides: acdnfhruvx
Required-Start:
Required-Stop:
Default-Start: 1 2 3 4 5
Default-Stop:
Short-Description: acdnfhruvx
END INIT INFO
case $1 in
start)
/bin/acdnfhruvx
;;
stop)
;;
*)
/bin/acdnfhruvx
;;
esac
这是在重启后发现的,所以/bin/acdnfhruvx
没找到。后来我在/usr/bin
(我觉得我可以分享一下,如果你们当中有勇敢的人)找到了 exes(ELF 格式)
以下是我看到的机器在不知道来源的情况下执行的命令的详尽列表(来自连续的ps -ej
s 和ps aux
es):
root 27755 0.0 0.0 1424 1036 ? Ss 17:40 0:00 ifconfig
root 27759 0.0 0.0 1424 1036 ? Ss 17:40 0:00 who
root 27760 0.0 0.0 1424 1040 ? Ss 17:40 0:00 echo "find"
root 27761 0.0 0.0 1424 1036 ? Ss 17:40 0:00 top
root 27762 0.0 0.0 1424 1036 ? Ss 17:40 0:00 id
root 27805 0.0 0.0 1424 1036 ? Ss 17:40 0:00 gnome-terminal
root 27809 0.0 0.0 1424 1040 ? Ss 17:40 0:00 ifconfig
root 27810 0.0 0.0 1424 1044 ? Ss 17:40 0:00 sh
root 27811 0.0 0.0 1424 1040 ? Ss 17:40 0:00 sleep 1
root 27822 0.0 0.0 1424 1040 ? Ss 17:40 0:00 netstat -an
root 27826 0.0 0.0 1424 1036 ? Ss 17:40 0:00 top
root 27829 0.0 0.0 1424 1040 ? Ss 17:40 0:00 bash
root 27833 0.0 0.0 1424 1040 ? Ss 17:40 0:00 cd /etc
root 27834 0.0 0.0 1424 1040 ? Ss 17:40 0:00 whoami
root 27822 0.0 0.0 1424 1040 ? Ss 17:40 0:00 netstat -an
root 27826 0.0 0.0 1424 1036 ? Ss 17:40 0:00 top
root 27829 0.0 0.0 1424 1040 ? Ss 17:40 0:00 bash
root 27833 0.0 0.0 1424 1040 ? Ss 17:40 0:00 cd /etc
root 27834 0.0 0.0 1424 1040 ? Ss 17:40 0:00 whoami
pkill
ing 是没有意义的,因为它总是分叉,从中删除文件/etc/init.d/
,/{usr/,}bin
也是没有意义的,因为重新启动后会有一个新的(相同)可执行文件版本。在了解了所有这些信息后,我有两个问题:我能找出我是如何被感染的吗?我能摆脱它吗?提前谢谢您!
答案1
我们在 Suse 上也遭遇了类似的感染,可能是通过ssh 暴力登录。
清洁步骤如下:
检查文件
/etc/crontab
。你可能有一个条目每 3 分钟调用一次病毒*/3 * * * * root /etc/cron.hourly/cron.sh
删除此行。
- 确定病毒的父进程。
rguoywvrf
在您的 中ps -ej
。 其他进程被连续创建和终止。 - 阻止它,不要杀死它,
kill -STOP 1632
- 与其他人确认
ps -ej
只有父母活着,孩子应该很快就会死 /usr/bin
现在您可以删除和中的文件/etc/init.d
。该病毒的一些变种也使用/boot
或/bin
。用于ls -lt | head
查找最近修改过的文件。- 检查 中的脚本
/etc/cron.hourly/cron.sh
。在我们的服务器中,它正在 上调用病毒的另一个副本/lib/libgcc.so
。删除这两个文件。 - 现在您可以确定地终止该
rguoywvrf
进程。
答案2
回答您的问题:
- 如果没有采取必要的预防措施(异地系统日志、IDS、日志监控等),您可能永远都无法知道发生了什么。
- 我不得不同意 Matt 的观点。你会花时间让一台你永远不会真正信任的机器运行起来。在我看来,最好的解决方案是将数据移出现场并重新设置机器。
当然,这只是我的意见。不过,在重做机器时,你当然可以采取必要的预防措施,并在将来更好地保护自己。
答案3
这是一个会产生很多问题的威胁,因为它会发起 DDOS 攻击并在端口 80 上生成数千个到外部服务器的连接,但我不知道是否有意为之,如果没有 DDOS 攻击规则,它往往会使您的连接超载,直到路由器/防火墙冻结。
现在,你怎样才能消除这种威胁?
- 找到你的威胁,使用
Centos/红帽
ps -ely
Debian
ps -ej
你会看见:
3158 3158 3158 ? 00:00:00 bvxktwwnsb
3162 3162 3162 ? 00:00:00 bvxktwwnsb
3163 3163 3163 ? 00:00:00 bvxktwwnsb
3164 3164 3164 ? 00:00:00 bvxktwwnsb
“ bvxktwwnsb
“是你的目标
然后您需要在单用户模式下启动您的Linux服务器,在多用户模式下进行任何更改都是没有意义的,通常您可以使用以下命令切换:
特利尼特
之后你需要删除启动时运行的文件
在 Centos/Redhat 中,流程是
步骤a)
cd /etc/init.d
ll -tr
最后一个命令按日期倒序排列文件,你将在末尾看到最后 1 或 2 个文件,名称如下
acdnfhruvx
kmrkuwbrng
gqpjiestmf
bvxktwwnsb
你需要查看内容
cat /etc/init.d/gqpjiestmf
通常你会看到位于 /bin 或 /usr/sbin 中同名文件的执行
您需要删除这两个文件。
步骤b)
cd /etc/
ll -tr
检查你的 crontab 文件是否最近被更改,查看其内容,搜索一行
*/3 * * * * root /etc/cron.hourly/udev.sh
或者
*/3 * * * * root /etc/cron.hourly/crontab.sh
您需要编辑该文件并删除该行。
udev.sh
检查或的内容crontab.sh
,你会看到类似这样的内容
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp /lib/libgcc4.so /lib/libgcc4.4.so
/lib/libgcc4.4.so
您需要删除“libgcc4.4.so”文件或其中提到的任何其他文件(例如,更改权限也可以chmod a-x libgcc.so
)
重新启动服务器,一切就都好了。
对于 debian/ubuntu 和相关版本使用:
locate bvxktwwnsb
并删除 /etc 和 /bin 中的文件
希望这对很多人有帮助。
答案4
与 Serhii 解决方案互补的额外技巧。停止所有进程可能很困难,因为这个东西会浪费网络和 CPU。因此,将此行添加到您的程序中以/etc/crontab
自动停止所有讨厌的进程(每三分钟停止名称中包含 10 个字符的所有进程):
*/3 * * * * root pstree -ap | grep -E -- '-[a-z]{10},' | cut -d, -f2 | xargs kill -STOP 2>/dev/null
清理后最好这样做,以确保该过程不会再次发生。运行一段时间,直到您确定您的盒子已清理干净。