首页
社区
课程
招聘
[原创]对学校服务器挖矿木马的一次逆向分析
发表于: 2024-7-8 23:00 7364

[原创]对学校服务器挖矿木马的一次逆向分析

2024-7-8 23:00
7364

    前不久,学弟突然找上了我,说学校分配的服务器被人种了挖矿木马,心中一听顿时一惊。内网一台服务器的沦陷的话,可能其它服务器也遭黑手了(。可惜我不是应急响应大神,加上学校对网安这块不太重视,我也没资格上人家的服务器看一看情况。只能让学弟把软件发给我。一共有两个文件,其中名字分别为

其中会定期执行-bash文件

但是由于学弟那边排查占用率最高的是python2.8文件,所以先用ida打开,查找字符串发现

好家伙,xmrig,于是校验一波hash

可以发现就是xmrig6.21.3 版本,于是我问了问被入侵的时间,结果是6月9号左右,那个时候xmrig还没更新6.21.3版本,好家伙,到被发现快有1个月了,既然确定了python2.8的真身,接下来就要开始分析-bash文件了

可以看到被upx压缩了,于是打算upx -d脱壳,结果。。。

网上搜了搜,大多都是在说修改了upx特征,如果不看upx源码找到被修改的特征就只能找到oep之后dump下来,想了想后者比较快,于是先试了试后者,

脱壳操作参考了Linux逆向之加壳&脱壳 - 先知社区 (aliyun.com)

然而ida打开搜索字符串发现了go语言特有的字符串

这样的话oep dump会丢失很多信息,而且调试符号本身也被去除了

在尝试了go_parser和IDAGolangHelper工具恢复符号失败后,不得已开始研究pclntab和moduledata,这里参考了安全客一位师傅写的文章(https://www.anquanke.com/post/id/215419#h2-4),在其中发现gopclntab Section 就对应于 pclntab 结构,由于-bash软件没有开pie,所以gopclntab不会被删除,这下必须研究upx源码并尝试恢复特征进行工具脱壳了。

源码的研究参考了[原创]UPX 4.0.2 源码分析-加壳脱壳-看雪-安全社区|安全招聘|kanxue.com

简单说一下研究过程,首先全局搜索哪个函数爆出错误信息"NotPackedException: not packed by UPX"

定位throwNotPacked函数

可以发现visitAllPackers是关键函数,继续定位,这里给出部分代码,但可以确定核心是func(pb.get(),user),结合刚刚传递的参数,确定核心为try_can_unpack

跟进

核心是pb->canUpack,这下要跟进类方法了,不过很容易就确定是

里面的printf都是我后来加的,是为了确定哪个条件出了问题

虽然不知道为何会多次调用,不过看样子感觉是为了尝试不同平台,这里主要解决父类canUnpack的问题,因为第一次调用e_machine是对的上的

核心在于find_overlay_offset,跟进

由于find_overlay_offset并未抛出下面两种异常,所以问题只能在第一次条件判断,经过调试后得知是getPackHeader的问题,由于其篇幅过长,只给出核心地方,可以看见在解码时爆出错误,继续跟进

还是给出核心地方


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 82
活跃值: (604)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
twe
2
学到了,但是自己尝试UPX脱壳找不到OEP
2024-7-9 11:37
0
游客
登录 | 注册 方可回帖
返回
//