APT组织Deep Panda新型内核rootkoit后门分析

APT组织Deep Panda新型内核rootkoit后门分析

受影响的平台: Windows
受影响的用户: Windows 用户
影响:从受害机器收集敏感信息
严重级别:严重

在过去的一个月里,FortiEDR 检测到了中国 APT 组织 Deep Panda 的活动。该组织利用了 VMware Horizo​​n 服务器中臭名昭著的Log4Shell漏洞。目标的性质是机会主义的,因为多个国家和各个部门的多重感染发生在同一日期。受害者属于金融、学术、化妆品和旅游行业。

在利用之后,Deep Panda 在受感染的机器上部署了一个后门。根据后门的取证线索,我们发现了一个用被盗数字证书签名的新型内核 rootkit。我们发现,另一个名为 Winnti 的中国 APT 组织也使用相同的证书来签署他们的一些工具。

在此博客中,我们分享了我们对感染流程、后门程序和新的 rootkit 的分析,以及我们为何将此活动归因于这些中国民族国家的威胁行为者。

攻击链

在检查客户警报和遥测时,我们注意到通过 Log4Shell 利用易受攻击的 VMware Horizo​​n 服务器实现了对受害者网络的多次渗透。这些攻击催生了一个新的 PowerShell 进程来下载和执行以安装恶意 DLL 结束的脚本链。 

APT组织Deep Panda新型内核rootkoit后门分析
图 1:从利用 Log4Shell 到执行最终有效负载的事件流程

编码的 PowerShell 命令从远程服务器下载另一个 PowerShell 脚本并执行它。

APT组织Deep Panda新型内核rootkoit后门分析
图 2:解码后的 PowerShell 命令

下一阶段 PowerShell 脚本从同一服务器下载三个附加文件:1.bat 、syn.exe和1.dll。

APT组织Deep Panda新型内核rootkoit后门分析
图 3:从服务器下载的 p.txt PowerShell 脚本的内容

该脚本然后执行1.bat,后者又执行syn.exe并继续从磁盘中删除所有三个文件。

APT组织Deep Panda新型内核rootkoit后门分析
图4:从服务器下载的1.bat脚本内容

syn.exe是一个使用LoadLibrary加载其第一个命令行参数的程序,在本例中为1.dll。1.dll模块是最终的有效载荷,我们称之为 Milestone 的后门。它的代码基于泄露的 Gh0st RAT /Netbot Attacker 源代码,并与 Themida 打包在一起。

后门将自身复制到%APPDATA%\newdev.dll并通过直接在注册表中创建服务条目来创建名为msupdate2 的服务。在不同的样本中观察到了其他几个服务名称和描述。

APT组织Deep Panda新型内核rootkoit后门分析
图 5:Milestone 注册的“msupdate2”服务

虽然它与合法的 Microsoft newdev.dll 同名,但它只有两个真正的newdev.dll 的导出以及一个额外的ServiceMain 导出。

APT组织Deep Panda新型内核rootkoit后门分析
图 6:恶意Milestone的导出

总体而言,后门具有与 Gh0st RAT 相似的功能,但有显着差异。它的 C2 通信是未压缩的,不像 Gh0st RAT 通信是 zlib 压缩的。命令也有区别。例如,在 CMD 命令中,某些变体首先将cmd.exe复制到dllhost.exe,以避免被监控 CMD 执行的安全产品检测到。此外,后门支持将有关系统上当前会话的信息发送到服务器的命令。此命令在原始 Gh0st RAT 源代码中不存在。 

在我们追捕的众多后门样本中,有两个可区分的版本:2016 年编译的二进制文件包含版本字符串MileStone2016,而 2017 年编译的二进制文件包含MileStone2017。我们检测到的最近感染中使用的样本只是 2017 年的变种。

2016 年和 2017 年Milestone之间存在一些差异。首先,2017 年的Milestone通常包含 Themida,而 2016 年的Milestone则没有包装。其次,虽然 2016 年Milestone具有合理的时间戳,但所有 2017 年Milestone共享相同的时间戳,这使我们相信它们是伪造的。结合 2017 年后门程序至今仍被用于攻击的事实,不确定它们是在 2017 年还是更晚才编译的。

