事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

栏目: 数据库 · 发布时间: 6年前

内容简介:近日,腾讯云安全团队监测到部分云上及外部用户机器存在安全漏洞被入侵,同时植入相较于过去发现的挖矿病毒,这次的挖矿病毒隐藏性更高,也更难被清理。服务器被该病毒入侵后将严重影响业务正常运行甚至导致奔溃,给企业带来不必要的损失。

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

一、背景

近日,腾讯云安全团队监测到部分云上及外部用户机器存在安全漏洞被入侵,同时植入 watchdogs 挖矿病毒,出现 crontab 任务异常、系统文件被删除、 CPU 异常等情况,并且会自动感染更多机器。攻击者主要利用 Redis 未授权访问入侵服务器并通过内网扫描和 known_hosts 历史登录尝试感染更多机器。(对此,腾讯云安全团队第一时间发布了病毒预警 —— 预警 | 中招 watchdogs 感染性挖矿病毒,如何及时止损?

相较于过去发现的挖矿病毒,这次的挖矿病毒隐藏性更高,也更难被清理。服务器被该病毒入侵后将严重影响业务正常运行甚至导致奔溃,给企业带来不必要的损失。

二、脚本分析

首先,可以直接从 crontab 任务中看到异常的任务项:

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

crontab 任务实现从 hxxps://pastebin.com/raw/sByq0rym 下载 shell 脚本并执行, shell 脚本内容为:

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

该脚本实现从 hxxps://pastebin.com/raw/tqJjUD9d 下载文件,文件内容为经过 base64 编码处理;

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

base64 解码后为 shell 脚本, shell 脚本主要功能如下:

1. 修改环境变量,将常见的可执行文件目录添加到系统路径中,确保脚本中的 shell 命令正常执行;同时再次覆写 crontab 任务。

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

2. 清理其他恶意程序,如 “kworkerds”“ddgs” 等挖矿程序;同时通过 chattr -i 等命令解锁和清理相关系统文件

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

3. 根据系统信息下载对应恶意程序执行;黑客主要通过将恶意程序伪装成图片上传 hxxp://thyrsi.com 图床站点, shell 脚本下载 hxxp://thyrsi.com/t6/672/1550667515×1822611209.jpg 保存为 /tmp/watchdogs 文件,赋予可执行权限后执行该恶意程序;

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

4. 再进一步横向扩展感染,检查本地 ssh 凭证,遍历 /root/.ssh/known_hosts 文件中的 IP 地址,利用默认公钥认证方式进行 SSH 连接,执行恶意命令横向扩展感染;

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

5. 最后清空系统日志等文件,清理入侵痕迹。

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

通过 bash 脚本我们可以得知关键文件为其中的 watchdogs 文件。

进一步通过 top 命令未见异常进程,而 CPU 空闲率为 100% ,但又明显感觉到机器运行迟缓。

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

进一步通过 vmstat 进行确认,可以发现 CPU 使用率 95% 以上,由此可以推断存在隐藏进程,并且 hook 了相关 readdir  等方法,具体案例我们在以前的文章已经做过分析。

安全研究 | Linux 遭入侵,挖矿进程被隐藏案例分析

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

进一步分析 watchdogs 文件,可以清楚看到病毒释放了 /usr/local/lib/libioset.so 的动态链接库并将路径写入 /etc/ld.so.preload 来实现了进程的隐藏,与我们上面的推测是一致的。具体可见样本分析部分。

三、样本分析

样本 watchdogs

主要功能:

1. 获取当前进程 id ,写入 /tmp/.lsdpid 文件

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

2. 拷贝 /tmp/watchdogs/usr/sbin/watchdogs 路径,并将 watchdogs 添加至启动项及服务项

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

3. 释放 libioset.so 文件至 /usr/local/lib/libioset.so ,并将该 so 文件路径写入 /etc/ld.so.preload ,同时删除 /usr/local/lib/libioset.c 文件

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录 4. 访问 ident.me 获取机器 IP

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

5. 设置定时任务,定时从 https://pastebin.com/raw/sByq0rym 上获取 shell 执行脚本

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

6. 写入 /tmp/ksoftirqds/tmp/config.json ,执行 ksoftirqds 后删除

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

7. 删除生成的相关文件

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

8. 访问 https://pastebin.com/raw/C4ZhQFrH 检查更新

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录 样本 libioset.so

64 位程序中,恶意样本会释放出 libioset.c 文件,采用源码编译的方式生成 libioset.so 文件,而 32 位程序则直接释放出 libioset.so 文件

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

libioset.so 主要功能为 hook 删除、查看等系统命令函数,过滤掉 watchdogs 等相关信息,导致 lsrm 等命令对该恶意程序无效,该 so 文件导出函数如下所示

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

例如, readdir64 函数中,加载了 libc.so.6

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

获取原始函数地址

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

如果调用该函数的进程不是 ksoftirqdswatchdogs ,则过滤掉所有包含恶意程序相关的结果。

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

unlink 函数同样进行了过滤,导致无法清除恶意程序相关的 LD_PRELOADlibioset.so 等。

该恶意程序同样隐藏了 CPU 信息和网络连接信息,如下所示:

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

当调用 fopen 打开 /proc/stat 时,返回伪造的信息

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

当调用 fopen 打开 /proc/net/tcp/proc/net/tcp6 时,同样进行过滤

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

四、流程还原

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

基于上面的脚本和 ELF 样本分析可以发现整体入侵和感染流程大概为:

1.  通过 Redis 未授权访问漏洞入侵机器并修改 crontab 任务;或者通过遍历 known_hosts 中的连接历史进行横向扩展;

2.  crontab 任务执行 bash 脚本,进行相关清理和下载执行恶意程序 watchdogs 并横向扩展:

a)       覆写 crontab 任务;

