
Stellt realistische virtuelle SCADA/ICS-Testumgebungen mit IEC 60870-5-104- und OPC-UA-Knoten bereit, die Angriffssimulationen, legitime Paketerzeugung und Red-Team-Sicherheitsübungen ermöglichen.
Es wird ein skalierbares Framework vorgeschlagen, das automatisch eine Anzahl virtueller Maschinen lokal (oder remote) bereitstellt, die ein Supervisory Control And Data Acquisition (SCADA)-Netzwerk nachbilden. Dazu gehören mehrere virtuelle Hosts, die Sensoren und Aktuatoren emulieren, mit einer Human Machine Interface (HMI), die die Hosts steuert. Das vorgestellte Framework enthält eine Sammlung von Automatisierungsskripten, die eine variable Anzahl virtueller Maschinen erstellen und bereitstellen, die entweder als Remote Terminal Unit (RTU), HMI oder Data Historian vorkonfiguriert sind. Die vorgestellte Arbeit umfasst eine standardkonforme Implementierung von IEC 60870-5-104 (IEC104) und OPC Unified Architecture (OPC-UA) sowie die Fähigkeit, weitere Protokolle wie Modbus-TCP (Modbus) und IEC61850 zu unterstützen.
Dies ermöglicht es Forschenden, Testumgebungen aufzubauen, die so konfiguriert werden können, dass sie reale Bereitstellungen von SCADA-Netzwerken nachbilden. Das Framework basiert auf Open-Source-Bibliotheken und wird unter der von der Free Software Foundation anerkannten Lizenz GNU General Public License Version 3 veröffentlicht.
Paketerzeugung: Das Ziel des ersten Anwendungsfalls ist es, Netzwerkverkehr von einer großen Anzahl von Geräten mit hoher Domänentreue zu erzeugen, wobei idealerweise Prozessinformationen in den Verkehr einbezogen werden. Wie bereits erwähnt, ist die Erstellung von Datensätzen aus einem Live-System nicht immer möglich: Sie ist arbeitsintensiv, man muss einen geeigneten Abhörpunkt finden und die Genehmigung der Anlagenbetreiber einholen. Dies kann durch den Anlagenbetrieb und -richtlinien eingeschränkt sein, da Eingriffe in ein funktionierendes Netzwerk zu unvorhergesehenen Umständen führen und identifizierbare Informationen preisgeben können. Die Paketerzeugung kann verwendet werden, um geplante Änderungen am SCADA-Netzwerk zu testen, bevor sie im Live-System bereitgestellt werden. Sie kann auch Belastungstests von Geräten mit legitim aussehenden Paketen durchführen. Interessante Forschungsanwendungsfälle umfassen Experimente mit verschiedenen Netzwerkparadigmen wie ICN oder IPv6, die bisher nicht auf ICS-Netzwerke angewendet wurden.
Angriffssimulationen: Dieser Fall betrachtet die Simulation komplexer Angriffe auf SCADA-Systeme und zielt darauf ab, eine Risikoanalyse eines nachgebildeten ICS-Netzwerks durchzuführen, ohne das Live-System negativ zu beeinflussen. Die Testumgebung kann von Red Teams genutzt werden, um zu versuchen, Testumgebungsknoten zu kompromittieren, während die Konsequenzen analysiert und eine vollständige Paketerfassungsanalyse durchgeführt wird. Wenn sie erfolgreich sind, kann der Prozess mit zusätzlichen Gegenmaßnahmen erneut durchgeführt werden, was das Testen der neuen Gegenmaßnahmen im Kontext der Sicherheit und ihrer Auswirkungen auf die Anlagenprozesse ermöglicht. Die Netzwerkerfassungen der Red-Team-Übung können als offene Datensätze zur Verifizierung von IDS veröffentlicht werden, die von anderen Forschenden reproduziert und bestätigt werden können.
Agenten-Benchmarking: Das Ziel dieses Anwendungsfalls ist es, das Benchmarking von hostbasierten Agentensystemen zu unterstützen, die aufgrund von Herstellereinschränkungen typischerweise nicht auf Live-Systemen durchgeführt werden. Sofern der Agent nicht von den Herstellern vertrauenswürdig eingestuft wird, ist seine Bereitstellung oft verboten, da die Gefahr eines Vertragsbruchs besteht. Durch die Verwendung einer Testumgebung, die den realen Industriestandort genau abbildet, ist es möglich, den Einsatz von agentenbasierter Software zu überwachen, ohne Störungen zu verursachen. Vorausgesetzt, die Testumgebung ist frei modifizierbar, funktional genau und kann mit physischer Hardware integriert werden, wäre es möglich, einen Benchmark des Agenten durchzuführen.
Erweiterung begrenzter Hardware: Der letzte Fall besteht darin, eine bestehende physische Testumgebung um Kommunikationsprotokolle und Konfigurationen zu erweitern, die mit der vorhandenen Hardware nicht möglich waren. Dies könnte den Einsatz von Netzwerkemulatoren zur Erweiterung der Netzwerkausrüstung und von Prozesssimulatoren zur Erweiterung der Prozessleittechnik erfordern. Durch die Kopplung virtueller und physischer Hardware kann eine komplexe und äußerst realistische Testumgebung geschaffen werden, die große Bereitstellungen ermöglicht, die mehrere Protokolle und Geräte kombinieren und analysiert werden können. Dieser Anwendungsfall kann zusammen mit den anderen verwendet werden, um deren Ergebnisse zu verbessern.
Klonen Sie das Repository und installieren Sie die erforderlichen Abhängigkeiten:
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven
Erstellen:
mvn clean package
mvn package -DskipTests # Skip tests.
RTU starten:
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run
HMI starten:
java -jar node/target/node-1.0.jar
shell> hmi
shell> hmi-interval 1000
shell> remote-hosts 127.0.0.1
shell> run
Das Standardkonfigurationsprofil stellt 1 HMI und 4 RTUs bereit. Die HMI integriert die RTUs über IEC104 und OPC-UA. Die RTUs sind so konfiguriert, dass sie zufällige Prozessdaten zurückgeben.
Verwenden Sie die neueste Version von Vagrant anstelle der vorgefertigten/verteilten Pakete, da diese Skripte Funktionen aus den neuesten Vagrant-Versionen verwenden. Sollte bei Verwendung von Ubuntu 18.04.1 LTS problemlos funktionieren.
git clone https://github.com/mitchellh/vagrant.git /opt/vagrant
cd /opt/vagrant
bundle install
bundle --binstubs exec
ln -sf /opt/vagrant/exec/vagrant /usr/local/bin/vagrant
Dies ist ein optionaler Entwicklungsschritt. Es wird ein VM-Image erstellt, das für den Betrieb der Testumgebungs-Knoten vorkonfiguriert ist. Wenn Sie nicht die neueste Version erstellen möchten, besteht die Standardoption darin, ein stabiles Image aus dem Vagrant-Image-Repository zu beziehen, das mit dem Master-Zweig Schritt hält.
Packer wird verwendet, um ein für VirtualBox und Vagrant geeignetes VM-Image zu erstellen:
cd vagrant_image
packer build vagrant-node.json
vagrant box add testbed-node vagrant.box
WARNUNG Sie benötigen mindestens 4 GB freien Arbeitsspeicher.
Aktualisieren Sie die Vagrantfile mit allen zusätzlichen Informationen, wie z. B. statischer IP-Adresse und RAM-Nutzung.
Die Standard-IP-Einstellungen sind 10.50.50.*. .200 wird für die HMI und 101-105 für die RTUs verwendet. Der standardmäßig pro VM zugewiesene Arbeitsspeicher beträgt 512 MB.
vagrant up
vagrant ssh hmi
vagrant ssh rtu-1 # 1-5
vagrant halt
vagrant destroy
Ein Beispieldatensatz wurde mit der Standard-Bereitstellungskonfiguration erstellt. PCAPs können von hier heruntergeladen werden. Der IEC104-MITM wurde mit dem hier verfügbaren Ettercap-Plugin durchgeführt.
[Host-SCAN 13:45]: Grundlegende Netzwerkaufklärung mit einem Nmap-Netzwerkscan. CMD: 'nmap -sn 10.50.50.*'
[Host-SCAN 13:47]: Grundlegende Netzwerkaufklärung mit einer Suche nach erreichbaren [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} Servern. CMD: 'nmap 10.50.50.* -p 2404'
[Host-SCAN 13:47]: Vollständiger Portscan der identifizierten [RTUs]{acronym-label="RTU" acronym-form="plural+short"} Knoten. CMD: 'nmap 10.50.50.101-105 -A'
[Host-SCAN 13:49]: Ein aktiver [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} Scan, der die Knoten über das [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} Protokoll testet[^1]. CMD: 'nmap -Pn -n -d --script iec-identify.nse --script-args='iec-identify.timeout=500' -p 2404 10.50.50.101-105'
[Host-MITM 14:19]: Führt einen [MITM]{acronym-label="MITM" acronym-form="singular+short"} auf RTU-1 und der HMI aus. CMD: 'ettercap -i enp0s8 -T -M arp -P spoof_104 /10.50.50.101/ /10.50.50.150/'
Eine numerische Aufschlüsselung des Datensatzes ist unten dargestellt:
Bitte zitieren Sie dieses Framework in folgendem Format:
@conference{
author = "Peter Maynard and Kieran McLaughlin and Sakir Sezer",
title = "An Open Framework for Deploying Experimental SCADA Testbed Networks",
journal = "5th International Symposium for ICS & SCADA Cyber Security Research",
year = "2018"
}
Der Datensatz kann über die DOI zitiert werden: 10.6084/m9.figshare.6133457.v1
Das vollständige Paper ist zu finden unter: https://petermaynard.co.uk/publication/an-open-framework-for-deploying-experimental-scada-testbed-networks/
| Host | IP | IEC104 | OPC-UA | Sonstige | Gesamt |
|---|
| HMI | 10.50.50.150 | 26,158 | 0 | 17,688 | 43,846 |
| Historian | 10.50.50.151 | 0 | 14,695 | 14,927 | 29,622 |
| RTU-1 | 10.50.50.101 | 3,592 | 2,940 | 5,543 | 12,075 |
| RTU-2 | 10.50.50.102 | 3,665 | 2,941 | 5,876 | 12,482 |
| RTU-3 | 10.50.50.103 | 3,668 | 2,940 | 5,793 | 12,404 |
| RTU-4 | 10.50.50.104 | 3,690 | 2,940 | 5,771 | 12,404 |
| RTU-5 | 10.50.50.105 | 3,576 | 930 | 7,933 | 12,442 |
| MITM | 10.50.50.99 | 2,390 | 0 | 3,449 | 5,839 |
| SCAN | 10.50.50.3 | 15 | 0 | 28,351 | 28,366 |