Ocultando entornos virtuales a malware y atacantes

Si recordáis hace tiempo repasamos una serie de técnicas para que nuestro malware de cada día pudiera detectar que está "dentro" de una máquina virtual o en un sandbox y así ejecutar inmediatamente un rutina de escape para dejar con un palmo de narices a los analistas (o al menos a los analistas más noveles).

Ahora vamos a cambiarnos de chaqueta y vamos a ponernos en la piel de quién tiene que realizar el análisis del software malicioso. Si antes la pieza de malware intentaba detectar el entorno dónde estaba para engañarle y no seguir ejecutando sus malignas acciones, ahora es el propio entorno el que intentará engañar al malware y hacerle creer que está campando a sus anchas en el sistema operativo de su víctima inocente.

Para ello nos viene al pelo un breve post de Hexacorn en el que se describen algunas maneras de ocultar que el sistema es realmente una máquina virtual (principalmente VMWare). Por supuesto no son las únicas medidas que se pueden tomar, pero es un excelente comienzo para ocultar ficheros, procesos, servicios y claves de registro de cara a evadir los controles anti-VM de algunos tipos de malware.

 
Cambiar la configuración de la máquina virtual

Se describe bastante bien en este paper.

Ocultar procesos (únicamente)

Si sólo quieres ocultar procesos, puedes usar la herramienta HideToolz que puede descargarse desde el sitio web de Fyyre.

Cuando HideToolz está activo, los procesos marcados para ocultarse no son visibles en el Administrador de tareas y no pueden encontrarse mediante las funciones normales del proceso de enumeración.

Esto es lo que ve en HideToolz (los procesos marcados con un asterisco estan ocultos):


Y esto es lo que el Administrador de tareas (y Process Explorer) puede ver:


Ocultar archivos, directorios, procesos, servicios, entradas de registro

Cuando se trata de ocultar más cosas, se puede utilizar la ayuda de un buen rootkit como el viejo Hacker Defender (Hxdef) de Holy_Father.

El rootkit usa un archivo de configuración que permite especificar lo que queremos ocultar en el entorno y que incluye:

  •      archivos / carpetas
  •      procesos
  •      servicios y sus entradas de registro asociadas
  •      claves de registro / nombres / valores
Para configurar Hacker Defender tienes que editar/modificar el archivo de configuración por defecto en sth a lo largo de estas líneas:
[Hidden Table]
hxd*
vmu*
vmt*
vmw*
tools*
procexp*
ollydbg*

[Root Processes]
hxd*
vmu*
vmt*
vmw*
tools*
procexp*
ollydbg*

[Hidden Services]
HackerDefender100
vmu*
vmt*
vmw*
procexp*

[Hidden RegKeys]
VMware, Inc.
Sysinternals

[Hidden RegValues]
vmu*
vmt*
vmw*

[Startup Run]

[Free Space]

[Hidden Ports]

[Settings]
Password=infected
BackdoorShell=cmd.exe
FileMappingName=_.-=[Hacker Defender]=-._
ServiceName=HackerDefender100
ServiceDisplayName=HXD Service 100
ServiceDescription=NT rootkit
DriverName=HackerDefenderDrv100
DriverFileName=hxdefdrv.sys
[Comments]
El nuevo archivo de configuración puede cargarse:
hxdef100.exe hide.ini
Y a partir de ahora los elementos seleccionados estarán disponibles sólo a los procesos enumerados en la sección "procesos fundamentales".
Ejemplo: Qué ve Regedit antes de la instalación del rootkit:



y después de su instalación:



Qué ve el Administrador de tareas antes:

 

y después de la instalación del rootkit:

 

Obviamente, la configuración de proporcionada es lejos de ser perfecta y necesita más desarrollo.


Lo que sería ideal es que los desarrolladores de productos VM permitieran ocultar completamente las herramientas y el entorno en el sistema operativo invitado. Por ejemplo, con la asignación aleatoria de los nombres de procesos, títulos de las ventanas, etc. - una técnica simple utilizada durante años por muchas herramientas antirootkit como XUETR y GMER.

1 comentarios :