
Uno strumento di test di penetrazione distribuito e modulare.
v0.6.0
English | 中文.
Swarm è uno strumento open source modulare e distribuito per test di penetrazione, che utilizza una coda di task distribuita per implementare la comunicazione in un sistema master-slave e MongoDB per l'archiviazione dei dati. È composto da un framework distribuito e da moduli funzionali. Il modulo funzionale può essere un'implementazione completamente nuova di alcune funzioni di penetrazione oppure un semplice involucro di uno strumento esistente per implementare funzionalità distribuite. Grazie all'architettura modulare, è facile personalizzare ed estendere nuove funzionalità all'interno del framework distribuito.
Nella versione attuale 0.6.0 ha cinque moduli:
Se vuoi scrivere il tuo modulo, puoi leggere questo.
Il pacchetto zip può essere scaricato qui. Puoi anche usare git per ottenere swarm:
git clone [email protected]:Arvin-X/swarm.git
quindi usa setup.py per installare swarm:
python setup.py install
Swarm funziona con Python 2.6.x o 2.7.x e necessita del supporto MongoDB sull'host master.
Se non hai ancora MongoDB, puoi installarlo usando apt-get:
apt-get install mongodb
Esegui swarm sull'host master per distribuire i task ed esegui swarm-s con l'opzione '-p' sull'host slave per completare il subtask proveniente dal master.
swarm-s -p 9090
Puoi anche creare un listener sulla porta di destinazione dell'host slave per ricevere comandi per risvegliare swarm-s specificando l'opzione '--waken' quando esegui swarm. Altrimenti lascia '--waken' nullo. Per creare un listener, puoi usare nc o socat, ad esempio:
nc -e /bin/sh -l 9191
E usa un comando di risveglio come:
swarm-s ARGS
Devi lasciare "ARGS" nel tuo comando e assicurarti che siano i parametri CLI passati a swarm perché swarm li sostituisca con alcuni argomenti necessari come '-p'.
Utilizzo base di swarm:
usage: swarm [-h] -m MODULE [-v] [-c] [-o PATH] [-t [TARGET [TARGET ...]]]
[-T PATH] [-s [SWARM [SWARM ...]]] [-S PATH] [--waken CMD]
[--timeout TIME] [--m-addr ADDR] [--m-port PORT] [--s-port PORT]
[--authkey KEY] [--db-addr ADDR] [--db-port PORT] [--process NUM]
[--thread NUM] [--taskg NUM] [--dom-compbrute] [--dom-dict PATH]
[--dom-maxlevel NUM] [--dom-charset SET] [--dom-levellen LEN]
[--dom-timeout TIME] [--dir-http-port PORT]
[--dir-https-port PORT] [--dir-compbrute] [--dir-charset SET]
[--dir-len LEN] [--dir-dict PATH] [--dir-maxdepth NUM]
[--dir-timeout TIME] [--dir-not-exist FLAG] [--dir-quick-scan]
[--nmap-ports PORTS] [--nmap-top-ports NUM] [--nmap-ops ...]
[--int-target [URLS [URLS ...]]] [--int-method METHOD]
[--int-headers JSON] [--int-cookies COOKIES] [--int-body BODY]
[--int-payload PAYLOAD] [--int-flag FLAGS] [--int-timeout TIME]
[--map-seed SEED] [--map-http-port PORT] [--map-https-port PORT]
[--map-cookies COOKIES] [--map-interval TIME]
[--map-timeout TIME]
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esce
-m MODULE Utilizza il nome del modulo in ./modules/ per abilitarlo
Output:
Queste opzioni possono essere usate per controllare l'output
-v Output più verbose
-c Disabilita l'output del log a colori
-o PATH Registra il log nel file di destinazione
Target:
Almeno una di queste opzioni deve essere fornita per definire il target a meno
che non ci sia un'altra opzione speciale per definire il target nel modulo
-t [TARGET [TARGET ...]]
Separati da spazio (es: github.com 127.0.0.0/24
192.168.1.5)
-T PATH File che contiene la lista dei target, un target per riga
Swarm:
Usa queste opzioni per personalizzare la connessione swarm. Almeno un host
slave deve essere fornito.
-s [SWARM [SWARM ...]]
Indirizzo degli host slave con porta se devi risvegliarli
(es: 192.168.1.2:9090 192.18.1.3:9191). Nessuna porta
se swarm-s sull'host slave è già in esecuzione
-S PATH File che contiene la lista degli slave, un host per riga
--waken CMD Comando per risvegliare gli host slave, null se swarm-s
sull'host slave è già in esecuzione
--timeout TIME Secondi di attesa prima che la richiesta a swarm ottenga
risposta
--m-addr ADDR Indirizzo master raggiungibile da tutti gli host slave
--m-port PORT Porta di ascolto sull'host master per distribuire i task
--s-port PORT Porta di ascolto sull'host slave per ricevere comandi
dal master
--authkey KEY Chiave di autenticazione tra host master e slave
Database:
Queste opzioni possono essere usate per accedere al server MongoDB
--db-addr ADDR Indirizzo del server MongoDB
--db-port PORT Porta di ascolto del server MongoDB
Comuni:
Queste opzioni possono essere usate per personalizzare la configurazione
comune dell'host slave
--process NUM Numero massimo di processi concorrenti sull'host slave
--thread NUM Numero massimo di thread concorrenti sull'host slave
--taskg NUM Granularità dei subtask da 1 a 3
Scansione Dominio:
Queste opzioni possono essere usate per personalizzare l'azione di swarm
per la scansione dei nomi di sottodominio
--dom-compbrute Usa forza bruta completa senza dizionario sul target
--dom-dict PATH Percorso del dizionario per la scansione dei nomi di
sottodominio
--dom-maxlevel NUM Livello massimo di nomi di sottodominio da scansionare
--dom-charset SET Set di caratteri per la forza bruta completa
--dom-levellen LEN Intervallo di lunghezza dei nomi di sottodominio per
ogni livello
--dom-timeout TIME Opzione di timeout per la scansione dei nomi di
sottodominio
Scansione Directory:
Queste opzioni possono essere usate per personalizzare l'azione di swarm
per la scansione delle directory
--dir-http-port PORT Separati da virgola se servono più porte
--dir-https-port PORT
Separati da virgola se servono più porte
--dir-compbrute Usa forza bruta completa senza dizionario sul target
--dir-charset SET Set di caratteri per la forza bruta completa
--dir-len LEN Intervallo di lunghezza del nome di directory o file
--dir-dict PATH Percorso del dizionario per la scansione delle directory
--dir-maxdepth NUM Profondità massima nella scansione di directory e file
--dir-timeout TIME Opzione di timeout per la scansione delle directory
--dir-not-exist FLAG Separati da doppia virgola se servono più flag
--dir-quick-scan Usa il metodo HEAD invece di GET nella scansione
Modulo Nmap:
Queste opzioni possono essere usate per personalizzare l'azione di nmap
sugli host slave
--nmap-ports PORTS Supporta formati come '80,443,3306,1024-2048'
--nmap-top-ports NUM Scansiona i <numero> porte più comuni
--nmap-ops ... Elenco delle opzioni nmap dalle pagine man di nmap,
questo dovrebbe essere l'ultimo negli argomenti CLI
Intruder:
Usa il simbolo indicatore '@n@' dove 'n' deve essere un numero, come
'@0@','@1@' ecc. per specificare il punto di attacco nell'opzione
'int_target' e 'int_body'. Usa l'opzione 'int_payload' per specificare
il payload da usare su questi punti di attacco per completare l'attacco.
--int-target [URLS [URLS ...]]
Usa questa opzione invece di '-t' o '-T' per
specificare i target, separati da virgola
--int-method METHOD Metodo HTTP usato in questo attacco
--int-headers JSON Dati in formato JSON (es: {"User-
Agent":"Mozilla/5.0","Origin":"XXX"})
--int-cookies COOKIES
Separati da virgola (es: PHPSESSIONID:XX,token:XX)
--int-body BODY Corpo HTTP o HTTPS. Puoi usare il simbolo indicatore
in questa opzione
--int-payload PAYLOAD
Il formato deve seguire '@0@:PATH,@1@:CHARSET
:NUM-NUM'
--int-flag FLAGS Separati da doppia virgola se hai più flag
--int-timeout TIME Opzione di timeout per il modulo intruder
Crawler Sitemap:
Queste opzioni possono essere usate per personalizzare il crawler della
mappa del sito, ancora non supporta il parsing di JS
--map-seed SEED Separati da virgola se hai più seed
--map-http-port PORT Separati da virgola se servono più porte
--map-https-port PORT
Separati da virgola se servono più porte
--map-cookies COOKIES
Separati da virgola se hai più cookie
--map-interval TIME Intervallo di tempo tra due richieste
--map-timeout TIME Opzione di timeout per il crawler della mappa del sito
Si consiglia di utilizzare un file di configurazione per configurare swarm invece di usare argomenti CLI se i requisiti sono elevati. I file di configurazione si trovano in /etc/swarm/.
Swarm è concesso in licenza GPLv3.