Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
scannerl — Die modulare, verteilte Fingerprinting-Engine | Kitploit
Tools/GitHubGitHub/kudelskisecurity/scannerl
AufklärungNetzwerkkartierungInformationsbeschaffung
GitHubkudelskisecurity/scannerl

scannerl

Die modulare, verteilte Fingerprinting-Engine

Repository anzeigen
219423vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Scannerl

License: GPL v3 AUR

Scannerl ist eine modulare, verteilte Fingerprinting-Engine, die von Kudelski Security implementiert wurde. Scannerl kann Tausende von Zielen auf einem einzelnen Host fingerabdrücken, lässt sich aber ebenso einfach auf mehrere Hosts verteilen. Scannerl ist für Fingerprinting das, was zmap für Port-Scans ist.

Scannerl funktioniert unter Debian/Ubuntu/Arch (wird aber wahrscheinlich auch auf anderen Distributionen laufen). Es verwendet eine Master/Slave-Architektur, bei der der Master-Knoten die Arbeit (zu fingerabdruckende Hosts) an seine Slaves (lokal oder remote) verteilt. Die gesamte Bereitstellung ist für den Benutzer transparent.

Warum Scannerl verwenden

Bei der Verwendung herkömmlicher Fingerprinting-Tools für groß angelegte Analysen stoßen Sicherheitsforscher oft auf zwei Einschränkungen: Erstens sind diese Tools typischerweise für das Scannen vergleichsweise weniger Hosts auf einmal ausgelegt und daher für große IP-Adressbereiche ungeeignet. Zweitens: Wenn ein großer Bereich von IP-Adressen, die durch IPS-Geräte geschützt sind, fingerabgedrückt wird, ist die Wahrscheinlichkeit höher, auf die schwarze Liste gesetzt zu werden, was zu einem unvollständigen Informationssatz führen kann. Scannerl wurde entwickelt, um diese Einschränkungen zu umgehen, indem es nicht nur die Möglichkeit bietet, mehrere Hosts gleichzeitig zu fingerabdrucken, sondern auch die Last auf eine beliebige Anzahl von Hosts zu verteilen. Scannerl macht die Verteilung dieser Aufgaben zudem völlig transparent, was die Einrichtung und Wartung von groß angelegten Fingerprinting-Projekten trivial macht. Dies ermöglicht es, sich auf die Analysen zu konzentrieren, anstatt sich der herkulischen Aufgabe des manuellen Verwaltens und Verteilens von Fingerprinting-Prozessen zu widmen. Zusätzlich zum Geschwindigkeitsfaktor wurde Scannerl so konzipiert, dass sich spezifische Fingerprinting-Analysen mit nur wenigen Codezeilen einfach einrichten lassen. Nicht nur die Erstellung eines Fingerprinting-Clusters ist einfach einzurichten, sondern er kann auch durch das Hinzufügen von fein abgestimmten Scans zu Ihren Fingerprinting-Kampagnen optimiert werden.

Es ist das schnellste Werkzeug, um groß angelegte Fingerprinting-Kampagnen durchzuführen.

Weitere Informationen:

  • Fingerabdrücke aller Dinge mit scannerl auf der BlackAlps
  • Fingerprinting von MySQL mit scannerl
  • Fingerprinting von ICS/SCADA mit scannerl
  • Verteiltes Fingerprinting mit scannerl
  • 6 Monate ICS-Scanning

Inhaltsverzeichnis

  • Installation

  • Verwendung

    • Eigenständig
    • Verteilt
    • Verfügbare Module
    • Modulargumente
    • Ergebnisformat
  • Scannerl erweitern

  • Mitwirken

  • Lizenz und Urheberrecht

Weitere Informationen finden Sie im Wiki.

Installation

Die verschiedenen Installationsoptionen finden Sie auf der Wiki-Installationsseite

Um aus dem Quellcode zu installieren, installieren Sie zunächst Erlang (mindestens v.18), indem Sie das richtige Paket für Ihre Plattform wählen: Erlang-Downloads

Installieren Sie die erforderlichen Pakete:

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

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

Dann bauen Sie scannerl:

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

Erhalten Sie die Nutzungsinformationen durch Ausführen von

root@kitploit:~
$ ./scannerl -h

Scannerl ist im AUR für Arch-Linux-Benutzer verfügbar

  • scannerl
  • scannerl-git

DEBs (Ubuntu, Debian) sind in den Releases verfügbar.

RPMs (OpenSUSE, CentOS, Red Hat) sind unter https://build.opensuse.org/package/show/home:chapeaurouge/scannerl verfügbar.

Verteiltes Setup

Für einen verteilten Scan werden zwei Arten von Knoten benötigt:

  • Master-Knoten: hier wird die Binärdatei von scannerl ausgeführt
  • Slave-Knoten: hier wird scannerl eine Verbindung herstellen, um seine gesamte Arbeit zu verteilen

