decrypting-obfuscated-net-malware-part1


1.起因

今天正好抽空整理一下前几个月看到阿三的分析视频。

https://app.any.run/tasks/0f9b13ab-3efe-4ee1-abc1-a193db2bc33e/

AgentTesla该恶意样本具有 3 层混淆和少量反分析技术的信息窃取器能够通过通过 SMTP 发送所有收集到的信息来窃取受害者的各种信息。
stager 的名称:

  1. IbIDo(包含有payload2 和 3 的加密stager)
  2. AndroidStudio(解密payload 3)
  3. Lazarus(最终payload之前包含少量反分析技术)
  4. NRMOeaUVVkwIAtJShsOH(最终 AgentTesla payload)

  5. 下面我们就开始分析各个阶段的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
2
3
4
5
6
字符串解密器类型
none 不要解密字符串
default 使用默认的字符串解密器类型(通常是静态的)
static 使用静态字符串解密器(如果可用)
delegate 使用delegate调用真正的字符串解密器
emulate 调用真正的字符串解密器并模拟某些指令


处理完毕的文件内容


参考链接https://www.youtube.com/watch?v=8L4hh5CG4nQ&t=1s
https://medium.com/@irshaduetian/decrypting-obfuscated-net-malware-strings-using-de4dot-emulation-6614c5a03dab