首页
社区
课程
招聘
[翻译]恶意软件的脱壳方法(一):从可读可写可执行(rwd)内存中dump可执行代码
发表于: 2017-8-30 17:48 7167

[翻译]恶意软件的脱壳方法(一):从可读可写可执行(rwd)内存中dump可执行代码

2017-8-30 17:48
7167

 这是该系列文章的第一篇(至少我会写第二部分,希望能一直写下去),我会在这些文章中介绍不同的脱壳方法,以及我经常使用的脱壳工具和脚本。希望这些文章和工具能对你有帮助。

 给恶意软件脱壳的方法,很大程度上取决于其所属的恶意软件家族。有时脱壳不能用通用方法,需要很大的耐心和想象力。每个人都有自己的方法。但有时可以在恶意软件中找到共同的行为,帮助我们自动完成恶意软件的脱壳。


 在我分析过的恶意软件中,大概有60%70%的恶意软件是将其PE模块脱壳到rwe内存块。

 (用WinDbg可以切换到一个.process /i <process>进程,用!address查看内存空间信息)。

 有时,加壳工具会把恶意软件脱壳到当前进程的内存空间;有时会将PE注入到其他进程的内存空间,或创建一个空进程,等等。但通常,它会创建rwe内存块并将PE映射进去。


 根据上述情况,我写了一些WinDbg脚本来扫描调试器上运行的进程,在rwe内存块中查找PE文件。我已经用这些脚本脱壳了大多数分析过的恶意软件,他们已经帮了我很多。希望对你也有帮助。

 

 dump_injected_pe_rwemem.wdbg:该脚本会扫描调试器的进程的内存,查找映射到rwe内存中的PE文件。每发现一个PE文件,页调入PE的内存(因为有时,一些内存的页不能被映射而导致dump失败)并dump到第一个参数指定的目录中: 

         $$>a<dump_injected_pe_rwemem.wdbg <results directory>

 Dump文件以此形式命名:

         <process>_<baseaddress>_<length>.pedmp(包含PE的进程,PE的基地址及长度)。


 dump_injected_pe_rwemem_fast.wdbg:该脚本和上一个脚本很像,但它不会在dump之前页调入PE的内存。大多数时候,它会完美的dumpPE而且速度很快。总之,我经常在调试器中配置disable swapping(禁止交换),因为这样就可以确保所有的页在内存中。该脚本像上一个脚本一样运行,得到的名字格式也一样:

         $$>a<dump_injected_pe_rwemem_fast.wdbg<results directory>


 find_injected_pe_rwemem.wdbg:该脚本像上面的脚本一样查找PE文件,但只通知找到的PE,不会dump到磁盘。不需要参数:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 1933
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大牛赞一个 
2017-9-3 14:13
0
雪    币: 278
活跃值: (644)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好强!
2017-9-3 15:56
0
游客
登录 | 注册 方可回帖
返回
//