decrypting-obfuscated-net-malware-part1
1.起因
今天正好抽空整理一下前几个月看到阿三的分析视频。
https://app.any.run/tasks/0f9b13ab-3efe-4ee1-abc1-a193db2bc33e/
AgentTesla该恶意样本具有 3 层混淆和少量反分析技术的信息窃取器能够通过通过 SMTP 发送所有收集到的信息来窃取受害者的各种信息。
stager 的名称:
- IbIDo(包含有payload2 和 3 的加密stager)
- AndroidStudio(解密payload 3)
- Lazarus(最终payload之前包含少量反分析技术)
- NRMOeaUVVkwIAtJShsOH(最终 AgentTesla payload)
下面我们就开始分析各个阶段的stager
2.IbIDo
拖入MV TBN CALL PORT FOR LOADING COAL_pdf.exe到pestudiom,可以看到在version种可以看到信息lbIDo.exe
再使用dnspy反编译调试工具进行分析与调试,找到ibiDO,进入man函数
跟进去找到main窗口,可以看到两个字符串
那么我们回来再看看这个Secure1函数,双击跟进去看看。
在这我们可以看到资源的wpf像是做了base64解密,然后替换了字符串以及字符串翻转。
我们接着跟进到资源处,可以看到处理过的字符串
那么我们对其使用CyberChef解密。得出第二阶段的payload。
或在此处调试进行保存二进制文件即可
可以看到调用该第二阶段的payload的类
3.AndroidStudio
我们可以看到到处保存的二进制文件为dll,同时也是C#编译的
继续进行分离payload的,在此处下的断点,运行后,快速进行暂停。
停了之后,可以看到这里有个sleep函数,在该函数这里下个断点,然后步过
我们在左侧可以看到调用的dll,然后我们依次进行步过
只到788行进行单步,跟进去,再步过。
单步后,可以看到array处熟悉pe头
保存导出使用pestudioj进行查看,发现是个exe文件,依旧还是c#编译的
4.Lazarus
拖入dnspy种发现混淆比较严重。
使用de4dot工具,进行脱壳反混淆操作
处理完混淆后的文件之后,我们进入main函数主体
下断点,然后一直步过。
直到这里,进行单步。
直到这里,进行单步。
一直到这里,我们可以看到又是一个pe头。
保存导出使用pestudioj进行查看,发现是个exe文件,依旧还是c#编译的,也是为最终 AgentTesla payload。
5.NRMOeaUVVkwIAtJShsOH
依旧拖入dnspy,查看main主体
在浏览代码时,我发现了很多对函数的引用’Module>.\u0005’
看一下函数的定义,如下所示,表明它接受一个整数作为输入并返回一个字符串。所以混淆器在运行时使用这个函数来解码字符串。注意0x060000002我们在解密字符串时需要它的函数的令牌标识符。(单击红框处的module)
现在切换到命令行并发出以下命令
1 | de4dot.exe 1.exe --strtyp emulate --strtok 0x06000002 |
–strtoki是我们上面确定的字符串解密函数的令牌。如果恶意软件使用多个函数来解密字符串,像这样指定所有函数
1 | de4dot file1.dll --strtyp delegate --strtok 06012345 --strtok 060ABCDE |
其中–strtyp是要使用的字符串解密器的类型。de4dot 支持以下
1 | 字符串解密器类型 |
处理完毕的文件内容
参考链接:https://www.youtube.com/watch?v=8L4hh5CG4nQ&t=1s
https://medium.com/@irshaduetian/decrypting-obfuscated-net-malware-strings-using-de4dot-emulation-6614c5a03dab