目录导航
受影响的平台: 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 变体结束。

旁注: 此时间线基于编译时间戳,尽管这些时间戳可以被篡改,但在此恶意软件框架的情况下,我们认为它们是真实的。这部分是因为收集到的样本的时间分布与我们对组件能力及其在野外的目击事件的理解相关。此外,加载程序及其有效负载等相关样本在几秒钟内完成编译。
我们发现的所有组件都有几个共同特征:
- 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 ”被设置为文件名。

另外两个字段,一个 DWORD 数组和一个标志(在偏移量0x1f0突出显示),控制后门是否以及何时应该抑制与命令相关的通信。
数组的值决定了接受命令的天数和小时数。在此示例中,所有值都是 2。每个索引代表一周中的特定日期和一天中的小时。如果给定索引处的值为 0,则在相应的日期和时间停止对命令的请求。
该标志根据以下条件确定在机器上有活动时是否应禁止接收命令:
- 除了当前会话,系统中有一个活动的控制台会话
- 除当前会话外,系统中存在活动或已连接的 RDP 会话
使用WTSRegisterSessionNotification和WTSEnumerateSessions API监视会话。
根据配置,后门可以在主动模式(作为客户端)或被动模式(作为服务器)下接收命令。有两个端口号,每个模式一个。
- 如果服务器端口不为0,则后门会联系服务器接收命令。
- 如果侦听端口不为 0,则后门会在该端口上侦听并等待来自传入连接的命令(一次可能只有一个连接处于活动状态)。
沟通
到 C2 服务器的消息,包括命令请求,具有固定的结构。对服务器的每个请求都由硬编码的 HTTP 标头组成,这些标头冒充到taboola[.]com的合法网络流量。

发送到服务器的 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。 |
0x38000000 | HTran 的传输数据功能。 |
当后门在被动模式下工作时也是如此,除了它仅限于处理文件操作、CMD 和关闭套接字命令。
寻找灵魂的加载器
SoulSearcher 是自 2018 年 11 月以来在野外看到的一种二级加载程序。我们发现的所有样本都是具有类似操作流程的 DLL。他们负责执行 Soul 模块的有效负载并解析其配置。
SoulSearcher 变体之间的主要区别在于传递给有效负载的配置类型以及配置和有效负载的存储位置。
图 7:SoulSearcher 类型表:
配置格式 | 最早样品日期 | 配置位置 | Payload 位置 |
二进制 | Nov 2018 | 覆盖 + 注册表 文件 | 覆盖 文件 |
XML | Apr 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 配置:
- 验证 CompressedConfig 的大小是否 等于CompressedConfigSize
- 验证CompressedConfigSize和ConfigSize不为 0
- 验证两个 MD5 校验和不为 0
- 确保Magic持有字节序列86 AE 00 00
- 对压缩配置执行 MD5 校验和验证
- LZMA-解压配置
- 对解压后的配置执行 MD5 校验和验证
在一个变体中,在开始使用AES-256 CBC解密注册表数据时采取了一个额外步骤。从两个硬编码路径之一检索密钥。
较旧的示例使用CreateXmlReader API反序列化生成的字符串,而较新的示例使用TinyXML开源库。XML 属性名称揭示了从注册表加载的 Soul 模块。
分号 SoulSearcher
从 2021 年 8 月开始,SoulSearcher 变体开始使用硬编码的分号分隔配置,而不是注册表中的 XML。这种类型的第一个变体是在赛门铁克报告发布前一个多月编译的。

