情报背景
Malwarebytes威胁情报团队近日捕获了自2009年以来一直非常活跃的APT组织Lazarus Group的最新攻击。在本次事件中,Lazarus巧妙利用了Windows Update执行恶意载荷,并将C2通讯隐藏在GitHub请求中。本文将对事件中出现的相关攻击技术进行分析阐述。
组织名称 |
Lazarus |
战术标签 |
载荷执行 控制流劫持 命令控制 |
技术标签 |
恶意宏文档 第三方可信通信 |
情报来源 |
https://blog.malwarebytes.com/threat-intelligence/2022/01/north-koreas-lazarus-apt-leverages-windows-update-client-github-in-latest-campaign/ |
01 攻击技术分析
本次攻击事件的整体流程如下:
亮点一:KernelCallbackTable Hooking
在初始阶段的恶意宏文档中,Lazarus使用了一种新颖的技术通过宏代码实现控制流劫持并执行恶意行为。具体实现如下图所示:
通过向NtQueryInformationProcess传递参数ProcessBasicInformation(0)以获取_PROCESS_BASIC_INFORMATION结构。接着通过PebBaseAddress 获取PEB,进一步获取KernelCallbackTable。整体流程如下图所示:
KernelCallbackTable表由KeUserModeCallback进行调用,其调用过程如下:
当user32.dll加载到内存中时, KernelCallbackTable被初始化为一个回调函数数组,每当进程进行图形调用 (GDI) 时都会使用这些回调函数。当用户点击滚动条SrollBar时,会产生WM_LBUTTENDOWN消息,接着系统会处理消息并发生USER32!_fnDWORD回调。为了劫持控制流,恶意软件将表中的 USER32!_fnDWORD回调替换为恶意的WMIsAvailableOffline函数,该函数属于wmvcore.dll(Windows视频播放和创作库),使得Nt!KeUserModeCallback回调时调用的是替换过后的Shellcode,从而实现对控制流的劫持。KernelCallbackTable表由映射到Word进程内的DLL恢复原状。
Lazarus 持续对Windows API中的回调和系统机制发掘利用,对合法组件和API的滥用已经成为该组织的常用手法。同时,基于Shellcode执行,规避常见的创建线程行为,使得程序的执行流程较隐蔽的转移到恶意的Shellcode之中。这对安全防护提出了新的要求。
亮点二:使用Windows Update执行恶意载荷
被注入执行的Shellcode中包含一个加密的DLL,Shellcode将其解密后手动映射到Word进程的内存中并跳转到DLL的入口点执行。该文件包含两个额外的DLL,分别实现lnk文件的创建以及后续载荷的释放。
负责lnk文件创建的DLL在启动文件夹下释放一个快捷方式lnk文件,lnk文件将执行如下命令,实现白加黑加载:
C:Windowssystem32wuauclt.exe” /UpdateDeploymentProvider C:Windowssystem32wuaueng.dll /RunHandlerComServer
白文件具体信息如下:
组件名称 |
导出函数列表 |
wuaueng.dll |
GeneralizeForImaging |
WUCreateExpressionEvaluator |
|
WUCreateUpdateHandler |
|
WUServiceMain |
|
DllMain |
负责载荷释放的DLL创建并执行文件RuntimeBroker.exe,检查路径”C:Windowssystem32wuaueng.dll”是否存在,若不存在则释放恶意的wuaueng.dll。
双管齐下,实现利用白文件Microsoft Windows Update客户端加载恶意的wuaueng.dll以绕过安全检测机制,执行恶意逻辑。同时,释放于启动文件夹下的快捷方式还实现了恶意载荷在宿主环境中的驻留。
利用合法更新程序执行恶意逻辑,有效绕过了安全检测机制,将自身行为隐藏在合法进程之中。增强了其在终端上的隐匿性与持久性。
亮点三:借助GitHub完成C2通讯
Lazarus运用了特殊的通信机制,依托于GitHub实现C2通信。具体流程如下图所示:
样本通过HTTP向GitHub发出请求,通过检查得到的文件是否为PNG的方式检索仓库中的文件。一旦检索到PNG文件,则加载其中嵌入的DLL,执行导出函数“GetNumberOfMethods“并保存结果,然后将命令执行的结果提交到远端仓库,以此实现C2的交互。
利用GitHub作为C2,在短期攻击中能够发挥很好的效果,因为这使得安全防护产品更加难以将通信流量从流量中识别分离出来,提高了检测的难度,并且利用GitHub的部署成本极低。
02 总结
1. Lazarus创新性地使用了基于KernelCallbackTable的Hooking技术,实现对控制流的劫持;
2. 使用了利用Windows Update组件实现恶意载荷执行持久化的新LolBins利用方式;
3. 使用GitHub作为C2服务器,辅之以特殊的通信方式,实现流量层面上的隐匿。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
往期推荐
原文始发于微信公众号(M01N Team):攻击技术研判 |Lazarus搭载新的载荷执行与控制流劫持技术