H-Worm es un viejo conocido: un RAT (herramienta de acceso remoto) escrito en VBScript con versiones que datan del año 2013, y diversas formas ejecutables (como script .VBS; .EXE obtenido con vbs2exe; versión Autoit; etc.). Pero, últimamente, sus detecciones en Latinoamérica llamaron nuestra atención.

Figura 1: Información de nombre y autores en el encabezado de H-Worm.

Esta amenaza es un ejemplo de crimeware "popular", ampliamente distribuido en foros cibercriminales y sitios afines; un malware muy conveniente para script kiddies y principiantes que procuran aventurarse en el cibercrimen.

Como todo RAT, incluye una aplicación que se instala en el sistema de la víctima y un componente de servidor, que permite la administración y el control de los bots o sistemas comprometidos. De ellos extrae diversos tipos de información, como capturas de pantalla o contraseñas, y también les da órdenes como abrir determinados sitios o ejecutar comandos.

Se trata de un paquete simple de modificar, ya que el script en VBS puede ser ofuscado de diferentes formas y ejecutado por Wscript en cualquier versión de Windows; por lo tanto, su espectro de posibles víctimas es bastante amplio.

Figura 2: GUI de H-Worm utilizada por el atacante.

Detecciones de H-Worm

Una vez que los cibercriminales adquieren el paquete de H-Worm pueden modificarlo para crear su propio payload, es decir, la carga maliciosa que enviarán a sus víctimas en un correo malicioso u otro canal de su elección. Este payload puede tomar diversas formas, y cada una tendrá su propia detección; una de ellas, muy habitual en Latinoamérica, es la de un gusano que analizamos hace un tiempo, detectado por ESET como VBS/Agent.NDH.

Pero es otra de sus formas la que llamó nuestra atención recientemente: es detectada por ESET como VBS/Agent.NLI, y tuvo un crecimiento global significativo en las últimas semanas:

Figura 3: Detecciones de VBS/Agent.NLI en las últimas semanas.

Esta amenaza tuvo mayor incidencia en Chile y Brasil, que acreditan el 45% y 32% de las detecciones globales, respectivamente.

Figura 4: Porcentaje de detecciones por país.

Se propaga en archivos con nombres como “ListaGovernoRF.zip”, “MalhaFinaRF.zip” y “ListaTemer.vbs”, lo que sugiere que el vector de ataque se basa en métodos tradicionales de ingeniería social, como correos de phishing.

Sobre H-Worm

Con el paso de los años, H-Worm fue evolucionando para agregar nuevas funcionalidades. La versión original fue firmada por Houdini, y de ahí viene la "H" de su nombre; pero desde 2015 pasó a manos de MeoIT.

Figura 5: Notas de lanzamiento de H-Worm en foro cibercriminal.

A pesar de que las primeras versiones ya tienen por lo menos cuatro años, según demostró el análisis realizado por FireEye en septiembre de 2013, la estructura básica de H-Worm no fue modificada. La secuencia de comandos posee un bucle principal donde se ejecutan diferentes funciones, dependiendo del parámetro enviado por el servidor de C&C.

Figura 6: Loop principal de H-Worm.

En cada ejecución del bucle, el agente (por ejemplo, un malware ejecutado en la máquina de la víctima) envía datos de la máquina infectada al C&C y recibe comandos a través de la función "THANK_GOD_YOU_ARE_HERE".

En las peticiones, los siguientes parámetros se pasan en el campo de user-agent:

Parámetro Comentario
Disk Volume Serial

VolumeSerialNumber seguido de una string fija (“_Git.Hub” – está la opción de “_MeoIT”, pero nunca es selecionada)
Hostname
Username
Sistema Operativo
Admin/Non-Admin
UAC on/UAC off
Versión do .NET Valor de la clave “HKLM\software\Microsofot\NET Framework Setup\NDP\v2.0.50727\Version”
RAM TotalPhysicalMemory en MB
TotalPhysicalMemory
GPU Lista de Win32_VideoController (caption)
Clave de registro de Windows Obtenido de “HKLM\software\Microsoft\Windows NT\CurrentVersion\DigitalProductId”
Antivirus (AV) AV instalado en la máquina o “None AV”
Persistencia Comprueba si hay persistencia en “HKCU\software\Red_%scriptname%” si UAC está habilitado o “HKLM\software\Red_%scriptname%” si UAC está deshabilitado. Si la persistencia está deshabilitada, la instala en el registro. Retorno: [true|false]
Fecha y hora

Tabla 1: Lista de información enviada por H-Worm

Además de los datos que extraía aquella primera versión de Houdini, la actual proporciona información sobre Admin, UAC, .NET, RAM, GPU y clave de registro de Windows. En cuanto a funcionalidades, no hubo grandes modificaciones:

