
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.
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>
Um Ergebnisse zu beschleunigen, indem während des Scans keine DNS-Abfragen durchgeführt werden, verwenden Sie die Option -n. Deaktivieren Sie außerdem Pings zur Ermittlung, ob das Gerät aktiv ist, indem Sie für vollständige Ergebnisse die Option -Pn verwenden.
nmap -sU -Pn -p 47808 -n --script BACnet-discover-enumerate <host>
####Hinweise
Die offizielle Version dieses Skripts wird gepflegt unter: https://github.com/digitalbond/Redpoint/blob/master/BACnet-discover-enumerate.nse
Dieses Skript verwendet den standardmäßigen BACnet-Quell- und Zielport UDP 47808.
Neuere (nach dem 25. Februar 2004) BACnet-Geräte müssen laut Spezifikation auf bestimmte Anfragen antworten, die eine 'Catchall'-Objektkennung mit einer eigenen gültigen Instanznummer verwenden (siehe ANSI/ASHRAE Addendum a zu ANSI/ASHRAE Standard 135-2001). Ältere BACnet-Geräte antworten möglicherweise nicht auf diesen Catchall und senden stattdessen ein BACnet-Fehlerpaket.
Dieses Skript versucht nicht, einem BACnet-Netzwerk als Fremdgerät beizutreten; es sendet lediglich BACnet-Anfragen direkt an ein über IP erreichbares Gerät.
== ###codesys-v2-discover.nse ![codesys-v2-discover Beispielausgabe] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/codesys-v2-discover-win.png)
####Autoren
Stephen Hilt, Reid Wightman
####Zweck und Beschreibung
Das Skript codesys-v2-discover.nse identifiziert SPS, die die von 3S-Software GmbH entwickelte Ladder-Logic-Laufzeitumgebung der Version 2 ausführen. Diese Controller verwenden ein proprietäres Binärprotokoll zum Installieren neuer Ladder-Logik sowie zum Debuggen der laufenden Ladder-Logik. Das Protokoll kann eine Authentifizierung erfordern. In der Praxis unterstützen nur wenige Geräte dieses Verhalten. Dieses Skript testet keine Authentifizierung.
Dieses Skript sendet eine einfache Identifikationsanfrage an das Gerät. Die Antwortnachricht kann das Betriebssystem und das spezifische Point-Release des auf der SPS laufenden CoDeSys enthalten.
####Verlauf und Hintergrund
Digital Bond veröffentlichte im April 2012 Details darüber, dass das CoDeSys-Laufzeitsystem von Natur aus unsicher ist (insecure-by-design). Das Protokoll verwendet normalerweise TCP/1200 oder TCP/2455 als Steuerport. Das Steuerprotokoll enthält Funktionen zum Hoch- und Herunterladen von Dateien von den Controllern. Das Protokoll kann auch eine Befehlsshell bereitstellen, die zusätzliche Funktionen bietet. Zu den Shell-Funktionen gehört typischerweise die Möglichkeit, die aktuell laufende Ladder-Logik zu starten und zu stoppen sowie Debugging-Informationen vom Controller abzurufen.
Das ursprüngliche Advisory galt nur für Version 2 der Laufzeitumgebung. Digital Bond veröffentlichte außerdem ein Proof-of-Concept-Nmap-Skript, das ursprünglich von HD Moore im Rahmen seines Internet-Scanning-Projekts geschrieben wurde.
Für diese Version des Protokolls wurde auch ein Nessus-Skript erstellt. Das Nessus-Skript enthält jedoch einen Fehler und prüft Controller mit Big-Endian-CPUs nicht korrekt.
####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 enip-enumerate.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 codesys-v2-discover.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von enip-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root erfolgen.
sudo mv codesys-v2-discover.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster bzw. einer Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach EtherNet/IP durchsuchen möchten.
Windows: nmap -p 1200,2455 --script codesys-v2-discover <host>
Linux: sudo nmap -p 1200,2455 --script codesys-v2-discover <host>
####Hinweise
Die offizielle Version dieses Skripts wird gepflegt unter:https://github.com/digitalbond/Redpoint/codesys-v2-discover.nse
Dieses Skript versucht, die CoDeSys-Anfragen an jeden offenen Port zu senden. Während die Standardports 1200 oder 2455 von den meisten Controllern verwendet werden, nutzen einige Controller alternative Ports wie 1201, 1217 und weitere Ports.
== ###enip-enumerate.nse ![enip-enumerate Beispielausgabe] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/enip.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von enip-enumerate.nse besteht darin, EtherNet/IP-Geräte zu identifizieren und zu enumerieren. Rockwell Automation / Allen Bradley hat das Protokoll entwickelt und ist der Haupthersteller dieser Geräte, z. B. ControlLogix und MicroLogix. Es ist jedoch ein offener Standard, und eine Reihe von Herstellern bieten EtherNet/IP-Schnittstellenkarten oder -Lösungen an.
Ein EtherNet/IP-Gerät wird eindeutig identifiziert, indem TCP/44818 mit einer List-Identities-Nachricht (0x63) abgefragt wird. Die Antwortnachrichten zeigen, ob es sich um ein EtherNet/IP-Gerät handelt, und die Informationen werden zur Enumeration des Geräts geparst.
Die EtherNet/IP-Anfrage List Identities ruft grundlegende Informationen über das Gerät ab, die als „elektronischer Schlüssel" (electronic key) des Geräts bezeichnet werden. Zu den Informationen gehören Hersteller (Vendor), Produktname (Product Name), Seriennummer (Serial Number), Gerätetyp (Device Type), Produktcode (Product Code) und Revisionsnummer (Revision Number). Darüber hinaus parst das Skript die konfigurierte IP-Adresse des Geräts aus dem Socket-Address-Feld im EtherNet/IP-Frame des Pakets.
Die von diesem Skript geparsten EtherNet/IP-Eigenschaften sind:
Vendor - Ein Zwei-Byte-Integer, der zum Nachschlagen des Herstellernamens verwendet wird
Product Name - Eine Zeichenkette, die eine kurze Beschreibung des Produkts/der Produktfamilie darstellt; maximale Länge 32 Zeichen
Serial Number - Eine sechs Byte lange Hexadezimalzahl, die im Little-Endian-Format gespeichert ist
Device Type - Ein Zwei-Byte-Integer, der zum Nachschlagen des Gerätetyps verwendet wird. Dieses Feld wird oft nicht verwendet und auf 0 gesetzt.
Product Code - Der vom Hersteller vergebene Product Code identifiziert ein bestimmtes Produkt innerhalb eines Gerätetyps. Das Skript hat keinen Zugriff auf die Produktcodetabellen des Herstellers, daher wird die Nummer angezeigt.
Revision - Zwei Ein-Byte-Integer, die die Haupt- und Nebenrevisionsnummer des Geräts angeben
Device IP - Vier Ein-Byte-Integer, die die konfigurierte IP-Adresse des Geräts darstellen. Diese Adresse weicht häufig von der vom Skript gescannten IP-Adresse ab.
####Verlauf und Hintergrund
Aus dem Wikipedia-Artikel über EtherNet/IP http://en.wikipedia.org/wiki/EtherNet/IP
EtherNet/IP wurde Ende der 1990er Jahre von Rockwell Automation als Teil der industriellen Ethernet-Netzwerklösungen von Rockwell entwickelt. Rockwell gab EtherNet/IP seinen Namen und übergab es an ODVA, das heute das Protokoll verwaltet und die Interoperabilität von Systemen mehrerer Hersteller sicherstellt, indem es die Einhaltung etablierter Standards verlangt, wenn heute neue Produkte entwickelt werden, die das Protokoll nutzen.
EtherNet/IP wird am häufigsten in industriellen Automatisierungssteuerungssystemen eingesetzt, z. B. in Wasseraufbereitungsanlagen, Fertigungsstätten und Versorgungseinrichtungen. Mehrere Hersteller von Steuerungssystemen haben programmierbare Automatisierungscontroller und E/A entwickelt, die über EtherNet/IP kommunizieren können.
####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 enip-enumerate.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 enip-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von enip-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root erfolgen.
sudo mv enip-enumerate.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster bzw. einer Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach EtherNet/IP durchsuchen möchten.
Windows: nmap -p 44818 --script enip-enumerate <host>
Linux: sudo nmap -p 44818 --script enip-enumerate <host>
####Hinweise
Die offizielle Version dieses Skripts wird gepflegt unter:https://github.com/digitalbond/Redpoint/enip-enumerate.nse
Dieses Skript verwendet den standardmäßigen Ethernet/IP-Zielport TCP 44818.
==
###fox-info.nse ![fox-info Beispielausgabe] (http://www.digitalbond.com/wp-content/uploads/2014/10/fox-example.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von fox-info.nse besteht darin, zunächst Geräte zu identifizieren, die das Niagara-Fox-Protokoll ausführen. Dieses Skript basiert auf den Arbeiten und Beispielen von Billy Rios und Terry McCorkle.
Nach erfolgreicher Verbindung zu einem Niagara-Fox-Gerät parst das Skript die vom Gerät gesendete Antwort und zeigt die enumerierten Informationen an.
Die von diesem Skript abgefragten Niagara-Fox-Eigenschaften sind:
Fox Version - Die Version des Fox-Protokolls, die derzeit auf dem Gerät ausgeführt wird.
Host Name - Der Hostname des Geräts. Dies ist normalerweise der Workstation-Name des entfernten Geräts.
Host Address - Die auf dem Gerät konfigurierte IP-Adresse. Dies kann die gescannte IP-Adresse oder eine private Adresse sein, wenn sich das Gerät hinter etwas befindet, das Netzwerkadressübersetzung (NAT) durchführt.
Application Name - Der Name der Anwendung, die auf dem entfernten Gerät ausgeführt wird. Dies ist typischerweise entweder „Workbench" oder „Station".
Application Version - Die Versionsnummer des zuvor enumerierten Anwendungsnamens.
VM Name - Der Name der Java Virtual Machine, die die Anwendung ausführt.
VM Version - Die Versionsnummer der VM, die auf dem entfernten Gerät ausgeführt wird. Dies ist höchstwahrscheinlich die Versionsnummer von Java HotSpot.
OS Name - Name des Betriebssystems, das das Fox-Protokoll auf dem Gerät ausführt, z. B. QNX oder Windows XP.
Time Zone - Die auf dem Gerät konfigurierte lokale Zeitzone.
Host ID - Eine eindeutige ID zur Identifizierung des Geräts.
VM UUID - Die Universally Unique Identifier der Java-VM.
Brand ID - Jede lizenzierte Station und jedes lizenzierte Werkzeug hat eine Markenkennung (Brand Identifier). Dieses Feld enthält eine Textbeschreibung, die der OEM als Kennung für seine Produktlinie wählt. Jede Station oder jedes Werkzeug kann nur einen BrandID-Eintrag haben.
####Verlauf und Hintergrund
Fox ist ein proprietäres TCP/IP-Protokoll, das für die Kommunikation zwischen Stationen sowie zwischen Workbench und Station im Niagara Framework der Gebäudeautomationslösungen von Tridium verwendet wird. Tridium ist eine hundertprozentige Tochtergesellschaft von Honeywell.
####Installation
Dieses Skript benötigt Nmap zur Ausführung. Falls Sie Nmap nicht haben, laden Sie Nmap herunter und installieren Sie es, siehe: http://nmap.org/download.html
#####Windows
Verschieben Sie fox-info.nse nach dem Herunterladen in das NSE-Skriptverzeichnis. Dieser Vorgang muss als Administrator durchgeführt werden. Gehen Sie zu Start -> Programme -> Zubehör und klicken Sie mit der rechten Maustaste auf 'Eingabeaufforderung'. Wählen Sie 'Als Administrator ausführen'.
move fox-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Verschieben Sie fox-info.nse nach dem Herunterladen in das NSE-Skriptverzeichnis. Dies muss als sudo/root erfolgen.
sudo mv fox-info.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 Geräten durchsuchen möchten, die das Niagara-Fox-Protokoll unterstützen.
Windows: nmap -p 1911 --script fox-info <host>
Linux: sudo nmap -p 1911 --script fox-info <host>
####Hinweise
Die offizielle Version dieses Skripts wird gepflegt unter: https://github.com/digitalbond/Redpoint/blob/master/fox-info.nse
Dieses Skript verwendet den standardmäßigen Niagara-Fox-Quell- und Zielport TCP 1911.
==
###modicon-info.nse ![modicon-info Beispielausgabe] (http://www.digitalbond.com/wp-content/uploads/2014/09/Modicon.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von modicon-info.nse besteht darin, zunächst Modicon-SPS von Schneider Electric zu identifizieren und zu enumerieren.
Das Skript ermittelt zunächst, ob ein mit dem IP-Netzwerk verbundenes Gerät eine Modbus-Funktionscode-43-Anfrage sendet. Die Antwort reicht aus, um Modbus-Geräte zu identifizieren, selbst wenn sie Funktionscode 43 nicht unterstützen. Wenn der Herstellername in der Antwort die Zeichenfolge Schneider enthält, enumeriert das Skript das Gerät mithilfe des proprietären Schneider-Electric-Modbus-Funktionscodes 90.
Die in der Skriptausgabe enthaltenen Eigenschaften von Modbus-Funktionscode 43 und Funktionscode 90 sind:
Vendor Name - Dieses Skript ignoriert alle Geräte, die nicht „Schneider" enthalten.2) Netzwerkmodul - Das Ethernet-Kommunikationsmodul in der Modicon-SPS.
CPU-Modul - Das CPU-Modul in der Modicon-SPS.
Firmware - Die Firmware-Version auf dem CPU-Modul in der Modicon-SPS.
Speicherkarte - Die Modellnummer der Speicherkarte im CPU-Modul.
Projektinformationen - Verschiedene Informationen über das Projekt, wie den Projektnamen, die Version von Unity Pro, die zu seiner Konfiguration verwendet wurde, sowie den Namen der Workstation, die die SPS programmiert hat. Einige Geräte liefern den Speicherort der .stu-Datei auf der Workstation, die das Gerät konfiguriert hat.
Projektrevision - Die Revision des Projekts, das auf der SPS läuft. Die Projektrevisionsnummer wird jedes Mal um 1 erhöht, wenn das Projekt erstellt und an die SPS übertragen wird.
Datum der letzten Projektänderung - Ein Zeitstempel, der speichert, wann die SPS zuletzt von einem Techniker geändert wurde.
####Geschichte und Hintergrund
Aus dem Wikipedia-Artikel über speicherprogrammierbare Steuerungen http://en.wikipedia.org/wiki/Programmable_logic_controller#History:
1968 gab GM Hydra-Matic (die Automatikgetriebe-Abteilung von General Motors) eine Ausschreibung für einen elektronischen Ersatz für festverdrahtete Relaissysteme heraus, basierend auf einem Whitepaper des Ingenieurs Edward R. Clark. Der Siegervorschlag kam von Bedford Associates aus Bedford, Massachusetts. Das Ergebnis war die erste SPS, die als 084 bezeichnet wurde, weil sie das vierundachtzigste Projekt von Bedford Associates war.[2] Bedford Associates gründete ein neues Unternehmen, das sich der Entwicklung, Herstellung, dem Verkauf und dem Kundendienst dieses neuen Produkts widmete: Modicon, was für MOdular DIgital CONtroller stand. Eine der Personen, die an diesem Projekt arbeiteten, war Dick Morley, der als der „Vater" der SPS gilt.[3] Die Marke Modicon wurde 1977 an Gould Electronics verkauft und später von der deutschen Firma AEG und danach von dem französischen Unternehmen Schneider Electric übernommen, dem heutigen Eigentümer.
####Installation
Dieses Skript benötigt Nmap, um ausgeführt zu werden. Falls Sie Nmap nicht haben, laden Sie Nmap herunter und installieren Sie es.
http://nmap.org/download.html
#####Windows
Nach dem Herunterladen von modicon-info.nse verschieben Sie es in das NSE-Skriptverzeichnis. Dafür sind Administratorrechte erforderlich. Gehen Sie zu Start -> Programme -> Zubehör, und klicken Sie mit der rechten Maustaste auf ‚Eingabeaufforderung'. Wählen Sie ‚Als Administrator ausführen'.
move modicon-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von modicon-info.nse verschieben Sie es in das NSE-Skriptverzeichnis. Dies muss als sudo/root ausgeführt werden.
sudo mv modicon-info.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster/Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach Modicon-SPS scannen möchten.
Windows: nmap -p 502 --script modicon-info.nse -sV <host>
Linux: sudo nmap -p 502 --script modicon-info.nse -sV <host>
####Hinweise
Die offizielle Version dieses Skripts wird unter folgender Adresse gepflegt:https://github.com/digitalbond/Redpoint/modicon-info.nse
Dieses Skript verwendet den standardmäßigen Modbus-Zielport TCP 502.
== ###omrontcp-info.nse & omronudp-info.nse ![omrontcp/udp-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/Region.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von omrontcp-info und omronudp-info besteht darin, OMRON-FINS-Geräte zu identifizieren und aufzulisten. Omron hat das Protokoll entwickelt und ist der Haupthersteller der Geräte, die dieses Protokoll unterstützen.
Ein OMRON-FINS-Gerät wird eindeutig identifiziert, indem TCP/9600 oder UDP 9600 mit einem Read Controller Status (0x0501) abgefragt wird. Die Antwortmeldungen bestimmen, ob es sich um ein OMRON-FINS-Gerät handelt, und parsen die Informationen, um das Gerät aufzulisten.
Der OMRON-FINS-Read Controller Status ruft grundlegende Informationen über das Gerät ab, wie etwa Controller-Modell, Controller-Version, Programmbereichsgröße, IOM-Größe, Anzahl der DM-Wörter, Timer/Zähler-Größe, Größe des erweiterten DM-Bereichs, Anzahl der Schritte/Übergänge, Art der Speicherkarte und Speicherkartengröße.
Die von diesem Skript geparsten OMRON-FINS-Eigenschaften sind:
Controller-Modell - Eine Zeichenkette von höchstens 20 Bytes, die das Controller-Modell darstellt.
Controller-Version - Eine Zeichenkette, die eine Versionsnummer darstellt und nicht größer als 20 Bytes ist.
Für Systemnutzung - Für die Systemnutzung reserviert. Die Informationen werden gesammelt, um zu sehen, ob dieses Feld etwas Interessantes enthält.
Programmbereichsgröße - Die Größe von PC-Setup und Programmbereich.
IOM-Größe - Die Größe des Bereichs, in dem Bit-/Wortbefehle verwendet werden können.
Anzahl der DM-Wörter - Gesamtzahl der Wörter im DM-Bereich.
Timer/Zähler-Größe - Maximale Anzahl verfügbarer Timer/Zähler.
Größe des erweiterten DM-Bereichs - Bänke im erweiterten DM-Bereich
Anzahl der Schritte/Übergänge - Maximale Anzahl verfügbarer Schritte/Übergänge
Art der Speicherkarte - 00: Keine Speicherkarte 01: SPRAM 02: EPROM 03: EEPROM
Speicherkartengröße - Größe der Speicherkarte in Kb
####Geschichte und Hintergrund
FINS oder Factory Intelligent Network Services ist ein Protokoll, das Befehle zur Kommunikation mit SPS nutzt. Das Protokoll unterstützt sowohl eine Version über UDP als auch eine Version über TCP. Es gibt einige Unterschiede zwischen den beiden Protokollen, weshalb zwei Skripte geschrieben wurden, um das Scannen von TCP- und UDP-Diensten zu unterstützen.
OMRON FINS wird in industriellen Automatisierungssteuerungssystemen eingesetzt, wie etwa für Wasseraufbereitungsanlagen, Fertigungsstätten und Versorgungsunternehmen.
####Installation
Dieses Skript benötigt Nmap, um ausgeführt zu werden. 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 enip-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als Administrator ausgeführt werden. Gehen Sie zu Start -> Programme -> Zubehör, und klicken Sie mit der rechten Maustaste auf ‚Eingabeaufforderung'. Wählen Sie ‚Als Administrator ausführen'.
move omron*.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von enip-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root ausgeführt werden.
sudo mv omron*.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster/Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach OMRON FINS scannen möchten.
Windows: nmap -p 9600 --script omrontcp-info <host>
Windows: nmap -sU -p 9600 --script omronudp-info <host>
Linux: nmap -p 9600 --script omrontcp-info <host>
Linux: sudo nmap -sU -p 9600 --script omronudp-info <host>
####Hinweise
Die offizielle TCP-Version dieses Skripts wird unter folgender Adresse gepflegt:https://github.com/digitalbond/Redpoint/omrontcp-info.nse
Die offizielle UDP-Version dieses Skripts wird unter folgender Adresse gepflegt:https://github.com/digitalbond/Redpoint/omronudp-info.nse
Diese Skripte verwenden den standardmäßigen FINS- und TCP/FINS-Zielport UDP 9600 bzw. TCP 9600.
== ###pcworx-info.nse ![pcworx-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von pcworx-info.nse besteht darin, Phoenix-Contact-ILC-SPS über das PC-Worx-Protokoll zu identifizieren und aufzulisten. Eine SPS wird eindeutig identifiziert, indem TCP/1962 mit vorab generierten Anfragen abgefragt wird. Die Antwortmeldungen bestimmen, ob es sich um eine PC-Worx-fähige SPS handelt, und führen zu einer weiteren Auflistung.
Insgesamt werden mit diesem Skript drei Pakete an die SPS gesendet, um die Kommunikation aufzubauen und anschließend die Informationen von der SPS anzufordern.
Die von diesem Skript geparsten PC-Worx-Eigenschaften sind:
SPS-Typ - Eine Zeichenkette, die den ILC-SPS-Typ darstellt.
Modellnummer - Eine Zeichenkette aus ASCII-Zahlen, die das Modell der SPS darstellt, wie z. B. eine 2737193.
Firmware-Version - Eine Zeichenkette, die die auf der SPS laufende Firmware-Version darstellt.
Firmware-Datum - Eine Zeichenkette, die das Erstellungsdatum der auf der SPS laufenden Firmware darstellt.
Firmware-Zeit - Eine Zeichenkette, die die Erstellungszeit der auf der SPS laufenden Firmware darstellt.
####Geschichte und Hintergrund
Von der Produktwebseite von Phoenix Contact Link
PC Worx ist die durchgängige Engineering-Software für alle Steuerungen von Phoenix Contact. Es vereint Programmierung - gemäß IEC 61131, Feldbus-Konfiguration und Systemdiagnose – in einer einzigen Softwarelösung. Dies gewährleistet eine optimale Interaktion zwischen Hardware und Software. PC Worx kann zur Umsetzung komplexer Automatisierungskonzepte eingesetzt werden. Abhängig von der Anzahl der zu unterstützenden I/Os haben Sie die Wahl zwischen zwei Versionen: PC WORX BASIC und PC WORX PRO.
####Installation
Dieses Skript benötigt Nmap, um ausgeführt zu werden. 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 pcworx-info.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als Administrator ausgeführt werden. Gehen Sie zu Start -> Programme -> Zubehör, und klicken Sie mit der rechten Maustaste auf ‚Eingabeaufforderung'. Wählen Sie ‚Als Administrator ausführen'.
move pcworx-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von pcworx-info.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root ausgeführt werden.
sudo mv pcworx-info.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster/Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach Phoenix-Contact-SPS scannen möchten.
Windows: nmap -p 1962 --script pcworx-info -sV <host>
Linux: nmap -p 1962 --script pcworx-info -sV <host>
####Hinweise
Die offizielle Version dieses Skripts wird unter folgender Adresse gepflegt:https://github.com/digitalbond/Redpoint/pcworx-info.nse
Dieses Skript verwendet den standardmäßigen PC-Worx-Zielport TCP 1962.
==
###proconos-info.nse ![proconos-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Zweck und Beschreibung
Der Zweck von proconos-info.nse besteht darin, SPS über das ProConOS/MultiProg-Protokoll zu identifizieren und aufzulisten. Eine SPS wird eindeutig identifiziert, indem TCP/20547 mit vorab generierten Anfragen abgefragt wird. Die Antwortmeldungen bestimmen, ob es sich um eine ProConOS/MultiProg-fähige SPS handelt, und führen zu einer weiteren Auflistung.
Zum Abfragen dieser Informationen von der SPS ist nur eine Anfrage erforderlich.
Die von diesem Skript geparsten ProConOS/MultiProg-Eigenschaften sind:
Ladder-Logic-Laufzeit - Eine Zeichenkette, die den Laufzeitnamen, die Version und das Erstellungsdatum anzeigt.
SPS-Typ - Eine Zeichenkette, die den Typ der SPS und die Firmware-Version darstellt.
Projektname - Eine Zeichenkette, die den Namen des Projekts darstellt, das aktuell auf der SPS läuft.
Boot-Projekt - Eine Zeichenkette, die den Projektnamen darstellt, der für den Start auf der SPS festgelegt ist.
Projektquellcode - Eine Zeichenkette, die angibt, ob der Quellcode für das Projekt verfügbar ist oder nicht.
####Installation
Dieses Skript benötigt Nmap, um ausgeführt zu werden. 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 proconos-info.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als Administrator ausgeführt werden. Gehen Sie zu Start -> Programme -> Zubehör, und klicken Sie mit der rechten Maustaste auf ‚Eingabeaufforderung'. Wählen Sie ‚Als Administrator ausführen'.
move proconos-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von proconos-info.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root ausgeführt werden.
sudo mv proconos-info.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster/Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach ProConOS/MultiProg-SPS scannen möchten.
Windows: nmap -p 20547 --script proconos-info -sV <host>
Linux: nmap -p 20547 --script proconos-info -sV <host>
####Hinweise
Die offizielle Version dieses Skripts wird unter folgender Adresse gepflegt:https://github.com/digitalbond/Redpoint/proconos-info.nse
Dieses Skript verwendet den standardmäßigen ProConOS/MultiProg-Zielport TCP 20547.
==
###s7-enumerate.nse ![s7-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/S7screenshot.png)
####Autor
Stephen Hilt
Digital Bond, Inc
Hinweis: Dieses Skript soll innerhalb von Nmap die gleiche Funktionalität wie PLCScan bieten. Einige der Informationen, die von PLCScan gesammelt wurden, wurden nicht in dieses NSE übernommen; diese Informationen können aus den empfangenen Paketen geparst werden.
Dank an Positive Research und Dmitry Efanov für die Erstellung von PLCScan
####Zweck und Beschreibung
Der Zweck von s7-enumerate.nse besteht darin, Siemens-SIMATIC-S7-SPS zu identifizieren und aufzulisten. Eine S7 wird eindeutig identifiziert, indem TCP/102 mit vorab generierten COTP- und S7COMM-Nachrichten abgefragt wird. Die Antwortmeldungen bestimmen, ob es sich um eine S7-SPS handelt, und führen zu einer weiteren Auflistung. Hinweis: TCP/102 wird von mehreren Anwendungen verwendet, eine davon ist S7COMM.
Nach erfolgreichem Aufbau der S7-Kommunikation werden zwei S7-Anfragen gesendet.
Diese Anfragen rufen grundlegende Hardware- und Firmware-Informationen sowie einige beschreibende Informationen wie Anlagenkennung und Systemname ab. Diese Informationen werden dann an Nmap zurückgegeben und in den von Nmap unterstützten Standardausgabeformaten dargestellt.
Die von diesem Skript geparsten S7-Eigenschaften sind:
Modul - Eine Zeichenkette, die die Kennung des abgefragten Moduls darstellt. Sie identifiziert das S7-Modell, z. B. 315, 412, 1200, ...
Basishardware - Eine Zeichenkette, die die Kennung der abgefragten Basishardware darstellt.
Version - Eine Zeichenkette, die die Kennung der Version der Basishardware darstellt.
Systemname - Eine Zeichenkette, die den Systemnamen darstellt, der dem Gerät zugewiesen wurde. Dies kann nützliche Informationen liefern, wenn der Anlagenbetreiber eine strukturierte Namenskonvention implementiert hat.
Modultyp - Eine Zeichenkette mit dem Modultypnamen des eingesteckten Moduls.
Seriennummer - Eine Zeichenkette mit der Seriennummer des Moduls. Dies ist vor allem für Inventarzwecke von Interesse.
Copyright - Eine Zeichenkette, die die Urheberrechtsinformationen darstellt. Sie lautet normalerweise „Original Siemens Equipment", aber es ist möglich, dass eine Drittanbieter-Implementierung des S7-Protokollstapels zusätzliche Informationen liefert.
Anlagenkennung - Eine Zeichenkette, die die auf dem Gerät konfigurierte Anlagenkennung darstellt. Diese Zeichenkette ist bei unseren Scans nur selten aufgetaucht, könnte aber nützliche Informationen liefern.
####Geschichte und Hintergrund
Aus dem Wikipedia-Artikel über SIMATIC http://simple.wikipedia.org/wiki/SIMATIC:
SIMATIC ist der Name eines Automatisierungssystems, das vom deutschen Unternehmen Siemens entwickelt wurde. Das Automatisierungssystem steuert Maschinen, die für die industrielle Produktion verwendet werden. Dieses System macht es möglich, dass Maschinen automatisch laufen.
####Installation
Dieses Skript benötigt Nmap, um ausgeführt zu werden. 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 s7-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als Administrator ausgeführt werden. Gehen Sie zu Start -> Programme -> Zubehör, und klicken Sie mit der rechten Maustaste auf ‚Eingabeaufforderung'. Wählen Sie ‚Als Administrator ausführen'.
move s7-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Nach dem Herunterladen von s7-enumerate.nse müssen Sie es in das NSE-Skriptverzeichnis verschieben. Dies muss als sudo/root ausgeführt werden.
sudo mv s7-enumerate.nse /usr/share/nmap/scripts
####Verwendung
Verwenden Sie in einem Terminalfenster/Eingabeaufforderung einen der folgenden Befehle, wobei das Ziel ist, das Sie nach S7-SPS scannen möchten.
Windows: nmap -p 102 --script s7-enumerate -sV <host>
Linux: sudo nmap -p 102 --script s7-enumerate -sV <host>
####Hinweise
Die offizielle Version dieses Skripts wird unter folgender Adresse gepflegt:https://github.com/digitalbond/Redpoint/s7-enumerate.nse
Dieses Skript verwendet den standardmäßigen S7COMMS-Zielport TCP 102.