Análisis de malware: Reversing a una variante de Houdini Worm


  • Nombre de la muestra encontrada: sev.vbs
  • HASH SHA256: a9f8dbdb9c116a5d47fabfa950477a96463f8d13ff102405e4ab0590c94faade
  • Ruta en donde se detectó: Se encontró en la ruta correspondiente al valor de la variable de entorno %APPDATA%, es decir por ejemplo, “C:\Users\%username%\AppData\Roaming”
  • Vector de ataque o infección: Dispositivos de almacenamiento USB.
  • Método de propogación: Internet y la Red LAN.

muestra

Preview de la muestra:

Se observa que cierta parte del código está codificada.

preview1Se observa que la codificación está en base64.

decode1

En esta variante se observa que la codificación la realiza en dos veces con el fin de quedar más ofuscado.

decode2

Para decodificar el texto en Base64, existen múltiples formas, se puede usar un servicio online (la más fácil), usar una herramienta existente a nivel de sistema operativo, modificar el código fuente para imprimir la variable resultante (como en el anterior post) o crear su propio código para Codificar y Decodificar en Base64. Ver un ejemplo que cree en Java.

 Codificar y Decodificar base64 en JAVA

Codificar y Decodificar base64 en JAVA

En esta ocasión, por simplicidad, opte por usar un comando con una utilidad en Kali Linux, luego de extraer el codigo codificado.

Texto codificado en Base64, como se encontró en la muestra.

Extract_Code_Base64

En la primera decodificación el texto se ve de la siguiente manera:

Decode1-VIM

En la segunda decodificación ya el texto se ve así:

Decode2-VIM

Comando utilizado para decodificar doblemente.

Command-base64
Comando decodificar en base64

Resultado del comando:

Decode OK
Decode OK

 

Luego, se observa que el código esta codificado en ASCII, por tanto, se puede modificar el código fuente para que imprima la variable decodificada o escriba el resultado en un archivo guardado en el disco duro.

Para este caso, se elimina en donde ejecuta el archivo y se remplaza por las últimas tres líneas para guardar el resultado en otro archivo.

Decodificar en ASCII
Decodificar en ASCII

Archivo resultado de ejecutar el script.

DecodeMalware

Revisando el código se obtiene el script del malware en su texto claro; por ejemplo, en la primera línea vemos el nombre del malware con copyright y el usuario de Skype del creador por si desean contactarlo, jejeje…

Codigo de Houdini
Codigo de Houdini

En la imagen anterior, también se observa el dominio del C&C y el puerto por donde se está conectando así como la declaración de variables públicas y privadas.

Luego encontramos los comandos que usa y los strings de conexión:

Comandos y String de Connexiones

Uso de los comandos:

  • execute :ejecuta un comando especifico en el host afectado

  • update : actualiza la configuración del malware.

  • uninstall : desinstala o elimina evidencias del malware..

  • send : copia un archivo desde el C&C hasta el host afectado

  • site-send : copia un archivo almacenado en un sitio Web al host afectado

  • recv : descarga un archivo desde Internet

  • enum-driver : enumera o lista los discos

  • enum-faf : lista archivos y carpetas

  • enum-process : lista los procesos en ejecución

  • cmd-shell : abre una ventana de comandos

  • delete : borra archivos o carpetas

  • exit-process : termina procesos específicos

  • sleep : espera cinco segundos, según el valor asignado a la variable.

Sleep

Tener en cuenta que algunos comandos están asociados a una función que es la que realmente realiza la opción, por ejemplo, el comando “recv” usa la función upload y recibe como parámetro la URL del archivo.

funcionUpload

Una de las funciones más interesantes es la de seguridad, la cual permite a partir del sistema operativo y la versión consultar los productos de antivirus que están instalados o informar si no tiene antivirus, posiblemente con la finalidad de usar técnicas de evasión según el antivirus que detecte.

Función de Seguridad
Función de Seguridad

