Ein Labor erstellen, um ICS/SCADA-Protokolle zu testen
Resolution
Einführung
Organisationen mit Industrial Control Systems (ICS) sind seit geraumer Zeit auf dem Weg, die Grenze zwischen IT (Corporate Network) und OT (ICS Network) zu sichern. Der erste Schritt für viele war, eine einfache Segmentierung zwischen den beiden Netzen mit Firewalls von Palo Alto Networks zu ermöglichen. Dies erfüllte erste Anforderungen an die Sichtbarkeit und Paketkontrolle für bösartige Aktivitäten. Da sich Unternehmen bemühen, die Sicherheitsposition innerhalb von ICS zu verbessern, besteht ein starker Bedarf, vor der Implementierung zu testen. Dieses Dokument wird zeigen, wie man die IT/OT-Grenze simuliert, um AppID, UserID und andere Funktionen innerhalb der Palo Alto Networks Firewall zu testen. Das gesamte Labor kann auf einem einzigen Laptop virtualisiert werden.
Anforderungen
Benötigte Artikel | Hinweise |
Palo Alto vernetzt virtuelles Gerät | Getestet mit einem VM50, PANOS 8.0.6. |
Windows Virtual Machine | Für Java-simulierte HMI-Schnittstelle. |
MAC OSX | Getestet mit 10.12.6, erfordert Xcode-Umgebung (könnte auch auf einem Kali Linux VM installieren). |
VM Fusion für Mac | Getestet mit Fusion pro v 8.5.8. VM-Workstation für Windows kann ebenfalls verwendet werden. |
Modbuspal Java Machine | Mit v 1.6 b getestet. Simuliert die gepolsten SPS-Geräte. |
Mbtget | Klon von github. Simuliert einen Wahl Server. |
Java (auf Windows VM) | Getestet mit JRE v9, 64-Bit. |
Diagramm
VM Fusion konfigurieren
Die beiden im Labor eingesetzten Netzwerke sind beschriftet vmet2 (für SPS-Zone) und VMnet3 (für die Wahl Zone). Das gezeigte Beispiel ist für VM Fusion auf einem Mac, aber das gleiche Prinzip gilt für VM-Workstation. Hinweis: machen Sie noch keine Power auf der VM50 Firewall, es gibt zwei wichtige Schritte, die zuerst zu tun sind.
Vmnet2
Vmnet3
Ein Dritter Netzwerk-Adapter muss in den VM50-Firewall-Einstellungen in VM Fusion hinzugefügt werden.
Weisen Sie die Adapter wie folgt zu:
- Netzwerk-Adapter zu VMnet3
- Netzwerk-Adapter 2 zu Vmnet 3
- Netzwerk-Adapter 3 bis VMnet2
Die VM-Konfigurationsdatei muss für den 3. Netzwerk-Adapter bearbeitet werden. In Fusion, gehen Sie in die Bibliothek und klicken Sie mit der rechten Maustaste auf die VM50 und wählen Sie "Konfigurationsdatei im Finder anzeigen".
Sie klicken dann mit der rechten Maustaste auf die VM-Datei im Ordner und wählen "Paket Inhalte anzeigen".
Finden Sie die. vmx-Datei und bearbeiten Sie Sie mit TextEdit oder einem anderen Texteditor. Vergewissern Sie sich, dass Sie das virtuelle Gerät für Ethernet2 auf "vmxnet3" ändern, wie unten gezeigt. Speichern Sie die Datei. Der Paket Inhalts Ordner kann geschlossen werden. Aus der Fusions Bibliothek kann nun die VM50 Firewall gestartet werden.
Um die Management-IP-Adresse der Firewall zu konfigurieren, folgen Sie den Anweisungen hier:
Zur Anwendung von Geräte Lizenzen und Registrierung:
Konfiguration der ersten Firewall-Richtlinien
Die anfängliche Firewall-Richtlinie wird alle Anwendungen zwischen dem Wahlgebiet und der SPS-Zone ermöglichen. Alle Aktivitäten werden protokolliert und es gibt keine Profile, die an dieser Stelle konfiguriert werden.
Sicherheitsrichtlinien
NAT-Politik
Ethernet-Schnittstellen
Denken Sie an die Standard-statische Route. Ich benutze den Standard-virtuellen Router. Für VMware Fusion ist das reservierte Standard-Gateway IP auf VMnet3 192.168.55.2.
Adress Objekte
Server und Client konfigurieren
Auf dem Windows-Rechner, der als SPS-Geräte dienen wird, sollten Sie seine Ethernet-Schnittstelle in VMnet2 (auf der plczone der Firewall) setzen. Vergewissern Sie sich, dass die Standard-Gateway-Punkte auf die Firewall-Schnittstelle: 192.168.45.20.
Modbuspal wird zur Simulation von SPS-Registern verwendet. Sie können es hier herunterladen:
https://sourceforge.net/projects/modbuspal/files/modbuspal/RC%20version%201.6B/
Es erfordert die Java Runtime Environment. Sobald die Anforderungen erfüllt sind, öffnen Sie ein Befehlsfenster und gehen Sie in das Verzeichnis, in dem modbuspal wohnt, und starten Sie es wie unten gezeigt.
Wir werden einen Modbus-Slave hinzufügen, indem wir "Add" aus dem Modbus-Sklaven Bereich auswählen.
Fügen Sie jetzt einen Slave hinzu, dann klicken Sie auf "hinzufügen".
Nennen Sie den neuen Slave, dann klicken Sie auf das Auge, um zu bevölkern.
Unter der Registerkarte Holding Register fügen Sie die Anzahl der Register hinzu, die Sie testen möchten.
Geben Sie Werte und optional Namen für die von Ihnen erstellten Adressen an.
Machen Sie das gleiche für die Registerkarte Spulen. Fügen Sie binäre Werte und, optional, Namen hinzu.
Schließen Sie das Slave-Fenster, wenn Sie fertig sind. Klicken Sie auf den Knopf aktivieren, um sicherzustellen, dass der Slave aktiviert ist. Dann klicken Sie auf Run, um den Simulator zu starten.
Um das mbtget-Tool zu verwenden, um einen Wahl Server zu simulieren, müssen Sie das Tool von GitHub Klonen. Den kostenlosen Mac/Windows-Client können Sie hier herunterladen:
Optional kann das Tool auf eine virtuelle Kali-Linux-Maschine geklont werden. Um das mbtget-Tool zu klonen, folgen Sie diesen Anweisungen von einem Terminal oder einer Befehlsaufforderung.
Hilfe Bildschirm für mbtget:
Auf dem Laptop, auf dem die Bilder gehostet werden, muss eine statische Route erstellt werden, um den SPS-Simulator zu erreichen.
Für Mac:
# sudo Route-n Add-net 192.168.45.0/24192.168.55.20
Die Umwelt testen
Um sicherzustellen, dass die Bilder richtig funktionieren, öffnen Sie ein Terminalfenster und initiieren Sie eine Umfrage mit mbtget. Die daraus resultierende Umfrage soll die Werte aufzeigen, die Sie in den Holding Registern innerhalb von modbuspal erstellt haben. Der Wert nach "-n" sollte mit der Anzahl der von Ihnen erstellten Register übereinstimmen.
Modbus mit AppID testen
Um zu einer positiveren Sicherheitsposition zu gelangen, können Sie mit der Implementierung von AppID beginnen. Hier fügen wir einfach die Modbus-Anwendung und die unter Funktionen hinzu, die wir erlauben wollen. In meinem Beispiel werde ich die Modbus-Base und Modbus-Read-Holding-Register als die einzigen erlaubten Anwendungen hinzufügen, die von der pollingzone in die plczone verwendet werden.
Nach dem Ausführen des mbtget-Werkzeugs, überprüfen Sie die Protokolle, um die Anwendung zu sehen, und dass die Politik die Aktion erlaubt.
In unserer AppID-Regel erlauben wir Leseanfragen nur für das halten von Registern. Wir können mbtget verwenden, um eine Spule zu lesen. Der Antrag scheitert.
Das Protokoll zeigt, dass die Anfrage fehlgeschlagen ist und dass Sie versucht hat, ein Spulen Register zu lesen, was wir in der Richtlinie nicht zulassen.
Modbus mit AppID und UserID testen
Um die Angriffsfläche noch weiter zu verringern, zwingen Sie UserID, nur das halten von Register von bestimmten Benutzern zu erlauben.
Unter Gerät/lokale Benutzerdatenbank/Benutzer, fügen Sie zwei Test-Benutzer.
Unter Gerät/lokale Benutzerdatenbank/Benutzergruppen-platzieren Sie jeden Benutzer in einer anderen Gruppe. In meinem Beispiel habe ich user1 der Gruppe "canreadholding" und User2 der Gruppe "canreadcoils" hinzugefügt.
Erstellen Sie unter Geräte-/Authentifizierungs Profil ein neues Authentifizierungs Profil. Wählen Sie die lokale Datenbank für den Typ.
Wählen Sie unter der Registerkarte Advanced "alle" Benutzer aus.
Unter Netzwerk/Interfaces/Loopback erstellen Sie eine Loopback-Adresse, um Benutzer für die Authentifizierung umzuleiten.
Geben Sie eine IP-Adresse unter der Registerkarte IPv4 an. Vergewissern Sie sich, dass es aus dem gleichen Bereich wie Ihre pollingzone ist.
Unter Geräte-/Benutzeridentifikation/Captive-Portal, bearbeiten Sie die Gefangenen Portal-Einstellungen wie gezeigt. Verwenden Sie die soeben erstellte IPv4-Loopback-Adresse.
Erstellen Sie unter Richtlinien/Authentifizierung eine neue Authentifizierungs Richtlinie mit den gezeigten Werten.
Unter Richtlinien/Sicherheit, bearbeiten Sie die erste Regel und fügen Sie die Benutzergruppe für Reading Holding Register.
Die geänderte Regel sollte so aussehen.
Fügen Sie eine neue Regel hinzu, um den Authentifizierungs Verkehr zum Loopback zu ermöglichen, so dass das Captive-Portal funktioniert.
Übernehmen Sie die Änderungen.
Versuchen Sie, die Holding-Register mit mbtget zu lesen und wir sehen, dass es scheitert.
Das Verkehrsprotokoll enthüllt, dass die Lese Anfrage durch die deuttdeny-Regel verweigert wurde. Das liegt daran, dass die UserID-Anforderung nicht befriedigt wurde.
Um die Benutzerauthentifizierung in diesem Setup zu initiieren, klicken Sie auf die Loopback-Adresse, die für Captive Portal erstellt wurde, und melden Sie sich beim Benutzer an, der halte Register lesen darf.
Unter Monitor/User-ID sehen Sie den authentifizierten Benutzer in der Liste.
Die mbtget-Umfrage erneut ausprobieren und es sollte wieder gelingen.
Die Verkehrsprotokolle zeigen auch den authentifizierten Benutzer, der mit dem Register "Read" verbunden ist.
Aus der Firewall CLI geben Sie diese beiden Befehle aus, um alle UserID-Daten zu löschen.
Initiieren Sie das Login erneut mit einem anderen Benutzer, der nicht befugt ist, Holding Register zu lesen.
Versuchen Sie, die mbtget Register lesen und sehen, dass es für user2 scheitert.
Beachten Sie, dass der Grund für den Ausfall in den Verkehrs Protokollen ist aufgrund von deuttdeny, da der Verkehr nicht mit einer anderen Regel übereinstimmt. Insbesondere ist User2 kein Mitglied der canreadholding-Gruppe, so dass das Register Read ausfällt.
Zusammenfassung
Es gibt weitere Szenarien, die mit diesem virtuellen Labor genutzt werden können, die die Sicherheitsposition innerhalb der ICS-Umgebung weiter erhöhen können. Die Hinzufügung einer Multi-Factor-Authentifizierung für Benutzer, die beispielsweise Zugang zum OT-Netzwerk erhalten. Die Zugabe von Sicherheits Profilen zum Regelwerk ist eine andere. Angriffe können auch mit Werkzeugen wie Metasploit simuliert werden. Sehen Sie diesen Artikel für Ideen zur Verwendung der Log-profile-Funktionen von Pan-OS 8,0, um auf bösartige Aktivitäten zu achten und möglicherweise ICS-Nutzer in einem Quarantäne Zustand auf eine Verletzung zu setzen: https://Live.paloaltonetworks.com/T5/Learning-Articles/ Schutz-ICS-und-SCADA-Netzwerke-mit-Pan-OS-8-0/Ta-p/180651