Ähnlich wie auch die Redpoint-Skripte von Digital Bond, soll es mit diesen Nmap Skripten möglich sein, anhand eines Skripts Industrial Ethernet Geräte automatisiert zu erkennen und zu identifizieren. Bisher existieren jedoch noch keine Skripte, die Embedded-PCs der Firma Beckhoff identifizieren können.
Aus den zuvor gesammelten Daten gilt es nun eine ausführliche Liste von Diensten und offenen Ports zu erstellen, welche ein Gerät eindeutig beschreiben.
Im Rahmen dieser Arbeit, wurde ein Nmap Skript in der Skriptsprache Lua geschrieben, welches als Proof-of-Concept für die Identifikation von Beckhoff-Geräten in industriellen Netzen dienen soll.
Vorgehensweise
Das Skript betrachtet offene Ports und laufende Dienste auf den Zielgeräten und vergleicht diese mit definierten Schablonen von Industrial Ethernet Geräten. Diese Schablonen legen folgende
Informa-tionen fest:
1. Welche Dienste sollen / müssen auf dem Gerät laufen?
2. Welche Relevanz hat der Dienst für die Identifikation des Geräts?
Punkt 2 hat zur Folge, dass manche Dienste einen höheren Einfluss auf die Identifikation von Geräten haben als andere. Die Übereinstimmung eines analysierten Systems mit einer Schablone wird anhand eines "Matching Scores" angegeben. Diese Wertung gibt an, zu wie viel Prozent das System die Anforderungen an den Gerätetyp erfüllt.
Die Gewichtung der Dienste kann in drei verschiedene Kategorien eingeteilt werden, welche unterschiedliche Auswirkungen auf die Wertung haben.
MUSS-Dienste
MUSS-Dienste müssen auf jeden Fall auf einem festgelegten Port des Zielsystems laufen. Kann der Dienst nicht auf dem angegeben Port erkannt werden, wird die Wertung auf 0 gesetzt, was dazu
führt, dass der Gerätetyp für das System ausgeschlossen werden kann. MUSS-Dienste erlauben es, ein Gerät eindeutig einem Hersteller zuzuweisen (z.B. der TwinCAT-Dienst bei Beckhoff-Geräten und
ISO-TSAP bei Siemens SIMATIC-Geräten).
SOLL-Dienste
SOLL-Dienste haben eine geringere Gewichtung als MUSS-Dienste, führen trotzdem zu hohem Punkteabzug in der Wertung, wenn diese nicht vorhanden sind. SOLL-Dienste erlauben es, ein Gerät einem
Modelltyp zuzuweisen (z.B. ISAKMP oder IKE bei Beckhoff CX9020).
Optionale Dienste
Optionale Dienste haben nur wenig Einfluss auf die Bewertung des Zielsystems. Wird ein optionaler Dienst auf einem System nicht erkannt, kommt es zu einem geringen Punkteabzug bei der Wertung. Bei
optionalen Diensten handelt es sich um Dienste, welche nicht standardmäßig auf dem Gerät laufen, oder möglicherweise durch ein Firmware-Update vom Hersteller abgeschaltet wurden (z.B. Telnet bei
Beckhoff CX5020).
Unterstützte Geräte
Drei Embedded-PCs bzw. PLCs werden bisher durch das Skript erkannt. Im folgenden werden die SOLL-, MUSS- und optionalen Dienste der Geräte aufgelistet und die jeweiligen Gewichtungen angegeben.
Beckhoff CX5020
Beckhoff CX9020
Die Abbildung unten zeigt die Ausgabe des Skripts nach Scannen eines CX5020 Embedded-PCs. Das Skript gibt die jeweiligen Wertungen aller bekannten Geräte-Schablonen aus, sowie Informationen über laufende Dienste.
Das Nmap Skript ist leicht erweiterbar und erlaubt es Entwicklern, neue Gerätetypen einzufügen. Gerätetypen sind in einer Tabelle services definiert, welche die verschiedenen Dienste festlegen. Die Struktur der Tabelle wird am Beispiel des Beckhoff CX5020 Embedded-PCs dargestellt:
Die Gewichtung der Dienst-Kategorien kann anhand einer zweiten Tabelle weights festgelegt werden:
Einschränkungen
Nmap bietet NSE-Skripten nicht die Moglichkeit festzulegen, welche Ports gescannt werden sollen. Zu scannende Ports sind nur über eine Angabe anhand des Port-Parameters -p im Aufruf des Nmap-Kommandos möglich. Dies führt dazu, dass alle Ports explizit im Nmap-Kommando angegeben werden mussen.
Um das industrial-ethernet.nse-Skript auszuführen, muss deshalb folgendes Kommando eingegeben werden:
Außerdem ist es nicht möglich, die Resultate anderer Skripte, wie z.B. snmp-brute.nse oder http-enum.nse, in einem Skript zu verwerten. Dies hat zur Folge, dass für die Identifikation eine Reihe von Informationen der genutzten Dienste nicht verwertet werden können. Dennoch können die genannten Skripte in anderen Scans genutzt werden, um ein System manuell zu identifizieren.
Des Weiteren gibt das Skript nur eine Abschätzung des Gerätetyps zurück und kann nicht eindeutig einschätzen, um welches Gerät es sich tatsächlich handelt. Dies ist auf zwei Probleme zurückzuführen:
Trotz dieser Einschränkungen kann das Skript einen ersten Einblick in das Netzwerk geben und bei der Identifikation der genutzten Geräte behilflich sein.