Finalmente, al subir la muestra a Virus Total, se evidencia que ya es detectada por el 70% de los antivirus.

https://www.virustotal.com/en/file/813c63a041c1579b5871d6064ab062d401f5e8f010ddaca99c8c2309baae7e92/analysis/1435333464/
https://www.virustotal.com/en/file/813c63a041c1579b5871d6064ab062d401f5e8f010ddaca99c8c2309baae7e92/analysis/1435333464/

¿Cómo Erradicarlo?

La primera opción es verificar que su antivirus o solución antimalware lo detecte y elimine, en caso de que no lo haga, se debe escalar el caso con el fabricante para que envie la firma o sea detectado por euristica.

Por otro lado, se pueden  borrar manualmente los registros del malware, siguiendo los pasos de la función “uninstall”, que basicamente son:

  • Identificar el PID de la conexión y terminar el proceso en ejecución «wscript.exe» (Comando netstat -abo y luego Taskkill /PID #PID /F) o desde el administrador de tareas.
Conexión WScript.exe
Conexión WScript.exe
Terminación de Proceso
Terminación de Proceso
  • Desactivar la ejecución del malware al inicio de la sesión,  desde la configuración del sistema (Comando MSCONFIG), Pestaña Inicio de Windows.
MSConfig
MSConfig
  • Eliminar las claves de registros creadas en la ruta,normlamente contiene el nombre del proceso «WSCRIPT.EXE» seguidodelparrametro //B y luego la ruta en donde se encuentra.
    • HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run\
    • HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run\

regedit

  • Borrar el archivos malicioso de la carpeta %APPDATA%  y del inicio del sistema. (Recuerde que antes debe mostrar los archivos ocultos del sistema para poder visualizarlo).

MenuInicio

  • Vacunar los ultimos medios extraibles o dispositivos USB que se hayan ingresado.
Borrado Malware en USB
Detección y Borrado del malware en la USB

Otras Contramedidas:

  • Se recomienda crear o modificar las reglas Correlación delSIEM y/o en elProxy, para detectar losString de Conexión en las peticionesHTTP (normalmente esPOST), es decir, por ejemplo, no solo elstring «is-ready», sino también los siguientes que se detectaron en el código fuente:
    • «is-recving»
    • «is-sending»
    • «is-enum-driver»
    • «is-enum-faf»
    • «is-enum-process»
    • «is-cmd-shell»
  • Se recomienda activar los filtros en los IPS/IDS que tengan que ver con el malware llamado Houdini Worm.
  • Se recomienda monitorear y controlar la escritura de claves en la ruta RUN del sistema y del usuario, principalmente cuando el valor inicie por WSCRIPT.EXE.
  • Se recomienda seguir monitoreando e inventariando los archivos en Visual Basic Script, para identificar otras variantes de malware escritos en este lenguaje scripting.

Conclusión:

Luego de realizar el reversing al archivo encontrado, se identificó que es un codigo malicioso que corresponde al malware llamado «Houdini», escrito en Visual Basic Script y el cual estaba ofuscado con la codificación en base64 usándolo interactivamente dos veces, luego usa la técnica ASCII. El malware tiene la capacidad de obtener información confidencial y ejecutar varios comandos desde el Command and Control en el equipo infectado, por ejemplo, enumerar procesos o terminar uno específico a partir del PID, además de saber que antivirus tiene instalado para realizar técnicas de evasión.

Segun informes de fabricantes de Antivirus (ej. ESET), en los ultimos meses este tipo de malware en VBS, tiene una tendencia alcista en Colombia y Venezuela, por ende, se deben tomar medidas para evitar incidentes de seguridad de la información, con alto impacto.

Estadísticas de detección variantes de malware VBS, en Colombia y Venezuela
Estadísticas de detección variantes de malware VBS, en Colombia y Venezuela

La muestra del malware analizado, se puede descargar desde la siguiente URL:

http://bit.ly/1dvtqAy

By @JOGAcrack