使用MS Word文档传播.Net RAT恶意软件

TRex 系统安全 2019年1月21日发布
Favorite收藏

导语:FortiGuard实验室分析了经由恶意MS Word文档传播的NanoCore RAT恶意软件。

就在几天前,FortiGuard实验室从野外捕获了一个恶意的MS Word文档,其中包含可自动执行的恶意VBA代码,可以在受害者的Windows系统上传播和安装NanoCore RAT软件。NanoCore RAT是在.Net框架中开发的,其最新版本为“1.2.2.0”。它的作者“泰勒·哈德尔斯顿”被联邦调查局抓获并于去年初被送进监狱。我们捕获的样本使用NanoCore在受害者的系统上执行恶意行为。

在本博文中,我将展示它如何传播并安装到受害者的系统上。

一、恶意Word文档

图1.打开的恶意Word文档

捕获的Word文档的名为“eml _-_ PO20180921.doc”。当它在MS Word中打开时,我们会看到如图1所示的内容。如您所见,窗口顶部有一条黄色警告消息。

一旦受害者点击图1中的黄色按钮“启用内容”,恶意VBA代码就会在后台执行。 VBA代码从“Document_Open”函数自动执行。它的代码被混淆了,如图2所示。

图2.部分混淆的VBA代码

从图2中的API函数名称和调试输出信息中,我们可以看到VBA代码做了一件事:它从URL “hxxp://www.wwpdubai.com/wp-content/plugins/jav/inv.exe”下载一个EXE文件并将其保存为%temp% \CUVJN.exe。然后,在下载完成后执行此EXE文件。

图3.下载的CUVJN.exe的文件信息

CUVJN.exe是一个.Net框架程序。它的原始名称是“icce.exe”。图3中的屏幕截图显示了详细信息。但是,这不是真正的NanoCore RAT,它是在运行CUVJN.exe时提取的。让我们继续看看它是如何做到的。

二、执行下载的CUVJN.exe

我用.Net调试器dnSpy加载了CUVJN.exe。跟踪其主要功能,可以看到它从其资源部分加载了大量数据块,然后将它们放在一起进行解密。

从下面的图4中,可以看到CUVJN.exe通过“9”资源文件夹中的名称重复加载资源块。然后将所有数据合在一起放入本地数组变量“array10”。然后解密数据获得新的PE文件,可以在图5中看到它。

图4.从CUVJN.exe资源部分加载数据

图5.解密资源数据获取PE文件

解密的PE文件是另一个.Net框架程序。它的原始名称是“dll.exe”。此时,它的“主要”功能尚未被调用。下面是函数“МđыдĐäѦГБуѦ”的代码片段,显示它通过“invoke”调用“main”函数,其中参数“crap”包含“main”函数。这就像执行函数“invoke(crap)”。这意味着解密的“dll.exe”将在CUVJN.exe进程内运行。

public static void МđыдĐäѦГБуѦ(object fileName, object crap)
    {
        checked
        {
            try
            {
                NewLateBinding.LateCall(crap, null, "invoke", new object[]
                {null, new object[0] }, null, null, null, true);
                int num = 0;
                object instance;
[ ... ]

根据我的分析,解密的.Net程序是守护进程。让我们继续从main函数中跟踪它。首先,它创建一个Mutex并检查该进程是否已存在,以确保只运行该程序的一个进程。接下来,它通过检测是否加载了“snxhk.dll”模块来检查受害者的系统上是否运行Avast。如果是的话,它会一直等到它被卸载。Avast是一款AntiVirus软件,“snxhk.dll”是其模块之一。

public static void avast()    {
        try        {
            IntPtr moduleHandle = RunPE.GetModuleHandle("snxhk.dll");
            while (moduleHandle != IntPtr.Zero)            {
                moduleHandle = RunPE.GetModuleHandle("snxhk.dll");
                Thread.Sleep(500);
            }
        }
        catch (Exception ex)
        {        }
    }

然后,它执行与上面的CUVJN.exe类似的活动,从其资源部分加载数据,这是一个gzip存档。然后执行以下函数解压缩gzip存档并获取PE文件。这才是真正的NanoCore RAT客户端。

public static byte[] DEC(byte[] ThrowApples, int VAR12 = 70) {        int num = 0;        GZipStream gzipStream = new GZipStream(new MemoryStream(ThrowApples), CompressionMode.Decompress, true);        int num2 = ThrowApples.Length;
        byte[] result;        try           {                 byte[] array;            for (;;)                 {                     array = (byte[])Utils.CopyArray((Array)array, new byte[num + num2 + 1]);                int num3 = gzipStream.Read(array, num, num2);                if (num3 == 0)                    {     break;     }                num += num3;              }            array = (byte[])Utils.CopyArray((Array)array, new byte[num - 1 + 1]);            result = array;         } [ … ]

在运行真正的NanoCore客户端之前,它会执行一些检查。它检查当前进程的完整路径是否为“%AppData%\Microsoft\Windows\ScreenToGif\netprotocol.exe”。当然,结果是“FALSE”。我们仍在进程CUVJN.exe中,因此其完整路径为“%temp%\ CUVJN.exe”。然后它停止并将CUVJN.exe文件复制到文件夹“%AppData%\Microsoft\Windows\ScreenToGif\”,然后将其重命名为“netprotocol.exe”。之后,它使用新文件创建一个新的“Process”对象,并调用“Process”对象的“Start()”函数来运行。最后,它调用“ProjectData.EndApp()”来终止CUVJN.exe进程。

图6显示了将恶意软件复制到新路径,运行,然后退出CUVJN.exe的代码段。

图6.将恶意软件复制到新文件夹并运行

netprotocol.exe正在运行,因为它是“CUVJN.exe”的副本,可以预见它与我们上面介绍的CUVJN.exe完全相同。

1.从资源部分加载数据,然后解密获取“dll.exe”

2.在“netprotocol.exe”中运行“dll.exe”的主函数,而不是在“CUVJN.exe”中运行

3.从“dll.exe”的资源中解压缩NanoCore

4.检查当前进程的完整路径是否为“%AppData%\Microsoft\Windows\ScreenToGif\netprotocol.exe”。这次答案是“TRUE”。

让我们从中断的位置继续跟踪,其中只有进程名更改为“netprotocol.exe”。

三、守护进程无法终止

通过我的分析,“dll.exe”是一个守护进程。它启动另一个“netprotocol.exe”,将解压缩的NanoCore注入其内存,然后运行它。作为守护进程, “dll.exe”的一个任务是保持NanoCore在第二个“netprotocol.exe”中运行良好。它有一个“ProtectMe”类,包含有一个函数“ProtectMe.Protect()”,防止被杀。当第一次在测试环境中测试这个恶意软件时,我很惊讶我根本无法杀死进程“netprotocol.exe”。它既不是系统服务,也没有比我更高的特权。做了一些研究之后,我得到了这个类和函数,如下所示。

[DllImport("ntdll.dll")]
private static extern IntPtr ZwSetInformationProcess(IntPtr _1, IntPtr _2, IntPtr _3, IntPtr _4);
public static void Protect(){    ProtectMe.ZwSetInformationProcess(ProtectMe.GetCurrentProcess(), (IntPtr)33L, (IntPtr)ProtectMe.VarPtr(-2147421911), (IntPtr)4L);

事实证明它使用来自NTDLL.dll的未记录的函数ZwSetInformationProcess。这个函数可以修改进程的状态,这就是我无法杀死进程的原因。图7是当我试图通过命令“taskkill”杀死“netprotocol.exe”时的屏幕截图,守护进程“netprotocol.exe”(PID 3428)无法被杀死。

图7.无法终止守护进程

有一个名为“RunPE.doIt()”的函数用于运行和保护NanoCore RAT客户端。它调用API CreateProcessA来启动一个新的“netprotocol.exe”,然后暂停它。接下来,它在新的“netprotocol.exe”中分配内存,并使用API WriteProcessMemory将整个NanoCore放入新分配的内存中。最后,它将线程上下文的入口点修改为NanoCore的入口点,并通过调用API ResumeThread恢复在第二个“netprotocol.exe”内运行的NanoCore。

四、NanoCore RAT客户端

NanoCore是2013年首次发现的RAT(远程访问特洛伊木马)。它能够在受害者的机器上执行大量恶意操作,例如注册表编辑、进程控制、升级、文件传输、键盘记录、密码窃取等。

NanoCore是一个.Net框架程序。它的代码被完全混淆,如图8所示。

图8.混淆的NanoCore客户端代码

一旦在第二个“netprotocol.exe”中运行,它就会在“%AppData%”文件夹下创建一个新文件夹作为其主文件夹。新文件夹在我的测试环境中命名为“AA401429-5100-45C4-9496-689224150CC3”。它还会创建许多子文件夹,例如“DHCP Manager”和“Logs”,然后将“netprotocol.exe”复制到“DHCP Manager”并将其重命名为“dhcpmgr.exe”。然后,它在Windows注册表中创建一个自动运行项,其值为“DHCP Manager”,其数据是“dhcpmgr.exe”的完整路径。图9显示了该项的详细信息。

图9.添加到Windows注册表的自动运行项

“Logs”子文件夹包含从受害者系统收集的不同子文件夹中的数据,其名称是不同登录用户的当前登录用户名。

为了演示,我将展示如何记录输入。打开Chrome浏览器并进入了一个网上银行网站,在登录页面上输入了测试帐号和测试密码。可以发现我输入的所有内容都是由NanoCore客户端获取的,并保存在“Logs”子文件夹中我的登录用户文件夹下的文件中。文件名伪装成Windows更新日志文件。可以从图10中获得有关此内容的更多信息。

图10.键盘记录数据

五、解决方案

恶意Word文档已被检测为“VBA/Agent.1B7E!tr.dldr”,并且FortiGuard AntiVirus服务已将“CUVJN.exe”检测为“MSIL / Injector.REB!tr”。

恶意软件下载URL已被FortiGuard WebFilter服务评为“恶意网站”。

六、如何移除恶意软件

1>从系统注册表“HKCU\Software\Microsoft\Windows\CurrentVersion\Run”或“HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”(取决于Windows系统版本)中删除值“DHCP Manager”并保存该值的数据供后续使用,如“%AppData%\[Random string]\DHCP Manager\dhcpmgr.exe”。

2>重新启动Windows系统。

3>删除文件夹“%AppData%\Microsoft\Windows\ScreenToGif”。

4>删除在步骤1中保存的文件夹。 

IoC:

URL:

hxxp://www.wwpdubai.com/wp-content/plugins/jav/inv.exe

Sample SHA256:

eml_-_PO20180921.doc

FFEE1A33C084360B24C5B987B80887A2D77248224DBD6A0B6574FF9CEF74BDD6

CUVJN.exe / icce.exe / dhcpmgr.exe / netprotocol.exe

 32BB5F767FE7788BCA4DD07F89F145D70EC3F58E2581CAB9CA6182D3FCE9BC86

本文翻译自:https://www.fortinet.com/blog/threat-research/-net-rat-malware-being-spread-by-ms-word-documents.html如若转载,请注明原文地址: https://www.4hou.com/system/15835.html
点赞 5
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论