Linux下随机10字符病毒的清除

来源:互联网 发布:vb.net 表格控件 编辑:程序博客网 时间:2024/04/29 14:47

今天遇到连上网就CPU,网络爆满的情况,查看日志发现一直在启动/etc/cron.hourly/gcc.sh,然后去网上查了下,发现是中招了,最后按文章成功解决:)

其中许多是查找,解决基本上是删除gcc.sh等一些在init.d下的执行文件,还有crontab里的level3有个启动,再chattr +i /usr/bin锁定那些检测删除病毒主程序的东西,

这样就能rm删除掉主程序,find发现.Trash-0回收站里有被删除了本体,接着全部rm掉,最后chattr -i恢复后解决那些数字串的文件,查询一下就发现都被解决了!

后续:之后系统一直稳定,无意中又在log中发现启动gcc.sh,查询过去发现在lib64中也有2个文件,不过这2个比较好搞定,再将删除后在.Trash-0里的也删除,init.d下也生成了一个新执行文件也一并删除。 看来得养成常看日志的好习惯阿委屈



病毒表现:
网络流量暴满,疯狂地向香港的一个IP发数据,同时在top里面表现为随机的10位字母的进程,看/proc里面的信息,则为ls,cd之类常见的命令,CPU利用率也在top之首。杀死该进程后,会再随机产生一个新的进程。

查找步骤:
一、/proc/_pid/cmdline里面都是伪造的信息,ps显示的内容也一样,基本上为下面一些常见的命令,混淆管理员眼光查询线索,核验这一个,可以尝试把who等不常见的命令禁用执行权限,但随后却会发现该命令不停地出现在ps -Af里面:

gnome-terminal
ls -a
route -n
netstat -antop
ifconfig
sh
cd /etc
bash
who
cat resolv.conf
ps -ef
cat resolv.conf


由于大量的流量,先用iptables封住该IP,tcp连接不上后,它会改用udp向外发送,发送不出去后会进入监听状态,端口可以见下面的lsof结果。

二、ps -AfH,显示为以上的命令,但是ppid(父id)为1,则为init,所以这个应该是跟某个服务相关的。

ps -AfH
root     17796     1  0 11:54 ?        00:00:00   route -n
root     18008     1  0 11:55 ?        00:00:00   netstat -antop
root     18011     1  0 11:55 ?        00:00:00   ifconfig
root     18014     1  0 11:55 ?        00:00:00   sh
root     18015     1  0 11:55 ?        00:00:00   cd /etc
root     18016     1  0 11:55 ?        00:00:00   bash
root     18028     1  0 11:55 ?        00:00:00   who
root     18031     1  0 11:55 ?        00:00:00   cat resolv.conf
root     18033     1  0 11:55 ?        00:00:00   ps -ef


用pstree可以看到真实的名字:

|-irqbalance --pid=/var/run/irqbalance.pid
|-jbguikdekd
|-jbguikdekd
|-jbguikdekd
|-jbguikdekd
|-mingetty /dev/tty2
|-mingetty /dev/tty3
|-mingetty /dev/tty4
|-mingetty /dev/tty5
|-mingetty /dev/tty6


 lsof 也可以持到具体的信息,同时还可以看到一个到103.240.141.54的tcp连接。


三、在crontab的log里面,总显示执行了一个gcc.sh,经查找,是在/etc/cron.hourly/里面:

# cat /etc/cron.hourly/gcc.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/libudev.so /lib/libudev.so.6
/lib/libudev.so.6


从这个地方可以看到病毒本体:/lib/libudev.so,这个文件看起来应该是一个库文件,但是用file查看,这个文件则为一个可执行文件,请注意下面的两个文件,一个为executable(可执行的),另一个则为正常的共享库(shared object):

# file libudev.so
libudev.so: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped


正常的库文件应该为:

# file libutil-2.12.so
libutil-2.12.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped


把这个文件取消可执行权限,但是病毒故障依旧。


四、因为这个病毒不断自我启动,并且父进程号为1,所以应该和init有关,所以查看/etc/init.d,发现里面果然有启动项,删除之。在/etc/rc.d/rc3.d/里面,也有类似的好几个启动项,一并删除。
删除后,发现仍然不能杀死,杀死后马上重建一个新的,用lsof 查看:

