REESXSS_V1: O MOTOR DE OFUSCAÇÃO BINÁRIA (WASM + TINYGO)
REESXSS_V1: THE BINARY OBFUSCATION ENGINE (WASM + TINYGO)
[ 0x00 ] THE_EVAL_WARS
Se você já tentou injetar um <script>alert(1)</script> num campo de busca e o site te barrou com um erro 403, você encontrou seu primeiro WAF (Web Application Firewall). Esses caras são treinados para caçar palavras-chave como eval, cookie, e fetch.
A maioria dos hackers para por aí ou tenta um Base64 bobo. Mas aqui no reesXSS, é definitivamente diferente. Este projeto é a minha jornada para transformar um ataque web numa peça de engenharia binária indetectável.
[ 0x01 ] POR QUE WEBASSEMBLY? (THE BINARY SHIELD)
O problema do JavaScript é que ele é... bem, texto. Qualquer F12 revela sua estratégia. Mas o WebAssembly (WASM) mudou o jogo.
WASM é um bytecode. Quando você move a lógica de "desembaralhar" o código para um binário compilado, você cria uma Caixa Preta (Blackbox). O analista de segurança abre o console e vê um monte de números aleatórios e um blob binário. Ele não sabe se aquilo é um motor de jogo, um minerador de cripto ou, no nosso caso, um script de exfiltração de dados de elite.
[ 0x02 ] O MOTOR: TINYGO NO COMANDO
Para criar o core do reesXSS, eu usei TinyGo. Por que não Go puro? Porque o Go padrão embuti um runtime gigante (2MB+) no WASM. Para um payload XSS, isso é um elefante no meio da sala.
Com TinyGo, o binário fica com poucos KB. A lógica que implementei (decrypt_byte) faz rotação de bits, XOR dinâmico baseado no index e um salt matemático (0x1337).
* Polimorfismo: Cada vez que você gera o payload, ele é diferente. Se o seu script tem 10 letras "a", no payload final elas viram 10 números totalmente distintos. Análise estatística? Morta.
[ 0x03 ] ARQUITETURA DO SISTEMA
O reesXSS não é só um gerador; é um sistema de Monitoramento e Exfiltração completo: 1. Backend (Python/Flask): O cérebro que gerencia as vítimas, salva os logs e serve o dashboard em tempo real. 2. Persistence (PostgreSQL): Nada de JSON no disco; usamos banco de dados real para lidar com milhares de requisições de exfiltração.
[ 0x04 ] O BLOCO "THE VOID" (ULTIMATE OBFUSCATION)
Para aqueles casos onde o WASM é bloqueado por políticas de segurança (CSP), eu criei o modo The Void.
Ele usa Opaque Predicates — condições lógicas que sempre dão verdadeiro (como [] === []... mentira, essa dá falso, mas você entendeu a ideia kkk) mas que confundem completamente os scanners estáticos. Junte isso com Junk Code Injection e você tem um script que parece um labirinto infinito de lógica inútil protegendo o prêmio real no centro.
[ 0x05 ] CASO DE TESTE: BYPASSING LABS
Testar em ambiente controlado é fácil. O desafio foi o testphp.vulnweb.com.
O limite de caracteres nos campos deles matava nossos payloads WASM embutidos (27k chars).
* Solução: Implementei o WASM Ghost (External). O payload injetado é um loader de 150 caracteres que dá um fetch no binário /engine.wasm do meu servidor. Resultado? Conexão estabelecida e cookies capturados com sucesso.
[ 0x06 ] FINAL_LOGOUT
Este projeto me mostrou que a segurança web é um jogo de gato e rato. No momento que você cria uma barreira, alguém vai criar uma escada binária para pular. O reesXSS é o meu laboratório vivo para entender essas escadas.
Se você é desenvolvedor, a dica é: não confie em filtros de string. Sanitização Real é a única saída. Se você é entusiasta de segurança: o WASM é o futuro da ofuscação (e da detecção).
"If it runs in the browser, it can be hidden." — SYSTEM_ADMIN