记录一次门罗币挖矿木马的追踪

记录一次门罗币挖矿木马的追踪

最近在整理服务器的时候,发现有一台服务器的状态不对, cpu占用一直是100%。 可是这个服务器没有跑什么程序,只有一个网站而已。于是登录服务器开始寻找原因。

查找问题

一般出现服务器cpu异常,第一个想到的就是top命令了, 直接输入top ,却发现 没有程序有异常,cpu占用是0. 开始以为是阿里云的服务出错了,转念一想,阿里这种大厂不应该出这种低级错误吧。
继续输入 vmstat 2 命令进行查看,确实cpu一直都是满载的。

如果是这样,那么说明应该是top被篡改了, 继续打开top 发现 cpu一直都是0,完全不动 =。= 更加肯定了我的想法。

单独查看进程却没发现 可疑的进程。于是开始谷歌, 发现有人docker有中过挖矿木马.
输入docker ps -adocker image ls
果然发现了两个奇怪的镜像和容器

1
2
tanchao2014/mytest
busybox

tanchao2014/mytest确实是一个挖矿的镜像,然而他并没有在运行, 看来这个服务器已经被入侵过几次了, 挖矿程序都更新换代了 =。=

busybox 是一个Linux工具包,里面集成了许多工具和命令, 看来那个人就是用这个来对服务器做了点小动作。

先把挖矿镜像删除吧

1
docker rmi tanchao2014/mytest

然后删除 busybox, 执行

1
docker rm -fv (容器id)

提示

1
Error response from daemon: driver "overlay" failed to remove root filesystem for 97213ce6fe42a93eb789a7d59e33eb815772899741d84ee2ee1aac20e5b0428f: remove /var/lib/docker/overlay/97213ce6fe42a93eb789a7d59e33eb815772899741d84ee2ee1aac20e5b0428f/merged: device or resource busy

看来是资源被占用了,那么我们需要查找是谁占用了资源,就把谁kill掉就好了。

1
grep 97213ce6fe42a93eb789a7d59e33eb815772899741d84ee2ee1aac20e5b0428f /proc/*/mountinfo

找到占用资源的pid,然后直接 kill pid.
再次输入

1
2
docker rm -fv (容器id)
docker rmi busybox

删除成功

删除容器的木马之后,发现一切又回到原点了。
一代木马被删除了,二代还在继续奔跑。

直到在谷歌中发现了这篇文章: Linux 遭入侵,挖矿进程被隐藏案例分析

在 Linux 操作系统的动态链接库加载过程中,动态链接器会读取 LD_PRELOAD 环境变量的值和默认配置文件 /etc/ld.so.preload 的文件内容,并将读取到的动态链接库进行预加载,即使程序不依赖这些动态链接库,LD_PRELOAD 环境变量和 /etc/ld.so.preload 配置文件中指定的动态链接库依然会被装载,它们的优先级比 LD_LIBRARY_PATH 环境变量所定义的链接库查找路径的文件优先级要高,所以能够提前于用户调用的动态库载入。

——段落引自《警惕利用 Linux 预加载型恶意动态链接库的后门》

立刻动手去看。

解决问题

首先进入到/etc/ld.so.preload 中查看,果然,有一个动态链库安静的躺在里面。

/usr/lib/libc.so.8

先把它给干掉:

1
rm /usr/lib/libc.so.8

然后删除 ld.so.preload文件
删除的时候提示了权限不足, 是因为 该文件被增加了 i a属性。
输入

1
lsattr ld.so.preload

可以看到 文件属性中包含 i a属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
a 即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性

i 文件不能被删除、改名、设定链接关系,同时不能写入或新增内容(即使是root用户)。只有root才能设定这个属性

c 即compresse,文件会自动的经压缩后再存储,读取时会自动的解压

d 即no dump,设定文件不能成为dump程序的备份目标

j 即journal,设定此参数使得当通过mount参数”data=ordered”或”data=writeback”挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为data=journal,则该参数自动失效

s 即secure,保密选项。设置了s属性的文件在被删除时,其所有数据块会被写入0

u 即undelete,反删除选项。与s相反,文件在被删除时,其所有的数据块都保留着,用户今后可以恢复该文件

使用 chattr命令移除即可。

1
2
3
chattr -ia ld.so.preload 

rm ld.so.preload

linux文件系统高级权限属性

那么实际的木马进程到底怎么查看了, 我想到了入侵人使用的 busybox. 下载安装下来 使用一下看看。

1
2
3
4
wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
mv busybox /usr/bin/
chmod 755 /usr/bin/busybox
busybox top

很明显的看到了 systemd-host这个进程。

1
2
kill  7907
cd /usr/lib/systemd/

成功找到。 并且还找到他使用的链库文件夹,在 /usr/lib/systemd/lib文件夹里面
下载删除, 慢慢研究。

日志分析

矿池地址:

1
2
139.99.123.196:443
139.99.124.170:443

钱包地址:

1
43U3d1PBg4Gi2BaeMx7nH2dQsyZhAdMRATkJmbvr3kFuEMvU93f4H5geqjnru7SjLA3q81xCnUWr9PdFJRKDB5131fbC8pE

进入门罗币 查询该钱包, 发现目前有200多个机器正在崩跑

参考

记录一次门罗币挖矿木马的追踪

https://xxxy.xyz/post/Monero-Trojan-Track/

作者

MartialBE

发布于

2019-10-30

更新于

2019-10-30

许可协议

评论