原文地址:https://blog.csdn.net/xpb1980/article/details/76647355

今天朋友说他一台要准备上线的生产服务器被挂马,特征ps命令找不到进程,top能看到负载最高的一个程序是一个随机的10位字母的东西,kill掉之后自动再次出现一个随机10位字母的进程。

我让他关闭这个机器的外网,内网放开,在局域网中给我一个跳板。等我拿到权限之后进入机器,先按照朋友说的验证了一遍,果然是那样,木马有自我保护自我恢复。

这时候我想到一个问题居然是能自我开机启动,要么/etc/rc.d/{init.d,rc{1,2,3,4,5}.d}/下有启动脚本,要么有cron计划任务。

于是我发现crontab -l是正常,来到/etc/rc.d/init.d下发现了异常有10位字母的启动脚本,脚本内容如下

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@Xd9BdoAkG ~] # cat /etc/rc.d/init.d/fregonnzkq
#!/bin/sh
# chkconfig: 12345 90 90
# description: fregonnzkq
### BEGIN INIT INFO
# Provides:        fregonnzkq
# Required-Start:   
# Required-Stop:   
# Default-Start:    1 2 3 4 5
# Default-Stop:       
# Short-Description:    fregonnzkq
### END INIT INFO
case $1  in
start)
     /usr/bin/fregonnzkq
     ;;
stop)
     ;;
*)
     /usr/bin/fregonnzkq
     ;;
esac

看到这我真是佩服这帮人单用户启动模式都不放过啊,尼玛,你这是赶尽杀绝啊。。。。。。。
到了这里我天真的删除了几个这样的启动脚本,然后重启服务器,问题依旧。。。。。。。。。你妹啊。。。不带这样玩的。。。。

到了这时候我多想了下,是不是还有启动脚本?仔细核查发现/etc/rc.d/rc3.d/下还有问题

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@Xd9BdoAkG rc3.d] # ls -lt
total 0
lrwxrwxrwx  1 root root 20 Sep  8 13:21 S90eviykluziy -> .. /init .d /eviykluziy
lrwxrwxrwx  1 root root 20 Sep  8 12:49 S90yuurxgembh -> .. /init .d /yuurxgembh
lrwxrwxrwx  1 root root 20 Sep  8 10:37 S90fregonnzkq -> .. /init .d /fregonnzkq
lrwxrwxrwx. 1 root root 15 Sep  7 14:08 S85nginx -> .. /init .d /nginx
lrwxrwxrwx. 1 root root 24 Sep  7 13:55 S99libvirt-guests -> .. /init .d /libvirt-guests
lrwxrwxrwx. 1 root root 19 Sep  7 13:55 S26haldaemon -> .. /init .d /haldaemon
lrwxrwxrwx. 1 root root 19 Sep  7 13:54 K10saslauthd -> .. /init .d /saslauthd
lrwxrwxrwx. 1 root root 20 Sep  7 13:54 S22messagebus -> .. /init .d /messagebus
lrwxrwxrwx. 1 root root 14 Sep  7 13:51 S55sshd -> .. /init .d /sshd
lrwxrwxrwx. 1 root root 18 Sep  7 13:51 K15svnserve -> .. /init .d /svnserve
lrwxrwxrwx. 1 root root 17 Sep  7 13:44 S10network -> .. /init .d /network
lrwxrwxrwx. 1 root root 17 Sep  7 13:44 S12rsyslog -> .. /init .d /rsyslog
lrwxrwxrwx. 1 root root 15 Sep  7 13:44 S90crond -> .. /init .d /crond
lrwxrwxrwx. 1 root root 19 Sep  7 13:44 K75udev-post -> .. /init .d /udev-post
lrwxrwxrwx. 1 root root 17 Sep  7 13:44 K30postfix -> .. /init .d /postfix
lrwxrwxrwx. 1 root root 15 Sep  7 13:44 K75netfs -> .. /init .d /netfs
lrwxrwxrwx. 1 root root 19 Sep  7 13:44 K85mdmonitor -> .. /init .d /mdmonitor
lrwxrwxrwx. 1 root root 22 Sep  7 13:44 K99lvm2-monitor -> .. /init .d /lvm2-monitor
lrwxrwxrwx. 1 root root 15 Sep  7 13:44 K80kdump -> .. /init .d /kdump
lrwxrwxrwx. 1 root root 18 Sep  7 13:44 K92iptables -> .. /init .d /iptables
lrwxrwxrwx. 1 root root 19 Sep  7 13:44 K92ip6tables -> .. /init .d /ip6tables
lrwxrwxrwx. 1 root root 20 Sep  7 13:44 K90eyshcjdmzg -> .. /init .d /eyshcjdmzg
lrwxrwxrwx. 1 root root 26 Sep  7 13:44 K75blk-availability -> .. /init .d /blk-availability
lrwxrwxrwx. 1 root root 16 Sep  7 13:44 K88auditd -> .. /init .d /auditd
lrwxrwxrwx. 1 root root 17 Sep  7 13:37 K75ntpdate -> .. /init .d /ntpdate
lrwxrwxrwx. 1 root root 20 Sep  7 12:15 K50netconsole -> .. /init .d /netconsole
lrwxrwxrwx. 1 root root 11 Sep  7 12:15 S99local -> .. /rc . local
lrwxrwxrwx. 1 root root 15 Sep  7 12:15 K89rdisc -> .. /init .d /rdisc
lrwxrwxrwx. 1 root root 21 Sep  7 12:15 K87restorecond -> .. /init .d /restorecond