Comando Descripción Comunicación
execute Eecuta el parámetro recibido en 'excecute'
update Reemplaza el payload del script y reinicia ejecución en modo batch:

wscript.exe //B %scriptpath%

uninstall
    Elimina:

  • persistencia,
  • artefactos,
  • archivos en %temp% (USER y SYS)
  • archivos en “%localappdata%\Microsoft\Windows\Temporary Internet Files[\Content.IE5]”
send Descarga de archivos de C&C POST /is-sending<|>{URL_Archivo}
site-send Descarga de archivo de URL GET /{URL_Archivo}
recv Carga de archivo para C&C

POST /is-recving<|>{URL_Archivo}
enum-driver Envía información de las unidades de la máquina POST /is-enum-driver…{DrivePath|DriveType<|>…}
enum-faf Envía los atributos de los archivos y carpetas contenidos en un directorio específico POST /is-enum-faf…{FolderName|(FileSize)|(d|f)|Attributes<|>…}
cmd-shell Ejecuta comando de shell recibido y devuelve resultado:

cmd.exe /c $comando

POST /is-enum-process…{Name|PID|Path<|>…}
delete

Eliminar el archivo o la carpeta especificada POST /is-cmd-shell…{Result}
exit-process Termina el proceso especificado por parámetro
sleep Pausa ejecución por tiempo determinado

Tabla 2: Lista de comandos de H-Worm [comparar con versión de 2013]

Otra característica agregada es la verificación de procesos en ejecución utilizados para monitorear la ejecución de otros procesos. Si se detecta alguna de estas herramientas de análisis, la ejecución del script es finalizada.

Figura 7: Lista de procesos evadidos por H-Worm.

Es importante resaltar que a pesar de que el payload corresponda a H-Worm, la mayoría de las veces el script es ofuscado. En el caso del archivo ListaTemer.VBS, se utilizaron dos niveles de ofuscación.

En el primer nivel, el payload es una cadena en unicode. Para ejecutarlo, la string es decodificada carácter por carácter en un VBScript , y al final se ejecuta con la llamada Execute(S) (línea 18).

Figura 8: Primer nivel de ofuscación de H-Worm.

Al decodificar el payload, se obtiene otro VBScript que también está ofuscado. Sin embargo, en este caso el payload está codificado en varias cadenas hexadecimales (1510 líneas en total).

Figura 9: Segundo nivel de ofuscación de H-Worm.

Si te interesa analizar malware, en ambos casos el script puede ser desofuscado fácilmente cambiando su ejecución por la escritura de un archivo conteniendo el payload.

Figura 10: Estándar para desofuscar payloads de VBS.

El fragmento de código añadido para hacer el dump del código original de la amenaza se muestra a continuación:

Set objFSO = CreateObject(“Scripting.FileSystemObject”)
outfile =
Set obfFile = objFSO.CreateTextFile(outFile,True,True)
objFile.Write &vbCrLf
objFile.Close

Conclusión

Este caso es interesante para ver cómo las familias de malware evolucionan y resurgen a lo largo del tiempo. En el caso de H-Worm, además de ser compatible con diversas versiones de Windows (incluyendo Windows 10 desde 2015, como se ve en la figura), el hecho de que es muy simple obtenerlo y utilizarlo lo hace una opción codiciada por script kiddies.

Por las notas de actualización disponibles en los foros, parece que la versión analizada de H-Worm data de 2015. Aun así, vemos que las detecciones de esta amenaza han tenido un gran crecimiento últimamente, lo que significa que los cibercriminales no descartan recurrir a viejos paquetes de herramientas de crimeware si prueban ser efectivos para realizar ataques.

Una posible explicación es el hecho de que estas herramientas, a pesar de ser susceptibles a la detección y el bloqueo, todavía tienen una alta tasa de éxito, ya que las víctimas no tienen un nivel de protección adecuado. Todavía debemos seguir concientizando sobre la existencia de engaños y amenazas informáticas, así como de los métodos para evitar ser víctima de ellos.

Por lo tanto, con el fin de evitar que un atacante tenga acceso remoto a tu máquina, es importante que estés atento a los ataques basados ​​en ingeniería social como el que vimos en este caso, y que hagas uso de soluciones de seguridad confiables con altos niveles de detección proactiva.

Indicadores de Compromiso (IoC)

Detección de ESET Hashes (SHA1)
VBS/Agent.NLI 190c9bf8d5caa75189bd7267625f9a7cb625c910

URL contactadas
hxxp://workinrarhost.ddns.com.br:5091

Sigue leyendo: Controlando Herramientas de Acceso Remoto en ambientes corporativos