内容简介:近日,腾讯云安全团队监测到部分云上及外部用户机器存在安全漏洞被入侵,同时植入相较于过去发现的挖矿病毒,这次的挖矿病毒隐藏性更高,也更难被清理。服务器被该病毒入侵后将严重影响业务正常运行甚至导致奔溃,给企业带来不必要的损失。
一、背景
近日,腾讯云安全团队监测到部分云上及外部用户机器存在安全漏洞被入侵,同时植入 watchdogs 挖矿病毒,出现 crontab 任务异常、系统文件被删除、 CPU 异常等情况,并且会自动感染更多机器。攻击者主要利用 Redis 未授权访问入侵服务器并通过内网扫描和 known_hosts 历史登录尝试感染更多机器。(对此,腾讯云安全团队第一时间发布了病毒预警 —— 预警 | 中招 watchdogs 感染性挖矿病毒,如何及时止损? )
相较于过去发现的挖矿病毒,这次的挖矿病毒隐藏性更高,也更难被清理。服务器被该病毒入侵后将严重影响业务正常运行甚至导致奔溃,给企业带来不必要的损失。
二、脚本分析
首先,可以直接从 crontab 任务中看到异常的任务项:
该 crontab 任务实现从 hxxps://pastebin.com/raw/sByq0rym 下载 shell 脚本并执行, shell 脚本内容为:
该脚本实现从 hxxps://pastebin.com/raw/tqJjUD9d 下载文件,文件内容为经过 base64 编码处理;
base64 解码后为 shell 脚本, shell 脚本主要功能如下:
1. 修改环境变量,将常见的可执行文件目录添加到系统路径中,确保脚本中的 shell 命令正常执行;同时再次覆写 crontab 任务。
2. 清理其他恶意程序,如 “kworkerds” , “ddgs” 等挖矿程序;同时通过 chattr -i 等命令解锁和清理相关系统文件
3. 根据系统信息下载对应恶意程序执行;黑客主要通过将恶意程序伪装成图片上传 hxxp://thyrsi.com 图床站点, shell 脚本下载 hxxp://thyrsi.com/t6/672/1550667515×1822611209.jpg 保存为 /tmp/watchdogs 文件,赋予可执行权限后执行该恶意程序;
4. 再进一步横向扩展感染,检查本地 ssh 凭证,遍历 /root/.ssh/known_hosts 文件中的 IP 地址,利用默认公钥认证方式进行 SSH 连接,执行恶意命令横向扩展感染;
5. 最后清空系统日志等文件,清理入侵痕迹。
通过 bash 脚本我们可以得知关键文件为其中的 watchdogs 文件。
进一步通过 top 命令未见异常进程,而 CPU 空闲率为 100% ,但又明显感觉到机器运行迟缓。
进一步通过 vmstat 进行确认,可以发现 CPU 使用率 95% 以上,由此可以推断存在隐藏进程,并且 hook 了相关 readdir 等方法,具体案例我们在以前的文章已经做过分析。
进一步分析 watchdogs 文件,可以清楚看到病毒释放了 /usr/local/lib/libioset.so 的动态链接库并将路径写入 /etc/ld.so.preload 来实现了进程的隐藏,与我们上面的推测是一致的。具体可见样本分析部分。
三、样本分析
样本 watchdogs
主要功能:
1. 获取当前进程 id ,写入 /tmp/.lsdpid 文件
2. 拷贝 /tmp/watchdogs 至 /usr/sbin/watchdogs 路径,并将 watchdogs 添加至启动项及服务项
3. 释放 libioset.so 文件至 /usr/local/lib/libioset.so ,并将该 so 文件路径写入 /etc/ld.so.preload ,同时删除 /usr/local/lib/libioset.c 文件
4. 访问 ident.me 获取机器 IP
5. 设置定时任务,定时从 https://pastebin.com/raw/sByq0rym 上获取 shell 执行脚本
6. 写入 /tmp/ksoftirqds 、 /tmp/config.json ,执行 ksoftirqds 后删除
7. 删除生成的相关文件
8. 访问 https://pastebin.com/raw/C4ZhQFrH 检查更新
样本 libioset.so
64 位程序中,恶意样本会释放出 libioset.c 文件,采用源码编译的方式生成 libioset.so 文件,而 32 位程序则直接释放出 libioset.so 文件
libioset.so 主要功能为 hook 删除、查看等系统命令函数,过滤掉 watchdogs 等相关信息,导致 ls 、 rm 等命令对该恶意程序无效,该 so 文件导出函数如下所示
例如, readdir64 函数中,加载了 libc.so.6
获取原始函数地址
如果调用该函数的进程不是 ksoftirqds 或 watchdogs ,则过滤掉所有包含恶意程序相关的结果。
unlink 函数同样进行了过滤,导致无法清除恶意程序相关的 LD_PRELOAD 、 libioset.so 等。
该恶意程序同样隐藏了 CPU 信息和网络连接信息,如下所示:
当调用 fopen 打开 /proc/stat 时,返回伪造的信息
当调用 fopen 打开 /proc/net/tcp 或 /proc/net/tcp6 时,同样进行过滤
四、流程还原
基于上面的脚本和 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.preload 和 libioset.so ,而同时由于删除、查看等系统命令函数也受过滤影响,就导致通过常规自带的方法无法直接删除 libioset.so 或者修改 ld.so.preload 解除恶意进程的隐藏,只能通过 busybox 来实现对这些文件的删除清理。
在我们将 /usr/local/lib/libioset.so 文件清理后,就可以通过 top 命令看到执行的挖矿进程。
通过捕获的钱包地址查看黑客收益:
(数据来源: 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) ;
4 、 kill 挖矿进程;
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
本文作者:安全攻防组 @ 腾讯安全云鼎实验室
腾讯安全云鼎实验室专注云安全技术研究和云安全产品创新工作;负责腾讯云安全架构设计、腾讯云安全防护和运营工作;通过攻防对抗、合规审计搭建管控体系,提升腾讯云整体安全能力。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 深度备份还原工具 V1.0 正式发布 — 备份还原,安全可靠
- 使用 nltk 词形还原
- Antsword流量分析与还原
- Redis安全以及备份还原
- Oracle RMAN备份与还原
- 学习bootstrap和jquery框架还原网页
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First jQuery
Ryan Benedetti , Ronan Cranley / O'Reilly Media / 2011-9 / USD 39.99
Want to add more interactivity and polish to your websites? Discover how jQuery can help you build complex scripting functionality in just a few lines of code. With Head First jQuery, you'll quickly g......一起来看看 《Head First jQuery》 这本书的介绍吧!