
Aktives Fingerprinting-Tool, das 16 eingebettete TCP/IP-Stacks auf Netzwerkgeräten mithilfe von ICMP-, TCP-, HTTP-, SSH- und FTP-Sondierungstechniken zur Schwachstellenbewertung identifiziert.
Das project-memoria-detector Tool zielt darauf ab, festzustellen, ob ein Zielnetzwerkgerät einen bestimmten eingebetteten TCP/IP-Stack ausführt.
Derzeit unterstützt das Tool Fingerabdrücke für 16 eingebettete TCP/IP-Stacks (und deren Varianten):
Einige der oben genannten Stacks wurden während der Project Memoria-Forschung als anfällig befunden.
Das Skript identifiziert die Verwendung der 16 TCP/IP-Stacks auf einem Zielgerät mit den folgenden aktiven Fingerprinting-Methoden:
Obwohl das Skript in einer Laborumgebung getestet wurde, können wir nicht garantieren, dass seine Verwendung gegen jedes mögliche Gerät sicher ist. Fehlerhafte ICMP-Pakete könnten beispielsweise ein Gerät zum Absturz bringen, das einen anderen Stack ausführt. DAHER EMPFEHLEN WIR NICHT, ES DIREKT IN LIVE-UMGEBUNGEN MIT MISSIONSCRITICAL-GERÄTEN ZU VERWENDEN (WIE KRANKENHÄUSER MIT PATIENTENVERBUNDENEN GERÄTEN ODER SICHERHEITSKRITISCHE INDUSTRIELLE STEUERUNGSSYSTEME). Ein idealer Ansatz ist es, Geräte in einer Laborumgebung oder während eines Wartungsfensters zu testen.
Bitte beachten Sie, dass das Tool nur in einer Linux-Testumgebung getestet wurde (jede moderne Linux-Distribution sollte funktionieren). Es wird angenommen, dass die Testumgebung iptables (https://linux.die.net/man/8/iptables) als grundlegende Firewall verwendet.
Das Tool erfordert eine aktuelle Version von Python 3.x (siehe https://www.python.org/, Version >= 3.7.7 wird bevorzugt) sowie Scapy (siehe https://scapy.net/, Version >= 2.4.3 wird bevorzugt).
Um Scapy zusammen mit Python zu installieren und für allgemeine Fehlerbehebung, folgen Sie bitte der Dokumentation hier: https://scapy.readthedocs.io/en/latest/installation.html
Wenn Python bereits auf Ihrem Rechner installiert ist, können Sie die erforderlichen Abhängigkeiten mit pip und der bereitgestellten requirements.txt-Datei installieren:
$ pip install -r requirements.txt
Da Scapy Root-Rechte zum Ausführen benötigt, muss das Tool mit sudo ausgeführt werden, z.B.:
$ sudo python project-memoria-detector.py [options]
Um die verfügbaren Optionen zum Ausführen des Skripts zu sehen, führen Sie es mit der Option -h aus:
$ python project-memoria-detector.py -h
Im Allgemeinen erfordert das Skript mindestens eine einzelne IP-Adresse des Zielgeräts (dieser Parameter kann explizit mit -ip_dst angegeben werden):
$ sudo python project-memoria-detector.py 192.168.3.1
Das Skript unterstützt das Scannen von IP-Adressbereichen. Sie können entweder ein Subnetz mit der CIDR-Notation angeben oder eine .txt-Datei mit einer Reihe von IP-Adressen zum Scannen bereitstellen.
Die CIDR-Notation kann wie folgt verwendet werden (in diesem Beispiel werden die IP-Adressen von 192.168.3.1 bis 192.168.3.254 gescannt:
$ sudo python project-memoria-detector.py 192.168.3.0/24
Sie können auch eine .txt-Datei verwenden, um die gewünschten IP-Adressen anzugeben: Jede IP-Adresse in dieser Datei muss in einer neuen Zeile beginnen. Zum Beispiel können wir eine Datei namens input.txt mit folgendem Inhalt erstellen:
$ cat input.txt
192.168.1.8
192.168.1.9
192.168.3.1
192.168.2.14
Dann können wir das Skript wie folgt ausführen:
$ sudo python project-memoria-detector.py --in-file input.txt
Das Skript verwendet Standardwerte für Ports, um verschiedene Protokolle wie SSH (22), FTP (21) und HTTP (80) zu fingerabzudrucken. Um diese Standardwerte zu überschreiben, können Sie dies tun, indem Sie die Flags wie folgt setzen:
$ sudo python project-memoria-detector.py -ip_dst 192.168.212.42 --tcp-port 80 --http-port 80 --ssh-port 22 --ftp-port 21 -i eth1
Das Skript gibt Übereinstimmungen mit einzelnen Fingerabdrücken sowie den Grad der Sicherheit in runden Klammern aus:
$ sudo python project-memoria-detector.py 192.168.6.42
192.168.6.42 is alive
ICMP => uIP/Contiki (High)
TCP => uIP/Contiki (Medium)
HTTP => uIP/Contiki (High)
SSH => Unknown (No match)
FTP => Unknown (No reply)
Der Grad der Sicherheit eines bestimmten Fingerabdrucks kann High, Medium oder Low sein. No match bedeutet, dass keine Übereinstimmung mit bekannten Fingerabdrücken gefunden wurde, und No reply bedeutet, dass ein bestimmter Port/Dienst nicht verfügbar ist.
Copyright (C) 2020 Forescout Technologies, Inc.
Programm-Lizenz
"Das Programm" bezieht sich auf jedes urheberrechtlich geschützte Werk, das unter dieser Lizenz lizenziert ist. Jeder Lizenznehmer wird als "Sie" angesprochen.
Alle unter dieser Lizenz gewährten Rechte werden für die Dauer des Urheberrechts am Programm gewährt und sind unwiderruflich, sofern die genannten Bedingungen erfüllt sind. Diese Lizenz bestätigt ausdrücklich Ihre uneingeschränkte Erlaubnis, das unveränderte Programm für persönliche, behördliche, geschäftliche oder gemeinnützige Zwecke auszuführen. Es ist Ihnen untersagt, das Programm in abgeleiteten Werken für kommerzielle Zwecke zu verwenden. Es ist Ihnen untersagt, das Programm zu modifizieren, um es in einem kommerziellen Produkt oder Dienst zu verwenden, sei es allein oder in Verbindung mit anderem Code, entweder herunterladbar oder als Dienst zugänglich. "Abgeleitete Werke" bezeichnen jedes Werk, sei es in Quell- oder Objektform, das auf (oder abgeleitet von) dem Programm basiert und bei dem die redaktionellen Überarbeitungen, Anmerkungen, Ausarbeitungen oder anderen Modifikationen als Ganzes ein ursprüngliches Werk der Urheberschaft darstellen.
Sie dürfen unveränderte Kopien des Quellcodes des Programms, wie Sie ihn erhalten, in jedem Medium weitergeben, vorausgesetzt, dass Sie auf jeder Kopie deutlich und angemessen einen entsprechenden Urheberrechtshinweis veröffentlichen; alle Hinweise, die besagen, dass diese Lizenz auf den Code zutrifft, intakt lassen; alle Hinweise auf das Fehlen einer Gewährleistung intakt lassen; allen Empfängern eine Kopie dieser Lizenz zusammen mit dem Programm geben; und nicht finanziell von der Weitergabe oder anderweitigen Übertragung des Programms profitieren, weder allein noch in Verbindung mit anderem Code, heruntergeladen oder als Dienst zugänglich.
DAS WIRD OHNE MÄNGELGEWÄHR GELIEFERT, OHNE IRGENDEINE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERBERECHTIGTEN FÜR ANSPRÜCHE, SCHÄDEN ODER ANDERE VERPFLICHTUNGEN HAFTBAR, WEDER AUS EINER VERTRAGS- ODER DELIKTSKLAGE NOCH ANDERWEITIG, DIE SICH AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ERGEBEN.
Diese Lizenz gewährt keine Erlaubnis zur Verwendung der Handelsnamen, Marken, Dienstleistungsmarken oder Produktnamen des Lizenzgebers, außer wenn dies für eine angemessene und übliche Verwendung bei der Beschreibung der Herkunft des Programms und der Wiedergabe des Inhalts des Copyright-Hinweises erforderlich ist.