这两个版本在命令和通信方面也略有不同。2016 Milestones 将 XOR 加密应用于他们的通信,并支持以具有管理员权限的新用户身份执行的命令。为此,后门首先在系统上创建一个新的管理员用户,用户名为ANONYMOUS,密码为 MileSt0ne2@16。然后,它使用CreateProcessAsUser 以该用户身份执行其自身的另一个实例,然后立即将用户从系统中删除。

扔石头

除了后门,我们还获得了第三种样本——下载器。它将三个文件写入磁盘:

  • 良性可执行文件 – %APPDATA%\syn.exe
  • Milestone加载程序 – %APPDATA%\newdev.dll
  • 驱动程序 – C:\Windows\system32\drivers\crtsys.sys

上面的有效载荷存储在 XOR 加密和 LZMA 压缩。XOR 键是一个硬编码的 DWORD,可在样本之间更改。

dropper 为 32 位和 64 位系统提供了两个版本的驱动程序。使用服务控制管理器 (SCM) API,它将与操作系统架构兼容的构建安装为名为FSFilter-Min的驱动程序。

下载器修补加载程序二进制文件的.data部分以在将其写入磁盘之前添加其配置。接下来,dropper 执行 syn.exe,这是一个由 Synaptics 签名的良性可执行文件,以便旁加载newdev.dll加载器模块。

加载程序还包含一个 XOR 加密和 LZMA 压缩的有效负载,这是一个 Milestone 后门。它用XOR 0xCC解密配置 配置包含后门的版本、C2服务器地址和服务参数。

最后,加载程序反射性地加载 Milestone 后门并调用其导出。

APT组织Deep Panda新型内核rootkoit后门分析
图 7:解密配置示例

Fire Chili Rootkit

作为我们研究的一部分,我们收集了四个驱动程序样本——两对 32 位和 64 位样本。一对在 2017 年 8 月上旬编译,第二对在十天后编译。所有四个驱动程序样本都使用来自美国 Frostburn Studios 或韩国 433CCR 公司 (433씨씨알 주식회사) 的游戏开发公司窃取的证书进行数字签名。使用 Frostburn Studios 证书制作的签名甚至都带有时间戳。

APT组织Deep Panda新型内核rootkoit后门分析
图 8:crtsys.sys 驱动程序的数字签名

其中两个样本在 VirusTotal 上,检测率非常低。

APT组织Deep Panda新型内核rootkoit后门分析
APT组织Deep Panda新型内核rootkoit后门分析
图 9:VirusTotal 中 rootkit 样本的检测率

rootkit 首先确保受害机器未在安全模式下运行。然后它检查操作系统版本。rootkit 使用直接内核对象修改 (DKOM) 进行操作,其中涉及未记录的内核结构和对象。因此,它依赖于特定的操作系统构建,否则可能会导致受感染的机器崩溃。一般来说,支持的最新版本是 2017 年 4 月发布的 Windows 10 Creators Update (Redstone 2)。

驱动程序的目的是隐藏和保护来自用户模式组件的恶意工件。这包括四个方面:文件、进程、注册表项和网络连接。驱动程序有四个全局列表,每个方面一个,其中包含要隐藏的工件。驱动程序的 IOCTL 允许通过其控制设备\Device\crtsys动态配置列表。因此,dropper 使用这些 IOCTL 来隐藏驱动程序的注册表项、加载程序和后门文件以及加载程序进程。

IOCTL动作描述
0xF3060000隐藏文件添加全局文件列表的路径
0xF3060004停止隐藏文件从全局文件列表中删除路径
0xF3060008隐藏\保护进程将文件路径或 PID 添加到全局进程列表
0xF306000C停止隐藏\保护进程从全局进程列表中删除文件路径或 PID
0xF3060010隐藏注册表项将键添加到全局注册表列表
0xF3060014停止隐藏注册表项从全局注册表列表中删除一个键
0xF3060018隐藏网络连接将文件路径或端口号添加到全局网络列表
0xF306001C停止隐藏网络连接从全局网络列表中删除文件路径或端口号
文件

