Detectando ataques HTML Smuggling

Cyber Key
4 min readMay 7, 2021

--

HTML Smuggling é uma técnica que combina recursos de HTML5 e Javascript (suportadas por vários navegadores web modernos) utilizada em ataques para contornar dispositivos de segurança de perímetro, como proxies web e gateways de e-mail seguros. Devido ao filtro que tem aplicado nas configurações de proxy de muitas organizações, não é possível fazer o download direto de todos os tipos de arquivos devido às inspeções de conteúdo, inspeções de malwares, configurações de IPS, etc…

Sendo assim, o objetivo do uso do HTML Smuggling em ataques é entregar uma carga maliciosa ao dispositivo de destino e isso geralmente é feito utilizando um download via URL de dados, ou criando um blob Javascript com o MIME Type apropriados para acionar o download para o dispositivo cliente.

Como parte do ataque, a vítima visita um site malicioso, que dispara o download do arquivo por meio de HTML Smuggling.

Um arquivo é ‘smuggled’ para o corpo de uma resposta HTTP e é baixado para a máquina do usuário utilizando JavaScript. Isso significa que as defesas do perímetro verão apenas a página web e não o arquivo.

O Smuggling Attack combina algumas funcionalidades:

  1. Ao invés de baixar o executável direto no host destino, o atacante encoda o binário em base 64, executa em um Java Script e o que vai trafegar pela rede é somente texto, por isso é muito difícil esse tipo de detecção via rede.
  2. Dentro do navegador, no endpoint de destino, o JS vai instruir o navegador a fazer o processo reverso, reconstruindo toda a carga útil no navegador da vítima e nenhum objeto será transferido pela rede.

Campanhas de Phishing

Ataques utilizando técnicas de HTML Smuggling já estão sendo utilizadas por atacantes para envio de phishing via e-mail, para download de carga maliciosa.

Em campanhas estudadas recentemente, na página Web, um JavaScript foi invocado para inicializar os dados de um objeto blob a partir do qual um arquivo ZIP foi construído dinamicamente.

Padrão das URLs dos phishings:hxxps://[custom subdomain].s3-sa-east-1.amazonaws.com/acessar.html
https://[custom subdomain].eastus.cloudapp.azure.com/?usuario@domínio.com.br

Nessas URLs tivemos chamadas HTML responsáveis por gerar aleatoriamente a primeira carga útil da ameaça, onde foi baixado direto um arquivo .ZIP, que fazia referência a uma fatura digital, contendo um arquivo .MSI dentro.

Arquivo .ZIP baixado
Arquivo .MSI contido dentro do .ZIP

“Nesse ataque em específico, observamos a técnica de blob de JavaScript com um base64 sendo usada para “smugglar” arquivos maliciosos por meio do navegador para o endpoint.

Para que o ataque seja bem-sucedido, no entanto, a vítima, após o download, precisa abrir o arquivo ZIP e executar o arquivo .msi dentro dele. Depois de aberto, o arquivo busca em um local remoto outro arquivo .ZIP com extensão .png e que contém a carga maliciosa. No nosso exemplo tratava-se de um Trojan Bancário que vem sendo utilizado em campanhas maliciosas desde 2019.

Detectando ataques HTML Smuggling com Sysmon

Sysmon ID 15 (FileCreateStreamHash)
A partir da versão 11.10, o Sysmon tem a capacidade de registrar o conteúdo de um ADS. Portanto, se o HTML Smuggling deixa artefatos exclusivos no Zone.Identifier ADS, então podemos usar o Sysmon para detectar que o HTML Smuggling ocorreu.

Regra Sysmon
A partir dos resultados do teste realizado no link https://securityjosh.github.io/2021/01/27/Detect-HTML-Smuggling-Sysmon.html, podemos ver que o Sysmon pode detectar ataques de HTML Smuggling procurando por fluxos de dados alternativos Zone.Identifier que contêm um dos seguintes valores:

HostUrl = about: internet
HostUrl = blob:

XML Sysmon<RuleGroup name="" groupRelation="or">
<FileCreateStreamHash onmatch="include">
<Rule name="HTML_Smuggling" groupRelation="and">
<TargetFilename condition="end with">:Zone.Identifier</TargetFilename>
<Contents condition="contains any">blob:;about:internet</Contents>
</Rule>
</FileCreateStreamHash>
</RuleGroup>

Após configurado e ajustado o XML do Sysmon, a query para o Splunk abaixo (query pode ser customizada de acordo com a sua organização) consegue identificar possíveis downloads maliciosos.

Query Splunkindex=(your index) EventID=15 TargetFilename="*:Zone.Identifier" (Contents="*about:internet*" OR Contents="*blob*")
| stats count by Computer EventID Contents TargetFilename Image

Obs: Atentar para possíveis falsos positivos no ambiente.

Regra Sigma

Title: Detecting HTML Smuggling Attacks
description: Detect when a download occurs via data URL, or a Javascript blob with the appropriate MIME Type during the download on the client device.
tags:
* attack.Execution
* attack.Command and Scripting Interpreter: JavaScript/JScript
* attack.T1059.007
* Mitre Link: https://attack.mitre.org/techniques/T1566/
status: experimental
author: Keilly Santos
date: 2021/05/07
modified: 2021/05/07
logsource:
product: Sysmon
detection:
selection: EventID=15
TargetFilename| contains: “*:Zone.Identifier”
Contents | contain: ”*blob*”
Contents | contain: “*about:internet*”
condition: selection
falsepositives: if there is legitimate download that contain the same detection.
level: medium

Fontes:

https://www.securityweek.com/ongoing-campaign-uses-html-smuggling-malware-delivery
https://securityjosh.github.io/2021/01/27/Detect-HTML-Smuggling-Sysmon.html

Hope it helps.
Happy hunting! =D

--

--