b)       清理其他恶意程序;

c)       解锁删除相关系统文件;

d)       下载执行 watchdogs

e)       横向扫描其他机器;

f)        清理相关文件和痕迹。

3.  watchdogs 执行实现写开机启动、服务项并释放动态链接库实现隐藏,同时释放执行挖矿程序:

a)       获取进程 ID/tmp/.lsdpid

b)       /tmp 目录下的 watchdogs 复制到 /usr/sbin/ 目录并加入开机启动项和服务项;

c)       释放 libioset.so 并写入 /etc/ld.so.preload 实现进程等隐藏;

d)       访问 ident.me 获取机器外网 IP

e)       再次覆写 crontab 任务;

f)        释放挖矿程序 ksoftirqds 和配置文件 config.json 并执行;

g)       删除相关生成的文件并检查更新。

最终完成了一个漏洞利用到植入挖矿程序,同时隐藏和横向感染的过程。

而相对与过去我们分析过的隐藏进程的挖矿病毒,在该病毒释放的动态链接库中同步对 unlink 函数进行了过滤,过滤名称同时包含 ld.so.preloadlibioset.so ,而同时由于删除、查看等系统命令函数也受过滤影响,就导致通过常规自带的方法无法直接删除 libioset.so 或者修改 ld.so.preload 解除恶意进程的隐藏,只能通过 busybox 来实现对这些文件的删除清理。

在我们将 /usr/local/lib/libioset.so 文件清理后,就可以通过 top 命令看到执行的挖矿进程。

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

通过捕获的钱包地址查看黑客收益:

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

事件分析 | Linux watchdogs 感染性隐藏挖矿病毒入侵还原录

(数据来源: f2pool 

该钱包总收益约为 56.5 门罗币,约合 1.9 万人民币,过去 24 小时内收益 1.3 门罗币,当前算力约为 430KH/S

五、修复建议和清理方法

修复建议

Redis 未授权访问:

1 、为 Redis 添加密码验证(重启 Redis 才能生效);

2 、禁止外网访问 Redis (重启 Redis 才能生效);

3 、以低权限运行 Redis 服务(重启 Redis 才能生效) 详细操作请参考: http://bbs.qcloud.com/thread-30706-1-1.html

内网感染:

1 、建议不要将连接机器的私钥直接放在服务器上,如有必要建议添加密码;

2 、建议通过有限的机器作为跳板机实现对其他内网机器的访问,避免所有机器的随意互联互通,跳板机不要部署相关可能存在风险的服务和业务。

挖矿木马清理方法

1 、删除恶意动态链接库 /usr/local/lib/libioset.so

2 、排查清理 /etc/ld.so.preload 中是否加载 1 中的恶意动态链接库;

3 、清理 crontab 异常项,删除恶意任务 ( 无法修改则先执行 5-a)

4kill 挖矿进程;

5 、排查清理可能残留的恶意文件:

a)       chattr -i /usr/sbin/watchdogs /etc/init.d/watchdogs /var/spool/cron/root /etc/cron.d/root

b)       chkconfig watchdogs off

c)       rm -f /usr/sbin/watchdogs /etc/init.d/watchdogs

6 、相关系统命令可能被病毒删除,可通过包管理器重新安装或者其他机器拷贝恢复;

7 、由于文件只读且相关命令被 hook ,需要安装 busybox 通过 busybox rm 命令删除;

8 、部分操作需要重启机器生效。

六、附录

IOCs

样本

1. aee3a19beb22527a1e0feac76344894c

2. c79db2e3598b49157a8f91b789420fb6

3. d6a146161ec201f9b3f20fbfd528f901

4. 39fa886dd1af5e5360f36afa42ff7b4e

矿池地址

xmr.f2pool.com:13531

钱包地址

46FtfupUcayUCqG7Xs7YHREgp4GW3CGvLN4aHiggaYd75WvHM74Tpg1FVEM8fFHFYDSabM3rPpNApEBY4Q4wcEMd3BM4Ava.teny

URLs

1. hxxps://pastebin.com/raw/sByq0rym

2. hxxps://pastebin.com/raw/tqJjUD9d

3. hxxp://thyrsi.com/t6/672/1550667515×1822611209.jpg

4. hxxp://ident.me

相关链接:

https://mp.weixin.qq.com/s/1AF5cgo_hJ096LmX7ZHitA

本文作者:安全攻防组 @ 腾讯安全云鼎实验室

腾讯安全云鼎实验室专注云安全技术研究和云安全产品创新工作;负责腾讯云安全架构设计、腾讯云安全防护和运营工作;通过攻防对抗、合规审计搭建管控体系,提升腾讯云整体安全能力。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

J语言实用教程

J语言实用教程

杨朝杰 / 电子工业出版社 / 1999-04-01 / 30.0

一起来看看 《J语言实用教程》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具