寻找失落的灵魂-揭示SoulSearcher恶意软件的演变

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变

受影响的平台: Windows
受影响的用户: Windows 用户
影响:收集敏感信息并执行其他恶意模块
严重级别:严重

赛门铁克于 2021 年 10 月发布的一份威胁报告最近引起了我们的注意。它讨论了一个未知的威胁行为者使用新的自定义恶意软件库在东南亚进行间谍活动。最让我们好奇的是提到了一个从注册表加载但尚未被发现的 DLL 有效负载。

在分析了它的加载器之后,这个模块难以找到的原因就变得很明显了。该模块在注册表中存储为带有自定义标头的压缩 blob。它永远不会写入磁盘,因此不太可能出现在 VirusTotal 等数据集中

于是,我们踏上了寻找丢失模块的旅程。我们现在已经发现了该模块的样本以及可追溯到 2017 年的大量组件和变体。对样本进行逆向工程使我们能够观察到这种恶意软件多年来的发展进程。随着时间的推移,添加了自定义代码,升级了组件,扩展了功能,代码变得更整洁,模块化程度也提高了。

本博客将研究该恶意软件的不同组件及其随时间的发展,从而描绘出 Soul 恶意软件框架的演变。

进化论

在最早阶段,攻击者使用了一个包含开源 Gh0st RAT 和 NetBot Attacker 工具代码的后门,尽管进行了相当大的修改。后门作为压缩 blob 嵌入在其 dropper 可执行文件中,该文件将其写入磁盘并运行它。

一年之内,后门的代码被重构并添加了自定义代码,完成了向我们所说的 Soul 模块的转换。它的加载器,我们称之为 SoulSearcher,也发生了变化。压缩后的模块不是将有效负载放到磁盘上,而是存储在注册表中并加载到内存中。

自 2020 年初以来,我们发现了越来越复杂的 SoulSearcher 变体,其中一些支持从注册表加载多个模块。随着时间的推移,它们发生了显着变化,它们的配置工件揭示了可能的灵魂模块功能。

除了后门之外,还使用了其他工具,例如键盘记录程序和自定义编译的 7zr 工具(简化的独立 7-zip)。

下面描述了各种组件的完整时间表,从 2017 年开始,第一个键盘记录器和后门程序开始,到 2021 年 11 月发现的最近的 SoulSearcher 变体结束。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 1:Soul 恶意软件框架的时间线

旁注: 此时间线基于编译时间戳,尽管这些时间戳可以被篡改,但在此恶意软件框架的情况下,我们认为它们是真实的。这部分是因为收集到的样本的时间分布与我们对组件能力及其在野外的目击事件的理解相关。此外,加载程序及其有效负载等相关样本在几秒钟内完成编译。

我们发现的所有组件都有几个共同特征:

  • DynamiCall 从臭名昭著的 Hacking Team 泄露的源代码中导入混淆
  • RCS后门
  • 堆栈字符串
  • 数据结构相似性,如配置结构
  • 加密和压缩算法
  • 互斥锁、事件和文件映射的名称
  • 相邻编译时间戳

原魂后门

这是威胁参与者在最早阶段使用的后门。它于 2017 年 10 月编译,使用了来自公共存储库的修改代码和其他在线泄露的恶意软件,例如:

  • DynamiCall
  • Gh0st RAT
    • 文件操作函数
    • CMD shell代码
    • 通信信息和结构
  • HTran(一个开源的连接弹跳器工具)
  • 7zip

后门是一个通过简单的dropper 放到磁盘上的DLL。释放器 LZMA 解压缩后门和它们共享的配置。dropper 将后门写入配置指定的路径,并将配置作为覆盖附加到该路径。根据传递给 dropper 的命令行参数,后门使用LoadLibrary 或rundll32.exe执行。 最后,dropper 会从磁盘中删除自己。

配置

后门从其文件覆盖中读取其配置,并通过将每个字节与0x13相减和异或来解密它。

配置以一系列字节开始,其意义未知,但在我们找到的所有样本中都是相同的。其他字段为后门文件名或完整路径、C2 地址和 little-endian 中的端口。该配置还包含服务名称和描述,两者均未使用。在一个示例中,字符串“ NetBot ”被设置为文件名。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 2:后门的配置