此配置缺少指示性 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];
};
每个模块都以与配置类似的方式从注册表中获取:
- 验证 CompressedModule 的大小是否等于CompressedModuleSize
- LZMA-解压模块
- 对解压后的模块进行MD5校验和验证
- 确保模块的架构与 SoulSearcher 的架构匹配
这个过程在每个 SoulSearcher 样本中都是相同的,除了 Binary SoulSearchers,其结构略有不同。
SoulSearcher 反射性地在内存中加载模块并调用它的Construct导出。一些早期的变体也调用了模块的额外导出。
灵魂后门转世
我们发现 2018 年 11 月的一个 Binary SoulSearcher 样本具有嵌入式负载。
这个 Soul 模块在功能方面与原始后门非常相似,尽管它的代码要简洁得多。仔细检查发现,原来后门的代码被重组为各种出口。比如负责发送和接收 HTTP 消息的代码被分为SendMsg

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

沟通
与原来的后门不同,这个 Soul 模块仅作为客户端接收命令。
如果通过gethostbyname API解析服务器地址失败,后门还会尝试使用DnsQuery API 的未记录功能查询两个硬编码的 DNS 服务器:
- 193.0.14.129(DNS 根服务器)
- 8.8.8.8(谷歌公共 DNS)
请求的常量标头已更改为模拟到s-microsoft[.]com的流量,并且GetSubInfo 导出收集机器信息。

命令
消息结构与原始后门相同。如下表所示,原始后门中没有几个新的命令代码。当接收到五个命名命令之一时,后门从服务器下载并执行一个 DLL。命令名称在二进制文件中公开,并作为参数的一部分传递给命令 DLL。因为我们不知道 DLL 本身,所以我们只能根据它们的名称和原始后门代码中相同命令类型的实现来推测它们的功能。
类型 | 名称 |
0xFFFFFFFF | 没有要运行的命令。 |
0x20000000 | 关闭套接字并停止接收命令。 |
0x21000000 | 文件 |
0x23000000 | 命令 |
0x38000000 | Htran |
0x39000000 | 更新注册表中的配置。服务器响应缓冲区在写入注册表(硬编码路径)之前经过ADD-XOR 0x79加密。 |
0x3A000001 | 释放命令结构并释放与命令相关的互斥锁。 |
0x3B000000 | 内存加载器 |
0x3C000000 | UsbNtf |
创建一个额外的套接字连接以从服务器下载命令 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:
- 验证压缩模块的 MD5 校验和
- LZMA-解压压缩模块
- 验证解压模块的MD5校验和
- 如果步骤 2 或 3 失败,请重新向服务器发出请求
- 反射性地将模块加载到内存中
- 使用包括以下内容的参数调用模块的Construct导出:
- 常量值0x4096C083(与之前发送到服务器的值相同)
- 命令的名称(例如“ File ”或“ UsbNtf ”)
- 后门配置
- 从服务器收到的CommandResponse结构
灵魂不止一个
如前所述,每个 XML SoulSearcher 都会解析一个 XML 格式的配置,其中包含具有信息名称的属性。基于这些人工制品,我们能够对我们拥有的各种样本的潜在有效载荷进行分类。
后门
这些 SoulSearcher 样本与其有效负载紧密耦合,以至于它们是复杂的编排器而不是普通的加载器。除了解析配置之外,它们还调用 Soul 模块的多个导出函数来创建完整的后门逻辑。配置字段和导入的函数名称指示远程 shell 功能和 Dropbox 的利用率。
图 17:在旧版 SoulSearcher 中看到的配置字段和导入的函数名称:
配置字段 | 导出名称 |
Ip | Construct |
Dns | ConnectHost1 |
CntPort | ForceCloseSocket |
LstPort | CopyReserveMem |
Blog | Recv |
DropboxBlog | RecvEx |
SvcName | Send |
SvcDisp | SendEx |
SvcDesc | BindShell |
SvcDll | Accept |
OlPass | TransmitData_htran |
OlTime | KillChildenProcessTree |
SelfDestroy | ExtractIPToConnect |
ExtractIPToConnect1 | |
GetDeviceInfoString1 | |
GetPseudoSocketInfo | |
Decrypt_ByteToByte |
高级RAT
一个 SoulSearcher 解析众多不同于后门的配置字段:
图 18:在一个 SoulSearcher 示例中找到的配置字段:
AesPass | RegSubKey_Exist |
ClipBoardMntEnable | RegSubKey_Rec |
DestroyDate | RegValueDataSz |
DestroyDay | RegValueName_Exist |
DestroyMode | RegValueName_Rec |
DestroyWiFiName | SaveInFile |
DestroyWiFiSearchMinu | SaveInReg |
DirDiskInternal | ScreenMngEnable |
DropboxAppToken1 | ServiceDescription |
DropboxAppToken2 | ServiceDisplayName |
DropboxAppToken3 | ServiceDllPath |
EnableDropbox | ServiceHide |
EnableFileMnt | ServiceImagePath |
EnableHijack1 | ServiceName |
EnableKeyLog | ServiceRegValueName_Cfg |
EnableService | ServiceRegValueName_MemMod1 |
ExcludeDir | ServiceRegValueName_MemMod2 |
FileExt | ServiceRegValueName_MemMod3 |
FileSizeMb | ServiceSessionIsolationBypass |
Hijack1DllPath | TriggerTime |
Hijack1RegSubKey_MemMod1 | UsbExt |
Hijack1RegValueName_Cfg | UsbExtMode |
Hijack1RegValueName_MemMod1 | z7zPass |
IncludeDir | z7zSizeMb |
RecDataPath | z7zStoreDir |
RegKey_Exist | |
RegKey_Rec | |
如果EnableDropbox属性设置为 true,SoulSearcher 从ServiceRegValueName_MemMod3指定的路径加载模块。如果设置了EnableKeylog ,则从ServiceRegValueName_MemMod1指定的路径加载模块。
代理
这些样本的配置表明了 HTTP 和 HTTPS 上的代理功能,以及运行 CMD 命令的能力。
图 19:与代理功能相关的配置字段:
CmdPrefix | EnableHttps2 |
CmdSuffix | Interval |
EnableHttps1 | MachineGUID |
Port | ProxyUserPass2 |
Port2 | RegPath |
ProxyIP1 | RegRootKey |
ProxyIP2 | RegValueName_Cfg |
ProxyPort1 | RegValueName_Svr32 |
ProxyPort2 | RegValueName_Svr64 |
ProxyUserName1 | URL2 |
ProxyUserName2 | Url |
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的 其他导出:

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

