针对一道面试题样本的详细分析

前言概述

群里有朋友私信我,说面试的时候需要分析一个样本,最后没有过,说只分析停留在外壳代码,没有深入进去,让我有空帮忙看看,简单看了一下这个样本,发现有点意思,给想从事恶意软件分析的朋友一些参考。

详细分析

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扩展是否存在,解密出硬编码的搜索的加密钱包扩展列表,如下所示:

加密钱包列表,如下:
ffnbelfdoeiohenkjibnmadjiehjhajb|YoroiWallet
ibnejdfjmmkpcnlpebklmnkoeoihofec|Tronlink
jbdaocneiiinmjbjlgalhcelgbejmnid|NiftyWallet
nkbihfbeogaeaoehlefnkodbefgpgknn|Metamask
afbcbjpbpfadlkmhmclhkeeodmamcflc|MathWallet
hnfanknocfeofbddgcijnmhnfnkdnaad|Coinbase
fhbohimaelbohpjbbldcngcnapndodjp|BinanceChain
odbfpeeihdkbihmopkbjmoonfanlbfcl|BraveWallet
hpglfhgfnhbgpjdenjgmdgoeiappafln|GuardaWallet
blnieiiffboillknjnepogjhkgnoapac|EqualWallet
cjelfplplebdjjenllpjcblmjkfcffne|JaxxxLiberty
fihkakfobkmkjojpchpfgcmhfjnmnfpi|BitAppWallet
kncchdigobghenbbaddojjnnaogfppfj|iWallet
amkmjjmmflddogmhpjloimipbofnfjih|Wombat
fhilaheimglignddkjgofkcbgekhenbh|AtomicWallet
nlbmnnijcnlegkjjpcfjclmcfggfefdm|MewCx
nanjmdknhkinifnkgdcggcfnhdaammmj|GuildWallet
nkddgncdjgjfcddamfgcmfnlhccnimig|SaturnWallet
fnjhmkhhmkbjkkabndcnnogagogbneec|RoninWallet
aiifbnbfobpmeekipheeijimdpnlpgpp|TerraStation
fnnegphlobjdpkhecapkijjdkgcjhkib|HarmonyWallet
aeachknmefphepccionboohckonoeemg|Coin98Wallet
cgeeodpfagjceefieflmdfphplkenlfk|TonCrystal
pdadjkfkgcafgbceimcpbkalnfnepbnk|KardiaChain
bfnaelmomeimhlpmgjnjophhpkkoljpa|Phantom
fhilaheimglignddkjgofkcbgekhenbh|Oxygen
mgffkfbidihjpoaomajlbgchddlicgpn|PaliWallet
aodkkagnadcbobfpggfnjeongemjbjca|BoltX
kpfopkelmapcoipemfendmdcghnegimn|LiqualityWallet
hmeobnfnfcmdkdcmlblgagmfpfboieaf|XdefiWallet
lpfcbjknijpeeillifnkikgncikgfhdo|NamiWallet
dngmlblcodfobpdpecaadgfbcggfjfnm|MaiarDeFiWallet
ffnbelfdoeiohenkjibnmadjiehjhajb|YoroiWallet
ibnejdfjmmkpcnlpebklmnkoeoihofec|Tronlink
jbdaocneiiinmjbjlgalhcelgbejmnid|NiftyWallet
nkbihfbeogaeaoehlefnkodbefgpgknn|Metamask
afbcbjpbpfadlkmhmclhkeeodmamcflc|MathWallet
hnfanknocfeofbddgcijnmhnfnkdnaad|Coinbase
fhbohimaelbohpjbbldcngcnapndodjp|BinanceChain
odbfpeeihdkbihmopkbjmoonfanlbfcl|BraveWallet
hpglfhgfnhbgpjdenjgmdgoeiappafln|GuardaWallet
blnieiiffboillknjnepogjhkgnoapac|EqualWallet
cjelfplplebdjjenllpjcblmjkfcffne|JaxxxLiberty
fihkakfobkmkjojpchpfgcmhfjnmnfpi|BitAppWallet
kncchdigobghenbbaddojjnnaogfppfj|iWallet
amkmjjmmflddogmhpjloimipbofnfjih|Wombat
fhilaheimglignddkjgofkcbgekhenbh|AtomicWallet
nlbmnnijcnlegkjjpcfjclmcfggfefdm|MewCx
nanjmdknhkinifnkgdcggcfnhdaammmj|GuildWallet
nkddgncdjgjfcddamfgcmfnlhccnimig|SaturnWallet
fnjhmkhhmkbjkkabndcnnogagogbneec|RoninWallet
aiifbnbfobpmeekipheeijimdpnlpgpp|TerraStation
fnnegphlobjdpkhecapkijjdkgcjhkib|HarmonyWallet
aeachknmefphepccionboohckonoeemg|Coin98Wallet
cgeeodpfagjceefieflmdfphplkenlfk|TonCrystal
pdadjkfkgcafgbceimcpbkalnfnepbnk|KardiaChain
bfnaelmomeimhlpmgjnjophhpkkoljpa|Phantom
fhilaheimglignddkjgofkcbgekhenbh|Oxygen
mgffkfbidihjpoaomajlbgchddlicgpn|PaliWallet
aodkkagnadcbobfpggfnjeongemjbjca|BoltX
kpfopkelmapcoipemfendmdcghnegimn|LiqualityWallet
hmeobnfnfcmdkdcmlblgagmfpfboieaf|XdefiWallet
lpfcbjknijpeeillifnkikgncikgfhdo|NamiWallet
dngmlblcodfobpdpecaadgfbcggfjfnm|MaiarDeFiWallet
bhghoamapcdpbohphigoooaddinpkbai|Authenticator
ookjlbkiijinhpmnjffcofjonbfbgaoc|TempleWallet
到此该面试题样本基本就分析完毕了,可以判定该样本为RedLine Stealer窃密木马。

总结结论

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

样本HASH
f22e976a3cc892e7c21cf6e222d0cf2e0e6c0dc0f7b882c7ac8d365a1e3b4cd1
有兴趣的可以自己对照着文章调试分析一遍,应该能学到一些分析技术。

2 条评论
某人
表情
可输入 255
1301035684506458
2024-03-29 10:56 吉林 0 回复

第二段shellcode异或解密和载荷定位的手法,和我以前调试的一个”.net“勒索软件一模一样,应该是某个开源库。


qianlan
2024-03-24 13:36 日本 0 回复

第二段shellcode异或解密和载荷定位的手法,和我以前调试的一个”.net“勒索软件一模一样,应该是某个开源库。