看到后我只想把这个木马的作者找到然后说收我做徒弟吧。。。。。。。。
于是我又很傻很天真的删除了这些启动脚本,并且kill了相关进程,希望的太阳没有升起,沉重的打击再次来临,木马再次自我复制自我运行了。。。。启动脚本再次出现了。。
我知道我进入了误区,重新想思路。。。

不知道为什么我瞬间想到了我遗漏了一个地方,cron,对。。。我是crontab -l 来查看的,还有个地方的cron任务不会在这个命令下出现/etc/cron.*

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
[root@Xd9BdoAkG ~] # cat /etc/crontab
SHELL= /bin/bash
PATH= /sbin : /bin : /usr/sbin : /usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
* /3 * * * * root  /etc/cron .hourly /gcc .sh

你妹啊 啊 啊 啊,不带这样玩的

1
2
3
4
5
6
[root@Xd9BdoAkG ~] # 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 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

1
2
3
4
5
6
[root@Xd9BdoAkG ~] # cat /proc/net/dev|grep :|awk -F: {'print $1'}
      lo
     em1
     em2
     em3
     em4

我擦,看到这,再次shit,你还知道主动启动网络和外面联系啊。。。。

1
2
[root@Xd9BdoAkG ~] # file /lib/libudev.so
/lib/libudev .so: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked,
  for GNU /Linux 2.6.9, not stripped

居然不是脚本什么的,想看文件具体内容暂时是没时间了。。。。。。。

到了这里我们可以确认有几个地方有问题/lib/libudev.so /etc/cron.hourly/gcc.sh /etc/crontab /etc/rc.d/init.d/ /etc/rc.d/rc3.d/

由于对方发送大量数据包,所以开始采取iptables来封禁,发现这玩意直接把output是 state 为new的drop掉。。。。。。。。不想说了,已经被他玩够了,不在乎多一次。。

通过排查可以肯定/lib/libudev.so是主体。其他是协助运行和自我保护自我复制的实现。既然你是个程序还在系统上,我有root,还搞不定么。为了不再多拖时间,直接查杀了。。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
[root@Xd9BdoAkG ~] # chmod 0000 /lib/libudev.so && rm -rf /lib/libudev.so && chattr +i /lib/
#在一步一点要这样运行,不然赶不上木马的自我恢复速度。。。。。我在这里坑了很长时间。
[root@Xd9BdoAkG ~] # ls /lib/
cpp  firmware  kbd  modules  security  terminfo  udev
[root@Xd9BdoAkG ~] # ls /lib/
cpp  firmware  kbd  modules  security  terminfo  udev
[root@Xd9BdoAkG ~] # ls /lib/
cpp  firmware  kbd  modules  security  terminfo  udev
[root@Xd9BdoAkG ~] # ls /lib/
cpp  firmware  kbd  modules  security  terminfo  udev
[root@Xd9BdoAkG ~] # ls /lib/
cpp  firmware  kbd  modules  security  terminfo  udev
[root@Xd9BdoAkG ~] # ls /lib/
cpp  firmware  kbd  modules  security  terminfo  udev
##貌似主体被控制住了,不能再次自我恢复了。。。
[root@Xd9BdoAkG ~] # ls /etc/rc.d/rc3.d/ | awk '$7>=8 && $NF~/^K90/{print $NF}' |
 egrep '^.{10}$'| xargs -i rm -rf /etc/rc.d/rc3.d/{}
chmod 0000  /etc/rc .d /rc3 .d/ &&  chmod 0000  /etc/rc .d /init .d && chattr +i  /etc/rc .d /rc3 .d/ 
&& chattr +i  /etc/rc .d /init .d
#删除启动脚本 awk '$7>=8 && $NF~/^K90/{print $NF}' 这里的8是当天的日期8号的意思,写的不严紧,勿喷~~~
#且控制目录不能写东西了

1
2
[root@Xd9BdoAkG ~] # sed '/gcc.sh/d' /etc/crontab && chmod 0000 /etc/crontab 
&& chattr +i /etc/crontab
#删除计划任务且控制计划任务不能写东西

