
Nmap-NSE-Skripte für ICS/SCADA-Erkennung und -Enumeration – BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7 – mithilfe von Protokollabfragen für Sicherheitsbewertungen.
#Redpoint
###ICS-Enumerationstools von Digital Bond
Redpoint ist ein Forschungsprojekt von Digital Bond zur Enumeration von ICS-Anwendungen und -Geräten.
Wir verwenden unsere Redpoint-Tools in Assessments, um ICS-Geräte zu entdecken und Informationen zu sammeln, die für weiterführende Tests hilfreich sind. Ein Teil dieser Tools wird in diesem Repository als Nmap-NSE-Skripte öffentlich zur Verfügung gestellt.
Die Redpoint-Tools verwenden legitime Protokoll- oder Anwendungsbefehle, um Geräte und Anwendungen zu entdecken und zu enumerieren. Es wird nicht versucht, etwas auszunutzen oder zum Absturz zu bringen. Viele ICS-Geräte und -Anwendungen sind jedoch empfindlich und können bei unerwartetem Datenverkehr abstürzen oder unerwartet reagieren – daher ist Vorsicht geboten.
Jedes Skript ist unten dokumentiert und als .nse-Datei in diesem Repository verfügbar.
BACnet-discover-enumerate.nse - BACnet-Geräte identifizieren und enumerieren
codesys-v2-discover.nse - CoDeSys-V2-Controller identifizieren und enumerieren
enip-enumerate.nse - EtherNet/IP-Geräte von Rockwell Automation und anderen Herstellern identifizieren und enumerieren
fox-info.nse - Niagara-Fox-Geräte identifizieren und enumerieren
modicon-info.nse - Schneider-Electric-Modicon-SPS identifizieren und enumerieren
omron-info.nse - Omron-SPS identifizieren und enumerieren
pcworx-info.nse - SPS mit PC-Worx-Protokoll identifizieren und enumerieren
proconos-info.nse - SPS mit ProConOS identifizieren und enumerieren
==
###BACnet-discover-enumerate.nse
![BACnet-discover-enumerate Beispielausgabe] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)
####Autoren
Stephen Hilt and Michael Toecker
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von BACnet-discover-enumerate.nse besteht darin, zunächst zu ermitteln, ob ein mit dem IP-Netzwerk verbundenes Gerät BACnet ausführt. Dies funktioniert, indem das Gerät mit einer vorab generierten BACnet-Nachricht abgefragt wird. Neuere Versionen des BACnet-Protokolls antworten mit einer Bestätigung, ältere Versionen liefern eine BACnet-Fehlermeldung zurück. Das Vorhandensein entweder der Bestätigung oder des Fehlers reicht aus, um nachzuweisen, dass sich an der Ziel-IP-Adresse ein BACnet-fähiges Gerät befindet.
Zweitens versucht dieses Skript, falls eine Bestätigung empfangen wird, mehrere BACnet-Eigenschaften auf einem antwortenden BACnet-Gerät zu enumerieren. Auch hier wird das Gerät mit einer vorab generierten BACnet-Nachricht abgefragt. Eine erfolgreiche Enumeration verwendet speziell erstellte Anfragen und schlägt fehl, wenn das BACnet-Gerät die Eigenschaft nicht unterstützt.
Die von diesem Skript abgefragten BACnet-Eigenschaften sind:
Vendor ID - Eine Nummer, die einem registrierten BACnet-Hersteller entspricht. Das Skript gibt auch den zugehörigen Herstellernamen zurück.
Vendor Number - Eine Zeichenkette, die den auf dem Gerät konfigurierten Herstellernamen darstellt. Diese kann von der Vendor ID abweichen, da die Vendor ID die bei ASHARE registrierte Nummer ist.
Object Identifier - Eine Nummer, die das Gerät eindeutig identifiziert. Ist der Object-Identifier bekannt, können mit BACnet-Client-Software Befehle gesendet werden, einschließlich solcher, die Werte, Programme, Zeitpläne und andere betriebliche Informationen auf BACnet-Geräten ändern. Dies ist eine Pflichteigenschaft für alle BACnet-Geräte.
Firmware Revision - Die Revisionsnummer der Firmware auf dem BACnet-Gerät.
Application Software Revision - Die Revisionsnummer der Software, die für die BACnet-Kommunikation verwendet wird.
Object Name - Eine benutzerdefinierte Zeichenkette, die dem BACnet-Gerät einen Namen zuweist und üblicherweise von Technikern bei der Inbetriebnahme eingegeben wird. Dies ist eine Pflichteigenschaft für alle BACnet-Geräte.
Model Name - Das Modell des BACnet-Geräts
Description - Eine benutzerdefinierte Zeichenkette zur Beschreibung des Geräts, üblicherweise von Technikern bei der Inbetriebnahme eingegeben
Location - Eine benutzerdefinierte Zeichenkette zur Erfassung des physischen Standorts des Geräts, üblicherweise von Technikern bei der Inbetriebnahme eingegeben
Broadcast Distribution Table (BDT) - Eine Liste der BACnet Broadcast Management Devices (BBMD) im BACnet-Netzwerk. Dadurch werden alle Subnetze identifiziert, die Teil des BACnet-Netzwerks sind.
Foreign Device Table (FDT) - Eine Liste der beim BACnet-Gerät registrierten Fremdgeräte. Ein Fremdgerät ist jedes Gerät, das sich nicht in einem Subnetz befindet, das Teil des BACnet-Netzwerks ist, und nicht in der BDT aufgeführt ist. Fremdgeräte befinden sich häufig in externen Netzwerken und könnten eine IP-Adresse eines Angreifers sein.
Die BDT und FDT können große Listen sein und sind bei einem großen Nmap-Scan möglicherweise nicht erwünscht. Das Basisskript lädt die BDT und FDT nicht herunter. Führen Sie den Befehl mit --script-args full=yes aus, um die BDT und FDT abzurufen – siehe Abschnitt Verwendung.
![BACnet-discover-enumerate Beispielausgabe mit BDT und FDT] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)
Dieses Skript nutzt eine 2004 zur BACnet-Spezifikation hinzugefügte Funktion, um den Object Identifier eines Geräts mit einer einzigen Anfrage abzurufen, ohne dem BACnet-Netzwerk als Fremdgerät beizutreten. (Einzelheiten siehe ANSI/ASHRAE Addendum a zu ANSI/ASHRAE Standard 135-2001)
####Verlauf und Hintergrund
Aus dem Wikipedia-Artikel über BACnet http://en.wikipedia.org/wiki/BACnet:
BACnet ist ein Kommunikationsprotokoll für Gebäudeautomations- und Steuerungsnetzwerke. Es ist ein ASHRAE-, ANSI- und ISO-Standard[1]-Protokoll. Der Standardport für BACnet-Datenverkehr ist UDP/47808.
BACnet wird in Gebäudeautomations- und Steuerungssystemen für Anwendungen wie Heizungs-, Lüftungs- und Klimatisierungssteuerung, Beleuchtungssteuerung, Zugangskontrolle und Brandmeldesysteme sowie deren zugehörige Ausrüstung eingesetzt. Das BACnet-Protokoll bietet Mechanismen für computergestützte Gebäudeautomationsgeräte, Informationen auszutauschen, unabhängig von der jeweiligen Gebäudefunktion, die sie ausführen.
####Installation
Dieses Skript benötigt nmap zur Ausführung. Falls Sie Nmap nicht haben, laden Sie Nmap herunter und installieren Sie es gemäß den Nmap-Anweisungen. http://nmap.org/download.html
#####Windows
Nach dem Herunterladen von bacnet-discover.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als Administrator erfolgen. Gehen Sie zu Start -> Programme -> Zubehör und klicken Sie mit der rechten Maustaste auf 'Eingabeaufforderung'. Wählen Sie 'Als Administrator ausführen'.
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von BACnet-discover-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root erfolgen.
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster bzw. einer Eingabeaufforderung einen der folgenden Befehle, wobei host das Ziel ist, das Sie nach BACNet durchsuchen möchten. Verwenden Sie --script-args full=yes, wenn die Ausgabe die BDT und FDT enthalten soll.