电脑疯子技术论坛|电脑极客社区

 找回密码
 注册

QQ登录

只需一步,快速开始

[WEB前端技术] 应急响应:记一次花样贼多的挖矿病毒

[复制链接]
zhaorong 发表于 2021-5-11 17:07:11 | 显示全部楼层 |阅读模式
本帖最后由 zhaorong 于 2021-5-11 17:13 编辑

0x00 正经的内容介绍

​ 本文记录了一次表象是 无文件 无进程 在系统中 几乎  看不到异常的高配挖矿病毒处置实例  包括处置
过程以及逆向分析其 原理实现 感兴趣的朋友我们一起抽丝剥茧 拨云见日。

​ 通过本文可以收获到:
几个Linux应急处置小知识
看不到文件 网络 进程?背后的原理解析!
几个过时的表情包

0x01 不正经的事件概述

2021年1月份的一个阳光明媚的日子虚拟化管理软件发现虚拟机列表界面里有一台机器拥有色彩鲜艳
且顶格显示的CPU利用率指示条  显然是虚拟机中最靓的仔 此事必有蹊跷。

QQ截图20210511163243.png

0x02 事件表现

2.1 CPU 占用率内外不符

​服务器是运行在虚拟化的机器 在虚拟化管理软件中可以查看每台虚拟机的各项资源统计信息
出现异常的服务器在虚拟化管理软件中CPU占用率指示条直接顶格显示 就像这样:

QQ截图20210511163343.png

但是在服务器中使用top等命令看到的CPU使用率却很低 并没有完全达到100%就像这样:

QQ截图20210511163431.png

2.2 系统中未发现奇怪配置

​查看系统中存在的 定时任务 服务 启动项均未发现有不对劲的情况 并且对系中常见目录下的文件进行列举
也未发现可疑文件 甚至怀疑是不是虚拟化管理软件有BUG 了初次检查后得到的结论:

QQ截图20210511163525.png

0x03 百密必有一疏

​检查一遍后发现事情没有那么简单 一通操作后竟毫无收获 这怎么行!

QQ截图20210511163612.png

​考虑下 文件 进程都看不到异常 很有可能是被隐藏了 先检查下系统命令的修改时间虽然
可以刻意修改粗略看一下有没有被替换:

QQ截图20210511163705.png

1619507019_6087b74b8dba8f5d5c969.jpg

好家伙 这事情变得有意思了 既然是CPU高占用那还是从进程入手吧top命令看不到那就换一个装个htop看一下。

QQ截图20210511163840.png

QQ截图20210511164102.png

直呼内行 头一次见规格这么高的挖矿病毒 据我所知 有一种从天而降的掌法手段
可以实现通用性较强的隐藏效果 那就是 LD_PRELOAD。

​LD_PRELOAD是Linux 系统的一个环境变量它可以影响程序的运行时的链接Runtime linker
它允许你定义在程序运行前优先加载的动态链接库。
​这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量我们可以在主程序和
其动态链接库的中间加载别的动态链接库甚至覆盖正常的函数库。
​一方面 我们可以以此功能来使用自己的或是更好的函数 无需别人的源码而另一方面我们也可以以向别人的
程序注入程序从而达到特定的目的。(划重点)

​这个机制可以按 Windows 系统中的 DLL 劫持来理解。

来检查一下 /etc/ld.so.preload:

10086.png

1619507019_6087b74b8dba8f5d5c969.jpg

好家伙 还是直接上 busybox 吧。

BusyBox 是一个集成了N多个最常用Linux 命令和工具的软件。BusyBox 包含了一些简单的工具 例如 lscat和echo等
等还包含了一些更大 更复杂的工具 例 grep find mount 以及 telnet 。有些人将BusyBox 称为Linux 工具里的瑞士军
dao。简单的说BusyBox 就是个大工具箱 它集成压缩了Linux 的许多工具和命令。

使用busybox再次查看/etc/ld.so.preload 可以发现 文件是存在的 通过内容也可以看到恶意库文件的路径
至此可以判定此动态链接库对系统函数进行了过滤拦截 隐藏了不想让我们看到的信息。

999.png

有朋友可能要问了 判断是否使用该机制 难不成只有这一种方式? 当然不是这里可以使用ldd命令
来查看动态链接库的依赖关系 正常系统下的输出是这样的:

998.png

But引入运行时链接机制后 当前实例场景中是这样的:

997.png

既然动态链接库有别的法子看 那CPU使用率呢?当然也有的可以用vmstat来看:

996.png

其中CPU使用率相关的列字段代表的含义如下:

995.png

可以发现 病毒过滤的再多肯定也会有遗漏的地方。

​回到正题 接下来使用busybox中的top再次查看CPU利用率 占用最高的仔 就它了。

994.png

好了 水落石出 接下来就可以进行清理 关进程删文件一气呵成 要注意的是需要使用
busybox中的命令代替系统命令进行清除操作。

然鹅 事情还是没有那么简单 删除文件居然告诉我没有权限 真是对不上我root身份。

993.png

看一下文件属性 嗯~ 熟悉的味道 移除文件属性 继续删除即可。

992.png

另外通过逆向能够发现 病毒修改了/etc/resolv.conf 贴心的为系统配置了DNS 服务器防止访问不到它的域名。

339.png

以及将公钥写入/root/.ssh/authorized_keys 在清理时需要一并恢复至原始状态。

22.png

0x04 原理解析

回顾一下 为何看不到文件?为何看不出网络进程的异常?这里一起来分析一下原理。
​既然要分析 必然少不了逆向 将动态链接库libcurl.so.2.17.0扔到 IDA 中看一哈正是因为该链接库对关键函数进
行了Hook也可以理解为过滤 所以才没有办法使用ls top netstat等命令发现异常。
​举个栗子 通过ls源代码 能够发现是通过调用readdir函数实现文件列举功能 那么如果我们修改
了这个函数 是不是可以控制ls的执行结果呢?

21.png

是的 聪明的你肯定已经想到了 在该恶意库文件中确实存在针对readdir函数的过滤行为判断当前列举出
的是否为病毒相关的文件 是则跳过 不是则保留 从而达成了隐藏文件目的。

20.png

同理 该恶意库文件也对open fopen kill等函数进行过滤 比如kill函数的逻辑如下。

19.png

这么一操作 只要库被加载了 就永远也不可能使用自带的kill命令操作病毒相关进程也不
能使用ls等命令找到病毒相关的文件。

这波啊 是障眼法 文件及进程并没有真的消失 只是想瞒天过海。

0x05 总结一哈

​通过本文 介绍了应急处置小思路Linux 系统下的一种隐藏手段及背后原理。
​个人认为 真实应急过程中并无绝对的操作定式 需要根据现场实际环境 对自己掌握的各种技巧进行组合发挥 文中介绍的
只多列举了一种方法 当然还有其他方法可以使用 这里给自己挖个坑 有时间整理一下不常见的排查方法 同时也给感兴趣
的朋友留个种子引子 毕竟学习是多么快乐的一件事~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|VIP|电脑疯子技术论坛 ( Computer madman team )

GMT+8, 2025-3-14 04:26

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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