Banner 1

Detectar Máquinas Virtuales desde el registro de Windows

En el transcurso de una revisión de seguridad resulta muy útil descubrir si se está analizando un equipo físico o una máquina virtual ya sea de VmWare, VirtualBox, QEMU o de Windows Virtual PC ya que las pruebas a realizar varían sensiblemente si se trata de una máquina virtual y es necesario tener presente que hay que revisar el sistema que hace de anfitrión para comprobar su nivel de seguridad o si es posible comprometer otras equipos con hardware virtual presentes en dicho servidor host. También, sobre todo para los desarrolladores de malware y virus, es diferente el comportamiento de los bichos si se detecta que se está ante un equipo con hardware físico o en una Sandbox, lo que puede indicar que se trata de un entorno aislado de laboratorio donde se está analizando y destripando el comportamiento de dicho código malicioso.

Aunque existen técnicas para ofuscar y ocultar los indicios más evidentes de una máquina virtual, el registro de Windows resulta de gran ayuda para reconocer fácilmente si se trata de un sistema físico o una máquina con el hardware virtualizado. El registro de Windows es una base de datos jerárquica que almacena los ajustes de configuración y opciones en los sistemas operativos Microsoft Windows. Contiene la configuración de todos los componentes de bajo nivel del sistema operativo, así como de las aplicaciones que se han instalado en la plataforma y la configuración del hardware que está disponible en el equipo como el disco duro, memoria RAM, tarjeta gráfica, etc.

Cualquier máquina virtual, al igual que un equipo real, dispone de disco duro, BIOS, tarjeta de red, tarjeta gráfica, etc que, permiten su identificación.

En un sistema Microsoft Windows es posible ejecutar el comando "reg query" y consultar el valor de determinadas claves del registro para comprobar e identificar equipos virtuales. Las claves de registro más significativas que permiten reconocer VMs son:

HKEY_LOCAL_MACHINE\System\CurrenControlSet\Services\Disk\Enum\0: esta clave de registro del tipo "valor de cadena" que guarda las características de todas las unidades de disco presentes en el equipo.
HKLM\Hardware\Description\System\BIOS: esta clave almacena los detalles de la BIOS del sistema, fabricante, versión, fecha de actualización, etc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI: aquí se localizan todos los dispositivos PCI de que dispone el sistema, es decir, la tarjeta gráfica, la tarjeta de red, etc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_10DE&DEV_0DF4&SUBSYS_15F21043&REV_A1: es la clave de registro que contiene los datos e información referente a la tarjeta gráfica con el chipset nvidia, como, por ejemplo, una GeForce, etc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_5333&DEV_8811&SUBSYS_00000000&REV_00: para tarjetas gráficas del tipo S3 Trio.

Por ejemplo, consultando el valor de la clave para identificar el disco duro "\Enum\0" se obtienen los respectivos resultados para un equipo con Windows 7 bajo VirtualBox, otro con hardware real y Windows 7 y un sistema bajo VmWare con Windows XP:
c:\Hacktimes>reg query HKLM\System\CurrentControlSet\Services\Disk\Enum /v 0

0 REG_SZ IDE\DiskVBOX_HARDDISK_____________1.0_____\5&33d1638a&0&0.0.0
0 REG_SZ IDE\DiskHitachi_HTS547550A9E384_________JE3OA60A\5&875ff02&0&0.0.0
0 REG_SZ SCSI\Disk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.0\4&5fcaafc&0&000



Fig 1. Captura del registro de Windows con la clave "\Enum\0" de un equipo físico
El Valor de las claves para ver la BIOS de un equipo real es:
C:\hacktimes>reg query HKLM\Hardware\Description\System\BIOS

HKEY_LOCAL_MACHINE\Hardware\Description\System\BIOS
BiosMajorRelease REG_DWORD 0x4
BiosMinorRelease REG_DWORD 0x6
ECFirmwareMajorRelease REG_DWORD 0xff
ECFirmwareMinorRelease REG_DWORD 0xff
BaseBoardManufacturer REG_SZ ASUSTeK Computer Inc.
BaseBoardProduct REG_SZ K53SV
BaseBoardVersion REG_SZ 1.0
BIOSReleaseDate REG_SZ 12/30/2011
BIOSVendor REG_SZ American Megatrends Inc.
BIOSVersion REG_SZ K53SV.324
SystemFamily REG_SZ K
SystemManufacturer REG_SZ ASUSTeK Computer Inc.
SystemProductName REG_SZ K53SV
SystemSKU REG_SZ To be filled by O.E.M.
SystemVersion REG_SZ 1.0

Otra forma de identificar una máquina virtual es buscando drivers específicos como, por ejemplo, el driver para el ratón de VmWare ("C:\Windows\System32\drivers\vmmouse.sys") o, incluso, mediante la dirección MAC de la tarjeta de red. Si bien es relativamente sencillo falsear y modificar la MAC Address de un equipo, se puede utilizar como una comprobación adicional y complementaria al resto de verificaciones anteriores del registro de Windows. Cada tarjeta de red permite identificar al fabricante mediante los tres primeros bytes de la dirección. Los fabricantes virtuales también tienen sus propios identificadores como, por ejemplo:
00:50:56 para Vmware
08:00:20 para Oracle Corporation (VirtualBox)
00:03:ff para Microsoft Corporation (Windows Virtual PC / Connectix)
etc.

Por ejemplo, la configuración de la tarjeta de red en un equipo instalado bajo VirtualBox es:
C:\hacktimes>ipconfig /all

Configuración IP de Windows
Host Name . . . . . . . . . . . . : hacktimes_w7
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . :
Adaptador de Ethernet Conexión de área local:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Adaptador de escritorio Intel (R) PRO/1000 MT
Physical Address. . . . . . . . . : 08-00-20-53-21-79

También se puede utilizar la aplicación PAFISH de Alberto Ortega (https://github.com/a0rtega/pafish) que directamente consulta las diferentes claves del registro de Windows que anteriormente se enumeraban y que permite reconocer fácilmente equipos con VirtualBox o VmWare:

Fig 2. Captura de pantalla de la ejecución de PAFISH en un Windows 7 virtualizado con VmWare
PAFISH genera además un archivo .log con las evidencias que ha encontrado y el resultado de las consultas a las claves del registro que demuestran que se trata de una máquina virtual.

Para evitar la detección de un equipo virtualizado, lo primero es no instalar las "VmWare Tools" de VmWare o su equivalente en VirtualBox "Guest Addition" que, aunque mejoran el rendimiento de la VM, incluyen multitud de pistas en el Sistema Operativo huésped que hacen que se pueda detectar más fácilmente el hardware virtual. Tambien se puede editar el fichero ".vmx" que incluye la configuración de la máquina virtual e información relativa al tamaño del disco duro virtual, los dispositivos conectados, los datos de la tarjeta de red, etc. Es preciso añadir al archivo ".vmx" lo siguiente:
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"

Más información en:

http://www.coffer.com/mac_find: buscador para identificar la dirección MAC de una tarjeta de red con el fabricante correspondiente.

http://www.hacktimes.com/introducci_n_al_an_lisis_forense_en_vmware: Introducción al análisis forense en VmWare.

Fuente: http://www.hacktimes.com/detect_VMs/

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay