首页
社区
课程
招聘
分析一个前段时间中招的恶意木马
2024-6-23 15:06 6187

分析一个前段时间中招的恶意木马

2024-6-23 15:06
6187

起因

之前下载某个软件的时候,有点不对劲,六七百M,但是还是双击打开了,后来这个东西释放/下载了一些木马文件下来,Defender告警了,我才发现有问题,后来github的号都被盗了,非常的气愤,接下来分析一下这个小马。

图片描述
Sha256
d77f0490f9c921baad0015c1eec2cafe1021814c8c28dee10a93179476fcb366

第一件事,DIE一下,

图片描述

是C/C++写的,直接IDA,IDA帮我自动跳到main函数。
图片描述
图片描述

逼养的,龙卷风 ? 很好,我就喜欢这种有强度的。

F5先试试水。

图片描述
很好,不出意料,这个问题修改一下cfg先解决一下。

MAX_FUNCSIZE修改成512K之后,再f5,

图片描述
很好,完全看不懂(这里其实至少可以看出有bcf在的,bcf也是ollvm里的一种混淆措施,不懂的可以google下,太基础的不讲了)

先一个个来,先解决平坦化,

图片描述
虽然看着比较吓人,但是稍微仔细看一下会发现,分发块的TRUE分支对应的真实块,
图片描述
几乎所有的真实块最后都链接到LoopEnd(LoopEnd是啥可以看一下ollvm的源码,这里不细讲,资料比较多)。

这种类似于标准OLLVM思路处理思路其实比较清楚

定位到StateVar(控制流平坦化的相关概念)被赋值的指令,然后找这个值对应的真实块,然后Patch就好了,但是写代码很吃细节(特别魔改过的ollvm),因为容易错,特别是大函数,编译器也瞎jb优化,有时候标准的ollvm自动优化成不标准的了。

控制流平坦化处理完之后,f5

控制流很清晰,但是还是有bcf在,逻辑几乎还是看不了。

图片描述

接下来处理bcf

图片描述
仔细研究下,其实每个函数都有2个bcf变量(ollvm好像全局只有2个bcf变量,有点忘了),用来构造恒成立不等式的,这里有10个,因为他核心的混淆函数只有五个。

我的处理bcf的方式是,因为那个变量不影响运算,我直接把引用这个变量的指令Patch了,举个例子

mov ecx, bogus_10 -> mov ecx, 1

主要目的是让这个ecx寄存器变成常量,让IDA的反编译器来参与优化。

bcf处理完之后,代码也不一定完全能看

图片描述

他这个样本还有类似于虚拟寄存器的东西,
图片描述
图片描述
这他妈的一系列运算都不知道在干嘛,
图片描述

这种超大的函数,只能借助Proximity browser来借助分析一下调用流(这里有个问题,ida卡的不行,ida只占那么一两百M内存是怎么回事,有几个g可以给他为什么不吃,鼠标移一下就卡好几秒,有没有懂哥)
图片描述
这种一看就是shellcode的调用,但是shellcode在哪里呢,这是大问题。
直接定位到CreateThread,
图片描述
很好,只需要知道这个&v3186[*v3187]在哪里。
图片描述
很好,静态分析已经到头了(这部分的太多数学运算指令了,有点整不明白,希望大手子来指点下)。

动态调试

其实就是关键的系统API附近打断点,祈祷解密的shellcode在附近就是了(单步去分析这些运算指令也不现实,就跟手动跟VMProtect一样)。

打了好几个地方的断点,无果。

后来在这里附近,
图片描述
起初我是想知道这些字符串是怎么被运算出来的,
图片描述
后来发现还要写常量替换,指令合并,不然还是看不懂的(写起来估计也费劲,还不一定有用)
但是,狗运有点好,
图片描述
似乎直接在内存中发现了这个shellcode?

savedata dump.bin,00177E40,0x23b000

直接dump出来,上传vt
图片描述
很好,说明dump的没问题(但是这部分shellcode具体是怎么来的,其实并没有搞出来)

二段Shellcode其实比较简单了

图片描述
图片描述
图片描述
图片描述
https://github.com/adobe/chromium/blob/cfe5bf0b51b1f6b9fe239c2a3c2f2364da9967d7/chrome/browser/webdata/token_service_table.cc#L60
慢慢分析就好了。

byd的,肯定是把我chrome的token和cookie偷了。

接下来准备研究一下,在有别人token和cookie的情况下,能做什么事,大伙期待下一篇帖子把。

这篇帖子涉及到的二进制文件和代码会上传到github,下面是链接。

https://github.com/helloobaby/thread-282253-details


[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

最后于 2024-6-23 15:13 被ookkaa编辑 ,原因:
收藏
免费 15
打赏
分享
最新回复 (6)
雪    币: 4592
活跃值: (3760)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
木志本柯 2024-6-24 09:24
2
0
干货满满,就喜欢看这种带加密对抗的分析帖子。
雪    币: 4055
活跃值: (5710)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
badboyl 2 2024-6-27 10:10
3
0
MAX_FUNCSIZE修改成512K之后,再f5。
问下LZ,在哪里修改?
雪    币: 606
活跃值: (1327)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iaoedsz2018 2024-6-27 10:12
4
0
badboyl MAX_FUNCSIZE修改成512K之后,再f5。 问下LZ,在哪里修改?
cfg/hexrays.cfg里面有个MAX_FUNCSIZE
雪    币: 246
活跃值: (4372)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
ookkaa 2024-6-27 21:35
5
0
badboyl MAX_FUNCSIZE修改成512K之后,再f5。 问下LZ,在哪里修改?
楼上的答案
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
努力8点 2024-7-8 11:52
6
0
大佬,这个FLA还原不来。。。可以讲讲吗?
雪    币: 901
活跃值: (203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_fefksfsl 2024-7-14 10:44
7
0
盗了b站的cookie可以用你的号帮它点赞和评论。另外palpay那些支付平台最好改一下密码啥的。
游客
登录 | 注册 方可回帖
返回