另外两个字段,一个 DWORD 数组和一个标志(在偏移量0x1f0突出显示),控制后门是否以及何时应该抑制与命令相关的通信。

数组的值决定了接受命令的天数和小时数。在此示例中,所有值都是 2。每个索引代表一周中的特定日期和一天中的小时。如果给定索引处的值为 0,则在相应的日期和时间停止对命令的请求。

该标志根据以下条件确定在机器上有活动时是否应禁止接收命令:

  • 除了当前会话,系统中有一个活动的控制台会话
  • 除当前会话外,系统中存在活动或已连接的 RDP 会话

使用WTSRegisterSessionNotification和WTSEnumerateSessions API监视会话。

根据配置,后门可以在主动模式(作为客户端)或被动模式(作为服务器)下接收命令。有两个端口号,每个模式一个。

  • 如果服务器端口不为0,则后门会联系服务器接收命令。
  • 如果侦听端口不为 0,则后门会在该端口上侦听并等待来自传入连接的命令(一次可能只有一个连接处于活动状态)。

沟通

到 C2 服务器的消息,包括命令请求,具有固定的结构。对服务器的每个请求都由硬编码的 HTTP 标头组成,这些标头冒充到taboola[.]com的合法网络流量。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 3:在请求中发送到服务器的常量 HTTP 标头

发送到服务器的 HTTP 正文的结构如下所示。CompressedBuffer是 zlib 压缩的数据。

图4:后门发送的消息体格式:

struct BackdoorRequest {
	DWORD MessageType;
	DWORD DecompressedBufferSize;
	DWORD DecompressedBufferSize;
	DWORD CompressedBufferSize;
	BYTE  CompressedBuffer[CompressedBufferSize];
};

当后门将有关机器的信息发送到MessageType 为0x11000000的服务器时,开始接收命令:

  • 主机名
  • IP 地址
  • CPU架构
  • 内存大小

服务器响应结构与请求类似:

图 5:后门请求的服务器响应消息体格式:

struct ServerResponse {
	DWORD CommandType;
	DWORD DecompressedBufferSize;
	DWORD DecompressedBufferSize;
	DWORD CompressedBufferSize;
	BYTE  CompressedBuffer[CompressedBufferSize];
};

在一个单独的线程中,如果命令接收抑制当前对MessageType 0x1100000B有效,后门可能会向服务器发出信号。

命令

服务器发送命令时,为下表中的CommandType值之一, CompressedBuffer字段为空。后门向命令参数发出附加请求,并根据特定命令指定MessageType值。

图 6:后门实现的命令表:

类型名称
0xFFFFFFFF没有要运行的命令。
0x20000000关闭套接字并停止接收命令。
0x21000000文件操作功能,包括移动、复制、删除、下载和/或上传文件。
0x23000000它打开一个交互式 CMD shell,允许攻击者执行 CMD 命令,直到通过发送“Exit”命令终止 shell。
0x38000000HTran 的传输数据功能。

当后门在被动模式下工作时也是如此,除了它仅限于处理文件操作、CMD 和关闭套接字命令。

寻找灵魂的加载器

SoulSearcher 是自 2018 年 11 月以来在野外看到的一种二级加载程序。我们发现的所有样本都是具有类似操作流程的 DLL。他们负责执行 Soul 模块的有效负载并解析其配置。

SoulSearcher 变体之间的主要区别在于传递给有效负载的配置类型以及配置和有效负载的存储位置。

图 7:SoulSearcher 类型表:

配置格式最早样品日期配置位置Payload 位置
二进制Nov 2018覆盖 + 注册表
文件
覆盖
文件
XMLApr 2020注册表
文件映射
文件
注册表
分号分隔Aug 2021嵌入 SoulSearcher注册表

二进制灵魂搜索者

这些是我们拥有的最早的 SoulSearcher 样本。其中一个样本嵌入了有效载荷——一个灵魂模块。每个样本都导出两个函数:DumpAnalyze 和DumpAnalyzeEx。

首先,SoulSearcher 在其覆盖数据或磁盘上的文件中搜索模块和配置。如果找到它们,它会将模块保存到注册表中。无论如何,SoulSearcher 然后从注册表中获取有效负载,反射性地加载它,并将配置作为参数传递给它。

