-
-
[原创][翻译]规避技术: CPU
-
发表于: 2021-5-28 11:48 8325
-
备注
原文地址:https://evasions.checkpoint.com/techniques/cpu.html
原文标题:Evasions: CPU
更新日期:2021年5月28日
此文后期:根据自身所学进行内容扩充
因自身技术有限,只能尽自身所能翻译国外技术文章,供大家学习,若有不当或可完善的地方,希望可以指出,用于共同完善这篇文章。
目录
使用的CPU检测方法
1.通过CPUID指令检查供应商ID字符串
2.通过CPUID指令检查是否在Hypervisor中运行
3.检查全局表位置:IDT/GDT/LDT
4.使用异域指令愚弄虚拟模拟器
5.通过执行非法指令检测环境(仅VirtualPC)
6.通过指令内-后门端口(仅适用于VMware)检测环境
识别标志
反制措施
归功于
使用的CPU检测方法
这组技术使用特定的处理器指令来获取CPU的特定信息,或者执行预定义的指令序列,这些指令在常规的主机操作系统和虚拟环境中表现不同。
1.通过CPUID指令检查供应商ID字符串
CPUID指令是一条向EBX、ECX、EDX返回处理器识别和特征信息的指令。接收到这些寄存器的信息可以用来识别一个供应商。
代码样本:
检测表:
通过CPUID指令检查供应商ID字符串-分别以EBX、ECX、EDX的形式返回信息:
检测
EAX作为CPUID的参数
字符串
FreeBSD HV
0x40000000
bhyve bhyve
Hyper-V
0x40000000
Microsoft Hv
KVM
0x40000000
KVMKVMKVM
Parallels
0x40000000
prl hyperv
VirtualBox
0x40000000
VBoxVBoxVBox
VirtualPC
0x40000000
Microsoft Hv
VMware
0x40000000
VMwareVMware
Xen
0x40000000
XenVMMXenVMM
2.通过CPUID指令检查是否在Hypervisor中运行
另一种检测程序是否在管理程序中运行的方法是以其他方式使用CPUID指
不把EAX(CPUID的参数)设置为0x40000000,而是将EAX设置为1。
当EAX被设置为1时,ECX(CPUID的返回值)中的第31位被设置,它表明程序正在Hypervisor中运行。
代码样本 (函数GetAdaptersAddresses):
检测表:
检查是否正在虚拟机管理程序中运行(通过CPUID)
检测
EAX作为CPUID的参数
检查返回值
赞赏
- [原创]物联网安全:基础篇 4124
- 威胁情报小课堂:阻止活跃勒索软件的感染 2177
- [翻译]发现利用 Facebook 和 MS 管理控制台实施的 Kimsuky APT 攻击 7061
- 威胁情报小课堂:LockBit Black 2053
- 威胁情报小课堂:Nitrogen 2079