到了这里基本就差不多了。。。。。现在去重启服务器,

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@Xd9BdoAkG ~] # top -b -n1 | head
top - 18:13:47 up 0 min,  1 user,  load average: 0.11, 0.03, 0.01
Tasks: 178 total,   2 running, 176 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.4%us,  1.6%sy,  0.0%ni, 95.7% id ,  1.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32827160k total,   486308k used, 32340852k  free ,     6864k buffers
Swap: 16482300k total,        0k used, 16482300k  free ,    28312k cached
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                    
     1 root      20   0 19232 1512 1224 S  0.0  0.0   0:01.26 init                                                                       
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                   
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration /0                                                                
[root@Xd9BdoAkG ~] # top -b -n1 | head
top - 18:13:51 up 0 min,  1 user,  load average: 0.10, 0.03, 0.01
Tasks: 178 total,   1 running, 177 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.3%us,  1.5%sy,  0.0%ni, 96.0% id ,  1.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32827160k total,   486136k used, 32341024k  free ,     6872k buffers
Swap: 16482300k total,        0k used, 16482300k  free ,    28344k cached
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                    
  1414 root      20   0 15020 1232  872 R  2.0  0.0   0:00.01  top                                                                        
     1 root      20   0 19232 1512 1224 S  0.0  0.0   0:01.26 init                                                                       
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                   
[root@Xd9BdoAkG ~] # top -b -n1 | head
top - 18:14:15 up 1 min,  1 user,  load average: 0.06, 0.03, 0.01
Tasks: 178 total,   1 running, 177 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.8%us,  0.9%sy,  0.0%ni, 97.6% id ,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32827160k total,   483360k used, 32343800k  free ,     6900k buffers
Swap: 16482300k total,        0k used, 16482300k  free ,    28360k cached
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                    
     1 root      20   0 19232 1512 1224 S  0.0  0.0   0:01.26 init                                                                       
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                   
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration /0

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@Xd9BdoAkG ~] # ls /etc/cron.hourly/
0anacron
[root@Xd9BdoAkG ~] # ls -lt /etc/rc.d/rc3.d/
total 0
lrwxrwxrwx. 1 root root 15 Sep  7 14:08 S85nginx -> .. /init .d /nginx
lrwxrwxrwx. 1 root root 24 Sep  7 13:55 S99libvirt-guests -> .. /init .d /libvirt-guests
lrwxrwxrwx. 1 root root 19 Sep  7 13:55 S26haldaemon -> .. /init .d /haldaemon
lrwxrwxrwx. 1 root root 19 Sep  7 13:54 K10saslauthd -> .. /init .d /saslauthd
lrwxrwxrwx. 1 root root 20 Sep  7 13:54 S22messagebus -> .. /init .d /messagebus
lrwxrwxrwx. 1 root root 14 Sep  7 13:51 S55sshd -> .. /init .d /sshd
lrwxrwxrwx. 1 root root 18 Sep  7 13:51 K15svnserve -> .. /init .d /svnserve
lrwxrwxrwx. 1 root root 17 Sep  7 13:44 S10network -> .. /init .d /network
lrwxrwxrwx. 1 root root 17 Sep  7 13:44 S12rsyslog -> .. /init .d /rsyslog
lrwxrwxrwx. 1 root root 15 Sep  7 13:44 S90crond -> .. /init .d /crond
lrwxrwxrwx. 1 root root 19 Sep  7 13:44 K75udev-post -> .. /init .d /udev-post
lrwxrwxrwx. 1 root root 17 Sep  7 13:44 K30postfix -> .. /init .d /postfix
lrwxrwxrwx. 1 root root 15 Sep  7 13:44 K75netfs -> .. /init .d /netfs
lrwxrwxrwx. 1 root root 19 Sep  7 13:44 K85mdmonitor -> .. /init .d /mdmonitor
lrwxrwxrwx. 1 root root 22 Sep  7 13:44 K99lvm2-monitor -> .. /init .d /lvm2-monitor
lrwxrwxrwx. 1 root root 15 Sep  7 13:44 K80kdump -> .. /init .d /kdump
lrwxrwxrwx. 1 root root 18 Sep  7 13:44 K92iptables -> .. /init .d /iptables
lrwxrwxrwx. 1 root root 19 Sep  7 13:44 K92ip6tables -> .. /init .d /ip6tables
lrwxrwxrwx. 1 root root 26 Sep  7 13:44 K75blk-availability -> .. /init .d /blk-availability
lrwxrwxrwx. 1 root root 16 Sep  7 13:44 K88auditd -> .. /init .d /auditd
lrwxrwxrwx. 1 root root 17 Sep  7 13:37 K75ntpdate -> .. /init .d /ntpdate
lrwxrwxrwx. 1 root root 20 Sep  7 12:15 K50netconsole -> .. /init .d /netconsole
lrwxrwxrwx. 1 root root 11 Sep  7 12:15 S99local -> .. /rc . local
lrwxrwxrwx. 1 root root 15 Sep  7 12:15 K89rdisc -> .. /init .d /rdisc
lrwxrwxrwx. 1 root root 21 Sep  7 12:15 K87restorecond -> .. /init .d /restorecond

开机后发现进程没异常了,世界貌似平静了。。。。

然后再次恢复/etc/crontab /etc/rc.d/init.d/ /etc/rc.d/rc3.d/ /lib文件夹的权限。然后再次重启。。。。。世界真的清静。。。。

