4 ago. 2017

Pafish: detección de entornos virtualizados

Con el fin de ser capaces de detectar si se está ejecutando un software dentro de: un depurador, una máquina virtual (VM) o una sandbox, hay algunos proyectos bien conocidos de código abierto que son capaces de lograr esto. Son a menudo utilizados por los desarrolladores de malware, uno de los más conocidos se llama Pafish (Paranoid Fish).

Pafish es una herramienta para detectar entornos de análisis de malware, replicando las acciones que el malware hará normalmente para detectar si está siendo analizado. Viene con una serie de controles genéricos y específicos para revelar la presencia de ciertos productos de seguridad. Esto permite a los desarrolladores y usuarios de tales herramientas de análisis identificar y si es posible, mitigar sus debilidades en términos de detectabilidad.

Desafortunadamente, la mitigación no siempre es posible ya que algunos mecanismos de detección buscarán efectos secundarios inevitables de la tecnología de monitoreo aplicada. Por ejemplo, si la herramienta de análisis se basa en llamadas de función de Hooking, es relativamente trivial detectar la modificación de memoria resultante y probablemente no es posible mitigarlo.
Si un código malicioso se ejecuta dentro de un depurador, VM o sandbox debe desviarse de su ruta original y hacer algo legítimo o terminar de inmediato. Si no se está ejecutando en ninguno de estos entornos, debería ejecutar el código malicioso e infectar el sistema.

Pafish está escrito en C y puede ser construido con MinGW (gcc + make). Es posible ver el código fuente del proyecto, que tiene diferentes archivos, cada uno utilizado para diferentes propósitos de detección:

  • Detectar un depurador: debuggers.c
  • Detectar una caja de seguridad: gensandbox.c
  • Detectar funciones Hooking: hooks.c
  • Detectar VirtualBox: vbox.c
  • Detectar VMWare: vmware.c
  • Detectar Qemu: qemu.c
  • Detectar Bochs: bochs.c
  • Detectar Cuckoo: cuckoo.c
  • Detectar Sandboxie: sandboxie.c
  • Detectar vino: wine.c

Pafish sólo contiene detecciones de depurador muy simples utilizando dos funciones de la API de Windows: IsDebuggerPresent() y OutputDebugString() . Dado que la mayoría de las sandbox de malware no utilizan la depuración en la máquina, estas comprobaciones son inútiles para detectarlas. Además de las rutinas Pafish, hay muchos métodos más sofisticados para detectar depuradores, ya sea genérica o específicamente.

Fuente: Gurú de la Informática

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!