Der Master-Knoten muss scannerl installiert und kompiliert haben, während die Slave-Knoten nur Erlang installiert haben müssen. Die gesamte Einrichtung ist transparent und wird automatisch vom Master-Knoten durchgeführt.

Anforderungen für einen verteilten Scan:

  • Alle Hosts haben dieselbe Version von Erlang installiert
  • Alle Hosts können sich über SSH-Public-Key miteinander verbinden
  • Die Namen aller Hosts werden aufgelöst (verwenden Sie /etc/hosts, wenn kein ordnungsgemäßes DNS eingerichtet ist)
  • Alle Hosts haben dasselbe Erlang-Sicherheits-Cookie
  • Alle Hosts müssen Verbindungen zum Erlang-EPMD-Port (TCP/4369) zulassen
  • Alle Hosts müssen den folgenden Portbereich geöffnet haben: TCP/11100 bis TCP/11100 + Anzahl-der-Slaves

Verwendung

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.

Weitere Informationen finden Sie im Wiki.

Eigenständige Verwendung

Scannerl kann auf dem lokalen Host ohne andere Hosts verwendet werden. Es wird jedoch weiterhin einen Slave-Knoten auf demselben Host erstellen, von dem aus es ausgeführt wird. Daher müssen die unter Verteiltes Setup beschriebenen Anforderungen ebenfalls erfüllt sein.

Eine schnelle Möglichkeit, dies zu erreichen, ist sicherzustellen, dass Ihr Host sich selbst auflösen kann, mit

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

und erstellen Sie einen SSH-Schlüssel (falls noch nicht vorhanden) und fügen Sie ihn zu authorized_keys hinzu (Sie benötigen einen laufenden SSH-Server):

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

Das folgende Beispiel führt einen HTTP-Banner-Grab auf google.com vom lokalen Host aus

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

Verteilte Verwendung

Um einen verteilten Scan durchzuführen, müssen die Hosts, die von scannerl zur Verteilung der Arbeit verwendet werden, vorbereitet werden. Weitere Informationen finden Sie unter Verteiltes Setup.

Scannerl erwartet eine Liste der zu verwendenden Slaves (bereitgestellt durch die -s oder -S Schalter).

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

Verfügbare Module auflisten

Scannerl listet die verfügbaren Module (sowohl Ausgabemodule als auch Fingerprinting-Module) mit dem -l Schalter auf:

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)

Modulargumente

Argumente können Modulen mit einem Doppelpunkt übergeben werden. Beispiel für das file Ausgabemodul:

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

Ergebnisformat

Das von scannerl an die Ausgabemodule zurückgegebene Ergebnis hat die folgende Form:

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

Wobei

  • module: das verwendete Modul (Erlang-Atom)
  • target: IP oder Hostname (String oder IPv4-Adresse)
  • port: der Port (Integer)
  • result: siehe unten

Der result-Teil hat die Form:

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

Wobei {status, type} eines der folgenden Tupel ist:

  • {ok, result}: Das Fingerprinting des Ziels war erfolgreich
  • {error, up}: Das Fingerprinting war nicht erfolgreich, aber das Ziel hat geantwortet
  • {error, unknown}: Das Fingerprinting ist fehlgeschlagen

Value ist der zurückgegebene Wert – entweder ein Atom oder eine Liste von Elementen

Scannerl erweitern

Scannerl wurde mit Blick auf Modularität entwickelt und implementiert. Es ist einfach, neue Module hinzuzufügen:

  • Fingerprinting-Modul: um ein bestimmtes Protokoll oder einen bestimmten Dienst abzufragen. Als Beispiel ermöglicht das Modul fp_httpbg.erl das Abrufen des server-Eintrags in der HTTP-Antwort.
  • Ausgabemodul: um in eine bestimmte Datenbank/ein bestimmtes Dateisystem auszugeben oder das Ergebnis in einem bestimmten Format auszugeben. Beispielsweise ermöglichen die Module out_file.erl und out_stdout.erl die Ausgabe in eine Datei bzw. in stdout (Standardverhalten, falls nicht angegeben).

Um neue Module zu erstellen, folgen Sie einfach dem Verhalten (fp_module.erl für Fingerprinting-Module und out_behavior.erl für Ausgabemodule) und implementieren Sie Ihre Module.

Neue Module können entweder zur Kompilierzeit oder dynamisch als externe Datei hinzugefügt werden.

Weitere Informationen finden Sie auf der Wiki-Seite.

Mitwirken

Zögern Sie nicht, ein Issue oder einen PR zu eröffnen.

Lizenz und Urheberrecht

Copyright(c) 2017 Nagravision SA.

Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU General Public License Version 3, wie von der Free Software Foundation veröffentlicht, weiterverteilen und/oder modifizieren.

Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne die stillschweigende Garantie der HANDELSÜBLICHKEIT oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Details finden Sie in der GNU General Public License.

Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Wenn nicht, sehen Sie unter http://www.gnu.org/licenses/.

Tool herunterladen