键盘记录器
键盘记录器是在 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 虚拟键代码。

命令行执行服务
这是一个轻量级服务 DLL,它从注册表项HKCR\.c\Type\Type00执行 CMD 命令。它在 20:00 运行命令,如果系统上没有名为powershell.exe的进程处于活动状态。它是用 DynamiCall 混淆编译的。
7zr.exe
这个自定义编译的 7zr 可执行文件被修改为包含 DynamiCall 混淆。
结论
Soul 恶意软件框架自 2017 年以来一直在积极使用,威胁参与者一直在稳步发展他们的工具和功能直到今天。应该强调的是,尽管早期的工具依赖于开源代码,但自定义键盘记录器当时已经在使用,并且自定义代码的重大开发已经发生。它的模块化、多级、反射式执行的有效载荷展示了强大的对抗性贸易技术,并且是一个资源充足的群体的标志。尽管攻击者的身份目前未知,但我们认为他们可能是国家赞助的。
本报告中分享的细节源于对大量样本的综合分析。尽管如此,我们有一种感觉,这只是冰山一角,该集团的武器库中还有更多的有效载荷和能力将在未来公开。
Fortinet 解决方案
FortiEDR 无需任何先验知识或特殊配置即可检测并阻止这些威胁。它使用其执行后预防引擎来识别恶意活动:

所有网络 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 | 类型 | 细节 |
1af5252cadbe8cef16b4d73d4c4886ee9cecddd3625e28a59b59773f5a2a9f7f | SHA-256 | SoulSearcher |
a6f75af45c331a3fac8d2ce010969f4954e8480cbe9f9ea19ce3c51c44d17e98 | SHA-256 | SoulSearcher |
c4efb58723fd75d51eb92302fbd7541e4462f438282582b5efa3c6c7685e69fd | SHA-256 | SoulSearcher |
edb14233eccb5b6e2d731831e7b18b8b17ea6a3f8925fb5899ce2ef985a66b68 | SHA-256 | SoulSearcher |
fdf0db7f6b60d7563268c15c634adb47e8eec34adfcbf9b10e973916c7517157 | SHA-256 | SoulSearcher |
c7481d6975646b605aba3fb11686e34ee205f7e280069e9d5bf0c1c2eca79be8 | SHA-256 | SoulSearcher |
0f7af0cad4aade0e7058051a449059b35358ddda075d88b2d289625adc02deef | SHA-256 | SoulSearcher |
3cb4887bec169c75f58bc4ed1c6fd3703cc46512596e62186cf8329448dbb47b | SHA-256 | SoulSearcher |
cb954f06c94493c87f25651271657aeb1e3e24f26b6552d3e616bbc2dc660679 | SHA-256 | SoulSearcher |
78feb564c4f6c240ddb17dd0f49ae96df04ee594ed24df81f583136fccf60c1d | SHA-256 | SoulSearcher |
bc91a4fb16f14fb1c436c2bdc7c80b87a02caa5de17897614d07bc7bda200590 | SHA-256 | SoulSearcher |
7edd7d406159ab0eecb22ddbd6060de7c24a4eb0b61fa527935310b94d3b9db4 | SHA-256 | SoulSearcher |
b02b8b6c3d517c6b8652b898963068ba12cd360b5cdcf0aad5fe6ff64f0e9920 | SHA-256 | SoulSearcher |
ec164902cbe8daaa88ae923719c5dac900715f3e32d4cea6e71ca04c7cecf3e2 | SHA-256 | SoulSearcher |
bac4b50727c69ca7cc3c0a926bb1b75418a8a0eabd369a4f7118bb9bba880e06 | SHA-256 | First stage loader for SoulSearcher |
69a9ab243011f95b0a1611f7d3c333eb32aee45e74613a6cddf7bcb19f51c8ab | SHA-256 | Original Soul backdoor |
579fa00bc212a3784d523f8ddd0cfc118f51ca926d8f7ea2eb6e27157ec61260 | SHA-256 | Original Soul backdoor |
8ff18b6fb5fe4f221cd1df145a938c57bdd399dc24e1847b0dc84a7b8231458f | SHA-256 | Original Soul backdoor |
f97161aaa383e51b2b259bb618862a3a5163e1b8257832a289c72a677adec421 | SHA-256 | Original Soul backdoor dropper |
d3647a6670cae4ff413caf9134c7b22b211cb73a172fc1aa6a25b88ff3657597 | SHA-256 | Original Soul backdoor |
f5cd13b2402190ec73c526116abea5ebab7bd94bcdb68cc2af4f3b75a69ba9c5 | SHA-256 | Keylogger |
a15eda7c75cf4aa14182c3d44dc492957e9a9569e2d318881e5705da2b882324 | SHA-256 | Keylogger |
967e8063bd9925c2c8dd80d86a6b01deb5af54e44825547a60c48528fb5f896d | SHA-256 | Keylogger |
64f036f98aad41185163cb328636788a8c6b4e1082ae336dad42b79617e4813d | SHA-256 | Keylogger |
7b838fcad7a773bfd8bc26a70f986983553d78b4983d0f2002174f5e56f7f521 | SHA-256 | Soul backdoor |
40fda8137d8464d61240314b6de00ae5c14ed52019e03e4dcadfc00b32c89d23 | SHA-256 | Command-line executer service |
5dee99beb0b6ba1ebdb64515be1d9307262d9b57b0900310d57290dca40bb427 | SHA-256 | 7zr.exe |
6b70ad053497f15b0d4b51b5edabeced3077dddb71b28346df7c7ea18c11fcdf | SHA-256 | 7zr.exe |
852c98a6fbd489133411848775c19a2525274eac9a89a09a09d511915c7cbafc | SHA-256 | AvpCon.dll |
gmy.cimadlicks[.]net | Network | – |
app.tomelife[.]com | Network | – |
community.weblives[.]net | Network | – |
23.91.108[.]12 | Network | – |
Global\vQVomit4 | Mutex | – |
Global\mFNXzY0g | Mutex | – |
Global\DefaultModuleMutex | Mutex | – |
Global\DBWinMutex_1 | Mutex | – |
Global\DBWinMutex_2 | Mutex | – |
Global\VirusScanWinMsg | Event | – |
Global\3GS7JR4S | Event | – |
Global\SecurityEx | Event | – |
Global\CacheDataMappingFile | File mapping | – |
C:\Windows\System32\wlbsctrl.dll | File name | – |
C:\Windows\System32\ikeext2.dll | File name | – |
C:\Windows\System32\d6w48ttth.dll | File name | – |
C:\Windows\System32\shsvc.dll | File name | – |
C:\Windows\System32\netcsvc.dll | File name | – |
C:\Windows\System32\fc2qhm7r9.dll | File name | – |
C:\Windows\SndVolSSO.DLL | File name | – |
SvrLdr_xpsservices.dll | File name | – |
timedateapi.dll | File name | – |
msfte.dll | File name | – |
wsecapi.dll | File name | – |
C:\Programdata\Microsoft\svchost.exe | File name | – |
NvStreamer.dll | File name | – |
Helpsvc32.dll | File name | – |
SVCLDR64.dll | File name | – |
DataOper64.dll | File name | – |
C:\ProgramData\Users.inf | File name | – |
%LOCALAPPDATA%\OneDrive\Cache.dat | File name | – |
C:\ProgramData\Security_checker\sc.dll | File name | – |
C:\ProgramData\Xps viewer\xpsservices.dll | File name | – |
C:\Program Files (x86)\Common Files\System\ado\msado28.dll | File name | – |
C:\ProgramData\networks.dat | File name | – |
C:\ProgramData\Microsoft\Crypto\RSA\Keys.dat | File name | – |
SntpService.dll | File name | – |
sdc-integrity.dat | File name | – |
sds-integrity.dat | File name | – |
HKCR\.z\OpenWithProgidsEx | Registry | – |
HKCR\.z\OpenWithListEx | Registry | – |
HKCR\.sbr\Order | Registry | – |
HKCR\.sbr\StartOverride | Registry | – |
HKU\<any_key>\Software\kuhO6Ba0kT | Registry | |
HKU\<any_key>\Software\OIfkO2i1 | Registry | – |
HKU\<any_key>\Software\7QAEGXJc | Registry | – |
HKCR\.c\Type\Type00 | Registry | – |
HKR\Software\Microsoft\EventSystem\8C345CCE-5C37-446E-9E36-B57A54FC9C45 | Registry | – |
HKLM\SYSTEM\CurrentControlSet\Services\<service>\Parameters\8C345CCE-5C37-446E-9E36-B57A54FC9C45 | Registry | – |
HKR\.kci\PersistentHandler | Registry | – |
HKCR\.3gp2\Perceived-Type | Registry | – |
HKCR\.3gp2\Content-Type | Registry | – |
HKCR\.rat\PersistentHandler\MagicNumber | Registry | – |
HKCR\.rat\PersistentHandler\TypeFace | Registry | – |
HKCU\Software\Microsoft\FTP\MostRecentApplication | Registry | – |
HKCU\Software\Microsoft\FTP\UserInfo | Registry | – |
HKCU\Software\F32xhfHX | Registry | – |
转载请注明出处及链接