# lsof -R  | grep "/usr/bin"
top        9512  9478      root  txt       REG      253,0    63856     421158 /usr/bin/top
fhmlrqtqv 17161     1      root  txt       REG      253,0   625729     393335 /usr/bin/fhmlrqtqvz
fgqnvqzzc 17226     1      root  txt       REG      253,0   625740     393427 /usr/bin/fgqnvqzzck (deleted)
fgqnvqzzc 17229     1      root  txt       REG      253,0   625740     393427 /usr/bin/fgqnvqzzck (deleted)
fgqnvqzzc 17232     1      root  txt       REG      253,0   625740     393427 /usr/bin/fgqnvqzzck (deleted)
fgqnvqzzc 17233     1      root  txt       REG      253,0   625740     393427 /usr/bin/fgqnvqzzck (deleted)
fgqnvqzzc 17234     1      root  txt       REG      253,0   625740     393427 /usr/bin/fgqnvqzzck (deleted)
# lsof -R
fhmlrqtqv 17161     1      root  cwd       DIR      253,0     4096          2 /
fhmlrqtqv 17161     1      root  rtd       DIR      253,0     4096          2 /
fhmlrqtqv 17161     1      root  txt       REG      253,0   625729     393335 /usr/bin/fhmlrqtqvz
fhmlrqtqv 17161     1      root    0u      CHR        1,3      0t0       4023 /dev/null
fhmlrqtqv 17161     1      root    1u      CHR        1,3      0t0       4023 /dev/null
fhmlrqtqv 17161     1      root    2u      CHR        1,3      0t0       4023 /dev/null
fhmlrqtqv 17161     1      root    3u     IPv4      50163      0t0        UDP *:57331
ynmsjtlpw 17272     1      root  cwd       DIR      253,0     4096          2 /
ynmsjtlpw 17272     1      root  rtd       DIR      253,0     4096          2 /
ynmsjtlpw 17272     1      root  txt       REG      253,0   625751     393426 /usr/bin/ynmsjtlpwp (deleted)
ynmsjtlpw 17272     1      root    0u      CHR        1,3      0t0       4023 /dev/null
ynmsjtlpw 17272     1      root    1u      CHR        1,3      0t0       4023 /dev/null
ynmsjtlpw 17272     1      root    2u      CHR        1,3      0t0       4023 /dev/null
ynmsjtlpw 17275     1      root  cwd       DIR      253,0     4096          2 /
ynmsjtlpw 17275     1      root  rtd       DIR      253,0     4096          2 /



五:再查init.d,发现在runlevel 3下有两个可疑的进程,这两个进程杀死后马上再启动,非常有嫌疑:

/usr/sbin/modem-manager
/usr/sbin/wpa_supplicant

但是经过仔细的追查,却发现是由NetworkManager来启动的,在/var/log/messages里面可以看到相关的记录(话说差点远程把NetworkManager给干掉了!)


六、再战lsof:
再次快速重复查看:# lsof -R  | grep "/usr/bin",发现主进程不变,总是产生几个辅进程,并且一直处于dedeted状态,这说明主进程会快速产生几个子进程,然后这些进程之间相互检测,一旦检测到病毒主体被删除或更改,就会再产生一个。

解决:
1、先删除掉init系统的启动项目,这样保证init不会主动启动病毒,同时这些监控进程不去检测init中的项目是否被删除,否则又会加大点麻烦;
2、再禁掉crontab里面的东西,保证不自动启动;
3、执行:chmod 000 /usr/bin/xxxxxxx && chattr +i /usr/bin
这个命令是复合命令,先禁止执行,再锁定/usr/bin,这样保证新产生的病毒写不到里面去。
4、杀掉主进程,删除病毒主体。
5、检查无误后,解开/usr/bin,删除掉可能产生的其他病毒体。


总结:
1、/proc里面的东西是可以更改的;
2、lsof还比较忠诚,不直接读取/proc里面的信息,ps看到的就不一定真实,top看到的进程还是正确的。

附:find -o参数就是逻辑运算的or
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ios王者荣耀闪退怎么办 ipad2玩游戏闪退怎么办 腌的生姜太咸了怎么办 机场行李拿错了怎么办 飞机行李拿错了怎么办 剑灵召唤兽死了怎么办 微信红包超10万怎么办 汽车被刮了油漆怎么办 车被轻微刮花了怎么办 车被故意刮花了怎么办 车子自己刮花了怎么办 刚买的新车刮了怎么办 40周胎盘才一级怎么办 没感情了想离婚怎么办 对老公没感情了怎么办 和老公没感情了怎么办 跟老公没感情了怎么办 对老公感情淡了怎么办 和老公感情淡了怎么办 脖子又短又粗怎么办 18岁胸越来越小怎么办 觉得自己变丑了怎么办 我的皮肤很黑怎么办 喝老婆奶水会硬怎么办 真的很讨厌老公怎么办 老婆很讨厌我了怎么办 2岁泰迪牙齿掉了怎么办 4岁泰迪门牙掉了怎么办 种牙寿命结束后怎么办 后面的牙齿掉了怎么办 门牙齿掉了一颗怎么办 隆鼻后鼻头歪了怎么办 狗狗呕吐有虫子怎么办 狗狗呕吐出虫子怎么办 借债人无力还钱怎么办 微博被盗用了怎么办 我的眼袋很严重怎么办 怀孕了吐的很厉害怎么办 老婆怀孕吐的很厉害怎么办 孕妇6个月肚子疼怎么办 孕妇7个月肚子疼怎么办