rootkit 使用基于 Microsoft 官方驱动程序代码示例的代码实现文件系统微过滤器。在注册微过滤器实例之前,它会在注册表中动态创建一个名为Sfdev32TopInstance 的实例,高度为483601。

rootkit 只为IRP_MJ_DIRECTORY_CONTROL的后操作例程设置一个回调。当它收到一个带有IRP_MN_QUERY_DIRECTORY次要函数的 IRP和来自全局文件列表的文件名时,回调将文件名更改为“.” 并且文件名长度为 0(在FILE_BOTH_DIR_INFORMATION结构中)。

全局文件列表默认使用驱动程序的路径初始化 ( *\SYSTEM32\DRIVERS\CRTSYS.SYS )。

流程

有两种与进程有关的机制:

  • 防止进程终止。
  • 隐藏一个进程。

为了防止进程终止,rootkit 拒绝了它所保护的进程的PROCESS_TERMINATE访问权限。使用ObRegisterCallbacks,它注册一个操作前回调例程,该例程在系统中创建或复制进程或线程的句柄时触发。当句柄访问源自用户模式并且句柄目标的图像路径或 PID 在全局进程列表中时,驱动程序会从DesiredAccess参数中删除PROCESS_TERMINATE权限。这导致限制用户模式进程获取使用标准 API 终止威胁参与者的恶意进程所需的权限。

APT组织Deep Panda新型内核rootkoit后门分析
图 10:取消设置 DesiredAccess 的 PROCESS_TERMINATE 位

为了隐藏进程,rootkit 通过使用PsSetCreateProcessNotifyRoutine API注册回调来监视系统上所有新创建的进程。每当在系统上创建新进程时,rootkit 都会检查其路径是否在全局进程列表中。如果是这样,则从EPROCESS结构的ActiveProcessLinks列表中删除该进程,该列表是系统上所有正在运行的进程的循环双向链表。驱动程序通过将其Flink(下一个条目)链接到其Blink(上一个条目)来从ActiveProcessLinks中移除进程的列表条目。因此,该进程对任务管理器等实用程序隐藏。

APT组织Deep Panda新型内核rootkoit后门分析
图 11:从 ActiveProcessLinks 中删除进程

由于EPROCESS结构在 Windows 构建之间发生变化,因此 rootkit 在运行时动态解析ActiveProcessLinks偏移量。遍历进程的EPROCESS​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​/ 找到后,ActiveProcessLinks偏移量也很容易定位,因为它是EPROCESS结构中的下一个字段。较旧的 rootkit 样本在 Windows 8 及更低版本上使用隐藏机制,而较新的样本仅在 Windows 7 及更低版本上使用它。

默认情况下,全局进程列表使用路径*\qwerty.exe进行初始化。但是,我们没有观察到任何与该活动相关的具有此名称的文件。

注册表项

rootkit 使用 Microsoft 的注册表编辑器对用户隐藏注册表项。 该代码基于一个中国开发者发布的开源 项目。

全局注册表键列表中键的HHIVE->GetCellRoutine函数被替换为过滤器函数。当查询过程的路径是*\WINDOWS\REGEDIT.EXE时,该函数只返回 0 来代替关键节点。

默认情况下,全局注册表列表使用 rootkit 的注册表项( \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\CRTSYS )进行初始化。

网络连接

rootkit 能够隐藏来自 netstat 等工具的 TCP 连接。这部分的大部分代码似乎是从一个开源 项目中复制而来的。

rootkit 附加到nsiproxy.sys的设备堆栈并拦截发送给它的IOCTL_NSI_GETALLPARAM ( 0x12000B )类型的 IOCTL。此 IOCTL 用于检索有关系统上活动网络连接的信息。当它被拦截时,驱动程序将IoCompletion例程替换为过滤结果以隐藏其自己的网络连接的函数。

