
Beacon JavaScript e C2 da utilizzare per payload XSS o impianti di post-sfruttamento su server webapp o software desktop per monitorare gli utenti e mantenere la persistenza. Sono inclusi impianti per estensione del browser, app Electron e app Node/Bun.
Le modifiche principali sono documentate negli annunci del progetto:
https://github.com/hoodoer/JS-Tap/discussions/categories/announcements
Puoi leggere il post originale del blog su JS-Tap qui:
https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams
Breve demo da ShmooCon di JS-Tap versione 1:
https://youtu.be/IDLMMiqV6ss?si=XunvnVarqSIjx_x0&t=19814
Demo di JS-Tap versione 2 a HackSpaceCon, inclusi C2 e come usarlo come impianto post-sfruttamento:
https://youtu.be/aWvNLJnqObQ?t=11719
Demo del generatore automatico di payload, utilizza i post di moduli intercettati e il traffico di rete JavaScript come modello per generare payload C2 personalizzati:
https://www.youtube.com/watch?v=cU915mxLfTo
Demo a CactusCon della v2 inclusa la funzionalità mimic:
https://youtu.be/O7-zxAmP13o?si=gchYwOJksutCCUPH
Demo dei Beacons v3, codice beta:
https://youtu.be/-esrfSHqZeo
Non ho intenzione di creare script di migrazione per il database, e gli incrementi di versione spesso comportano modifiche allo schema del database (controlla i changelog). Dovresti probabilmente eliminare il tuo database jsTap.db durante gli aggiornamenti di versione. Se hai payload personalizzati nel tuo server JS-Tap, assicurati di esportarli prima di eliminare i file del database.
JS-Tap è un toolkit offensivo basato su JavaScript per red team. È iniziato come un payload JavaScript generico per attaccare applicazioni web tramite XSS o impianto post-sfruttamento, ed è cresciuto fino a includere estensioni browser e impianti per app desktop Electron — tutti che riportano a un singolo server C2.
Il payload non richiede che l'utente target che esegue il payload sia autenticato all'applicazione attaccata, e non richiede alcuna conoscenza preliminare dell'applicazione oltre a trovare un modo per introdurre il JavaScript nell'applicazione.
Invece di attaccare il server applicativo stesso, il payload JS-Tap si concentra sul lato client dell'applicazione e strumenta pesantemente il codice lato client. Un sistema C2 permette di aggiungere e eseguire payload JavaScript personalizzati come task sui client JS-Tap, fornendo un mezzo per attaccare direttamente il server applicativo. Per facilitare una transizione più rapida all'attacco al server, JS-Tap ora include una funzionalità 'mimic' per generare automaticamente payload personalizzati e passarli al sistema C2.
Il payload DOM Beacon di esempio è contenuto nel file telemlib.js nella directory payloads, tuttavia qualsiasi file in questa directory viene servito senza autenticazione, quindi puoi servire più payload con configurazioni diverse che targettizzano diverse applicazioni contemporaneamente.
Copia il file telemlib.js con il nome che desideri e modifica la configurazione secondo necessità. Questo file non è stato offuscato. Prima di utilizzarlo in un impegno, valuta seriamente di modificare la denominazione degli endpoint, rimuovere i commenti e offuscare pesantemente il payload. Di default l'applicazione utilizza endpoint API piuttosto ovvi (es. /loot/screenshot), in Impostazioni App puoi attivare l'offuscamento del traffico.
Assicurati di rivedere attentamente la sezione configurazione qui sotto prima di utilizzarlo su un server esposto pubblicamente.
JS-Tap ha cinque tipi di beacon/agenti che si connettono allo stesso server:
| Tipo di Beacon | Cos'è | Come Arriva |
|---|---|---|
| DOM Beacon (telemlib.js) | Un payload JavaScript iniettato in una pagina web. Strumenta il DOM, cattura l'attività dell'utente, screenshot, chiamate di rete. | Vulnerabilità XSS, o aggiunto direttamente ai file JavaScript dell'app target (post-sfruttamento). |
| BEX Beacon | Un'estensione browser (Chrome MV3 / Firefox MV2). Monitora tutta l'attività di navigazione, cattura cookie (inclusi httpOnly), localStorage, sessionStorage e intestazioni delle richieste. Può iniettare DOM Beacon in domini specifici su comando. | Installato nel browser del target (ingegneria sociale, accesso fisico, push di policy, ecc.). |
| Sidecar | Un binario nativo Go che gira sul sistema operativo del target. Fornisce navigazione del filesystem, lettura di file ed esecuzione di comandi. | Installato insieme al BEX Beacon tramite messaggistica nativa. Richiede il BEX Beacon per relayare i comandi. |
| Atom Beacon | Un impianto a doppio strato per applicazioni desktop Electron. Inietta un agente nel processo principale (runtime Node.js) + payload renderer in tutte le finestre dell'app. Combina la raccolta dati a livello browser con l'accesso OS a livello host — nessun binario separato necessario. Supporta la modalità proxy del browser. | Patchato nell'archivio ASAR dell'app Electron target (o nella directory dell'app non pacchettizzata) usando atomize.py. |
| V8 Beacon | Un agente JavaScript per applicazioni CLI Node.js e Bun (Gemini CLI, Claude Code, ecc.). Intercetta tutte le chiamate di rete HTTP/Fetch, cattura la digitazione e fornisce accesso al filesystem e alla shell. Zero dipendenze. | Iniettato tramite variabile d'ambiente: NODE_OPTIONS="--require" (Node.js) o BUN_OPTIONS="--preload" (Bun). Nessuna patch all'app necessaria. |
Tutti e cinque riportano allo stesso portale server JS-Tap, dove il bottino viene visualizzato e i comandi C2 vengono impartiti.
Il portale include anche due strumenti di clonazione della sessione:
| Strumento | Cosa Fa |
|---|---|
| Browser Proxy | Un proxy MITM sul server JS-Tap che instrada il traffico HTTP/HTTPS dell'operatore attraverso il browser (o processo Node.js) della vittima tramite WebSocket. Le richieste vengono recuperate dal contesto di rete della vittima, quindi il sito target vede l'IP della vittima e l'impronta TLS. Combinalo con un Session Ticket per una navigazione autenticata attraverso la rete della vittima. Supportato da BEX, Atom e V8 Beacon. Vedi Browser Proxy qui sotto. |
| JS-Tap Conductor | Un'estensione Firefox standalone che importa i dati di sessione catturati dal BEX Beacon (come 'JS-Tap Ticket') e li riproduce localmente — impostando cookie, iniettando intestazioni, popolando lo storage e spoofando lo User-Agent — così l'operatore può navigare come la vittima. Vedi JS-Tap Tickets & JS-Tap Conductor qui sotto. |
DOM Beacon Standalone: Il payload DOM Beacon (telemlib.js) funziona indipendentemente. Inietta tramite XSS o impiantalo nei file JS del target. Chiama il server JS-Tap da solo.
BEX Beacon come dropper: Il BEX Beacon monitora la navigazione e raccoglie intelligence passiva (cookie, localStorage, sessionStorage, intestazioni delle richieste, navigazione). Dal portale JS-Tap, puoi comandare al beacon di iniettare un DOM Beacon in un dominio specifico. Il DOM Beacon generato da un BEX Beacon ottiene screenshot di alta qualità tramite l'API captureVisibleTab dell'estensione (la modalità "BEX-Assist").
Sidecar per accesso OS: Quando installato, il binario Sidecar dà al BEX Beacon accesso al sistema operativo sottostante. I comandi vengono inviati dal portale JS-Tap, relayati attraverso il canale criptato del beacon al binario nativo, e i risultati vengono rispediti. Questo trasforma un'estensione browser in un punto d'appoggio per l'accesso al filesystem e l'esecuzione di comandi.