配置位于覆盖的末尾,并使用SUB-XOR 0x13解密。它与原始 Soul 后门的格式相同,但有一个附加字段,用于确定覆盖中压缩的 Soul 模块的大小。配置的另一部分从HKCU\Software\OIfkO2i1注册表值中检索并使用SUB-XOR 0x79解密。如果不存在,也会在其他用户的注册表配置单元中查询此路径。

如果参数“-h <HANDLE>”被传递到 SoulSearcher 的导出,配置和有效负载将从 sdc-integrity.dat 中提取,而不是从覆盖中提取。它们的提取方式与以前完全相同。提供的参数是一个 DLL 句柄,用于检索.dat文件所在的目录路径。

在任何情况下,模块都会保存到HKCU\Software\kuhO6Ba0kT的注册表中。

XML灵魂搜索器

每个 XML SoulSearcher 都从获取先前被未知组件删除的配置开始。大多数示例从注册表中检索它,有些样本可以选择从文件映射对象或磁盘上的文件中检索它。

例如,一个示例从以下之一检索配置,具体取决于它是否作为服务运行:

  • HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>\Parameters服务参数下的 GUID 格式的值名称
  • 名为Global\CacheDataMapping的文件映射对象

检索到的二进制数据具有以下结构:

图 8:从注册表中获取的配置结构

struct StoredConfiguration {
	DWORD Magic;
	DWORD Unused;
	BYTE  LzmaProperties[5];
	DWORD ConfigSize;
	DWORD CompressedConfigSize;
	BYTE  ConfigMD5[0x21];
	BYTE  CompressedConfigMD5[0x21];
	BYTE  CompressedConfig[CompressedConfigSize];
};

该结构按以下方式处理以检索 XML 配置:

  1. 验证 CompressedConfig 的大小是否 等于CompressedConfigSize
  2. 验证CompressedConfigSize和ConfigSize不为 0
  3. 验证两个 MD5 校验和不为 0
  4. 确保Magic持有字节序列86 AE 00 00
  5. 对压缩配置执行 MD5 校验和验证
  6. LZMA-解压配置
  7. 对解压后的配置执行 MD5 校验和验证

在一个变体中,在开始使用AES-256 CBC解密注册表数据时采取了一个额外步骤。从两个硬编码路径之一检索密钥。

较旧的示例使用CreateXmlReader API反序列化生成的字符串,而较新的示例使用TinyXML开源库。XML 属性名称揭示了从注册表加载的 Soul 模块。

分号 SoulSearcher

从 2021 年 8 月开始,SoulSearcher 变体开始使用硬编码的分号分隔配置,而不是注册表中的 XML。这种类型的第一个变体是在赛门铁克报告发布前一个多月编译的。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 9:分号分隔的配置示例

此配置缺少指示性 XML 属性名称,如 XML 配置中的那些,导致工具更加晦涩难懂。然而,对于其中一些领域,我们可以说:

  • 我们相信第一个字段do5Kc1diLHgq5f6 代表配置类型。在 XML 配置中,类型由字符串X6bmLMbAL29AlxB表示。
  • 其中一个值说明 SoulSearcher 是否作为服务安装。如果是这样,则配置包含有关服务详细信息的字段,例如其名称。
  • 一些值决定了应该加载哪些灵魂模块。
  • 一个字段可能包含一个注册表路径,从中加载灵魂模块(而其他模块从硬编码路径加载)。

当灵魂被发现

较旧的 SoulSearcher 变体加载单个 Soul 模块,而一些较新的 XML 和分号 SoulSearcher 最多可以加载四个,具体取决于它们的配置。

图 10:从注册表中获取的有效负载的结构:

struct StoredModule {
	DWORD Unused;
	QWORD ModuleSize;
	QWORD CompressedModuleSize;
	BYTE  ModuleMD5[0x21];
	BYTE  CompressedModule[CompressedModuleSize];
};

每个模块都以与配置类似的方式从注册表中获取:

  1. 验证 CompressedModule 的大小是否等于CompressedModuleSize
  2. LZMA-解压模块
  3. 对解压后的模块进行MD5校验和验证
  4. 确保模块的架构与 SoulSearcher 的架构匹配

