首页
社区
课程
招聘
[原创]从GO到Luajit——特殊GO语言APT样本引发的思考(二)
发表于: 2022-7-28 20:39 13213

[原创]从GO到Luajit——特殊GO语言APT样本引发的思考(二)

2022-7-28 20:39
13213

原理与思考请参见 第一章,本文为详细的样本分析,且较为偏向初学者,会一步步详细的说明,如有错误请轻喷。
样本HASH:cbef6bd78137deab082d39983cdb198f370330da410c5d29f65af2386b8c1b2d
由于涉及APT等原因不能直接提供样本,请自行寻找下载。

拿到样本后个人比较喜欢先上DIE查壳并确定语言类型,DIE下载链接
图片描述
看到这个结果还是比较奇怪的,虽然使用GCC的不少,但常见的还是VS这种编译器,我们上IDA看看他的虚实。
上了IDA,根据你的IDA版本可能会停在不同的地方,我测试的IDA7.7会自动识别到main函数(虽然被混淆了),但我们这里假设你停留在了Main Entry中,即下图这个函数里:

按照一般我们的经验来说,main函数一般在401170,我们点进这个函数,通过对参数的判别大致推测main函数在这里:

看到这就发现这个程序大概率是被混淆过的,我们点进去看看,然后就发现在代码最下部分有这样的特征:

根据经验这个样本是GO语言的样本,如果你不能确定这个是GO语言的话可以shift+f12看看字符串部分带有cgo的库:

知道了样本是带着混淆的go后我们就需要先做去混淆的操作,由于对go研究不多,使用IDAGolangHelper无果后只能想想其他的法子。正好看到了rizzo插件,想着用一下试试。于是写了个go语言的基本库调用,由于go要对所有导入的库实例化并调用,所以写完的代码基本长这样:

然后编译之后制作rizzo特征文件,导入特征文件到要分析的文件后就得到了去混淆后的程序,main函数代码如下:


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

收藏
免费 6
支持
分享
最新回复 (2)
雪    币: 2423
活跃值: (6828)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
2
逆向越来越难了啊
2022-7-28 21:34
0
雪    币: 1
活跃值: (274)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这种样本可以考虑我的无敌沙箱
2022-7-29 06:21
0
游客
登录 | 注册 方可回帖
返回
//