针对一道面试题样本的详细分析
2024-4-9 08:1:55 Author: mp.weixin.qq.com(查看原文) 阅读量:3 收藏

安全分析与研究

专注于全球恶意软件的分析与研究

前言概述

原文首发出处:

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窃密木马。

总结结尾

说点题外话,做安全研究一定要多动手,不管是恶意软件研究,还是做其他方向的安全技术研究,一定要自己多动手研究,看别人的报告或分析,只能学到很少很少的东西,多动手是学习安全的唯一方法,当你真正动手分析和调试一个样本或一个漏洞的时候,你才能学到真正的安全技术,纸上得来终觉浅,绝知此事要躬行。


文章来源: https://mp.weixin.qq.com/s?__biz=MzA4ODEyODA3MQ==&mid=2247488065&idx=1&sn=a6a1d0aa96b99b35481c422ca930f4a7&chksm=902fbd69a758347fa88f6946429e50030e12747d4f71e116523b5deb829bc270a150de0170a7&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh