
JavaScript-Beacons und C2 zur Verwendung für XSS-Payloads oder Post-Exploitation-Implants auf Webapp-Servern oder Desktop-Software zur Überwachung von Benutzern und zur Aufrechterhaltung der Persistenz. Browser-Erweiterung, Electron-App und Node/Bun-App-Implants sind enthalten.
Wesentliche Änderungen sind in den Projektankündigungen dokumentiert:
https://github.com/hoodoer/JS-Tap/discussions/categories/announcements
Sie können den ursprünglichen Blogbeitrag über JS-Tap hier lesen:
https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams
Kurze Demo von ShmooCon der JS-Tap Version 1:
https://youtu.be/IDLMMiqV6ss?si=XunvnVarqSIjx_x0&t=19814
Demo von JS-Tap Version 2 auf der HackSpaceCon, einschließlich C2 und wie man es als Post-Exploitation-Implant verwendet:
https://youtu.be/aWvNLJnqObQ?t=11719
Demo des automatischen Payload-Generators, der abgefangene Formularübermittlungen und JavaScript-Netzwerkverkehr als Blaupause zur Generierung benutzerdefinierter C2-Payloads verwendet:
https://www.youtube.com/watch?v=cU915mxLfTo
Demo auf der CactusCon von v2 inklusive Mimic-Funktion:
https://youtu.be/O7-zxAmP13o?si=gchYwOJksutCCUPH
Demo von v3 Beacons, Beta-Code:
https://youtu.be/-esrfSHqZeo
Ich habe nicht vor, Migrationsskripte für die Datenbank zu erstellen, und Versionsnummernsprünge beinhalten oft Schemaänderungen (siehe Änderungsprotokolle). Sie sollten Ihre jsTap.db-Datenbank bei Versionssprüngen wahrscheinlich löschen. Wenn Sie benutzerdefinierte Payloads auf Ihrem JS-Tap-Server haben, stellen Sie sicher, dass Sie diese exportieren, bevor Sie die Datenbankdateien löschen.
JS-Tap ist ein JavaScript-basiertes Offensiv-Toolkit für Red Teams. Es begann als generischer JavaScript-Payload zum Angriff auf Webanwendungen per XSS oder als Post-Exploitation-Implant und hat sich um Browsererweiterungen und Electron-Desktop-App-Implants erweitert – alle melden sich an einem einzigen C2-Server.
Der Payload setzt nicht voraus, dass der gezielte Benutzer, der den Payload ausführt, bei der angegriffenen Anwendung authentifiziert ist, und er erfordert keine Vorkenntnisse der Anwendung, außer einen Weg zu finden, das JavaScript in die Anwendung zu bringen.
Anstatt den Anwendungsserver selbst anzugreifen, konzentriert sich der JS-Tap-Payload auf die Client-Seite der Anwendung und instrumentiert den Client-Code umfassend. Ein C2-System ermöglicht das Hinzufügen und Ausführen benutzerdefinierter JavaScript-Payloads als Tasks auf JS-Tap-Clients und bietet so eine Möglichkeit, den Anwendungsserver direkt anzugreifen. Um einen schnelleren Übergang zum Angriff auf den Server zu ermöglichen, enthält JS-Tap jetzt eine "Mimic"-Funktion, um automatisch benutzerdefinierte Payloads zu generieren und an das C2-System zu übergeben.
Der Beispiel-DOM-Beacon-Payload ist in der Datei telemlib.js im Payloads-Verzeichnis enthalten, aber jede Datei in diesem Verzeichnis wird ohne Authentifizierung bereitgestellt, sodass Sie mehrere Payloads mit unterschiedlichen Konfigurationen bereitstellen können, die gleichzeitig auf verschiedene Anwendungen abzielen.
Kopieren Sie die Datei telemlib.js in einen beliebigen Dateinamen und ändern Sie die Konfiguration nach Bedarf. Diese Datei wurde nicht verschleiert. Vor der Verwendung in einem Engagement sollten Sie erwägen, die Endpunktnamen zu ändern, Kommentare zu entfernen und den Payload stark zu verschleiern. Standardmäßig verwendet die Anwendung ziemlich offensichtliche API-Endpunkte (z.B. /loot/screenshot). In den App-Einstellungen können Sie die Verkehrsverschleierung aktivieren.
Überprüfen Sie den Konfigurationsabschnitt unten sorgfältig, bevor Sie den Server öffentlich nutzen.
JS-Tap hat fünf Beacon/Agent-Typen, die sich mit demselben Server verbinden:
| Beacon-Typ | Was es ist | Wie es dorthin gelangt |
|---|---|---|
| DOM Beacon (telemlib.js) | Ein JavaScript-Payload, der in eine Webseite injiziert wird. Instrumentiert das DOM, erfasst Benutzeraktivität, Screenshots, Netzwerkaufrufe. | XSS-Schwachstelle oder direkt zu den JavaScript-Dateien der Zielanwendung hinzugefügt (Post-Exploitation). |
| BEX Beacon | Eine Browsererweiterung (Chrome MV3 / Firefox MV2). Überwacht alle Browseraktivitäten, erfasst Cookies (einschließlich httpOnly), localStorage, sessionStorage und Request-Header. Kann auf Befehl DOM-Beacons in bestimmte Domains injizieren. | Im Browser des Ziels installiert (Social Engineering, physischer Zugriff, Richtlinien-Push usw.). |
| Sidecar | Ein natives Go-Binary, das auf dem Betriebssystem des Ziels läuft. Bietet Dateisystem-Durchsuchung, Dateilesen und Befehlsausführung. | Zusammen mit dem BEX Beacon über native Messaging installiert. Erfordert den BEX Beacon zur Weiterleitung von Befehlen. |
| Atom Beacon | Ein zweischichtiges Implantat für Electron-Desktop-Anwendungen. Injiziert einen Hauptprozess-Agenten (Node.js-Laufzeit) + Renderer-Payloads in alle App-Fenster. Kombiniert Browser-Level-Datensammlung mit Host-Level-Betriebssystemzugriff – kein separates Binary erforderlich. Unterstützt Browser-Proxy-Modus. | In das ASAR-Archiv der Ziel-Electron-App (oder das entpackte App-Verzeichnis) mithilfe von atomize.py eingefügt. |
| V8 Beacon | Ein JavaScript-Agent für Node.js- und Bun-CLI-Anwendungen (Gemini CLI, Claude Code usw.). Fängt alle HTTP/Fetch-Netzwerkaufrufe ab, erfasst Tastatureingaben und bietet Dateisystem- und Shell-Zugriff. Unterstützt Browser-Proxy-Modus. Keine Abhängigkeiten. | Injiziert über Umgebungsvariable: NODE_OPTIONS="--require" (Node.js) oder BUN_OPTIONS="--preload" (Bun). Kein Patchen der App erforderlich. |
Alle fünf melden sich beim selben JS-Tap-Server-Portal zurück, wo die Beute angesehen und C2-Befehle erteilt werden.
Das Portal enthält auch zwei Session-Klon-Werkzeuge:
| Werkzeug | Was es tut |
|---|---|
| Browser Proxy | Ein MITM-Proxy auf dem JS-Tap-Server, der den HTTP/HTTPS-Verkehr des Operators über WebSocket durch den Browser (oder Node.js-Prozess) des Opfers leitet. Anfragen werden aus dem Netzwerkkontext des Opfers abgerufen, sodass die Zielseite die IP und den TLS-Fingerabdruck des Opfers sieht. Kombinieren Sie ihn mit einem Session-Ticket für authentifiziertes Surfen durch das Netzwerk des Opfers. Unterstützt von BEX-, Atom- und V8-Beacons. Siehe Browser Proxy unten. |
| JS-Tap Conductor | Eine eigenständige Firefox-Erweiterung, die vom BEX Beacon erfasste Session-Daten (als "JS-Tap-Ticket") importiert und lokal wiedergibt – Cookies setzen, Header injizieren, Speicher befüllen und den User-Agent vortäuschen – sodass der Operator als das Opfer surfen kann. Siehe JS-Tap Tickets & JS-Tap Conductor unten. |
Eigenständiger DOM Beacon: Der DOM-Beacon-Payload (telemlib.js) arbeitet unabhängig. Injizieren Sie ihn per XSS oder implantieren Sie ihn in die JS-Dateien des Ziels. Er meldet sich eigenständig beim JS-Tap-Server.
BEX Beacon als Dropper: Der BEX Beacon überwacht das Surfen und sammelt passive Informationen (Cookies, localStorage, sessionStorage, Request-Header, Navigation). Vom JS-Tap-Portal aus können Sie den Beacon anweisen, einen DOM Beacon in eine bestimmte Domain zu injizieren. Der von einem BEX Beacon erzeugte DOM Beacon erhält hochwertige Screenshots über die captureVisibleTab-API der Erweiterung (der "BEX-Assist"-Modus).
Sidecar für Betriebssystemzugriff: Wenn installiert, gibt das Sidecar-Binary dem BEX Beacon Zugriff auf das zugrunde liegende Betriebssystem. Befehle werden vom JS-Tap-Portal gesendet, über den verschlüsselten Kanal des Beacons an das native Binary weitergeleitet, und die Ergebnisse werden zurückgesendet. Dies verwandelt eine Browsererweiterung in einen Zugang für Dateisystemzugriff und Befehlsausführung.