这个过程在每个 SoulSearcher 样本中都是相同的,除了 Binary SoulSearchers,其结构略有不同。

SoulSearcher 反射性地在内存中加载模块并调用它的Construct导出。一些早期的变体也调用了模块的额外导出。

灵魂后门转世

我们发现 2018 年 11 月的一个 Binary SoulSearcher 样本具有嵌入式负载。

这个 Soul 模块在功能方面与原始后门非常相似,尽管它的代码要简洁得多。仔细检查发现,原来后门的代码被重组为各种出口。比如负责发送和接收 HTTP 消息的代码被分为SendMsg

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 11:Soul 后门模块导出函数

配置

SoulSearcher使用配置作为参数调用模块的BeginConnect导出。该配置与原始后门的配置具有相同的二进制格式,但没有与服务相关的字段。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 12:原始后门(左)和新后门模块(右)的配置

沟通

与原来的后门不同,这个 Soul 模块仅作为客户端接收命令。

如果通过gethostbyname API解析服务器地址失败,后门还会尝试使用DnsQuery API 的未记录功能查询两个硬编码的 DNS 服务器:

  • 193.0.14.129(DNS 根服务器)
  • 8.8.8.8(谷歌公共 DNS)

请求的常量标头已更改为模拟到s-microsoft[.]com的流量,并且GetSubInfo 导出收集机器信息。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 13:在请求中发送到服务器的新常量 HTTP 标头

命令

消息结构与原始后门相同。如下表所示,原始后门中没有几个新的命令代码。当接收到五个命名命令之一时,后门从服务​​器下载并执行一个 DLL。命令名称在二进制文件中公开,并作为参数的一部分传递给命令 DLL。因为我们不知道 DLL 本身,所以我们只能根据它们的名称和原始后门代码中相同命令类型的实现来推测它们的功能。

类型名称
0xFFFFFFFF没有要运行的命令。
0x20000000关闭套接字并停止接收命令。
0x21000000文件
0x23000000命令
0x38000000Htran
0x39000000更新注册表中的配置。服务器响应缓冲区在写入注册表(硬编码路径)之前经过ADD-XOR 0x79加密。
0x3A000001释放命令结构并释放与命令相关的互斥锁。
0x3B000000内存加载器
0x3C000000UsbNtf
图 14:后门模块实现的命令表

创建一个额外的套接字连接以从服务器下载命令 DLL。首先,后门发送一条类型为0x1100000C的消息,其中包含一个包含常量值0x4096C083的缓冲区。与所有请求一样,它通过上述BackdoorRequest结构中的SendMsg发送。接下来,它发送另一条相同类型的消息,但这次缓冲区的结构如下所示。Architecture字段包含32或64的值,具体取决于后门的架构。

图 15:来自服务器的命令 DLL 请求结构:

struct CommandRequest {
	DWORD CommandType;
	BYTE  Architecture[6];
};

服务器回复后门的结构如下:

图 16:命令 DLL 的服务器响应结构:

struct CommandResponse {
	DWORD Unused0;
	BYTE  Unused1[6];
	QWORD ModuleSize;
	QWORD CompressedModuleSize;
	BYTE  ModuleMD5[0x21];
	BYTE  CompressedModuleMD5[0x21];
	QWORD Unused2;
	BYTE  CompressedModule[CompressedModuleSize];
};

后门使用该结构以如下方式加载命令DLL:

  1. 验证压缩模块的 MD5 校验和
  2. LZMA-解压压缩模块
  3. 验证解压模块的MD5校验和
  4. 如果步骤 2 或 3 失败,请重新向服务器发出请求
  5. 反射性地将模块加载到内存中
  6. 使用包括以下内容的参数调用模块的Construct导出:
    1. 常量值0x4096C083(与之前发送到服务器的值相同)
    2. 命令的名称(例如“ File ”或“ UsbNtf ”)
    3. 后门配置
    4. 从服务器收到的CommandResponse结构

灵魂不止一个

如前所述,每个 XML SoulSearcher 都会解析一个 XML 格式的配置,其中包含具有信息名称的属性。基于这些人工制品,我们能够对我们拥有的各种样本的潜在有效载荷进行分类。

后门

这些 SoulSearcher 样本与其有效负载紧密耦合,以至于它们是复杂的编排器而不是普通的加载器。除了解析配置之外,它们还调用 Soul 模块的多个导出函数来创建完整的后门逻辑。配置字段和导入的函数名称指示远程 shell 功能和 Dropbox 的利用率。

图 17:在旧版 SoulSearcher 中看到的配置字段和导入的函数名称:

配置字段导出名称
IpConstruct
DnsConnectHost1
CntPortForceCloseSocket
LstPortCopyReserveMem
BlogRecv
DropboxBlogRecvEx
SvcNameSend
SvcDispSendEx
SvcDescBindShell
SvcDllAccept
OlPassTransmitData_htran
OlTimeKillChildenProcessTree
SelfDestroyExtractIPToConnect
 ExtractIPToConnect1
 GetDeviceInfoString1
 GetPseudoSocketInfo
 Decrypt_ByteToByte

高级RAT

一个 SoulSearcher 解析众多不同于后门的配置字段:

图 18:在一个 SoulSearcher 示例中找到的配置字段:

AesPassRegSubKey_Exist
ClipBoardMntEnableRegSubKey_Rec
DestroyDateRegValueDataSz
DestroyDayRegValueName_Exist
DestroyModeRegValueName_Rec
DestroyWiFiNameSaveInFile
DestroyWiFiSearchMinuSaveInReg
DirDiskInternalScreenMngEnable
DropboxAppToken1ServiceDescription
DropboxAppToken2ServiceDisplayName
DropboxAppToken3ServiceDllPath
EnableDropboxServiceHide
EnableFileMntServiceImagePath
EnableHijack1ServiceName
EnableKeyLogServiceRegValueName_Cfg
EnableServiceServiceRegValueName_MemMod1
ExcludeDirServiceRegValueName_MemMod2
FileExtServiceRegValueName_MemMod3
FileSizeMbServiceSessionIsolationBypass
Hijack1DllPathTriggerTime
Hijack1RegSubKey_MemMod1UsbExt
Hijack1RegValueName_CfgUsbExtMode
Hijack1RegValueName_MemMod1z7zPass
IncludeDirz7zSizeMb
RecDataPathz7zStoreDir
RegKey_Exist 
RegKey_Rec 
  

如果EnableDropbox属性设置为 true,SoulSearcher 从ServiceRegValueName_MemMod3指定的路径加载模块。如果设置了EnableKeylog ,则从ServiceRegValueName_MemMod1指定的路径加载模块。

代理

这些样本的配置表明了 HTTP 和 HTTPS 上的代理功能,以及运行 CMD 命令的能力。

图 19:与代理功能相关的配置字段:

CmdPrefixEnableHttps2
CmdSuffixInterval
EnableHttps1MachineGUID
PortProxyUserPass2
Port2RegPath
ProxyIP1RegRootKey
ProxyIP2RegValueName_Cfg
ProxyPort1RegValueName_Svr32
ProxyPort2RegValueName_Svr64
ProxyUserName1URL2
ProxyUserName2Url
ProxyUserPass1 
  

附加组件

第一阶段加载器

如前所述,SoulSearcher 是一个二级组件。我们还确定了 Binary SoulSearcher 变体的第一阶段加载器。

此加载程序是一个 DLL,具有一个名为SntpService的导出函数,并且依赖于一个名为SntpService.dll的实用程序 DLL ,该 DLL 预计已驻留在磁盘上。这些名称很可能类似于 Sophos 的同名合法安全软件产品(如此处所示 

加载程序在新线程中运行SntpService 之前检查其进程名称是MSDTC.exe还是svchost.exe 。在后一种情况下,会创建一个名为DBWinMutex_1的互斥体(也在 Soul 模块中使用)。

加载器执行两个操作。首先,它从其目录中解密两个.dat文件并将输出保存到注册表:

sdc-integrity.dat is written to HKCR\.rat\PersistentHandler\TypeFace
scs-integrity.dat is written to HKCR\.rat\PersistentHandler\MagicNumber

解密方案是AES-256 CBC,其中硬编码值的SHA256哈希用作密钥。然后从磁盘中删除这两个文件,这意味着此过程仅在初始感染或部署更新时发生。

其次,来自TypeFace的数据SoulSearcher 它由一个包含缓冲区及其大小的结构组成。 加载器会跳过缓冲区的最后0x3d0 输出是一个PE,加载器反射加载它,然后调用它的DumpAnalyze导出。加载器将自己的句柄作为参数传递给 SoulSearcher,既作为指针也以字符串格式:“-h <HANDLE>” 。

还解决了SntpService.dll的 其他导出:

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 20:从 SntpService.dll 导入的函数

我们发现了一个名为 Kaspersky Antivirus 的AvpCon.dll的实用程序 DLL 变体,该变体已上传到 VirusTotal 。与前面引用的 Sophos 案例类似,这样做可能看起来是合法的。尽管它的导出被命名为“加密”和“解密”,但所有函数实际上都执行 LZMA 压缩或解压缩。这与我们发现压缩的 Binary SoulSearcher 样本相关,而不是加密的。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 21:AvpCon.dll 的导出

键盘记录器

键盘记录器是在 2017 年年中到 2020 年末期间编译的。它们都共享非常相似的代码,它们之间几乎没有变化。除了赛门铁克报告的键盘记录器,我们还发现了另一个 2020 年 9 月的样本。虽然它的键盘记录功能与其他样本相同,但其余代码存在显着差异。

键盘记录器从同名文件中读取他们的配置,但删除了.dll 扩展名。但是,我们的示例使用注册表中的配置,并且该文件充当终止开关:如果存在,则键盘记录器终止。此示例还具有以前示例中不存在的堆栈字符串和 DynamiCall 混淆。

键盘记录器确保它在Explorer.exe中运行,并通过读取自己的最后0x208 字节并解密它们来检索其配置。解密是通过将每个字节与常数值相加和异或来完成的。接下来,在HKCU\Software\F32xhfHX的注册表中设置加密配置。在将来的执行中,将从该键中获取配置。配置包含两个路径:

Keylogger module file – C:\Windows\SndVolSSO.DLL
Keylogging output file – C:\users\minh\AppData\Local\OneDrive\Cache.dat

有趣的是,输出文件路径包含一个用户名,暗示这个样本可能是针对特定目标机器的。

键盘记录器使用GetRawInputData和剪贴板数据监控击键,并将它们作为纯文本记录在输出文件中。输出文件被时间戳,以使其时间戳与受感染机器上的svchost.exe相同。从GetRawInputData 返回的错误记录到C:\ProgramData\Users.inf。键盘记录器还记录 支持某些亚洲语言的 IME 虚拟键代码。

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 22:键盘记录器输出文件“Cache.dat”示例

命令行执行服务

这是一个轻量级服务 DLL,它从注册表项HKCR\.c\Type\Type00执行 CMD 命令。它在 20:00 运行命令,如果系统上没有名为powershell.exe的进程处于活动状态。它是用 DynamiCall 混淆编译的。

7zr.exe

这个自定义编译的 7zr 可执行文件被修改为包含 DynamiCall 混淆。

结论

Soul 恶意软件框架自 2017 年以来一直在积极使用,威胁参与者一直在稳步发展他们的工具和功能直到今天。应该强调的是,尽管早期的工具依赖于开源代码,但自定义键盘记录器当时已经在使用,并且自定义代码的重大开发已经发生。它的模块化、多级、反射式执行的有效载荷展示了强大的对抗性贸易技术,并且是一个资源充足的群体的标志。尽管攻击者的身份目前未知,但我们认为他们可能是国家赞助的。

本报告中分享的细节源于对大量样本的综合分析。尽管如此,我们有一种感觉,这只是冰山一角,该集团的武器库中还有更多的有效载荷和能力将在未来公开。

Fortinet 解决方案

FortiEDR 无需任何先验知识或特殊配置即可检测并阻止这些威胁。它使用其执行后预防引擎来识别恶意活动:

寻找失落的灵魂-揭示SoulSearcher恶意软件的演变
图 23:FortiEDR 阻止 Soul 后门与 C2 服务器的通信

所有网络 IOC 都已添加到 FortiGuard WebFiltering 阻止列表中。

FortiGuard 防病毒服务引擎包含在 Fortinet 的 FortiGate、FortiMail、FortiClient 和 FortiEDR 解决方案中。FortiGuard AntiVirus 的覆盖范围如下:

W64/SoulSearcher.B7D1!tr
W32/SoulSearcher.B7D1!tr
W64/SoulSearcherKeyLogger.B7D1!tr.spy
W32/SoulSearcher.B7D1!tr 
Data/SoulSearcher.B7D1!tr

此外,作为网络威胁联盟成员的一部分,该威胁的详细信息与其他联盟成员实时共享,以帮助为客户提供更好的保护。

附录 A:MITRE ATT&CK 技术

ID描述
T1569.002系统服务:服务执行
T1055进程注入
T1112修改注册表
T1567通过 Web 服务进行渗透
T1041通过 C2 通道渗出
T1132数据编码
T1082系统信息发现
T1083文件和目录发现
T1140去混淆/解码文件或信息
T1071.001应用层协议:Web 协议
T1056.001输入捕获:键盘记录
T1059.003命令和脚本解释器:Windows 命令外壳
T1115剪贴板数据
T1592收集受害者主机信息
T1090.001代理:内部代理
T1070.006主机上的指示器移除:Timestamp

附录B: IOCs(侵害指标)

IOC类型细节
1af5252cadbe8cef16b4d73d4c4886ee9cecddd3625e28a59b59773f5a2a9f7fSHA-256SoulSearcher
a6f75af45c331a3fac8d2ce010969f4954e8480cbe9f9ea19ce3c51c44d17e98SHA-256SoulSearcher
c4efb58723fd75d51eb92302fbd7541e4462f438282582b5efa3c6c7685e69fdSHA-256SoulSearcher
edb14233eccb5b6e2d731831e7b18b8b17ea6a3f8925fb5899ce2ef985a66b68SHA-256SoulSearcher
fdf0db7f6b60d7563268c15c634adb47e8eec34adfcbf9b10e973916c7517157SHA-256SoulSearcher
c7481d6975646b605aba3fb11686e34ee205f7e280069e9d5bf0c1c2eca79be8SHA-256SoulSearcher
0f7af0cad4aade0e7058051a449059b35358ddda075d88b2d289625adc02deefSHA-256SoulSearcher
3cb4887bec169c75f58bc4ed1c6fd3703cc46512596e62186cf8329448dbb47bSHA-256SoulSearcher
cb954f06c94493c87f25651271657aeb1e3e24f26b6552d3e616bbc2dc660679SHA-256SoulSearcher
78feb564c4f6c240ddb17dd0f49ae96df04ee594ed24df81f583136fccf60c1dSHA-256SoulSearcher
bc91a4fb16f14fb1c436c2bdc7c80b87a02caa5de17897614d07bc7bda200590SHA-256SoulSearcher
7edd7d406159ab0eecb22ddbd6060de7c24a4eb0b61fa527935310b94d3b9db4SHA-256SoulSearcher
b02b8b6c3d517c6b8652b898963068ba12cd360b5cdcf0aad5fe6ff64f0e9920SHA-256SoulSearcher
ec164902cbe8daaa88ae923719c5dac900715f3e32d4cea6e71ca04c7cecf3e2SHA-256SoulSearcher
bac4b50727c69ca7cc3c0a926bb1b75418a8a0eabd369a4f7118bb9bba880e06SHA-256First stage loader for SoulSearcher
69a9ab243011f95b0a1611f7d3c333eb32aee45e74613a6cddf7bcb19f51c8abSHA-256Original Soul backdoor
579fa00bc212a3784d523f8ddd0cfc118f51ca926d8f7ea2eb6e27157ec61260SHA-256Original Soul backdoor
8ff18b6fb5fe4f221cd1df145a938c57bdd399dc24e1847b0dc84a7b8231458fSHA-256Original Soul backdoor
f97161aaa383e51b2b259bb618862a3a5163e1b8257832a289c72a677adec421SHA-256Original Soul backdoor dropper
d3647a6670cae4ff413caf9134c7b22b211cb73a172fc1aa6a25b88ff3657597SHA-256Original Soul backdoor
f5cd13b2402190ec73c526116abea5ebab7bd94bcdb68cc2af4f3b75a69ba9c5SHA-256Keylogger
a15eda7c75cf4aa14182c3d44dc492957e9a9569e2d318881e5705da2b882324SHA-256Keylogger
967e8063bd9925c2c8dd80d86a6b01deb5af54e44825547a60c48528fb5f896dSHA-256Keylogger
64f036f98aad41185163cb328636788a8c6b4e1082ae336dad42b79617e4813dSHA-256Keylogger
7b838fcad7a773bfd8bc26a70f986983553d78b4983d0f2002174f5e56f7f521SHA-256Soul backdoor
40fda8137d8464d61240314b6de00ae5c14ed52019e03e4dcadfc00b32c89d23SHA-256Command-line executer service
5dee99beb0b6ba1ebdb64515be1d9307262d9b57b0900310d57290dca40bb427SHA-2567zr.exe
6b70ad053497f15b0d4b51b5edabeced3077dddb71b28346df7c7ea18c11fcdfSHA-2567zr.exe
852c98a6fbd489133411848775c19a2525274eac9a89a09a09d511915c7cbafcSHA-256AvpCon.dll
gmy.cimadlicks[.]netNetwork
app.tomelife[.]comNetwork
community.weblives[.]netNetwork
23.91.108[.]12Network
Global\vQVomit4Mutex
Global\mFNXzY0gMutex
Global\DefaultModuleMutexMutex
Global\DBWinMutex_1Mutex
Global\DBWinMutex_2Mutex
Global\VirusScanWinMsgEvent
Global\3GS7JR4SEvent
Global\SecurityExEvent
Global\CacheDataMappingFileFile mapping
C:\Windows\System32\wlbsctrl.dllFile name
C:\Windows\System32\ikeext2.dllFile name
C:\Windows\System32\d6w48ttth.dllFile name
C:\Windows\System32\shsvc.dllFile name
C:\Windows\System32\netcsvc.dllFile name
C:\Windows\System32\fc2qhm7r9.dllFile name
C:\Windows\SndVolSSO.DLLFile name
SvrLdr_xpsservices.dllFile name
timedateapi.dllFile name
msfte.dllFile name
wsecapi.dllFile name
C:\Programdata\Microsoft\svchost.exeFile name
NvStreamer.dllFile name
Helpsvc32.dllFile name
SVCLDR64.dllFile name
DataOper64.dllFile name
C:\ProgramData\Users.infFile name
%LOCALAPPDATA%\OneDrive\Cache.datFile name
C:\ProgramData\Security_checker\sc.dllFile name
C:\ProgramData\Xps viewer\xpsservices.dllFile name
C:\Program Files (x86)\Common Files\System\ado\msado28.dllFile name
C:\ProgramData\networks.datFile name
C:\ProgramData\Microsoft\Crypto\RSA\Keys.datFile name
SntpService.dllFile name
sdc-integrity.datFile name
sds-integrity.datFile name
HKCR\.z\OpenWithProgidsExRegistry
HKCR\.z\OpenWithListExRegistry
HKCR\.sbr\OrderRegistry
HKCR\.sbr\StartOverrideRegistry
HKU\<any_key>\Software\kuhO6Ba0kTRegistry 
HKU\<any_key>\Software\OIfkO2i1Registry
HKU\<any_key>\Software\7QAEGXJcRegistry
HKCR\.c\Type\Type00Registry
HKR\Software\Microsoft\EventSystem\8C345CCE-5C37-446E-9E36-B57A54FC9C45Registry
HKLM\SYSTEM\CurrentControlSet\Services\<service>\Parameters\8C345CCE-5C37-446E-9E36-B57A54FC9C45Registry
HKR\.kci\PersistentHandlerRegistry
HKCR\.3gp2\Perceived-TypeRegistry
HKCR\.3gp2\Content-TypeRegistry
HKCR\.rat\PersistentHandler\MagicNumberRegistry
HKCR\.rat\PersistentHandler\TypeFaceRegistry
HKCU\Software\Microsoft\FTP\MostRecentApplicationRegistry
HKCU\Software\Microsoft\FTP\UserInfoRegistry
HKCU\Software\F32xhfHXRegistry

from

转载请注明出处及链接

Leave a Reply

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