近期的Emotet木马活动借助office传播病毒2

近期的Emotet木马活动借助office传播病毒2

受影响的平台: Microsoft Windows
受影响的各方: 64 位 Windows 用户
影响:控制受害者的设备并收集敏感信息
严重性级别:严重

Fortinet 的FortiGuard 实验室最近捕获了 500 多个 Microsoft Excel 文件,这些文件参与了一项向受害者设备提供新 Emotet 木马的活动。

Emotet 被称为模块化木马,于 2014 年年中首次被发现。从那时起,它变得非常活跃,不断自我更新。网络安全新闻也不时强调这一点。Emotet 使用电子邮件等社交工程来引诱收件人打开附加的文档文件(包括 Word、Excel、PDF 等)或单击电子邮件内容中的链接,将最新的 Emotet 变体下载到受害者的设备上然后执行它。

这篇文章的第一部分,我解释了 Emotet 的这个变种是如何通过 Excel 文档中的恶意 VBA 代码传播的,下载的 Emotet 恶意软件如何在 Rundll32 程序中运行,这个变种使用了什么样的反分析技术,它是如何加密的并将其受害者的数据提交给其 C2 服务器。Emotet 在收到来自 C2 服务器的响应数据时会做什么,以及 Emotet 如何在受害者的设备上启用持久性控制。

在这篇文章中,您将了解带有恶意模块的响应数据包中的数据是什么样的,从 C2 服务器接收到当前 Emotet 活动的哪些模块,以及它们如何部署在受害者的设备中。您还将发现这些模块从受害者的设备中窃取了哪些敏感数据。

当 X.dll 接收到带有模块的响应时

一旦 C2 服务器处理并检测到包含关键数据(例如受害者的设备系统版本、Windows 架构等)的第一个提交的数据包,它就会返回恶意模块,以便 Emotet 在受害者的设备中执行。所有收到的模块都是无文件的。也就是说,它们只存在于内存中,由运行在 Rundll32.exe 中的 X.dll(Emotet 的核心)处理。

近期的Emotet木马活动借助office传播病毒2
图 1.1 – 数据包中的解密模块

图 1.1 是 X.dll 的代码和内存的截图。下面是一个C2的响应包,只是调用10012371函数在内存中解密出来的。参考本系列第一部分的图5.3,可以帮助你理解包的结构。

红色框是验证数据(99 DE … DD A5),数据包其余数据的哈希签名。下面的 dword 0x00000000标记为黄色,是一个标志,告诉 Emotet 如何运行回复的模块。0x00 告诉它在新创建的线程中执行模块。蓝色的是二进制模块。它以模块大小开始,在本例中为 0x79400,其余部分是模块二进制数据(4D 5A 90 00 …)。

Emotet 必须使用 40H 验证数据来验证解密数据,如图 1.1 所示。

然后它将接收到的模块部署到内存中并准备执行它。然后它在一个新创建的线程中调用它的入口点。这篇文章将把这个模块称为“线程模块”。其主要目的是提取并执行从受害者设备中窃取敏感数据的最终功能模块,并将窃取的数据提交给其 C2 服务器,本分析稍后将对此进行讨论。图 1.2 显示了线程函数 ASM 代码调用已部署线程模块的入口点的位置。

近期的Emotet木马活动借助office传播病毒2
图 1.2 – Emotet 线程函数调用线程模块的入口点

Thread-Module – 执行进程空心化

线程模块继续将 PE 文件(最终的功能模块)从其 .text 部分解密到内存中。为了执行这个模块,它执行进程空心化。它通过将 Windows 文件“certutil.exe”从“%Windir%\SysWOW64\certutil.exe”或“%Windir%\system32\certutil.exe”复制到“%temp%”文件夹中来实现此目的。然后将其重命名为随机文件名,例如“uvbubqj.exe”。接下来,线程模块用这个文件创建一个挂起的进程。

近期的Emotet木马活动借助office传播病毒2
图 2.1 – 调用 API CreateProcessW() 创建一个挂起的进程

正如您在图 2.1 中的命令行字符串中看到的,“uvbubqj.exe”是复制的“certutil.exe”、“/scomma”和随后的临时文件——“C:\Users\Bobs\AppData\Local\Temp \60B2.tmp” — 是进程的参数。通过调用 API GetTempFileNameW() 生成临时文件名。临时文件“60B2.tmp”的路径被功能模块读取,用于保存被盗信息。CreateProcessW() 的第六个参数是 0x00000004,它是一个创建标志,指示 CreateProcessW() 使用它创建进程并进入挂起状态的“CREATE_SUSPENDED”。

然后它调用一组 API,如 GetThreadContext()、VirtualAllocEx()、ReadProcessMemory()、WriteProcessMemory() 等,将最终的功能模块注入新进程的内存。稍后调用 API SetThreadContext() 设置新进程 EIP 寄存器指向功能模块的入口点,在调用 API ResumeThread() 后调用。

之后,线程模块开始循环监视临时文件,直到它使用来自受害者设备的被盗信息创建。

查看功能模块

在上面的分析中,我解释了如何在受害者的设备中加载和执行 C2 模块。

C2 服务器可以返回许多模块,每个模块都经历与上述相同的过程。他们将有一个线程模块,在他们的线程中运行,并执行他们自己的进程空心化。

我收到了三个 C2 模块。我将在以下部分详细说明它们如何在受害者的设备上工作。

模块 1 – 从受害者的浏览器中窃取凭据

自解压封隔器保护此模块。它在运行时解密一个 PE 文件,覆盖“certutil.exe”的现有代码,然后执行它。

解压后的PE文件是NirSoft开发的一款名为“WebBrowserPassView”的免费软件。它被设计为密码恢复工具,但已被恶意行为者滥用以窃取受害者的凭据。用户界面显示存储在多个 Web 浏览器中的已保存凭据。

近期的Emotet木马活动借助office传播病毒2
图 3.1 – 打开 WebBrowserPassView 模块

图 3.1 显示了我在测试环境中打开该模块时的样子。此 Emotet 变体使用 WebBrowserPassView v2.06。

它的线程模块将诸如“/scomma C:\Users\Bobs\AppData\Local\Temp\7B3C.tmp”之类的命令行参数传递给进程,该进程可以将 WebBrowserPassView 切换到无窗口模式并将检索到的凭据保存到给定临时文件。

从它的代码中,我了解到它可以从各种网络浏览器收集凭据:

Microsoft IE、Microsoft Edge、Google Chrome、Mozilla Firefox、Opera、Apple Safari、SeaMonkey、Yandex、Vivaldi、Waterfox 和所有其他基于 Chromium 的浏览器。

被盗凭证包含以下信息:

• URL:为其保存凭据的 URL
• Web 浏览器:保存凭据的浏览器名称
• 用户名、密码:凭据
• 密码强度:强或弱
• 用户名字段:输入用户名字段的控件名称
• 密码字段:在密码字段中输入的字符串
• 创建时间:保存时间 • 修改时间:更新凭据的时间
• 文件名:它从哪个文件窃取了凭据

所有凭据都保存在一个临时文件中。

模块2 – 窃取电子邮件联系信息

该模块通过逐一检查受害者的电子邮件,从 Microsoft Outlook 中的电子邮件文件夹中窃取受害者的电子邮件联系人。它将收集到的联系信息保存在双链结构中。

图 4.1 显示了从我的测试 Outlook 帐户中的一封电子邮件中获取的一个电子邮件联系人,然后将其添加到双向链中,如底部所示。收集的数据显示电子邮件发件人的人名和电子邮件地址。在此示例中,它从显示的电子邮件中收集了“Outlook”和“[email protected]”。

近期的Emotet木马活动借助office传播病毒2
图 4.1 – 双向链中的一个被盗联系人

该模块枚举所有收集的电子邮件,并将唯一的电子邮件联系信息放入双向链中。为了收集 Outlook 的数据,它必须调用几个 API,包括 MAPIInitialize()、MAPILogonEx() 和 MAPIFreeBuffer(),并通过调用 API CoCreateInstance() 创建一些 COM 对象,例如 OlkAccountManager 和 OlkMail。

最后,它从链接链中逐一检索这些电子邮件联系人,并将它们保存到来自命令行参数的临时文件中。图 4.2 显示了临时文件的屏幕截图,在本示例中为“%temp%\6827.tmp”,以及收集的电子邮件联系人。

近期的Emotet木马活动借助office传播病毒2
图 4.2 – 包含被盗电子邮件联系信息的临时文件

模块 3 – 窃取受害者电子邮件客户端的帐户设置

该功能模块专注于窃取受害者的电子邮件帐户设置和来自其电子邮件客户端的凭据。它也是一个受打包程序保护的模块,因此在调用其入口点时它与 Module1 执行相同的操作。

根据我的分析,解压后的PE文件是一个EXE文件,是NirSoft的另一个免费软件“ Mail PassView ”。它最初被设计为电子邮件客户端的小型密码恢复工具。Emotet 使用的是最新版本——v1.92。图 5.1 是这个软件在我的测试环境中运行的截图。

近期的Emotet木马活动借助office传播病毒2
图 5.1 – 在我的测试环境中打开 Mail PassView

通过其代码和常量字符串,我们了解到它可以从以下电子邮件客户端或其他可以保存电子邮件凭据的客户端获取电子邮件帐户设置和凭据:

Mozilla Thunderbird、Eudora、Microsoft Outlook、Microsoft Outlook Express、Windows Mail、MSNMessenger、Windows Live Mail、Group Mail、IncrediMail、Yahoo! 雅虎邮件!Messenger、Hotmail、Google 桌面和 Google Talk。

它从系统注册表和这些电子邮件客户端的本地配置文件中收集设置和凭据。图 5.2 是一个通用函数的 ASM 代码段,该函数预定义了许多值名称。

软件通过“ HKCU\Software\Microsoft\Internet Account Manager\Accounts ”和“ HKCU\Software\Microsoft\Office ”子项下的这些值名,反复从系统注册表中读取用户名、服务器地址、服务器端口和类似信息\Outlook\OMI Account Manager\Accounts “,用于保存 Microsoft Outlook 和 Microsoft Outlook Express 的设置和凭据。

近期的Emotet木马活动借助office传播病毒2
图 5.2 – 从系统注册表中读取的定义值名称

这次,该软件的命令行参数字符串是“/scomma C:\Users\Bobs\AppData\Local\Temp\8042.tmp”,其中“/scomma”允许进程在没有窗口的情况下运行并保存检索到的临时文件的信息紧随其后。

模块3 – 提交被盗数据

随着功能模块的工作窃取敏感数据,线程模块一直在监视临时文件,直到使用被盗信息创建它。

然后它将被盗数据从临时文件加载到内存中,然后删除该文件。在将窃取的数据提交给 C2 服务器之前,它会对数据进行压缩和加密。

近期的Emotet木马活动借助office传播病毒2
图 6.1 – 调用 BCryptEncrypt() 加密被盗数据

这个例子,如图 6.1 所示,是要调用 API BCryptEncrypt() 来加密数据包的地方,数据包从 4790E0 开始。用红色勾勒的部分就像数据包头。它包含数据包类型 (0x3EA),告诉 C2 服务器数据包中的数据类型、数据的 sha256 哈希码 (69 35 … 3C 4A)、模块 ID (0x14) 以及受害者的 ID . 以蓝色标记的后续数据以以下数据的数据大小 (0x398) 开头(从 10 55 52 4C … 到结尾),它们压缩的 Web 浏览器凭据。

该线程模块使用 11 个 C2 服务器来接收从受害者设备窃取的数据。这些 C2 服务器的 IP 和端口在内存中被加密,并在提交被盗数据之前被解密。三个下载的模块具有相同的C2服务器列表,可以在本次分析最后的“IOC”部分找到。

近期的Emotet木马活动借助office传播病毒2
图 6.2 – 向 C2 服务器显示捕获的数据包和加密数据

图 6.2 是一个代理工具的屏幕截图,显示了带有被盗受害者敏感数据的数据包是如何发送到其 C2 服务器的。

它使用带有随机 URL 的 HTTP Post 方法在正文中提交被盗数据,正文由一个 40H 长的导出密钥组成,后面是加密数据,如图 6.2 所示。C2 服务器可以使用 40H 导出的密钥对提交的数据进行解密。

结论

在本分析的第二部分中,我从从 C2 服务器接收到的模块数据包开始,并解释了数据包的结构。接下来,我展示了如何在新创建的线程中执行模块(模块3)。然后我们介绍了线程模块如何执行进程空心来执行功能模块。

在讨论收到的三个模块时,我详细说明了 Emotet 可以从受害者的设备中窃取哪些类型的数据,例如来自受害者电子邮件帐户的电子邮件联系信息、电子邮件帐户的设置、来自受害者电子邮件客户端的凭据以及保存在广泛的网络浏览器。

最后,回到线程模块,Emotet 从给定的临时文件中读取被盗信息。然后它对数据进行压缩和加密,最终使用 HTTP Post 方法提交给 C2 服务器。

Fortinet 保护

Fortinet 客户已经通过 FortiGuard 的 Web 过滤、防病毒、For​​tiMail、FortiClient、FortiEDR 和 CDR(内容解除和重建)服务免受这种恶意软件的侵害,如下所示:

文章第一部分中提到的 Excel 示例中的恶意宏可以通过 FortiGuard CDR(内容解除和重建)服务解除。

所有相关的 URL 都被FortiGuard Web Filtering 服务评为“恶意网站”。

捕获的 Excel 样本和下载的 Emotet dll 文件被检测为“ VBA/Emotet.2826!tr.dldr ”和“ W32/Emotet.B185!tr ”,并被 FortiGuard AntiVirus 服务阻止。

FortiEDR 根据其行为将 Excel 文件和 Emotet dll 文件检测为恶意文件。

除了这些保护之外,Fortinet 还提供多种解决方案,旨在帮助培训用户检测和了解网络钓鱼威胁:

我们鼓励组织让他们的最终用户参加我们的免费 NSE 培训:  NSE 1 – 信息安全意识。它包括一个有关 Internet 威胁的模块,旨在帮助最终用户学习如何识别和保护自己免受各种类型的网络钓鱼攻击。

然后可以使用我们的 FortiPhish 网络钓鱼模拟服务来加强这种培训。它使用真实世界的攻击场景来培训用户,测试意识和警惕性​​,并加强处理网络钓鱼事件的正确做法。

侵害指标(IOCs)

三个线程模块中的 C2 服务器列表:

144[.]217[.]88[.]125:443
67[.]205[.]162[.]68:8080
54[.]36[.]98[.]59:7080
45[.]184[.]36[.]10:8080
47[.]110[.]149[.]223:8080
159[.]65[.]1[.]71:8080
51[.]178[.]186[.]134:443
131[.]100[.]24[.]199:8080
51[.]91[.]142[.]158:80
51[.]79[.]205[.]117:8080
176[.]31[.]163[.]17:8080

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注