Detección de contrabando de HTML
Introducción
En este artículo profundizaré en la detección de contrabando de HTML, siguiendo el proceso de ingeniería de detección que he descrito en mis dos últimas publicaciones. Este proceso incluye investigación, pruebas y desarrollo de nuevos conceptos de detección. Sin embargo, a diferencia de mis publicaciones anteriores, esta vez observaremos, perfilaremos y detectaremos el malware QakBot real en el laboratorio. Con este artículo, espero mostrar cómo los ingenieros de detección actuales y aspirantes pueden ir más allá de los desafíos simulados de estilo CTF para estudiar y detectar técnicas de atacantes del mundo real, marcándolas para nuestro SOC y permitiendo que nuestros colegas de respuesta a incidentes neutralicen la amenaza.
Nuestro Itinerario
Después de algunos antecedentes y de definir el objetivo, demostraré cómo podemos ejecutar el malware QakBot HTML Smuggling en el laboratorio, rastreando su comportamiento en Splunk. Luego, secuenciaré los eventos observables de este ataque e identificaré los puntos de detección útiles (que considero "bloques de construcción" o eslabones de la cadena de ataque). También presentaré la correlación (específicamente las reglas de cadena), una herramienta crucial en su caja de herramientas de detección de amenazas. Para ilustrar cómo se ve esto, discutiré y demostraré una capacidad aún no lanzada de Sigma, llamada Sigma Correlations. Terminaré probando una nueva regla de cadena con 10 muestras adicionales de malware QakBot HTML Smuggling para ver cómo funciona.
¡Empecemos!
Fondo
Al principio de mi viaje por la seguridad cibernética, John Strand de Black Hills Information Security dijo algo que me quedó grabado: "No hay un registro de 'HAS SIDO HACKEADO'". Los registros de eventos pueden ser confusos y difíciles de leer incluso en un buen día. ¡Obtener información útil y procesable de los registros es complicado! El desafío a veces requiere un análisis profundo y técnicas especializadas para tener éxito.
He tenido esa lección en el fondo de mi mente a lo largo de mi carrera en seguridad, y fue con esto en mente que hace unos meses, comencé a ver toneladas de publicaciones como esta de @pr0xylife :
Me gusta la forma en que pr0xylife y sus pares resumen estos ataques de manera tan sucinta, y me encontré repitiendo la secuencia de tipos de archivos en voz alta, ¡casi como una extraña forma de poesía!
Quería aprender más, pero no sabía cómo empezar. Había revisado una excelente investigación sobre QakBot realizada por el equipo de Trellix, por lo que sabía un poco sobre sus técnicas. (Si nunca ha oído hablar de QakBot, ¡lea el informe de Trellix!) Cuando comencé a seguir la actividad de QakBot y profundizar más, me di cuenta de que pr0xylife y otros describían las sutiles combinaciones y variaciones en la forma en que QakBot podía engañar a sus víctimas y evadir nuestra defensas Algunos ejemplos:
- Utiliza contrabando de HTML , donde el navegador de la víctima ejecuta un archivo HTML malicioso que contiene JavaScript codificado, descargando la siguiente etapa de la carga útil.
- Utiliza archivos zip protegidos con contraseña para bloquear el análisis de sandboxing.
- Utiliza un formato de imagen de disco llamado archivo .iso para evadir la protección Mark-of-the-Web, como bien explica Red Canary .
- Archivos LNK disfrazados para atraer a los usuarios a ejecutar archivos .CMD y .DLL ocultos.
- ¡Y así sucesivamente con trucos cada vez más engañosos!
El objetivo
Existen algunas detecciones para el contrabando de HTML y otras técnicas relacionadas con QakBot. Estos se basan principalmente en la coincidencia de eventos de registro sospechosos, como este de Elastic Security:
Quería ver si podía crear mis propias detecciones, utilizando la correlación (en lugar de la coincidencia simple) para hacerlas resistentes a los cambios sutiles en el comportamiento de los ataques.
Para ser sincero, también estaba harto de las artimañas tontas de QakBot y quería una forma confiable de colocarlo de lleno en nuestra mira.
Observación inicial y análisis del malware QakBot
Para lograr mi objetivo, tuve que ir más allá de los informes de inteligencia de amenazas de los proveedores de seguridad y las pruebas de Atomic Red Team; Necesitaba mis propios datos creados a partir de muestras reales de malware. Recurrí a un viejo favorito: malware-traffic-analysis.net de Brad Duncan (@malware_traffic). Este sitio es uno de los recursos educativos más útiles que he encontrado en seguridad. Además de los tutoriales de Wireshark y los ejercicios prácticos de tráfico de red, el sitio ofrece análisis de calidad de muestras de malware del mundo real, incluidos los archivos de contrabando HTML de QakBot.
Después de tomar instantáneas de las máquinas virtuales de mi laboratorio, encendí mi laboratorio de detección virtual y visité una entrada reciente. ¡Cuidado, los archivos alojados en este sitio no son seguros!
Descargué el archivo zip de artefactos y lo extraje a mi carpeta de descargas usando la utilidad WinRAR integrada en mi laboratorio de detección:
Las notas del COI fueron extremadamente útiles para dar contexto a los archivos incluidos. Entre las notas estaban las siguientes, que me hicieron saber que la cadena de infección comenzó con el archivo HTML, llamado SCAN_DT6281.html.
2022-12-09 (FRIDAY) - HTML SMUGGLING FOR QAKBOT (QBOT) DISTRIBUTION TAG: AZD
DISTRIBUTION:
- Unknown source, possibly email --> HTML file --> password-protected zip archive --> extracted ISO image with .img file extension
…claro, abramos el archivo zip, ¿por qué no?
El archivo zip estaba protegido con contraseña, pero se podía abrir con la contraseña que se muestra en la página HTML. El archivo zip contenía un solo archivo .img, que sé que es otro formato de archivo de imagen de disco montable. Al hacer doble clic en esto, se montó el archivo como la unidad D en mi sistema:
También noté un directorio oculto llamado IncomingPay, que contenía un archivo .lnk, dos archivos de texto que contenían (no bromeo) extractos de la página de Wikipedia sobre psicología, un archivo .cmd y un archivo .lc .
Como profesional de seguridad y observador obediente de la capacitación de concientización sobre seguridad corporativa, todos mis estaban levantados y ondeando con la brisa. Pero esto es por razones científicas, así que muerdo el anzuelo y hago doble clic en el archivo LNK, tal como el atacante quiere que haga la víctima. Aparece una ventana de línea de comando durante unos segundos y luego desaparece:
La propiedad de destino del archivo LNK es interesante:
C:\Windows\System32\cmd.exe /c IncomingPay\Issues.cmd A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9
¿Cómo sé qué búsquedas ejecutar? Realmente no, pero a través de mi experiencia como analista e investigador sé que hay ciertos tipos de evidencia que pueden aparecer en mis registros: ejecuciones de procesos, creación de archivos, conexiones de red y similares. Aquí es donde la experiencia en el trabajo como analista de seguridad o una buena dosis de capacitación estilo CTF (como las disponibles en CyberDefenders o LetsDefend ) son útiles.
Después de actualizar mis búsquedas varias veces y preguntarme si había hecho algo mal, noté una señal definitiva e incontrovertible de una intrusión: un estallido de actividad de reconocimiento en mi host víctima:
Mientras miraba estos comandos, noté el período de tiempo en el que ocurrieron, ¡todo en el lapso de unos pocos segundos! Además, todos los procesos fueron generados por un padre inusual: wermgr.exe (el Administrador de informes de errores de Windows). ¿Una buena oportunidad de detección, tal vez? En caso de que el administrador más confuso o la pieza de software [legítimo] sobreconstruida no ejecute todos estos comandos de reconocimiento sospechosos en un período de tiempo tan corto, y nunca como elementos secundarios de un wermgr.exe. Pasando a mis conexiones de red, noté que wermgr.exe de repente se había vuelto extremadamente hablador con direcciones IP externas:
Después de esta evaluación inicial de mis datos, determiné que:
- La muestra de malware contenía un vector de acceso inicial malicioso (duh, la galería de pícaros de los archivos .html, .zip, .img, .lnk, .cmd y .lc).
- El malware descargaría el archivo zip después de abrir la página HTML en un navegador, y el archivo zip contenía un archivo .img montable.
- La unidad montada contenía un acceso directo malicioso que provocaría la ejecución de comandos adicionales.
- Un proceso wermgr.exe inyectado generó una ráfaga automática de actividad de reconocimiento y luego se conectó a direcciones IP externas sospechosas, presumiblemente para enviar al atacante información sobre nuestro sistema y red.
Desglose del ataque en componentes básicos de detección
Habiendo realizado una ejecución inicial de la técnica de contrabando HTML de QakBot en el laboratorio y vuelto a mis instantáneas de VM, era hora de profundizar en los registros para ver qué estaba sucediendo.
Mientras revisaba los diversos tipos de eventos generados por el ataque, comencé a desarrollar una comprensión narrativa en lenguaje sencillo de lo que estaba sucediendo:
“Un atacante envía a la víctima un archivo HTML que pretende contener un informe, factura u otro documento de interés para ellos. Básicamente, un señuelo de phishing. Cuando la víctima abre el archivo en su navegador, se ejecuta el código JavaScript incrustado, que descarga o crea un archivo zip protegido con contraseña en el sistema de la víctima. Cuando la víctima descomprime el archivo , la extracción crea un archivo de imagen de disco montable. Después de montar la unidad , el usuario ve un acceso directo que cree que lo llevará al recurso que está tratando de encontrar. Pero el atajo en realidad llama a un comando o intérprete de secuencias de comandos que ejecuta otros archivos maliciosos.que están ocultos en la unidad de disco, lo que lleva a un compromiso de acceso inicial”.
Ese es un fragmento prolijo de prosa, pero tiene sentido en mi cabeza. Si voy a detectar algo, ¡necesito entenderlo primero! Tenga en cuenta el texto en negrita: usé mi narrativa para resaltar eventos que podría usar para detectar la cadena de ataque. Basándome en esta revisión, analicé los registros del ataque, tratando de aislar los siguientes eventos:
- Correo electrónico de phishing enviado a la víctima que contiene un archivo adjunto HTML.
- Creación de un archivo HTML en ubicaciones sospechosas.
- Apertura de un archivo HTML independiente en una aplicación de navegador.
- Descarga/creación de un archivo zip por la aplicación del navegador.
- Apertura/extracción de un archivo zip protegido por contraseña.
- Creación de un formato de archivo de unidad de disco montable (.iso, .img, etc.).
- Montaje de un disco.
- Ejecución del proceso en una unidad externa (ya sea desde un ejecutable en esa unidad o desde un ejecutable del sistema tocando archivos en esa unidad).
Las buenas noticias
La buena noticia es que hay formas de detectar casi todos los eventos enumerados anteriormente. Esto significa que tenía numerosas ideas sobre cómo consultar y filtrar los registros disponibles para extraer los eventos significativos (bloques de construcción) para futuras detecciones.
Las malas noticias
La mala noticia fue que ninguno de estos muchos eventos es, en sí mismo, malicioso. Nuevamente, no hay un registro de USTED HA SIDO HACKEADO: cada uno de estos eventos podría ocurrir en el curso normal del negocio y ser completamente seguro y benigno. La solución sería correlacionar estos eventos, en una secuencia ordenada o desordenada, agrupándolos por un atributo común como nombre de host y activando una alerta cuando todos estos ocurran dentro de una ventana de tiempo, como una hora. El problema es, según mi análisis y prueba (más sobre eso en un momento), encadenar o correlacionar que muchos eventos darían como resultado una detección frágil.
Frágil vs. Resistente
La "fragilidad" describe el grado en que una idea de detección se desmorona ante cambios sutiles en las técnicas del atacante, variaciones en las acciones realizadas por la víctima, problemas con el registro u otros factores fuera de nuestro control. Las detecciones frágiles contrastan con las detecciones "resistentes", que son flexibles y pueden soportar estos cambios sutiles.
No es tan simple como decir "Frágil = malo y resistente = bueno". Una detección frágil podría estar muy dirigida, con una "apertura" estrecha. La ventaja podría ser que, si se activa una regla de detección frágil, existe una probabilidad muy alta de que sea un verdadero positivo. Las detecciones resistentes pueden tener una apertura más amplia y pueden coincidir con más actividades potencialmente maliciosas. Sin embargo, esto podría generar falsos positivos y un SOC frustrado si no se desarrollan con cuidado.
Con esto en mente, volví a mi lista de eventos de arriba.
Determinación de los componentes básicos para probar
En contexto, me di cuenta de que los elementos del uno al tres de la lista anterior pueden no ser buenos componentes de mi detección de contrabando de HTML. La falta de visibilidad y un alto volumen de comportamiento inocente dificultarían el elemento 1. Eliminé el elemento dos porque tenía una capacidad limitada para probar este evento, y el elemento tres resultó poco confiable según el navegador que usé. Además, aunque técnicamente no es contrabando de HTML, gran parte de la actividad de QakBot utiliza URL, en lugar de archivos HTML independientes, para entregar la carga útil inicial.
El elemento cinco (extracción de un archivo zip protegido con contraseña) tiene mucho potencial y se puede detectar usando esta regla escrita por Florian Roth e inspirada en la investigación de @SBousseaden . Sin embargo, lo dejé fuera de mi alcance porque 1) ese evento no se registraba en mi laboratorio y 2) alguna documentación indica que solo es aplicable a ciertos sistemas operativos.
Después de explorar mis datos, enumerar los posibles bloques de construcción de detección para mi correlación y seleccionar esa lista en función de un análisis más detallado, obtuve los siguientes bloques de construcción:
- El navegador web crea (descarga) un archivo zip (representa la apertura del archivo HTML malicioso en un navegador).
- Archivo ISO, VHD, LNK o IMG extraído de Zip (extracción del archivo de imagen de disco malicioso).
- Montaje de imagen de disco (montando la imagen, esta la saqué directamente de Sigma).
- Ejecución sospechosa de un proceso iniciado por el usuario en una unidad externa (haciendo clic en el archivo .lnk que ejecuta o hace referencia a archivos en la unidad externa).
Correlaciones Sigma
La correlación nos permite rastrear eventos de registro a través del tiempo. En lugar de activar una alerta para cada uno de los cuatro eventos enumerados anteriormente, una correlación de regla de cadena nos permite alertar solo cuando los cuatro eventos ocurren en orden en el mismo host por el mismo usuario, lo que es mucho más sospechoso. Muchos productos SIEM y sus lenguajes de consulta correspondientes admiten este tipo de encadenamiento (aunque algunos no).
Para respaldar esta funcionalidad, Sigma tiene un estándar de Correlaciones en progreso que nos permitirá escribir reglas de correlación personalizadas en un formato común y luego convertirlas a cualquier producto SIEM que admita esta lógica. El proyecto de norma se puede revisar aquí:
¿Qué aspecto podría tener esto? Es un estándar preliminar y está sujeto a cambios , pero un ejemplo simple de una regla de cadena de fuerza bruta podría verse así:
action: correlation
type: temporal
rule:
- many_failed_logins
- successful_login
group-by:
- User
timespan: 1h
ordered: true
Mi borrador de regla de correlaciones se ve así:
title: HTML Smuggling Activity - Chain Rule
id: 0952f2fa-e29b-4eb5-831c-ce21520c56e3
status: experimental
description: Detects HTML smuggling-style compromise (such as HTML > ZIP > ISO/IMG/VHD > CMD/BAT/VBS > DLL). Includes rules to detect zipfile dropped by browser, ISO/IMG/VHD/LNK file extraction, disk image mount, followed by user-initiated process creation on an external drive.
references:
- https://blog.talosintelligence.com/html-smugglers-turn-to-svg-images/#:~:text=HTML%20smuggling%20is%20a%20technique,directly%20on%20the%20victim's%20device.
- https://www.malwarebytes.com/blog/news/2021/11/evasive-maneuvers-html-smuggling-explained
- Original research and analysis performed off of QakBot intelligence gathered at https://github.com/pr0xylife/Qakbot, https://www.malware-traffic-analysis.net/, and https://github.com/executemalware/Malware-IOCs
author: Micah Babinski
date: 2022/12/27
tags:
- attack.s0650
- attack.s0483
- attack.initial_access
- attack.defense_evasion
- attack.execution
- attack.t1564
- attack.t1566.001
- attack.t1566
- attack.t1027
- attack.t1027.006
- attack.t1059
- attack.t1204
- attack.t1204.002
action: correlation
type: temporal
rule:
- 1_win_zipfile_drop.yml
- 2_win_susp_file_extraction.yml
- 3_win_security_iso_mount.yml
- 4_win_process_creation_ext_drive.yml
group-by:
- ComputerName
- User
timespan: 1h
ordered: true
falsepositives:
- Unknown
level: high
Nuevamente, la especificación de Correlaciones Sigma está en desarrollo y está sujeta a cambios. Aún así, esta será una expansión muy útil de las capacidades de Sigma, ¡así que quería mostrarle una vista previa ahora!
Prueba de la correlación
Con este concepto de detección tomando forma y una hipótesis desarrollada en forma de mi regla de correlación, era hora de probar la detección con un tamaño de muestra más grande. Confié en el repositorio MalwareBazaar de Abuse.ch, que proporciona una biblioteca útil de muestras de malware etiquetadas. Descargué 10 muestras HTML de QakBot, en su mayoría informadas por pr0xylife, con una fecha que se vio por primera vez del 11 de julio al 22 de diciembre de 2022. Preparé las muestras en mi máquina virtual de laboratorio y nombré cada una de acuerdo con su fecha de primera vista y su "hash humano". propiedad (una secuencia única y aleatoria de palabras legibles por humanos, como ("dakota-tierra-ruiseñor-marcha"):
Para rastrear mis resultados, hice una tabla simple en Hojas de cálculo de Google:
Hice una instantánea limpia previa a la prueba de mi host de máquina virtual víctima para volver después de cada prueba y comencé con la prueba. Después de probar siete de las diez muestras, ¡mi secuencia de cuatro bloques de construcción tuvo una cobertura perfecta! Sin embargo, cuando llegué a la octava muestra, la cuarta regla de la cadena no se activó porque el archivo .lnk se llamaba RunDLL32.exe directamente, en lugar de cmd.exe o wscript.exe. Esto estuvo bien: simplemente hice un ajuste a las condiciones de mi regla Sigma, volví a probar y obtuve coincidencias perfectas. Estaba encantado con los resultados y emocionado de compartir el caso de uso de detección con la comunidad.
¡Ronda de bonificación!
Muchos ataques de phishing de QakBot no usan archivos adjuntos .html, sino archivos .pdf maliciosos con enlaces incrustados, o simplemente buenos enlaces de phishing tradicionales que apuntan a archivos comprimidos alojados en un sitio web comprometido. Para probar si mi detección era lo suficientemente flexible para detectar estas instancias también, las probé en un par de ejemplos recientes del repositorio IOC mantenido por @ExecuteMalware, y descubrí que estos ataques driveby basados en URL también fueron detectados por la detección. El documentado aquí incluso incluía un .wsf (Archivo de script de Windows), un tipo de archivo con el que no estaba familiarizado pero que, sin embargo, me llamó la atención.
¡Hurra por la resiliencia!
Conclusión
¡Felicidades! Has llegado al final de una publicación larga sobre algunos temas densos y complicados. Puede encontrar todas las reglas a las que se hace referencia aquí . Gracias por leer y espero que hayan disfrutado mis divagaciones sobre QakBot, contrabando de HTML, Sigma y correlaciones. Estoy realmente emocionado por el lanzamiento de Sigma Correlations. Será una gran victoria para la comunidad de ingeniería de detección y nos permitirá compartir casos de uso de detección más sofisticados.
Estaba realmente complacido con el resultado de mis pruebas, particularmente cuando mostró que uno de los componentes básicos de mi regla de la cadena había fallado y necesitaba un ajuste. Después de todo, ¿por qué probar si crees que tu trabajo ya es perfecto? Por último, esta experiencia me hizo comprender lo que ya había comenzado a creer: que no podemos detectar lo que no entendemos. No hay sustituto para la experiencia de primera mano con malware real en vivo si está tratando de ver lo que hace.
Gracias al proyecto del Laboratorio de Detección que me entusiasmó en publicaciones anteriores, esta experiencia de la vida real está al alcance de más personas que nunca. Por último, gracias a pr0xylife, Brad (malware_traffic) y executemalware por brindar repositorios prístinos de muestras de malware QakBot bien documentadas para que podamos acceder, analizar y comprender. ¡Estos son verdaderamente un tesoro educativo!
No dude en enviarme ideas, comentarios o sugerencias sobre cómo puedo mejorar. Todavía soy nuevo en esto, y agradezco comentarios y críticas respetuosas en cualquier forma.
Como siempre, ¡feliz análisis!

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