IOCTL_NSI_GETALLPARAM在NSI_PARAM结构中返回有关网络连接的信息。NSI_PARAM包含连接数据,例如 IP、端口、连接状态和负责创建连接的可执行文件的进程 ID。filter 函数迭代这个结构,从其全局网络列表中搜索涉及进程或端口号的连接。所有已识别的连接都从结构中删除,使它们对发送 IOCTL 的进程隐藏。有趣的是,新版本的 64 位 rootkit 还增加了对从 32 位进程中过滤 IOCTL 的支持。

如果附加到nsiproxy.sys失败,rootkit 会附加到\Device\Tcp,拦截IOCTL_TCP_QUERY_INFORMATION_EX (0x120003)并以类似方式隐藏网络连接。

默认情况下,全局网络列表使用以下进程路径进行初始化:

  • * \ SYN.​​EXE
  • *\SVCHOST.EXE

因此,在 svchost.exe 下运行的所有服务的 TCP 连接都被隐藏,而不仅仅是 Milestone 后门的连接。

归因

Milestone 后门实际上与 Deep Panda 在 2010 年代初使用的 Infoadmin RAT 相同,在 2013 年 和 2015 年的博客中被引用。尽管许多后门基于 Gh0st RAT 代码,但 Milestone 和 Infoadmin 与其他后门不同。除了具有极其相似的代码外,两个后门都包含其他变体中没有的 Gh0st RAT 代码的相同修改。

两个后门共享一个 XOR 加密功能来加密通信,并放弃了原始 Gh0st RAT 的 zlib 压缩。两者还以相同的方式修改了 Gh0st RAT 代码,特别是 CMD 和屏幕捕获功能。此外,后门共享其他 Gh0st RAT 变体中不存在的两个命令:会话枚举命令和以管理用户身份执行的命令。

其他证据表明隶属于 Winnti。Rootkit 使用从游戏开发公司窃取的证书进行数字签名,这是 Winnti 的一个已知特征。搜索使用其中一个证书签名的更多文件会导致恶意 DLL 上传到 VirusTotal,名称为winmm.dll。进一步检查发现它与 2013年发布的有关 Winnti 的博客中引用的工具相同。另一个与 Winnti 的连接是基于 C2 域的。其中两个newdev.dll加载器配置了服务器gnisoft[.]com ,该服务器在2020 年归属于 Winnti  。

结论

在这篇博客中,我们将过去一个月的一系列机会性 Log4Shell 感染归因于 Deep Panda。尽管之前有关 Deep Panda 的技术出版物是在 5 多年前发布的,但该博客还与最近 关于 Milestone 后门的报告 有关,该报告表明他们的操作这些年来一直在持续。

此外,我们引入了以前未知的 Fire Chili rootkit 和两个受损的数字签名,其中一个我们还直接链接到 Winnti。尽管众所周知 Deep Panda 和 Winnti 都使用 rootkit 作为其工具集的一部分,但 Fire Chili 是一种新颖的菌株,具有与以前隶属于这些组织的代码库不同的独特代码库。

目前尚不清楚这些工具与两个不同群体相关联的原因。这些组织的开发人员可能会相互共享资源,例如被盗的证书和 C2 基础设施。这可以解释为什么样本在编译后几个小时才被签名。

Fortinet 解决方案

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

APT组织Deep Panda新型内核rootkoit后门分析
图 13:FortiEDR 在感染后阻止后门与 C2 通信

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

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

W32/Themida.ICD!tr
BAT/Agent.6057!tr
W64/Agent.A10B!tr
W32/Agent.0B37!tr
W32/GenKryptik.FQLT!tr
W32/Generic.AC.F834B!tr
W32/GenKryptik.ATCY!tr
W32/Generic.AP.33C2D2!tr
W32/GenKryptik.AQZZ!tr
W32/Generic.HCRGEJT!tr
W32/Agent.DKR!tr
W32/Agent.QNP!tr
W32/Agent.RXT!tr
W32/Agentb.BXIQ!tr
W32/Agent.DA3E!tr
W32/Agent.D584!tr
W32/Agent.0F09!tr
W32/Agent.3385!tr
W64/Agent.D87B!tr.rkit
W32/Agent.69C1!tr.rkit

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

