HTML smuggling es una técnica de ataque en la que el atacante aprovecha funcionalidades en HTML5 y JavaScript para conseguir hacer llegar a la víctima un payload de manera oculta. Es esta manera de hacer llegar este payload de manera camuflada (contrabando) lo que da el nombre al ataque. Vamos a conocerlo mejor.
El ataque de HTML smuggling ha sido detectado en diversas campañas de email spear-phishing. En estos casos siempre utilizado para conseguir colar troyanos bancarios o troyanos de acceso remoto (RATs) como AsyncRAT, NJRAT o Trickbot. En estos casos el objetivo del uso del HTML Smuggling es meridiano, el colar una herramienta que permita posteriores acciones y despliegues. Esto demuestra que se considera a esta técnica de ataque aún como un método seguro para evadir líneas de defensa que podrían detectar estos malware si hubieran querido ser entregados de otra manera.
Como funciona el HTML Smuggling
Como decíamos, el nombre proviene de cómo el atacante esconde el malware para hacerlo llegar a la víctima. En este caso lo que se hace es esconder un blob JavaScript dentro de un adjunto de correo HTML. Una vez que la víctima recibe el email y abre el adjunto, el navegador reconstruye el malware y lo descarga en la máquina. Los atacantes aprovechan el hecho de que la mayoría de navegadores al abrir un HTML procesarán y decodificar por defecto cualquier código JavaScript que se encuentren como si fuera otra parte más de ese HTML.
Hasta ese momento digamos que ese código era inocuo en el adjunto de correo por lo que era indetectable por los sistemas de filtrado de email, evitando de esa manera nuestros sistemas de seguridad perimetrales, solo reconstruyéndose en la propia máquina de la víctima.
El hecho que JavaScript pueda codificar este contenido de muchas maneras también dificulta el control de este paso aún habiendo deshabilitado la ejecución automática de JavaScript localmente.En si mismo este ataque no es algo nuevo pero si que se ha visto últimamente que diversos grupos de cibercriminales lo están volviendo a usar en sus campañas de ataque.
Variante SVG
Aparte de este esquema básico de código JavaScript dentro de un HTML, recientemente se ha detectado una nueva variante del ataque que riza el rizo un poco más. Hablamos del uso de imágenes SVG para pasar dentro de ellas el código JavaScript.
Las imágenes SVG, de tipo vectorial, permiten aumentos de tamaño sin perdida de calidad. En este caso los atacantes son capaces de introducir el código malicioso en la propia imagen. En este caso la víctima abriría un HTML adjunto que contendría un tag <embed> conteniendo la imagen SVG codificada en Base64. Una vez está se reconstruyera a partir de ese código se utilizarían llamadas a funciones como charCodeAt() para generar un binario (payload) y createObjectURL() para convertir este binario a un archivo Zip para guardar en local.
Cómo protegernos del HTML Smuggling
Tal y como explicabamos una buena defensa perimetral no es por sí misma suficiente, tenemos que, como siempre, llevar a cabo un acercamiento por capas.
Para empezar debemos establecer reglas que detecten las características comunes de este ataque. Hablamos de detectar:
- Ficheros HTML conteniendo scripts sospechosos, imágenes SVG, ofuscando código JavaScript o que decodifique en un JavaScript de Base64.
- Adjuntos comprimidos que contenga javascript o simplemente que esté protegido por contraseña
Aparte de esta detección también deberíamos hacer lo siguiente a nivel local: - Relacionar los ficheros JavaScript con por ejemplo el notepad para que al ejecutarse simplemente se visualicen en pantalla.
- Evitar que JavaScript o VBScript ejecuten automáticamente ficheros descargados
- Evitar la ejecución de scripts o ejecutables a no ser que formen parte de algún listado de elementos confiables.
- Advertir y entrenar al staff, que han de ser parte esencial de nuestro sistema de defensa para que nunca habrán adjuntos inesperados o clicken en links en correos electrónicos sospechosos. Además para este caso específico deberíamos entrenarlos para que sean capaces de reconocer ficheros de tipo .js o .jse y advertirles que deben reportarlo inmediatamente y nunca ejecutarlos.
Espero os sea de utilidad.