Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
scannerl — Il motore di fingerprinting modulare e distribuito | Kitploit
Strumenti/GitHubGitHub/kudelskisecurity/scannerl
RicognizioneMappatura della ReteRaccolta Informazioni
GitHubkudelskisecurity/scannerl

scannerl

Il motore di fingerprinting modulare e distribuito

Vedi Repository
2194238 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Scannerl

License: GPL v3 AUR

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.

Perché usare Scannerl

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:

  • Fingerprint all the things with scannerl at BlackAlps
  • Fingerprinting MySQL with scannerl
  • Fingerprint ICS/Scada with scannerl
  • Distributed fingerprinting with scannerl
  • 6 months of ICS scanning

Indice

  • Installazione

  • Utilizzo

    • Standalone
    • Distribuito
    • Moduli disponibili
    • Argomenti dei moduli
    • Formato del risultato
  • Estendere Scannerl

  • Contribuire

  • Licenza e Copyright

Vedi il wiki per maggiori informazioni.

Installazione

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:

root@kitploit:~
# on debian
$ sudo apt install erlang erlang-src rebar

# on arch
$ sudo pacman -S erlang-nox rebar

Poi compila scannerl:

root@kitploit:~
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh

Ottieni l'utilizzo eseguendo

root@kitploit:~
$ ./scannerl -h

Scannerl è disponibile su AUR per gli utenti Arch Linux

  • scannerl
  • scannerl-git

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.

Configurazione distribuita

Sono necessari due tipi di nodi per eseguire una scansione distribuita:

  • Nodo master: qui viene eseguito il binario di scannerl
  • Nodo/i slave: qui scannerl si connetterà per distribuire tutto il lavoro

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:

  • Tutti gli host hanno la stessa versione di Erlang installata
  • Tutti gli host sono in grado di connettersi tra loro utilizzando la chiave pubblica SSH
  • I nomi di tutti gli host vengono risolti (usa /etc/hosts se non è configurato un DNS adeguato)
  • Tutti gli host hanno lo stesso cookie di sicurezza Erlang
  • Tutti gli host devono consentire la connessione alla porta EPMD di Erlang (TCP/4369)
  • Tutti gli host hanno aperto il seguente intervallo di porte: da TCP/11100 a TCP/11100 + numero-di-slave

Utilizzo

root@kitploit:~
$ ./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>).

  OPTIONS:
    -o <mod> --output <mod>     comma separated list of output module(s) to use.
    -p <port> --port <port>     the port to fingerprint.
    -t <sec> --timeout <sec>    the fingerprinting process timeout.
    -T <sec> --stimeout <sec>   slave connection timeout (default: 10).
    -j <nb> --max-pkt <nb>      max pkt to receive (int or "infinity").
    -r <nb> --retry <nb>        retry counter (default: 0).
    -c <cidr> --prefix <cidr>   sub-divide range with prefix > cidr (default: 24).
    -M <port> --message <port>  port to listen for message (default: 57005).
    -P <nb> --process <nb>      max simultaneous process per node (default: 28232).
    -Q <nb> --queue <nb>        max nb unprocessed results in queue (default: infinity).
    -C <path> --config <path>   read arguments from file, one per line.
    -O <mode> --outmode <mode>  0: on Master, 1: on slave, >1: on broker (default: 0).
    -v <val> --verbose <val>    be verbose (0 <= int <= 255).
    -K <opt> --socket <opt>     comma separated socket option (key[:value]).
    -l --list-modules           list available fp/out modules.
    -V --list-debug             list available debug options.
    -A --print-args             Output the args record.
    -X --priv-ports             use only source port between 1 and 1024.
    -N --nosafe                 keep going even if some slaves fail to start.
    -w --www                    DNS will try for www.<domain>.
    -b --progress               show progress.
    -x --dryrun                 dry run.

Vedi il wiki per maggiori informazioni.

Utilizzo standalone

Scannerl può essere utilizzato sull'host locale senza alcun altro host. Tuttavia, creerà comunque un nodo slave sullo stesso host da cui viene eseguito. Pertanto, devono essere soddisfatti anche i requisiti descritti in Configurazione distribuita.

Un modo rapido per farlo è assicurarsi che il proprio host sia in grado di risolversi da solo con

root@kitploit:~
grep -q "127.0.1.1\s*`hostname`" /etc/hosts || echo "127.0.1.1 `hostname`" | sudo tee -a /etc/hosts

e creare una chiave SSH (se non ancora presente) e aggiungerla a authorized_keys (è necessario un server SSH in esecuzione):

root@kitploit:~
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

L'esempio seguente esegue un'analisi del banner HTTP su google.com da localhost

root@kitploit:~
./scannerl -m httpbg -d google.com

Utilizzo distribuito

Per eseguire una scansione distribuita, è necessario preconfigurare gli host che verranno utilizzati da scannerl per distribuire il lavoro. Vedi Configurazione distribuita per maggiori informazioni.

Scannerl si aspetta un elenco di slave da utilizzare (fornito tramite le opzioni -s o -S).

root@kitploit:~
./scannerl -m httpbg -d google.com -s host1,host2,host3

Elenco dei moduli disponibili

Scannerl elenca i moduli disponibili (moduli di output e moduli di fingerprinting) con l'opzione -l:

root@kitploit:~
$ ./scannerl -l

Fingerprinting modules available
================================

bacnet             UDP/47808: Bacnet identification
chargen            UDP/19: Chargen amplification factor identification
fox                TCP/1911: FOX identification
httpbg             TCP/80: HTTP Server header identification
                     - Arg1: [true|false] follow redirection [Default:false]
httpsbg            SSL/443: HTTPS Server header identification
https_certif       SSL/443: HTTPS certificate graber
imap_certif        TCP/143: IMAP STARTTLS certificate graber
modbus             TCP/502: Modbus identification
mqtt               TCP/1883: MQTT identification
mqtts              TCP/8883: MQTT over SSL identification
mysql_greeting     TCP/3306: Mysql version identification
pop3_certif        TCP/110: POP3 STARTTLS certificate graber
smtp_certif        TCP/25: SMTP STARTTLS certificate graber
ssh_host_key       TCP/22: SSH host key graber

Output modules available
========================

csv                output to csv
                     - Arg1: [true|false] save everything [Default:true]
csvfile            output to csv file
                     - Arg1: [true|false] save everything [Default:false]
                     - Arg2: File path
file               output to file
                     - Arg1: File path
file_ip            output to stdout (only ip)
                     - Arg1: File path
file_mini          output to file (only ip and result)
                     - Arg1: File path
file_resultonly    output to file (only result)
                     - Arg1: File path
stdout             output to stdout
stdout_ip          output to stdout (only IP)
stdout_mini        output to stdout (only ip and result)

Argomenti dei moduli

Gli argomenti possono essere forniti ai moduli con i due punti. Ad esempio per il modulo di output file:

root@kitploit:~
./scannerl -m httpbg -d google.com -o file:/tmp/result

Formato del risultato

Il risultato restituito da scannerl ai moduli di output ha la seguente forma:

root@kitploit:~
{module, target, port, result}

Dove

  • module: il modulo usato (atomo Erlang)
  • target: IP o hostname (stringa o indirizzo IPv4)
  • port: la porta (intero)
  • result: vedi sotto

La parte result ha la forma:

root@kitploit:~
{{status, type},Value}

Dove {status, type} è una delle seguenti tuple:

  • {ok, result}: il fingerprinting del target è riuscito
  • {error, up}: il fingerprinting non è riuscito ma il target ha risposto
  • {error, unknown}: il fingerprinting è fallito

Value è il valore restituito - può essere un atomo o una lista di elementi

Estendere Scannerl

Scannerl è stato progettato e implementato pensando alla modularità. È facile aggiungere nuovi moduli:

  • Modulo di fingerprinting: per interrogare un protocollo o servizio specifico. Ad esempio, il modulo fp_httpbg.erl permette di recuperare il campo server nella risposta HTTP.
  • Modulo di output: per inviare l'output a un database/filesystem specifico o per produrre il risultato in un formato specifico. Ad esempio, i moduli out_file.erl e out_stdout.erl permettono rispettivamente di inviare l'output a un file o a stdout (comportamento predefinito se non specificato).

Per creare nuovi moduli, segui semplicemente il comportamento (fp_module.erl per i moduli di fingerprinting e out_behavior.erl per i moduli di output) e implementa i tuoi moduli.

I nuovi moduli possono essere aggiunti in fase di compilazione o dinamicamente come file esterni.

Vedi la pagina wiki per maggiori informazioni.

Contribuire

Sentiti libero di aprire un issue o una PR.

Licenza e Copyright

Copyright(c) 2017 Nagravision SA.

Questo programma è software libero: puoi ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License versione 3 pubblicata dalla Free Software Foundation.

Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la GNU General Public License per maggiori dettagli.

Dovresti aver ricevuto una copia della GNU General Public License insieme a questo programma. In caso contrario, vedi http://www.gnu.org/licenses/.

Scarica lo strumento