目录
-
注册表检测方法
-
1.检查是否存在特定的注册表路径
-
2. 检查特定的注册表键是否包含指定的字符串
-
反制措施
-
归功于
注册表检测方法
所有注册表检测方法的原则如下:在通常的主机中没有这样的注册表键和值。然而,它们存在于特定的虚拟环境中。
有时,通常的系统在应用这些检查时可能会导致误报,因为它安装了一些虚拟机,因此系统中存在一些虚拟机的工件。尽管在所有其他方面,这样的系统与虚拟环境相比是干净的。
注册表键可以通过WinAPI调用查询。
kernel32.dll中使用的函数:
- RegOpenKey
- RegOpenKeyEx
- RegQueryValue
- RegQueryValueEx
- RegCloseKey
- RegEnumKeyEx
上面的函数是在以下ntdll.dll函数之上的wrappers:
- NtOpenKey
- NtEnumerateKey
- NtQueryValueKey
- NtClose
1.检查是否存在特定的注册表路径
请看标题部分,以获取使用的函数列表。
代码样本:
/* sample of usage: see detection of VirtualBox in the table below to check registry path */
int vbox_reg_key7() {
return pafish_exists_regkey(HKEY_LOCAL_MACHINE, "HARDWARE\\ACPI\\FADT\\VBOX__");
}
/* code is taken from "pafish" project, see references on the parent page */
int pafish_exists_regkey(HKEY hKey, char * regkey_s) {
HKEY regkey;
LONG ret;
/* regkey_s == "HARDWARE\\ACPI\\FADT\\VBOX__"; */
if (pafish_iswow64()) {
ret = RegOpenKeyEx(hKey, regkey_s, 0, KEY_READ | KEY_WOW64_64KEY, ®key);
}
else {
ret = RegOpenKeyEx(hKey, regkey_s, 0, KEY_READ, ®key);
}
if (ret == ERROR_SUCCESS) {
RegCloseKey(regkey);
return TRUE;
}
else
return FALSE;
}
此代码样本的作者:pafish project
识别标志
如果以下函数包含列表`注册表路径`的第二个参数
- NtOpenKey(…, registry_path, …)
那么这就表明应用程序试图使用规避技术。
检测表
|
检查是否存在以下注册表路径: |
||
|
检测 |
注册表路径(registry path) |
细节(如果有的话) |
|
[general] |
HKLM\Software\Classes\Folder\shell\sandbox |
|
| Hyper-V |
HKLM\SOFTWARE\Microsoft\Hyper-V |
|
| HKLM\SOFTWARE\Microsoft\VirtualMachine | ||
| HKLM\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters |
通常 “HostName “和 “VirtualMachineName “的值是在这个路径下读取的。 |
|
|
HKLM\SYSTEM\ControlSet001\Services\vmicheartbeat |
||
| HKLM\SYSTEM\ControlSet001\Services\vmicvss | ||
| HKLM\SYSTEM\ControlSet001\Services\vmicshutdown | ||
| HKLM\SYSTEM\ControlSet001\Services\vmicexchange | ||
| Parallels |
HKLM\SYSTEM\CurrentControlSet\Enum\PCI\VEN_1AB8* |
子键有以下结构 VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZ&REV_WW |
|
Sandboxie |
HKLM\SYSTEM\CurrentControlSet\Services\SbieDrv |
|
| HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sandboxie | ||
| VirtualBox |
HKLM\SYSTEM\CurrentControlSet\Enum\PCI\VEN_80EE* |
子键有以下结构: VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZ&REV_WW |
|
HKLM\HARDWARE\ACPI\DSDT\VBOX__ |
||
| HKLM\HARDWARE\ACPI\FADT\VBOX__ | ||
| HKLM\HARDWARE\ACPI\RSDT\VBOX__ | ||
| HKLM\SOFTWARE\Oracle\VirtualBox Guest Additions | ||
| HKLM\SYSTEM\ControlSet001\Services\VBoxGuest | ||
| HKLM\SYSTEM\ControlSet001\Services\VBoxMouse | ||
| HKLM\SYSTEM\ControlSet001\Services\VBoxService | ||
| HKLM\SYSTEM\ControlSet001\Services\VBoxSF | ||
| HKLM\SYSTEM\ControlSet001\Services\VBoxVideo | ||
| VirtualPC |
HKLM\SYSTEM\CurrentControlSet\Enum\PCI\VEN_5333* |
子键有以下结构: VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZ&REV_WW |
|
HKLM\SYSTEM\ControlSet001\Services\vpcbus |
||
| HKLM\SYSTEM\ControlSet001\Services\vpc-s3 | ||
| HKLM\SYSTEM\ControlSet001\Services\vpcuhub | ||
| HKLM\SYSTEM\ControlSet001\Services\msvmmouf | ||
| VMware |
HKLM\SYSTEM\CurrentControlSet\Enum\PCI\VEN_15AD* |
子键有以下结构: VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZ&REV_WW |
|
HKCU\SOFTWARE\VMware, Inc.\VMware Tools |
||
| HKLM\SOFTWARE\VMware, Inc.\VMware Tools | ||
| HKLM\SYSTEM\ControlSet001\Services\vmdebug | ||
| HKLM\SYSTEM\ControlSet001\Services\vmmouse | ||
| HKLM\SYSTEM\ControlSet001\Services\VMTools | ||
| HKLM\SYSTEM\ControlSet001\Services\VMMEMCTL | ||
| HKLM\SYSTEM\ControlSet001\Services\vmware | ||
| HKLM\SYSTEM\ControlSet001\Services\vmci | ||
| HKLM\SYSTEM\ControlSet001\Services\vmx86 | ||
| HKLM\SYSTEM\CurrentControlSet\Enum\IDE\CdRomNECVMWar_VMware_IDE_CD* | ||
| HKLM\SYSTEM\CurrentControlSet\Enum\IDE\CdRomNECVMWar_VMware_SATA_CD* | ||
| HKLM\SYSTEM\CurrentControlSet\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive* | ||
| HKLM\SYSTEM\CurrentControlSet\Enum\IDE\DiskVMware_Virtual_SATA_Hard_Drive* | ||
| Wine |
HKCU\SOFTWARE\Wine |
|
| HKLM\SOFTWARE\Wine | ||
| Xen |
HKLM\HARDWARE\ACPI\DSDT\xen |
|
| HKLM\HARDWARE\ACPI\FADT\xen | ||
| HKLM\HARDWARE\ACPI\RSDT\xen | ||
| HKLM\SYSTEM\ControlSet001\Services\xenevtchn | ||
| HKLM\SYSTEM\ControlSet001\Services\xennet | ||
| HKLM\SYSTEM\ControlSet001\Services\xennet6 | ||
| HKLM\SYSTEM\ControlSet001\Services\xensvc | ||
| HKLM\SYSTEM\ControlSet001\Services\xenvdb | ||
在特殊情况下,恶意软件可能会列举子键并检查子键的名称是否包含某些字符串,而不是检查指定的键是否存在。
例如:列举 “HKLM\SYSTEM\ControlSet001\Services\”的子键并搜索 “VBox “字符串。
2. 检查特定的注册表键值是否包含指定的字符串
请看标题部分,以获得所使用的函数列表。请注意,大小写与这些检查无关:它可以是大写或小写。
代码样本:
/* sample of usage: see detection of VirtualBox in the table below to check registry path and key values */
int vbox_reg_key2() {
return pafish_exists_regkey_value_str(HKEY_LOCAL_MACHINE, "HARDWARE\\Description\\System", "SystemBiosVersion", "VBOX");
}
/* code is taken from "pafish" project, see references on the parent page */
int pafish_exists_regkey_value_str(HKEY hKey, char * regkey_s, char * value_s, char * lookup) {
/*
regkey_s == "HARDWARE\\Description\\System";
value_s == "SystemBiosVersion";
lookup == "VBOX";
*/
HKEY regkey;
LONG ret;
DWORD size;
char value[1024], * lookup_str;
size_t lookup_size;
lookup_size = strlen(lookup);
lookup_str = malloc(lookup_size+sizeof(char));
strncpy(lookup_str, lookup, lookup_size+sizeof(char));
size = sizeof(value);
/* regkey_s == "HARDWARE\\Description\\System"; */
if (pafish_iswow64()) {
ret = RegOpenKeyEx(hKey, regkey_s, 0, KEY_READ | KEY_WOW64_64KEY, ®key);
}
else {
ret = RegOpenKeyEx(hKey, regkey_s, 0, KEY_READ, ®key);
}
if (ret == ERROR_SUCCESS) {
/* value_s == "SystemBiosVersion"; */
ret = RegQueryValueEx(regkey, value_s, NULL, NULL, (BYTE*)value, &size);
RegCloseKey(regkey);
if (ret == ERROR_SUCCESS) {
size_t i;
for (i = 0; i < strlen(value); i++) { /* case-insensitive */
value[i] = toupper(value[i]);
}
for (i = 0; i < lookup_size; i++) { /* case-insensitive */
lookup_str[i] = toupper(lookup_str[i]);
}
if (strstr(value, lookup_str) != NULL) {
free(lookup_str);
return TRUE;
}
}
}
free(lookup_str);
return FALSE;
}
此代码样本的作者:pafish project
识别标志
如果以下函数包含列表`注册表路径`的第二个参数:
-
NtOpenKey(…, 注册表路径, …)
并后跟对以下函数的调用,该函数带有表列“注册表键值”的第二个参数:
- NtQueryValueKey(…, registry_item, …)
那么这就表明应用程序试图使用规避技术。
检测表
|
检查以下注册表值是否包含以下字符串(不区分大小写: |
|||
|
Detect |
注册表路径 |
注册表键值 |
字符串 |
|
[general] |
HKLM\HARDWARE\Description\System |
SystemBiosDate |
06/23/99 |
|
HKLM\HARDWARE\Description\System\BIOS |
SystemProductName |
A M I |
|
|
BOCHS |
HKLM\HARDWARE\Description\System |
SystemBiosVersion |
BOCHS |
|
HKLM\HARDWARE\Description\System |
VideoBiosVersion |
BOCHS |
|
|
Anubis |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion |
ProductID |
76487-337-8429955-22614 |
|
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion |
ProductID |
76487-337-8429955-22614 |
|
|
CwSandbox |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion |
ProductID |
76487-644-3177037-23510 |
|
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion |
ProductID |
76487-644-3177037-23510 |
|
|
JoeBox |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion |
ProductID |
55274-640-2673064-23950 |
|
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion |
ProductID |
55274-640-2673064-23950 |
|
|
Parallels |
HKLM\HARDWARE\Description\System |
SystemBiosVersion |
PARALLELS |
|
HKLM\HARDWARE\Description\System |
VideoBiosVersion |
PARALLELS |
|
|
QEMU |
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
QEMU |
|
HKLM\HARDWARE\Description\System |
SystemBiosVersion |
QEMU |
|
|
HKLM\HARDWARE\Description\System |
VideoBiosVersion |
QEMU |
|
|
HKLM\HARDWARE\Description\System\BIOS |
SystemManufacturer |
QEMU |
|
|
VirtualBox |
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
VBOX |
|
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
VBOX |
|
|
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 2\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
VBOX |
|
|
HKLM\HARDWARE\Description\System |
SystemBiosVersion |
VBOX |
|
|
HKLM\HARDWARE\Description\System |
VideoBiosVersion |
VIRTUALBOX |
|
|
HKLM\HARDWARE\Description\System\BIOS |
SystemProductName |
VIRTUAL |
|
|
HKLM\SYSTEM\ControlSet001\Services\Disk\Enum |
DeviceDesc |
VBOX |
|
|
HKLM\SYSTEM\ControlSet001\Services\Disk\Enum |
FriendlyName |
VBOX |
|
|
HKLM\SYSTEM\ControlSet002\Services\Disk\Enum |
DeviceDesc |
VBOX |
|
|
HKLM\SYSTEM\ControlSet002\Services\Disk\Enum |
FriendlyName |
VBOX |
|
|
HKLM\SYSTEM\ControlSet003\Services\Disk\Enum |
DeviceDesc |
VBOX |
|
|
HKLM\SYSTEM\ControlSet003\Services\Disk\Enum |
FriendlyName |
VBOX |
|
|
HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation |
SystemProductName |
VIRTUAL |
|
|
HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation |
SystemProductName |
VIRTUALBOX |
|
|
VMware |
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
VMWARE |
|
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
VMWARE |
|
|
HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 2\Scsi Bus 0\Target Id 0\Logical Unit Id 0 |
Identifier |
VMWARE |
|
|
HKLM\HARDWARE\Description\System |
SystemBiosVersion |
VMWARE |
|
|
HKLM\HARDWARE\Description\System |
SystemBiosVersion |
INTEL – 6040000 |
|
|
HKLM\HARDWARE\Description\System |
VideoBiosVersion |
VMWARE |
|
|
HKLM\HARDWARE\Description\System\BIOS |
SystemProductName |
VMware |
|
|
HKLM\SYSTEM\ControlSet001\Services\Disk\Enum |
0 |
VMware |
|
|
HKLM\SYSTEM\ControlSet001\Services\Disk\Enum |
1 |
VMware |
|
|
HKLM\SYSTEM\ControlSet001\Services\Disk\Enum |
DeviceDesc |
VMware |
|
|
HKLM\SYSTEM\ControlSet001\Services\Disk\Enum |
FriendlyName |
VMware |
|
|
HKLM\SYSTEM\ControlSet002\Services\Disk\Enum |
DeviceDesc |
VMware |
|
|
HKLM\SYSTEM\ControlSet002\Services\Disk\Enum |
FriendlyName |
VMware |
|
|
HKLM\SYSTEM\ControlSet003\Services\Disk\Enum |
DeviceDesc |
VMware |
|
|
HKLM\SYSTEM\ControlSet003\Services\Disk\Enum |
FriendlyName |
VMware |
|
|
HKCR\Installer\Products |
ProductName |
vmware tools |
|
|
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
DisplayName |
vmware tools |
|
|
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
DisplayName |
vmware tools |
|
|
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
DisplayName |
vmware tools |
|
|
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000 |
CoInstallers32 |
*vmx* |
|
|
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000 |
DriverDesc |
VMware* |
|
|
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000 |
InfSection |
vmx* |
|
|
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000 |
ProviderName |
VMware* |
|
|
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\Settings |
Device Description |
VMware* |
|
|
HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation |
SystemProductName |
VMWARE |
|
|
HKLM\SYSTEM\CurrentControlSet\Control\Video\{GUID}\Video |
Service |
vm3dmp |
|
|
HKLM\SYSTEM\CurrentControlSet\Control\Video\{GUID}\Video |
Service |
vmx_svga |
|
|
HKLM\SYSTEM\CurrentControlSet\Control\Video\{GUID}\0000 |
Device Description |
VMware SVGA* |
|
|
Xen |
HKLM\HARDWARE\Description\System\BIOS |
SystemProductName |
Xen |
反制措施
拦截目标函数,如果指标(来自表格的注册表字符串)被检查,则返回适当的结果。













暂无评论内容