搜索
查看: 982|回复: 0

记一次 Linux 下 XordDos 木马的清除

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-5-23 18:26:23 | 显示全部楼层 |阅读模式
前言
朋友的服务器中了木马后,一直向外发送请求,带宽被占满。甚至还引起了阿里云网络异常
用 iptables 封禁向外请求的 ip 后,网络请求终于没有了,但是木马要清除掉,于是我便帮忙查这个服务器的木马问题。
首先我并不知道服务器中了什么招,因此从以下几个步骤追踪木马:
用 rkhunter 查找 Rootkit 程序
Rootkit 一词最早出现在 Unix 系统上。系统入侵者为了获取系统管理员级的 root 权限,或者为了清除被系统记录的入侵痕迹,会重新汇编一些软件工具(术语称为 kit),例如 ps、netstat、w、passwd 等等,这些软件即称作 Rootkit。其后类似的入侵技术或概念在其他的操作系统上也被发展出来,主要是文件、进程、系统记录的隐藏技术,以及网络数据包、键盘输入的拦截窃听技术等,许多木马程序都使用了这些技术,因此木马程序也可视为 Rootkit 的一种。 —— 维基百科
下载并安装 rkhunter,扫描 Rootkit 替换的系统程序
  1. $ wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz
  2. $ tar xzvf rkhunter*
  3. $ cd rkhunter*
  4. $ ./installer.sh --layout /usr --install
  5. $ rkhunter --update
  6. $ rkhunter -C
复制代码
本机查出它替换了 ps, lsof, ss, netstat 命令
用 yum 重新安装被替换的常用命令
ps 属于 procps
ss 属于 iproute
netstat 属于 net-tools
  1. $ yum -y reinstall procps lsof iproute net-tools
复制代码
用 ps & top 查看当前进程
不知道为什么,虽然重装了 procps,但 ps 命令看不到木马进程(可能是用了某种技术隐藏),但用 top 命令可以看到:
有一个占用 CPU 最多的进程 pygdykcrqf (十位随机名称进程),我在用 kill 1341 杀死进程后,没过一会儿发现又出现了另一个十位随机进程,所以得出结论他还有一个守护进程/多个进程。
用 pstree 查看进程线程树:
可以看到,有两个十位随机进程(aifsucshya, hlgnaudprk),分别都有 4 个线程,就是他们在发送 DDOS 攻击,占用带宽,并且相互守护的。
在试过 killall 几次后发现,我 kill 的速度没他守护的速度快(必然的),还发现占用 CPU 较小的进程会在不到 1 分钟,新建一个新的随机进程,并终止自己。
查看木马进程所在位置,并杀死木马
Linux 在启动一个进程时,系统会在 /proc 下创建一个以 PID 命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过 ll或 ls –l 命令即可查看。
" style="border: 0px; display: block; max-width: 100%; width: auto; height: auto; padding-top: 0.6em; padding-bottom: 0.6em; position: relative; left: 355px; transform: translateX(-50%);">
可以看出木马源文件在 /usr/bin/aifsucshya,把文件先备份在本机:
  1. $ scp root@ip:/usr/bin/aifsucshya ~/Download/aifsucshya
复制代码
用 lsof 查看某个路径下的进程列表:
  1. $ lsof /usr/bin/*
复制代码
用 pidof 命令查看某个路径下进程的 pid:
  1. $ pidof /usr/bin/*
复制代码
然后发现,只有木马的进程在此目录下,因此可以通过管道符 | 和 xargs 将 pid 参数传入到下一个命令的末尾:
  1. $ pidof /usr/bin/* | xargs kill -9
复制代码
这个需要多执行几次,因为可能处在木马新建进程的过程中,用 lsof 再查看是否还有留下来的木马进程。
没过多久,正当我以为已经干掉木马的时候,一声 Too young, too simple 把我拉回了现实 —— 木马进程又启动了。
通过木马样本找到猫腻
当时还不清楚有 cron 定时任务这回事
但通过 strings 把二进制文件转化成可打印的字符:
  1. $ strings ~/Download/aifsucshya > ~/Download/aifsucshya.log
复制代码
或者直接用 UltraEdit 打开,之后发现了木马的定时启动方法:
他通过在 /etc/cron.hourly/gcc4.sh 脚本,定时执行 gcc4.sh, 检查 crontab 后发现,它设定每三分钟执行一次 gcc4.sh
  1. $ cat /etc/crontab
  2. */3 * * * * root /etc/cron.hourly/gcc.sh
复制代码
从上面 gcc4.sh 的内容中,可以看出这个脚本:
  • 修改环境变量
  • 复制 /lib/libudev4.so 到 /lib/libudev4.so.6
  • 运行 /lib/libudev4.so.6
因此得出结论:libudev4.so 与 libudev4.so.6 均是木马源文件。
清除 cron 定时任务,删除开机启动脚本
删除 gcc4.sh,清除 crontab 内容,并设置 /etc/crontab 无法写入,以免被修改:
  1. $ rm -f /etc/cron.hourly/gcc4.sh
  2. $ crontab -e # 进入 vim 编辑器,删除木马启动内容
  3. $ chattr +i /etc/crontab
复制代码
删除木马源文件:
  1. rm -f /lib/libudev4.so /lib/libudev4.so.6
复制代码
查看开机启动内容:
  1. $ ls /etc/rc*/
  2. # init.d 是软链 `init.d -> rc.d/init.d`
  3. $ ls /etc/rc*/init.d
复制代码
这些开机脚本的作用是,开机后自动运行同名的木马,如果你没有把木马清除掉的话,重启服务器后,木马还是会运行。
用 rm -f 把这些 K90, S90 开头的随机字符链接删掉,并删除 init.d 目录下的随机字串文件。
删除存于 /usr/bin/ 中的木马文件
查看 /usr/bin/ 中最近变动的文件,并删除十位随机字串木马:
  1. $ ls -lt /usr/bin/ | head
  2. # 或者用 `ls -lrt /usr/bin/` 查看按时间倒序查看
复制代码
最后
通过 top, lsof 查看木马是否还在运行:
  1. $ top
  2. $ lsof /usr/bin/*
复制代码
确认木马没有运行,且 /etc/rc*/ 中开机启动项也都清理, /lib/libudev4.so 也都删除,crontab 内容清理,/etc/cron.hourly/gcc4.sh 也删除后,重启服务器:
  1. $ reboot now
复制代码
重启后再检查一遍木马是否运行,如果没有便大功告成了。
如果不放心,可以安装 ClamAV 来进行全盘扫描:
  1. $ yum -y install clamav
  2. # 更新病毒库
  3. $ sudo freshclam
  4. # 全盘扫描,只显示被感染的文件,并在发现时发出警告音。
  5. $ clamscan -r --bell -i /
  6. # 进入后台扫描,并将报告输出到 ~/scan.log
  7. $ clamscan -r --bell -i / > ~/scan.log &
  8. # 更多 ClamAV 用法
  9. # http://askubuntu.com/questions/250290/how-do-i-scan-for-viruses-with-clamav
复制代码
参考
通过上面的网站内容,查到了这个木马的名字:XordDos

过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表