3 dic 2020

Herpaderping: un vistazo simplificado (Parte I)

Para los despistados, el 26 de octubre se hizo público un nuevo exploit de un "fallo de diseño" en Windows. Su autor, Johnny Shaw reportó la vulnerabilidad a Microsoft en julio de este año pero a día de hoy sigue sin ser parcheada porque Microsoft no considera que sea algo crítico (¯\_(ツ)_/¯). Esta técnica de explotación es muy similar a otras ya conocidas desde hace bastante tiempo, como Hollowing y Doppelganging, que permiten hacer pasar un proceso malicioso por uno legítimo. Es lo que se conoce como técnicas de evasión y ofuscación para ocultar malware. Si no os suenan, os recomiendo echar un ojo a estas últimas o al menos leer el apartado en el que el propio autor las compara.

Like y follow.

Cómo funciona

Aunque se trate de un exploit fácil de usar, siempre es importante entender lo que hay detrás. Básicamente, el exploit se aprovecha de una vulnerabilidad que reside en la secuencia de creación de un proceso en Windows. Muy (pero muy) por encima, la secuencia sería de esta forma: 
  • Primero se crea un objeto del proceso a partir del mapeo en memoria del código contenido en el fichero ejecutable. 
  • A continuación se inicia el hilo del proceso a partir de este objeto creado.
Tal y como el propio autor del exploit nos cuenta, es posible utilizar un archivo con un binario malicioso para mapear el contenido y crear el objeto del proceso, y sobrescribir inmediatamente después este archivo de origen con contenido legítimo antes de iniciar el hilo del proceso. Lo que se conoce popularmente como "dar el cambiazo". Pero, y aquí viene la parte graciosa, el objeto con la imagen cacheada del contenido malicioso ya está creado y es el que será utilizado en el proceso aunque se sobrescriba el ejecutable de origen. Aquí reside el quid del asunto, porque realmente siempre se ha pensado que el archivo conteniendo el ejecutable quedaría bloqueado, es decir sin poder modificarlo, mientras se crea el proceso.

Por otra parte, nos cuenta también el autor, existen antivirus (como Windows Defender) que inspeccionan la creación de un proceso para impedir la ejecución de procesos maliciosos. Sin embargo, la mayoría de ellos en realidad lo que están monitorizando es la creación del hilo inicial de un proceso, posterior a la creación del objeto en sí. No es hasta ese momento que inspeccionan el binario de origen para detectar código malicioso y, en ese caso, bloquear el proceso. Esto significa que se puede engañar al antivirus con el truco del cambiazo, ya que es posible sobrescribir el ejecutable antes de comenzar el hilo inicial del proceso. Al inspeccionar el binario de origen, el antivirus verá el fichero con el contenido ya reemplazado y no detectará nada extraño. En principio, se puede reemplazar el ejecutable malicioso por cualquier programa confiable que se nos ocurra. Por ejemplo, alguno firmado por Microsoft o Google. 

Además, hay que tener en cuenta que los antivirus también suelen monitorizar las operaciones de escritura de ficheros, lo que supondría un problema en este caso. Sin embargo, esto también lo tiene en cuenta el autor por lo que se ha asegurado que las operaciones de escritura se realicen en la misma rutina de control del archivo (file handle). Para ello, utiliza un archivo intermedio llamado "target" en el que escribe el código malicioso (se abre el handle), mapea el contenido para crear el objeto del proceso, sobrescribe el archivo con el código legítimo, crea el hilo del proceso y finalmente cierra el handle. Todo se realiza en ese orden concreto. Es en el momento de cerrar el handle cuando el antivirus va a inspeccionar el contenido del archivo "target", pero ya ha sido reemplazado, por lo que, de nuevo, no detectará nada extraño. El autor resume los pasos en: write -> map -> modify -> execute -> close.

Por lo tanto, el exploit de herpaderping nos permite ejecutar malware de forma fácil y sencilla sin ser detectados. Únicamente debemos proporcionar al exploit la ruta al ejecutable malicioso que queremos ejecutar, la ruta a un archivo cualquiera que se usará como "target", y la ruta a un programa confiable legítimo. Obviamente alguien ya ha tenido la idea de utilizarlo para ejecutar Mimikatz sin ser detectado por Windows Defender al hacerlo pasar por un programa firmado por Microsoft:

Me encanta la ironía de utilizar lsass.exe para "herpaderpear" Mimikatz.

En el próximo post veremos más en detalle cómo utilizar este exploit, qué opciones tiene, y en qué ocasiones tiene sentido utilizarlo. Si os interesa este tema, recomiendo leer detenidamente la explicación del propio autor en el README en GitHub.


No hay comentarios:

Publicar un comentario