APT-C-06(#DarkHotel)在2025年2月通过钓鱼邮件投递恶意的证书安装包。此次攻击与该组织在2024年初的攻击非常类似:朝鲜语的安装包、年初短时间内大量投递、以涉朝贸易人员为主要目标。在攻击技战术方面,载荷中增加了大量检测、对抗杀毒软件的代码。
一、攻击流程
攻击者此次使用的诱饵文件为봉사기용전자증명서(2025).zip,翻译为中文是“服务用电子证书”(2024年攻击者使用的字体安装包)。压缩包内含cert.msi,执行该文件引发后续一系列恶意行为,最终导致恶意载荷在用户机器驻留。
在msi文件的CustomAction表中定义了加载k1nqa.dll调用t12函数的操作。
二、载荷分析
1. cert.msi中的k1nqa.dll
cert.msi在安装过程中调用k1nqa.dll的t12函数。程序在开始时通过进程和服务检查一系列杀毒软件的安装情况。
创建计划任务MicrosoftWindowsShellSH1执行Powershell代码。powershell的功能为下载下阶段载荷k1o,并执行。如果已有执行下阶段载荷的计划任务则移除自身。powershell代码中的下载链接由当前程序生成,后两个参数分别来源于当前系统的BuildNumber和杀软的安装情况。
程序随后创建进程执行另一段powershell代码,用于展示一张图片,以欺骗用户程序在正常执行。
2. k1o中的k1nqa.dll
下载的k1o文件仍然是一个msi文件,利用同样的方式加载内部的k1nqa.dll,并调用导出函数t1a1。由于样本的执行流程涉及多阶段多载荷,所有我们用一张图表示该样本的执行流程。
2.1 初始化(t1a1)
和之前攻击活动中出现的同类型样本一样利用32字节数据为flag定位配置数据,并解密。
程序通过MsiGetPropertyW获取OriginalDatabase和UIlevel属性。OriginalDatabase属性为当前msi文件的路径,用于后续判断程序是处于安装阶段还是驻留阶段。
通过导出函数找到当前模块,获取当前模块路径。
程序利用COM接口提升权限加载当前dll,调用导出函数a2,并传入之前获取的msi文件路径和两个url作为参数。随后遍历C:WindowsInstaller目录寻找当前msi文件的副本,创建进程清除该文件。
2.2 安装(a2)
提权后的当前模块由dllhost.exe进程加载。程序重复和t1a1类似的操作:解密配置,从参数中获取两个url和msi文件路径,利用导出函数获取当前模块路径。
检查杀毒软件安装情况。每个杀软对应一个序号,最终形成一个序号列表表示当前机器的杀软安装情况。
程序继续通过COM接口提升权限加载当前dll,调用导出函数a1。
拷贝msi文件到C:ProgramDataMicrosoftDRMtemp目录,创建计划任务MicrosoftWindowsAppIDNvidiaTeleConv,执行msiexec.exe /i,C:ProgramDataMicrosoftDRMtempsysteminfo.msi,/qn。
2.3 对抗杀软(a1)
还是类似的初始化操作,解密配置。随后,程序利用类似操作从程序内部解密出一段shellcode。
模拟Power服务进程的Token创建进程dllhost.exe,并将前面解密的shellcode注入到该进程执行。
Shellcode功能加载自身0xc0d偏移处的pe文件(md5:4f90ff96539cfd0a471165c0e6a957e2),实现后续的杀软对抗功能。
2.4 systeminfo.msi的t1a1
由计划任务启动的systeminfo.msi同样会执行t1a1导出函数,程序通过判断当前msi文件的路径,进入远程命令执行的流程。
从远程地址请求数据。
下载失败会向另一个地址报告状态。
解密数据,执行内含的shellcode。
暂时未下载到后续的shellcode。
3. 对抗杀软
3.1 loader
当前载荷由前述的a1导出函数执行,用于加载后续的两个模块。载荷解密.sdata节区数据,节区内的的数据结构如下图所示。
不同的block action对应不同的数据处理动作:0代表将数据写入C:ProgramDataMicrosoftProvisionsNvidiaConv.exe,并为之创建计划任务;1代表将数据写入EventStore.dll文件;2代表数据为shellcode,解密后注入Power服务进程执行;3代表将数据解密后写入C:ProgramDataMicrosoftSettingr0(0表示索引,随写入文件数量递增)。
当前样本文件含有两个block,block action都为2。两个shellcode使用了和前面shellcode一样的加载代码,加载自身包含的PE文件。两个载荷,一个载荷通过注册表禁用Windows Defender的诸多功能,另外一个用于关闭其它杀软进程。
3.2 对抗Windows Defender
移除WdFilter服务的驱动程序文件。
将Microsoft Defender 对不同威胁严重级别的默认处理操作设为忽略。
扰乱Microsoft Defender 的云保护服务功能。
禁用Microsoft Defender 的 核心服务(Core Service)的功能。
3.3 对抗其它杀软
根据当前机器的情况释放不同sys文件,落地到C:windowstempMpKslDrv.sys。
配置落地的sys文件为内核驱动程序,动态加载内核驱动程序。
循环判断当前运行进程列表中是否有存在于配置信息中提供的杀软进程列表中的进程,如果存在则利用之前加载的内核驱动程序关闭该进程。
跳出上述循环后会移除之前创建的内核驱动程序。
当前样本释放的两个sys文件md5为21e13f2cb269defeae5e1d09887d47bb和f53fa44c7b591a2be105344790543369,前者为杀软Zemana的驱动程序,后者为杀软Adlice的驱动程序。
这里攻击者使用了BYOVD(Bring Your Own Vulnerable Driver)攻击:利用存在漏洞的驱动程序进行权限提升或绕过安全机制的攻击方式。在当前样本中,攻击者利用上述两个包含漏洞的驱动程序来关闭杀软进程。具体的实现方式是向两个驱动程序创建的设备handle发送特定的IO控制代码,再结合指定进程的pid,就可以关闭指定进程。
三、关联分析
当前攻击活动与APT-C-06在2024年初发起的攻击行动在技战术方面存在多处相似。首先是载荷投递的方式,此前的攻击行动中也出现过利用安装包加载内部的恶意dll的执行方式。
其次是载荷解密配置的方式,都是通过32位字节数据定位加密数据,并利用RC4+ RtlDecompressBuffer解密解压缩数据。利用同样解密算法解密的出来的配置文件格式相似。配置文件中出现的url的格式也相似。
如此“重”的投入在杀软对抗上在APT-C-06之前的载荷中没有出现过。总体来说,该组织近些年技战术趋于“简单”:区别于之前的利用重量级的漏洞,转而采用灵活新颖的投递方式和攻击技术。在攻击目标方面,APT-C-06仍旧聚焦于涉朝的贸易人员,同一时期攻击的目标数量更多。
原文始发于微信公众号(360威胁情报中心):APT-C-06(DarkHotel)利用BYOVD技术的最新攻击活动分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论