01 背景
今年的BlackHat会议上,来自Binarly的研究团队分享了议题《Blasting Event-Driven Cornucopia: WMI-based User-Space Attacks Blind SIEMs and EDRs》,研究了如何使基于WMI进行性能监视与数据收集的SIEM和EDR解决方案失效的案例。
WMI(Windows Management Infrastructure)是一种Windows系统机制,旨在收集系统相关组件信息,如正在运行的程序与服务、注册表项、文件系统信息、终端安全信息等。
基于WMI获取终端设备数据具有以下优点:
1.适用范围广:可用系统包括从Windows NT 4.0之后的所有Windows操作系统
2.支持通过COM接口生成和使用设备事件的标准化框架
3.WMI事件几乎涵盖了所有操作系统事件
4.提供注册永久事件订阅以将操作与WMI事件相关联的功能
基于WMI机制能够方便地对系统进行监控与检测,因此,WMI也被各种工具与终端安全解决方案利用。WMI强大的设备检测能力在为安全解决方案提供便利性的同时,也带来了被攻击者利用于防御削弱的潜在风险。
02 WMI攻击框架
WMI作为系统监测的手段,在设计之初并没有过多地考虑到其安全性,WMI服务也未被视为关键服务,Binarly提出的WMI威胁模型可以直接在用户态下实现攻击效果。
本文将着重介绍针对WMI进程数据的攻击,通过修改WMI依赖的基础设施中特定的全局标志变量,能够达到破坏WMI正常执行的目的。WMI进程数据攻击模型如下:
WMI组件中存在许多类似的逻辑,以一个全局的标志变量作为“开关”,每当有对应事件发生时,先检查“开关”是否开启。若“开关”关闭则跳过处理流程,返回相应错误代码。
以WMI组件wbemcore.dll的利用为例
定位到函数DllCanUnloadNow(),注意到函数Shutdown():
跟进Shutdown():
全局变量g_bDontAllowNewConnections被赋值为true。也就是说,当g_bDontAllowNewConnections被赋值为true时,表示相关功能的关闭。
回到议题介绍中:
控制该变量值为1会导致返回错误码0x80080008:
下面尝试patch该全局变量。在IDA中查看该变量的偏移:
偏移是0x1D2A58。在WinDbg中附加到WMI的进程Winmgmt,定位模块wbemcore.dll:
定位到偏移0x1D2A58:
确定该flag就是标志g_bDontAllowNewConnections,其值为0,patch后:
验证:连接WMI
WMI无法被连接,错误编号0x80080008。
通过patch的方式可能破坏基于WMI的正常功能。例如使用WMI监控进程创建,正常情况下,利用WMI监控Notepad.exe进程创建:
可以监听到目标进程的创建。Patch g_bDontAllowNewConnections变量后,基于WMI的进程监控失效了:
重启监听程序,已无法连接WMI:
Windows10环境下WMI相关组件以及全局变量脆弱项总结如下:
模块 |
全局变量 |
功能 |
wbemcore.dll |
EventDelivery |
值为false(0)时所有内部事件被禁用,Sysmon无法接收事件ID为19(WmiEventFilter)、20(WmiEventConsumer)、21(WmiEventConsumerToFilter)的事件 |
wbemcore.dll |
g_pEss_m4 |
值为false(0)时WMI Consumer安装回调失败 |
repdrvfs.dll |
g_bShuttingDown |
值为true(1)时WMI连接被禁用,回调程序返回失败 |
repdrvfs.dll |
*(DWORD*)(g_Glob+0x0) |
值为false(0)时无法添加EventFilter |
repdrvfs.dll |
*(QWORD*)(g_Glob+0x7) |
值为false(0)时无法添加EventFilter |
repdrvfs.dll |
*(DWORD*)(g_Glob+0xBC) |
值为false(0)时无法连接到WMI,已连接的客户端无法枚举WMI |
通过控制对应的标志变量,可以实现对WMI功能不同程度的削弱和破坏。
03 总结
去年的Black Hat Europe上,Binarly团队介绍了对Windows事件跟踪(ETW)的攻击,使得Process Monitor(procmon等)和Windows Defender之类依赖于ETW作为信息源来检测操作系统级别以上的恶意行为的方案失效。今年,他们提出了用户模式下禁用WMI功能的攻击,这种类型的攻击方式可以使得基于WMI的系统监控工具或安全防护机制的效果被削弱。Binarly团队在近两年的Black Hat大会上都将关注点放在基于破坏操作系统提供的检测基础设施,实现防御削弱效果上。通过操作系统本身的基础设施的削弱,使得基于此的终端防护失去效果,未来的终端对抗或许也会沿着这一方向继续发展。
WMI属于操作系统级别的管理基础设施。单个安全检测机制可能由于其难以修复的设计缺陷和没有引入相应保护机制的原因,存在被攻击者破坏或绕过的可能。因此,综合性的终端安全防御体系应该尽量收集多种来源的监控基础设施情报。在综合所有信息的基础上进行决策,规避单个机制被破坏造成的影响,以获得更好的防护效果。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team公众号
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
官方攻防交流群
网络安全一手资讯
攻防技术答疑解惑
扫码加好友即可拉群
原文始发于微信公众号(M01N Team):BlackHat议题解读|基于WMI的用户态防御削弱