
Il motore di fingerprinting modulare e distribuito
Scannerl è un motore di fingerprinting modulare e distribuito implementato da Kudelski Security. Scannerl può effettuare il fingerprinting di migliaia di target su un singolo host, ma può altrettanto facilmente essere distribuito su più host. Scannerl sta al fingerprinting come zmap sta alla scansione delle porte.
Scannerl funziona su Debian/Ubuntu/Arch (ma probabilmente funzionerà anche su altre distribuzioni). Utilizza un'architettura master/slave in cui il nodo master distribuisce il lavoro (host da sottoporre a fingerprinting) ai suoi slave (locali o remoti). L'intero dispiegamento è trasparente per l'utente.
Quando si utilizzano strumenti convenzionali di fingerprinting per analisi su larga scala, i ricercatori di sicurezza si scontrano spesso con due limitazioni: in primo luogo, questi strumenti sono tipicamente progettati per scansionare comparativamente pochi host alla volta e non sono adatti a grandi intervalli di indirizzi IP. In secondo luogo, se si effettua il fingerprinting di un'ampia gamma di indirizzi IP protetti da dispositivi IPS, la probabilità di essere inseriti in una lista nera è maggiore, il che potrebbe portare a un set di informazioni incompleto. Scannerl è progettato per aggirare queste limitazioni, non solo fornendo la capacità di eseguire il fingerprinting di più host simultaneamente, ma anche distribuendo il carico su un numero arbitrario di host. Scannerl rende anche la distribuzione di questi compiti completamente trasparente, rendendo banale la configurazione e la manutenzione di progetti di fingerprinting su larga scala; ciò consente di concentrarsi sulle analisi piuttosto che sul compito titanico di gestire e distribuire manualmente i processi di fingerprinting. Oltre al fattore velocità, scannerl è stato progettato per permettere di impostare facilmente analisi di fingerprinting specifiche con poche righe di codice. Non solo la creazione di un cluster di fingerprinting è semplice da configurare, ma può essere ottimizzata aggiungendo scansioni finemente sintonizzate alle proprie campagne di fingerprinting.
È lo strumento più veloce per eseguire campagne di fingerprinting su larga scala.
Per maggiori informazioni:
Indice
Vedi il wiki per maggiori informazioni.
Vedi le diverse opzioni di installazione nella pagina di installazione del wiki
Per installare dal sorgente, installa prima Erlang (almeno v.18) scegliendo il pacchetto giusto per la tua piattaforma: Download di Erlang
Installa i pacchetti richiesti:
# on debian
$ sudo apt install erlang erlang-src rebar
# on arch
$ sudo pacman -S erlang-nox rebar
Poi compila scannerl:
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh
Ottieni l'utilizzo eseguendo
$ ./scannerl -h
Scannerl è disponibile su AUR per gli utenti Arch Linux
I DEB (Ubuntu, Debian) sono disponibili nelle release.
I RPM (OpenSUSE, CentOS, RedHat) sono disponibili su https://build.opensuse.org/package/show/home:chapeaurouge/scannerl.
Sono necessari due tipi di nodi per eseguire una scansione distribuita:
Il nodo master deve avere scannerl installato e compilato, mentre i nodi slave necessitano solo di Erlang installato. L'intera configurazione è trasparente e viene eseguita automaticamente dal nodo master.
Requisiti per una scansione distribuita:
$ ./scannerl -h
____ ____ _ _ _ _ _ _____ ____ _
/ ___| / ___| / \ | \ | | \ | | ____| _ \| |
\___ \| | / _ \ | \| | \| | _| | |_) | |
___) | |___ / ___ \| |\ | |\ | |___| _ <| |___
|____/ \____/_/ \_\_| \_|_| \_|_____|_| \_\_____|
USAGE
scannerl MODULE TARGETS [NODES] [OPTIONS]
MODULE:
-m <mod> --module <mod>
mod: the fingerprinting module to use.
arguments are separated with a colon.
TARGETS:
-f <target> --target <target>
target: a list of target separated by a comma.
-F <path> --target-file <path>
path: the path of the file containing one target per line.
-d <domain> --domain <domain>
domain: a list of domains separated by a comma.
-D <path> --domain-file <path>
path: the path of the file containing one domain per line.
NODES:
-s <node> --slave <node>
node: a list of node (hostnames not IPs) separated by a comma.
-S <path> --slave-file <path>
path: the path of the file containing one node per line.
a node can also be supplied with a multiplier (<node>*<nb>).