
RevSuit è una piattaforma di connessione inversa flessibile e potente progettata per ricevere connessioni dall'host target durante la penetrazione.
RevSuit è una piattaforma di connessione inversa flessibile e potente progettata per ricevere connessioni dal sistema target durante un penetration test. Attualmente supporta i protocolli HTTP, DNS, RMI, LDAP, MySQL e FTP.
Flessibile:
Potente:
Scarica l'ultima versione direttamente o compila seguendo questi passaggi:
git clone https://github.com/Li4n0/revsuit.git
cd revsuit/frontend && yarn install && yarn build
cd ../ && go build ./cmd/revsuit/revsuit.go
RevSuit genera un file di configurazione predefinito al primo avvio. Modifica il file di configurazione secondo le tue esigenze, quindi riavvia. Una descrizione dettagliata del file di configurazione è disponibile qui: Note di configurazione
Per determinare la posizione IP, è necessario utilizzare un database di geolocalizzazione IP. Per impostazione predefinita viene utilizzato QQwry, ma puoi modificare la configurazione per usare GeoIP. Se il database selezionato non è disponibile nella directory corrente o è stato aggiornato più di una settimana fa, RevSuit scaricherà automaticamente l'ultima versione. Se il download fallisce, il campo IpArea rimarrà sempre nullo.
$ ./revsuit
2021/05/16 22:55:10 [ INFO] Downloading qqwry.dat...
____ _____ _ __
/ __ \___ _ __/ ___/__ __(_) /_
/ /_/ / _ \ | / /\__ \/ / / / / __/
/ _, _/ __/ |/ /___/ / /_/ / / /_
/_/ |_|\___/|___//____/\__,_/_/\__/
vBeta0.1
https://revsuit.pro
2021/05/16 22:55:22 [ INFO] Starting HTTP Server at :80, token:your_token
2021/05/16 22:55:22 [ INFO] Start to listen FTP PASV port at :2020, PasvIP is 10.9.8.7
2021/05/16 22:55:22 [ INFO] Starting FTP Server at :21
2021/05/16 22:55:22 [ INFO] Starting MySQL Server at :3306
2021/05/16 22:55:22 [ INFO] Starting RMI Server at :1099
2021/05/16 22:55:22 [ INFO] Starting DNS Server at :53
Dopo l'esecuzione, puoi visitare il percorso /revsuit/admin/ del server HTTP e inserire il token per accedere al pannello di controllo.
Prendiamo come esempio la creazione di una regola HTTP:
Alcune note:
name e flagFormat della regola sono univoci.FlagFormat utilizza la sintassi delle espressioni regolari e, per protocolli diversi, i campi a cui si applica flagFormat sono diversi; puoi controllare i suggerimenti corrispondenti durante la creazione delle regole per maggiori dettagli.flagFormat; il risultato del gruppo corrispondente sarà usato come variabile template.Come mostrato di seguito, creiamo una regola che utilizza variabili template integrate e variabili template personalizzate del protocollo http, e la chiamiamo test_create_rule:

Quindi effettuiamo una richiesta che soddisfi la regola e osserviamo la risposta.

La richiesta verrà registrata contemporaneamente sulla piattaforma.

Se desideri ricevere notifiche per nuove connessioni sul tuo software per ufficio, puoi configurare l'indirizzo webhook del software pertinente nel file di configurazione e attivare l'interruttore Notice per la regola corrispondente. Attualmente sono supportati solo quattro tipi di software: dingtalk, wechat, lark, slack. (Il supporto per Discord e Telegram è in programma.)
Se stai migrando tra piattaforme o pulendo i dati, ricreare le regole può essere scomodo. Per questo la piattaforma supporta l'importazione e l'esportazione delle regole.
Il punto di accesso per questa funzione si trova in Settings>RULES.
Le regole vengono memorizzate in formato YAML per l'importazione/esportazione, come nell'esempio seguente:
http:
- name: test_create_rule
flag_format: (?P<what>\w+)\?
rank: 0
push_to_client: false
notice: false
response_status_code: "302"
response_headers:
Location: ${query.url}
response_body: ${header.say} ${what}
- name: other_rule
flag_format: other
rank: 1
push_to_client: false
notice: true
response_status_code: "200"
response_headers: { }
response_body: Hello Revsuit!
dns:
... ...
RevSuit è stato separato dal mio progetto scanner, quindi il suo supporto nativo funziona con gli scanner.
Dal punto di vista di RevSuit, chiamiamo uno scanner un client.
RevSuit utilizza HTTP Server-sent Events (SSE) per stabilire un canale di comunicazione unidirezionale con il client.
L'API per il canale è: /revsuit/api/events?message. Il client deve prima aggiungere l'intestazione Token: your token all'Header, quindi accedere all'API per stabilire il canale. Quando la piattaforma riceve una nuova connessione, il flag catturato dalla regola verrà passato al client attraverso questo canale.

Ecco una demo semplice che utilizza la libreria sse di Golang come esempio.
Come mostrato sopra, RevSuit supporta più client, e ogni client nello stato connesso riceve la notifica del flag, quindi è possibile supportare scansioni distribuite.
Se non desideri che ogni client riceva tutte le notifiche dei flag, puoi utilizzare l'intestazione della richiesta Flag-Filter quando crei una connessione sse per impostare il formato (espressioni regolari) del flag che quel client deve ricevere:

RevSuit memorizza temporaneamente i flag in una coda quando non ci sono client connessi e li invia quando un client si connette, quindi non devi preoccuparti di perdere vulnerabilità a causa della disconnessione del client. (Ciò è particolarmente utile per scoprire vulnerabilità che si attivano con ritardo.)