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


14

我为〜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选择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也没有意义,因为重新启动后,会有一个新的(相同的)可执行文件版本。在获得所有这些信息之后,我有两个问题:我可以找出我是如何被感染的吗?我可以摆脱这个吗?先感谢您!


如果您的服务器已受到威胁,那么很难知道它是如何被感染的以及已完成的操作,因为入侵者很难篡改/删除日志文件。最佳实践是在其他位置进行日志文件的异地存储,因此,如果您的计算机受到感染,则至少会导致日志被盗用。最终,我认为您将需要重新安装-这是确保干净无感染的系统的唯一方法。

Answers:


24

我们在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过程。

1
/etc/rc6.d/上有一些错误的脚本,它们以K90开头
mazgalici 2016年

1
做一个find / -name "*rguoywvrf*"查找其他文件,替换rguoywvrf为您的文件名
Mohamed Hafez,2016年


3

要回答您的问题:

  1. 如果没有必要的预防措施(异地系统日志,IDS,日志监视等),您可能永远找不到所发生的事情。
  2. 我必须同意马特的观点。您将花费时间使您永远不会真正信任的机器运行。我认为,最好的解决方案是将数据移出现场并重做计算机。

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


1

这是一种由于发出DDOS攻击并在端口80上与外部服务器建立数千个连接而产生问题的威胁,但是我不会(无论是否有意)使连接超载,直到路由器/防火墙冻结(如果没有) DDOS攻击规则。

现在,如何消除这种威胁?

  1. 找到威胁,使用

Centos /红帽

ps -ely 

德比安

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服务器,在多用户模式下进行任何更改都是没有意义的,通常可以使用以下命令进行切换:

    telinit S

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

在Centos / Redhat中,程序是

步骤a)

cd /etc/init.d          
ll -tr 

最后一个命令以相反的日期顺序排列文件,您将在末尾看到最后一个或两个文件,它们的名称为

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中找到的文件

希望这对很多人有帮助。


您的答案可能难以阅读,因为它的格式似乎不正确。如果您需要帮助,帮助中心提供了有关正确格式化帖子的更多信息。
bwDraco

0

我发现了东西!

寻找/ etc / crontab

在我的服务器中,每3分钟执行一次cronjob以执行某项操作:

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

cat cron.sh

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libgcc.so /lib/libgcc.so.bak
/lib/libgcc.so.bak

我的解决方案:

  1. 禁用对/etc/init.d/ {/ usr} / bin / /lib/libgcc.so的权限(rwx 000)
  2. 删除/ etc / crontab中的cronjob条目
  3. 在/etc/cron.hourly/cron.sh中删除cron脚本
  4. 重新启动服务器

注意:文件位置可能会有所不同


0

补充Serhii解决方案的其他技巧。停止所有进程可能很困难,因为这件事会给网络和CPU造成垃圾邮件。因此,将此行添加到您的代码中,/etc/crontab以自动停止所有令人讨厌的进程(每三分钟停止名称中包含10个字符的所有进程):

*/3 * * * * root pstree -ap | grep -E -- '-[a-z]{10},' | cut -d, -f2 | xargs kill -STOP 2>/dev/null

这是清理之后要做的一件好事,以确保该过程不会返回。运行一段时间,直到确定您的盒子是干净的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.