安全分析与研究
专注于全球恶意软件的分析与研究
前言概述
原文首发出处:
https://xz.aliyun.com/t/14134
先知社区 作者:熊猫正正
群里有朋友私信我,说面试的时候需要分析一个样本,最后没有过,说只分析停留在外壳代码,没有深入进去,让我有空帮忙看看,简单看了一下这个样本,发现有点意思,给想从事恶意软件分析的朋友一些参考。
详细分析
1.样本无加壳,编译时间为2022年1月13日,如下所示:
2.主体代码结构,如下所示:
3.进入sub_405200函数,很明显对某个内存地址进行了赋值操作,如下所示:
4.最后跳转执行该地址代码,如下所示:
5.该内存地址是通过GlobalAlloc动态分配的,如下所示:
6.将shellcode代码,拷贝到分配的内存地址当中,如下所示:
7.赋值之后的内存代码,如下所示:
8.解密shellcode代码,如下所示:
9.解密之后的shellcode代码,如下所示:
10.跳转执行解密出来的shellcode代码,如下所示:
11.外壳代码基本上就分析完了,进入shellcode代码,获取相关函数地址,如下所示:
12.解密第二段shellcode数据,如下所示:
13.通过VirtualAlloc分配内存空间,然后将第二段shellcode解密拷贝到分配的内存空间,如下所示:
14.跳转执行到第二段shellcode代码,如下所示:
15.第二段shellcode代码,如下所示:
16.分配内存空间,如下所示:
17.将shellcode代码中payload数据拷贝到分配的内存空间当中,如下所示:
18.拷贝完成之后内存空间,如下所示:
19.将payload代码加载到00400000内存代码中,如下所示:
20.跳转到加载到内存的payload代码入口点执行,如下所示:
21.main函数主体代码,如下所示:
22.查找程序中资源数据,如下所示:
23.获取资源数据到内存当中,如下所示:
24.解密出payload数据,如下所示:
25.使用CLR非托管接口调用payload恶意代码,如下所示:
26.调用payload的恶意类代码,如下所示:
27.payload的恶意类代码,如下所示:
28.恶意类代码加载程序中的资源数据,资源数据,如下所示:
29.该资源数据包含的恶意payload为NET语言编写并使用.NET Reactor加壳,如下所示:
30.脱壳之后,动态调试,解密出payload相关数据,如下所示:
31.通过分析payload为RedLine Stealer窃密木马,会枚举Chrome和Opera GX Stable 的登录数据、Web 数据、Cookies文件夹,如下所示:
32.搜索以下加密货币相关Google Chrome、Microsoft Edge和Mozilla Firefox扩展是否存在,解密出硬编码的搜索的加密钱包扩展列表,如下所示:
加密钱包列表,如下:
到此该面试题样本基本就分析完毕了,可以判定该样本为RedLine Stealer窃密木马。
总结结尾
说点题外话,做安全研究一定要多动手,不管是恶意软件研究,还是做其他方向的安全技术研究,一定要自己多动手研究,看别人的报告或分析,只能学到很少很少的东西,多动手是学习安全的唯一方法,当你真正动手分析和调试一个样本或一个漏洞的时候,你才能学到真正的安全技术,纸上得来终觉浅,绝知此事要躬行。