
Die modulare, verteilte Fingerprinting-Engine
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.
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:
Inhaltsverzeichnis
Weitere Informationen finden Sie im Wiki.
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:
# on debian
$ sudo apt install erlang erlang-src rebar
# on arch
$ sudo pacman -S erlang-nox rebar
Dann bauen Sie scannerl:
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh
Erhalten Sie die Nutzungsinformationen durch Ausführen von
$ ./scannerl -h
Scannerl ist im AUR für Arch-Linux-Benutzer verfügbar
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.
Für einen verteilten Scan werden zwei Arten von Knoten benötigt:
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:
$ ./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>).