攻击技术研判|Lazarus钓鱼文档WMI进程创建意图及BMP恶意代码隐藏技术分析
攻击技术研判|Lazarus钓鱼文档WMI进程创建意图及BMP恶意代码隐藏技术分析
情报背景
Email、Office作为常见的攻击媒介,一直都受到微软及安全厂商的重点关注,针对相关攻击推出了许多执行限制和检测措施。
本文针对近期Lazarus组织攻击活动中钓鱼文档部分进行分析,包括试图绕过安全限制进行OFFICE进程创建的意图,并复现利用bmp图像隐藏恶意hta对象的隐写技术。
组织名称 | Lazarus |
组织编号 | APT38 |
战术标签 | 文档钓鱼 |
技术标签 | wmi进程创建 marco 图片隐写 |
情报来源 | https://blog.malwarebytes.com/malwarebytes-news/2021/04/lazarus-apt-conceals-malicious-code-within-bmp-file-to-drop-its-rat/ |
攻击技术分析
亮点一:宏代码中使用WMI创建进程
攻击者宏代码中用WMI创建进程,尝试规避OFFICE创建进程限制
关于创建进程的等效代码如下
代码使用base64解密后,调用GetObject获取Win32_Process对象,并使用Create方法创建子进程mshta.exe。
攻击者可能是意图调用WMI托管组件的方式启用新进程,规避掉与office word进程的父子关系。
样本在any.run中的运行结果,创建后的mshta.exe确实是和winword.exe脱离进程父子关系。
Any.Run链接:https://app.any.run/tasks/4a257566-2cc3-4e64-bd7f-79614caca349/
我们创建一个启动计算器的POC代码,测试下WMI创建进程效果。
可以看到计算器确实已经是独立的进程。
安全厂商对此类攻击技术的安全防护措施
Microsoft Defender for Endpoint中针对此类攻击提出攻击面缩小(ASR)方案,为企业提供了一组内置的组策略配置,拦截这些恶意攻击的底层行为。
比如对email、office等常见攻击媒介进程的行为进行审查,当这些进程出现有创建子进程,注入代码到其他进程或执行脚本代码时,其恶意行为将会被阻止。
微软文档-自定义减少攻击面规则
https://docs.microsoft.com/zh-cn/microsoft-365/security/defender-endpoint/customize-attack-surface-reduction?view=o365-worldwide
微软文档-使用组策略配置ASR
https://docs.microsoft.com/zh-cn/microsoft-365/security/defender-endpoint/enable-attack-surface-reduction?view=o365-worldwide
ASR中和进程创建相关的有
1. 阻止所有Office应用程序创建子进程(Block all Office applications from creating child processes)
此规则阻止Office创建子进程。Office应用程序包括Word、Excel、PowerPoint、OneNote和Access。
创建子进程是一种常见的恶意软件行为。滥用Office合法组件的恶意软件通常会运行VBA宏,并执行下载运行更多恶意载荷。但是,某些合法的应用程序也可能出于正常业务目的创建子进程,例如生成命令提示符或使用 PowerShell 配置注册表设置的情况。
Intune 名称:Office apps launching child proc esses
Configuration Manager 名称:Block Office application from creating child processes
GUID:D4F940AB-401B-4EFC-AADC-AD5F3C50688A
2. 阻止源自PSExec和WMI命令的进程创建(Block process creations originating from PSExec and WMI commands)
此规则阻止通过PsExec(https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec)和WMI(https://docs.microsoft.com/zh-cn/windows/win32/wmisdk/about-wmi)创建进程。PsExec和WMI都可以远程执行代码,因此经常存在恶意软件滥用此功能用于命令控制目的,存在在整个组织的网络中传播感染的风险。
Intune 名称:Process creation from PSExec and WMI commands
Configuration Manager 名称:不适用
GUID:d1e49aac-8f56-4280-b9ba-993a6d77406c
配置ASR测试绕过
配置组策略
准备的测试代码
1. 启用阻止所有Office应用程序创建子进程
2. 启用阻止源自PSExec和WMI命令的进程创建
可以看到,两张图中ASR都成功的对WMI创建计算器的行为进行了拦截。
在2019年的时候,法国的安全研究员Emeric Nasi撰写了一篇绕过ASR的相关文章[Bypass Windows Defender Attack Surface Reduction]
https://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
里面提到使用wmi可以绕过阻止所有Office应用程序创建子进程 (D4F940AB-401B-4EFC-AADC-AD5F3C50688A)这一项。
在本文撰写时,发现其相关方式都已经失效,但我们对其稍加更改,仍可绕过。
使用LOLBins绕过ASR防护
我们在Emeric Nasi提出的方式基础上稍加改动,使用explorer这类lolbins代理启动计算器,成功绕过ASR弹出计算器。
亮点二:使用bmp图像进行数据压缩隐藏hta对象
样本中的宏代码,将PNG图片解压为BMP图片,然后另存为ZIP文件,最后使用mshta调用ZIP,成功执行里面包含的js代码。
因为PNG是ZLIB压缩格式的图片,攻击者利用这一点可以避免检测到图片中镶嵌的恶意对象。
复现
1. 准备一个BMP图片,并将里面图片数据部分替换成hta对象内容。
2. 将BMP图片header 0×1c处修改为24。
3. 调用ConvertBMPtoPNG转换,过程中BMP会被压缩为PNG,至此样本制作成功。
4. 调用ConvertPNGtoZIP转换,过程中PNG会被解压缩为BMP。
5. 执行mshta C:\hta.zip,成功弹出计算器,复现成功。
总结
无论是该组织之前利用UUIDFromString隐藏shellcode还是此次利用bmp图像隐藏恶意HTA对象,说明该组织擅长滥用系统合法API的方式来隐藏其恶意行为。这种鲜有出现的攻击方式对安全团队的检测能力提出了新的挑战,虽然微软的ASR减少攻击面的策略能有效的防范该类攻击,但在高级对抗中依旧存在被绕过的风险。