
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.