附录 A:MITRE ATT&CK 技术

ID描述
T1190利用面向公众的应用程序
T1569.002系统服务:服务执行
T1059.001命令和脚本解释器:PowerShell
T1027混淆文件或信息:软件打包
T1041通过 C2 通道渗出
T1082系统信息发现
T1036伪装
T1083文件和目录发现
T1059.003命令和脚本解释器:Windows 命令外壳
T1592收集受害者主机信息
T1588.003获取能力:代码签名证书
T1014Rootkit
T1574.002劫持执行流程:DLL 侧载
T1620反射代码加载
T1113屏幕截图

附录 B:IOC(侵害指标)

侵害指标类型细节
ece45c25d47ba362d542cd0427775e68396bbbbd72fef39823826690b82216c69SHA256后门
517c1baf108461c975e988f3e89d4e95a92a40bd1268cdac385951af791947baSHA256后门
a573a413cbb1694d985376788d42ab2b342e6ce94dd1599602b73f5cca695d8fSHA256后门
9eeec764e77bec58d366c2efc3817ed56371e4b308e94ad04a6d6307f2e12edaSHA256后门
d005a8cf301819a46ecbb1d1e5db0bf87951808d141ada5e13ffc4b68155a112SHA256后门
69c69d71a7e334f8ef9d47e7b32d701a0ecd22ce79e0c11dabbc837c9e0fedc2SHA256后门
dfd2409f2b0f403e82252b48a84ff4d7bc3ebc1392226a9a067adc4791a26ee7SHA256后门
07c87d036ab5dca9947c20b7eb7d15c9434bb9f125ac564986b33f6c9204ab47SHA256后门
c0a2a3708516a321ad2fd68400bef6a3b302af54d6533b5cce6c67b4e13b87d3SHA256后门
f8b581393849be5fc4cea22a9ab6849295d9230a429822ceb4b8ee12b1d24683SHA256后门
14930488158df5fca4cba80b1089f41dc296e19bebf41e2ff6e5b32770ac0f1eSHA256后门
a9fa8e8609872cdcea241e3aab726b02b124c82de4c77ad3c3722d7c6b93b9b5SHA256后门
e92d4e58dfae7c1aadeef42056d5e2e5002814ee3b9b5ab1a48229bf00f3ade6SHA256后门
855449914f8ecd7371bf9e155f9a97969fee0655db5cf9418583e1d98f1adf14SHA256后门
a5fd7e68970e79f1a5514630928fde1ef9f2da197a12a57049dece9c7451ed7bSHA256后门
f5eb8949e39c8d3d70ff654a004bc8388eb0dd13ccb9d9958fd25aee47c1d3aeSHA256后门
64255ff02e774588995b203d556c9fa9e2c22a978aec02ff7dea372983b47d38SHA256后门
b598cb6ba7c99dcf6040f7073fe313e648db9dd2f6e71cba89790cc45c8c9026SHA256后门
2d252c51a29f86032421df82524c6161c7a63876c4dc20faffa47929ec8a9d60SHA256后门
2de6fb71c1d5ba0cd8d321546c04eaddddbf4a00ce4ef6ca6b7974a2a734a147SHA256后门
bd5d730bd204abaddc8db55900f307ff62eaf71c0dc30cebad403f7ce2737b5cSHA256后门
412464b25bf136c3780aff5a5a67d9390a0d6a6f852aea095​​7263fc41e266c8bSHA256后门
0d096d983d013897dbe69f3dae54a5f2ada8090b886ab68b74aa18277de03052SHA256后门
cfba16fa9aa7fdc7b744b2832ef65558d8d9934171f0d6e902e7a423d800b50fSHA256后门
a71b3f06bf87b40b1559fa1d5a8cc3eab4217f317858bce823dd36302412daBCSHA256后门
235044f58c801955ed496f8c84712fdb353fdd9b6fda91886262234bdb710614SHA256后门
e1a51320c982179affb26f417fbbba7e259f819a2721ab9eb0f6d665b6ea1625SHA256后门
d1be98177f8ae2c64659396277e7d5c8b7dba662867697feb35282149e3f3cbbSHA256后门
ab3470a45ec0185ca1f31291f69282c4a188a46eSHA1后门
10de515de5c970385cd946dfda334bc10a7b2d65SHA1后门
eb231f08cce1de3e0b10b69d597b865a7ebac4b3SHA1后门
66c3dfcb2cc0dfb60e40115e08fc293276e915c2536de9ed6a374481279b852bSHA256加载器
73640e8984ad5e5d9a1fd3eee39ccb4cc695c9e3f109b2479296d973a5a494b6SHA256加载器
7777bd2bdeff2fd34a745c350659ee24e330b01bcd2ee56d801d5fc2aceb858cSHA256加载器
8bf4e301538805b98bdf09fb73e3e370276a252d132e712eae143ab58899763eSHA256加载器
18b2e1c52d0245824a5bac2182de38efb3f82399b573063703c0a64252a5c949SHA256加载器
d5c1a2ca8d544bedb0d1523db8eeb33f0b065966f451604ff4715f600994bc47SHA256压缩
0939b68af0c8ee28ed66e2d4f7ee6352c06bda336ccc43775fb6be31541c6057SHA256
0595a719e7ffa77f17ac254134dba2c3e47d8c9c3968cda69c59c6b021421645SHA256下载
7782fdc84772c6c5c505098707ced6a17e74311fd5c2e2622fbc629b4df1d798SHA256下载
18751e47648e0713345552d47752209cbae50fac07895fc7dd1363bbb089a10bSHA256驱动程序 64 位
e4e4ff9ee61a1d42dbc1ddf9b87223393c5fbb5d3a3b849b4ea7a1ddf8acd87bSHA256驱动程序 64 位
395dbe0f7f90f0ad55e8fb894d19a7cc75305a3d7c159ac6a0929921726069c1SHA256驱动程序 32 位
befc197bceb3bd14f44d86ff41967f4e4c6412604ec67de481a5e226f8be0b37SHA256驱动程序 32 位
1c617fd9dfc068454e94a778f2baec389f534ce0faf786c7e24db7e10093e4fbSHA256合法 Synaptics Setup.exe
bde7b9832a8b2ed6d33eb33dae7c5222581a0163c1672d348b0444b516690f09SHA256合成器
8b88fe32bd38c3415115592cc028ddaa66dbf3fe024352f9bd16aed60fd5da3eSHA256合成器
ba763935528bdb0cc6d998747a17ae92783e5e8451a16569bc053379b1263385SHA256合成器
9908cb217080085e3467f5cedeef26a10aaa13a1b0c6ce2825a0c4912811d584SHA256合成器
c6bcde5e8185fa9317c17156405c9e2c1f1887d165f81e31e24976411af95722SHA256winmm.dll
3403923f1a151466a81c2c7a1fda617b7fbb43b1b8b0325e26e30ed06b6eb936SHA256后门
9BCD82563C72E6F72ADFF76BD8C6940C6037516A证书指纹
2A89C5FD0C23B8AF622F0E91939B486E9DB7FAEF证书指纹
192.95.36[.]61网络
vpn2.smi1egate[.]com网络
svn1.smi1egate[.]com网络
giga.gnisoft[.]com网络
giga.gnisoft[.]com网络
104.223.34[.]198网络
103.224.80[.]76网络
hxxp://104.223.34[.]198/111.php网络
hxxp://104.223.34[.]198/1dll.php网络
hxxp://104.223.34[.]198/syn.php网络
hxxp://104.223.34[.]198/p.txt网络
msupdate2服务名称
WebService服务名称
alg服务名称
msupdate服务名称
msupdateday服务名称
DigaTrack服务名称
crtsys.sys文件名
%APPDATA%\syn.exe文件名
%APPDATA%\newdev.dll文件名

from

转载请注明出处及链接

Leave a Reply

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