0x00 写在开头

由于编写这篇文章的时候已经完全处理好了服务器上的挖矿木马,同时也没有记录相关截图,所以大部分内容只能通过文字的方式记录下来,无法提供图片等信息

0x01 发现问题

这周周末和往常一样也是睡到了中午才起床,下楼吃饭的时候发现服务器风扇转速比起以往明显变高了很多,我这个时候就登录服务器查看了一下CPU温度等信息,就发现CPU几乎占满但是 htop/top/ps 等工具都无法看到是哪个进程在用CPU

在这里我也尝试了许多不同的方式查看进程信息也都没看到是哪个进程占用CPU非常高,正好我又要出门,保险起见我就直接把服务器关机了

0x02 使用工具

在这里我尝试了包括但不限于下列工具:

  • 卡巴斯基企业版(试用,但未成功)
  • ClamAV(按照文档更新数据库直接报错,反复尝试后放弃)
  • rkhunter(成功使用它找到了系统哪些地方被木马动过)

这里就重点提一下rkhunter,用它扫描到了木马用来隐藏自己进程时写入到/etc/ld.so.preload的库,日志如下

1
2
3
4
5
6
7
8
[16:42:46] Info: Found library preload file: /etc/ld.so.preload
[16:42:46] Checking for preloaded libraries [ Warning ]
[16:42:46] Warning: Found preloaded shared library: /usr/local/lib/[cmake].so
[16:42:46] Warning: Found preloaded shared library: /usr/local/lib/pnscan.so
[16:42:46] Warning: Found preloaded shared library: /usr/local/lib/masscan.so
[16:42:46] Warning: Found preloaded shared library: /usr/local/lib/httpd.so
[16:42:46] Warning: Found preloaded shared library: /usr/local/lib/xmrigMiner.so
[16:42:46] Warning: Found preloaded shared library: /usr/local/lib/xmrigDaemon.so

很显然是xmr挖矿,那么接下来的事情就好办了,先把它干掉

0x03 人工杀毒

首先删除 /usr/local/lib/xmrigMiner.so/usr/local/lib/xmrigDaemon.so,直接删除会报错删不掉

这里可以通过 lsattr 命令查看到这两个文件有a和i属性,使用 chattr -ai xxx 去掉即可,我在这一步的时候发现chattr命令没了,于是就从另外一台debian11系统的机器上拖了一个过来

删除这俩后我直接选择了重启服务器,重启后就在htop中发现了名为 xmrigDaemon 和 xmrigMinger 的进程,这里也和上面一样,用root权限kill掉然后删除文件即可

这里顺便放上两个so文件的微步链接:Miner Daemon

按照微步上的信息来看,我可能是第一个上传分析的人?

0x04 处理木马留下来的烂摊子

这一步虽然不难但是操作起来可能会比较麻烦,需要挂载iso文件,从iso文件中拿到各种系统软件的安装包然后一个个安装

具体需要安装哪些可以参考rkhunter的日志,大致如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[16:42:47] Warning: WARNING! It is the users responsibility to ensure that when the '--propupd' option
[16:42:49] /usr/sbin/adduser [ Warning ]
[16:42:49] Warning: The command '/usr/sbin/adduser' has been replaced by a script: /usr/sbin/adduser: Perl script text executable
[16:42:55] /usr/bin/egrep [ Warning ]
[16:42:55] Warning: The command '/usr/bin/egrep' has been replaced by a script: /usr/bin/egrep: POSIX shell script, ASCII text executable
[16:42:55] /usr/bin/fgrep [ Warning ]
[16:42:55] Warning: The command '/usr/bin/fgrep' has been replaced by a script: /usr/bin/fgrep: POSIX shell script, ASCII text executable
[16:42:57] /usr/bin/ldd [ Warning ]
[16:42:57] Warning: The command '/usr/bin/ldd' has been replaced by a script: /usr/bin/ldd: Bourne-Again shell script, ASCII text executable
[16:43:03] /usr/bin/which [ Warning ]
[16:43:03] Warning: The command '/usr/bin/which' has been replaced by a script: /usr/bin/which: POSIX shell script, ASCII text executable
[16:43:04] /usr/bin/lwp-request [ Warning ]
[16:43:04] Warning: The command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: Perl script text executable

0x05 复盘

在处理完成后,我在docker中发现了个空的ubuntu容器,在这里就可以确定是从Docker进来的。

虽然我的docker开启了tcp接口,但是我并没有在防火墙单独放通这个端口,在仔细检查防火墙规则后发现我放通了一整个IPv6的IP段,具体防火墙规则我会写在下面,同时这也解释了为什么docker的tcp端口开了这么久才出现入侵者

最后,咱的的防火墙规则如下:

1
2
3
To                         Action      From
-- ------ ----
2406:840:e301::/48 ALLOW Anywhere

只能说emmm我下次写防火墙规则的时候多小心一点吧