Debian 8 VM Web 服务器上的 DDoS 病毒感染(作为 unix 服务)

Debian 8 VM Web 服务器上的 DDoS 病毒感染(作为 unix 服务)

我在 ~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。然后我重新启动,它已经改名了。然后我located 了,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 -ejs 和ps auxes):

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                        

pkilling 是没有意义的,因为它总是分叉,从中删除文件/etc/init.d//{usr/,}bin也是没有意义的,因为重新启动后会有一个新的(相同)可执行文件版本。在了解了所有这些信息后,我有两个问题:我能找出我是如何被感染的吗?我能摆脱它吗?提前谢谢您!

答案1

我们在 Suse 上也遭遇了类似的感染,可能是通过ssh 暴力登录

清洁步骤如下:

  1. 检查文件/etc/crontab。你可能有一个条目每 3 分钟调用一次病毒

    */3 * * * * root /etc/cron.hourly/cron.sh
    

    删除此行。

  2. 确定病毒的父进程。rguoywvrf在您的 中ps -ej。 其他进程被连续创建和终止。
  3. 阻止它,不要杀死它,kill -STOP 1632
  4. 与其他人确认ps -ej只有父母活着,孩子应该很快就会死
  5. /usr/bin现在您可以删除和中的文件/etc/init.d。该病毒的一些变种也使用/boot/bin。用于ls -lt | head查找最近修改过的文件。
  6. 检查 中的脚本/etc/cron.hourly/cron.sh。在我们的服务器中,它正在 上调用病毒的另一个副本/lib/libgcc.so。删除这两个文件。
  7. 现在您可以确定地终止该rguoywvrf进程。

答案2

回答您的问题:

  1. 如果没有采取必要的预防措施(异地系统日志、IDS、日志监控等),您可能永远都无法知道发生了什么。
  2. 我不得不同意 Matt 的观点。你会花时间让一台你永远不会真正信任的机器运行起来。在我看来,最好的解决方案是将数据移出现场并重新设置机器。

当然,这只是我的意见。不过,在重做机器时,你当然可以采取必要的预防措施,并在将来更好地保护自己。

答案3

这是一个会产生很多问题的威胁,因为它会发起 DDOS 攻击并在端口 80 上生成数千个到外部服务器的连接,但我不知道是否有意为之,如果没有 DDOS 攻击规则,它往往会使您的连接超载,直到路由器/防火墙冻结。

现在,你怎样才能消除这种威胁?

  1. 找到你的威胁,使用

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“是你的目标

  1. 然后您需要在单用户模式下启动您的Linux服务器,在多用户模式下进行任何更改都是没有意义的,通常您可以使用以下命令切换:

    特利尼特

  2. 之后你需要删除启动时运行的文件

在 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

清理后最好这样做,以确保该过程不会再次发生。运行一段时间,直到您确定您的盒子已清理干净。

相关内容