-
-
[原创][翻译]规避技术: WMI
-
发表于:
2021-6-3 13:36
12030
-
备注
原文地址:https://evasions.checkpoint.com/techniques/wmi.html
原文标题:Evasions: WMI
更新日期:2021年6月3日
此文后期:根据自身所学进行内容扩充
因自身技术有限,只能尽自身所能翻译国外技术文章,供大家学习,若有不当或可完善的地方,希望可以指出,用于共同完善这篇文章。
目录
WMI检测方法
背景介绍
1. 通用的WMI查询
2. 利用WMI逃避追踪
2.1. 使用WMI启动程序
2.2. 通过WMI使用任务计划程序启动进程
3. 检查最后的启动时间
4. 检查网络适配器的最后重置时间
识别标志
反制措施
归功于
WMI检测方法
Windows管理接口(WMI)查询是获得操作系统和硬件信息的另一种方式。WMI使用COM接口和它们的方法。
背景介绍
标准COM函数被用来处理查询。它们的调用顺序如下所述,可分为6个步骤。
1. COM的初始化。
CoInitialize/CoInitializeEx
2. 创建所需的接口实例。
创建接口实例:CoCreateInstance/CoCreateInstanceEx
3. 通过接口实例连接到特定的服务,其功能如下。
ConnectServer
4. 用这些函数获取服务的方法并设置其参数。
Method (to get methods)
Put (to set arguments)
5. 从服务中检索信息,并用下面的函数执行服务的方法。左边的函数是右边的函数的代理--这些函数在内部被调用。
ExecQuery -> IWbemServices_ExecQuery (检索信息)
ExecMethod -> IWbemServices_ExecMethod (执行方法)
ExecMethodAsync -> IWbemServices_ExecMethodAsync (执行方法)
6. 用以下函数检查查询的结果。
[enumerator]->Next
[object]->Get
要想了解所描述的理论是如何应用于实践的,请查看下面的例子。
1. 通用的WMI查询
由于WMI提供了另一种收集系统信息的方式,它可以被用来执行其他文章中描述的规避技术,例如:
检查处理器数量是否不足
检查硬盘大小是否小
检查MAC地址是否特定
检查CPU温度信息是否可用
代码样本:
该代码样本的作者:al-khaser项目
代码样本(PowerShell):
识别标志:
如果下面的函数包含来自表列 "
Query
"的第3个参数:
IWbemServices_ExecQuery(..., query, ...)
则表明该应用程序试图使用规避技术。
检查表:
以下WMI查询可用于检测虚拟环境:
Query查询方式
Field字段
Value值
Detect检测
Comments注释
SELECT * FROM Win32_Processor
NumberOfCores
< 2
[general]
[empty]
Size
< 60GB
SerialNumber
None
None
CurrentTemperature
"Not supported"
DeviceId
PCI\VEN_80EE&DEV_CAFE
VirtualBox
VMware
MACAddress
08:00:27
VirtualBox
See "Check if MAC address is specific" section in "Network" chapter
00:1C:42
Parallels
VMware
XEN
Serial Number
VMware-
VMware
VirtualBox
INTEL - 6040000
VMware
See "SystemBiosVersion" in "Check if particular registry keys contain specified strings" section in "Registry" chapter
BOCHS
BOCHS
Parallels
QEMU
VirtualBox
Model
VMware
VMware
VirtualBox
VMware
VMware
VirtualBox
AdapterCompatibility
VMware
VMware
VirtualBox
VMware
VMware
VirtualBox
VMware
VMware
VirtualBox
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)