Linux之在CentOS上一次艰难的木马查杀过程相关推荐

  1. Linux之上一次艰难的木马查杀过程

    摘要 这次被挂马机器是朋友的一台要上线的生产机器,昨晚装的系统今天2点就挂马了.不说了都是泪,直接说说查杀过程吧. 今天朋友说他一台要准备上线的生产服务器被挂马,特征ps命令找不到进程,top能看到负 ...

  2. centos中bash占用cpu_Linux CentOS 进程CPU占用100%木马查杀过程

    在安装CentOS-6.9-x86_64-minimal.iso之后因为设置用户密码比较简单,并且没有修改默认的22远程端口,导致短时间被扫描入侵,然后服务器疯狂向外发包,因此被自己搞死过好几次别人的 ...

  3. linux服务器杀毒软件命令,悬镜Linux服务器卫士-木马查杀详解

    原标题:悬镜Linux服务器卫士-木马查杀详解 今天悬镜小编详细给大家讲解下悬镜管家中-木马查杀功能的使用情况. 对于WebShell的理解,"Web"显然需要服务器开放Web服务 ...

  4. 病毒木马查杀实战第026篇:“白加黑”恶意程序研究(上)

    前言 众所周知,传统的恶意程序都是由单一文件构成的.从而实现某一种或者几种恶意功能. 而这类的恶意程序为了避免被发现以及被查杀,往往会採用五花八门的自我隐藏技术以及免杀技术,病毒程序的作者非常多时候也 ...

  5. Linux下 XordDos(BillGates)木马查杀记录

    最近朋友的一台服务器突然网络异常,cpu占用率暴表,登录上去一查,cpu占用300% 左右,流量异常,经过看查进程,获取信息最终确认为中了dos木马,经过几天的研究,基本上已经清除,以下是清理记录. ...

  6. linux卸载beyondcompare,CentOS上运行BeyondCompare

    偶尔看到BeyondCompare这款优秀的Windows平台上的文件对比工具出了Linux版,于是抱着一定要在Linux上运行起来的想法开始了CentOS上的征程. 简单说一下操作系统,我的是Cen ...

  7. apache bench linux,linux – 如何在CentOS上安装Apache Benchmark?

    我尝试在我的centos上使用 Is there a way to install Apache Bench (ab) without installing apache解决方案安装Apache Be ...

  8. linux系统RootKit木马查杀

    rootkit是一种恶意软件通常和木马等其他恶意程序一起结合使用,而Linux是其重要的攻击对象. Rootkit木马的原理: 操作系统是由内核(kernel)和外壳(shell)两部分组成的,内核负 ...

  9. 无root 权限 linux安装 rar,centos上如何yum安装rar/unrar及手动安装最新rar

    这篇文章因为年代久远,因为部分源失效,导致不可用,最新的教程见Linux中安装rar [root@hello ~]# yum install unrar centos                 ...

最新文章

  1. 【翻译】将Ext JS Grid转换为Excel表格
  2. linux find命令格式及find命令详解
  3. 如何在Windows 8中更改登录屏幕的颜色
  4. Windows驱动—Windows应用程序和Windows驱动通信编程
  5. 明晚8点,捷微团队QQ群公开课,讲解jeewx2.0版本maven环境的搭建入门!
  6. JavaScript操作XML(IE6下)
  7. 利用支持MicroPython的TPYBoard开发板自制PM2.5检测仪(萝卜教育学科式编程)
  8. centos8搭建nsis交叉编译环境
  9. 人工智能写小说python_1月下旬值得一读的10本技术新书(人工智能、C++、Python数据科学等)!文末有福利!...
  10. 双系统安装和ros安装踩坑
  11. C++之List保存类内存问题
  12. 累土--电容屏和电阻屏区别
  13. logo下方显示技术支持信息_用“技术支持信息”显示的OEM信息备份修改方法
  14. vscode 全局背景图片设置 background
  15. Java笔记01——JAVA基础部分
  16. 斯坦福大学-自然语言处理入门 笔记 第十九课 单词含义与相似性
  17. SpringCloud 基础架构搭建
  18. Driller分析与改进(二)
  19. 经典数值RPG游戏——《魔塔》调研报告
  20. 【有利可图网】PS教程:用PS合成立体特效的穿插照片效果

热门文章

  1. 两天白嫖阿里云服务器2核、4G内存、1M
  2. 求三角形面积c 语言,C语言求三角形面积
  3. Latex + TexMaker 简单排版论文
  4. flash as3做事件处理中缺省行为
  5. jsoncpp库常用源码解析及使用介绍(二)
  6. 微软亚研院创研论坛CVPR2020分享会 圆桌会议 内容小记
  7. linux ps afx,Linux进阶必学知识:grep是什么?怎么用?
  8. 大型互联网站点HTTPS实践 1
  9. html垂直军中,数字报纸HTML版本
  10. Trie(字典树/前缀树)