
Eine Experimentier- und Forschungsplattform zur Untersuchung der Interaktion automatisierter Agenten in abstrakten simulierten Netzwerkumgebungen.
- April 2021: Siehe die Ankündigung im Microsoft Security Blog.
CyberBattleSim ist eine experimentelle Forschungsplattform zur Untersuchung der Interaktion automatisierter Agenten, die in einer simulierten abstrakten Unternehmensnetzwerkumgebung agieren. Die Simulation bietet eine hochabstrakte Darstellung von Computernetzwerken und Cybersicherheitskonzepten. Ihre auf Python basierende OpenAI Gym-Schnittstelle ermöglicht das Training automatisierter Agenten mittels Reinforcement-Learning-Algorithmen.
Die Simulationsumgebung wird durch eine feste Netzwerktopologie und eine Reihe von Schwachstellen parametrisiert, die Agenten nutzen können, um sich lateral im Netzwerk zu bewegen. Das Ziel des Angreifers ist es, einen Teil des Netzwerks zu übernehmen, indem er Schwachstellen ausnutzt, die auf den Computerknoten platziert sind. Während der Angreifer versucht, sich im Netzwerk auszubreiten, überwacht ein Verteidiger-Agent die Netzwerkaktivität und versucht, einen Angriff zu erkennen und dessen Auswirkungen auf das System zu mildern, indem er den Angreifer entfernt. Wir stellen einen einfachen stochastischen Verteidiger bereit, der laufende Angriffe auf der Grundlage vordefinierter Erfolgswahrscheinlichkeiten erkennt und eindämmt. Die Eindämmung implementieren wir durch ein Neuabbilden der infizierten Knoten, ein Prozess, der abstrakt als eine über mehrere Simulationsschritte dauernde Operation modelliert wird.
Um die Leistung der Agenten zu vergleichen, betrachten wir zwei Metriken: die Anzahl der Simulationsschritte, die benötigt werden, um ihr Ziel zu erreichen, und die kumulativen Belohnungen über die Simulationsschritte hinweg über die Trainingsepochen.
Wir betrachten dieses Projekt als eine Experimentierplattform für die Forschung zur Interaktion automatisierter Agenten in abstrakten simulierten Netzwerkumgebungen. Durch die Veröffentlichung als Open-Source hoffen wir, die Forschungsgemeinschaft zu ermutigen, zu untersuchen, wie Cyber-Agenten in solchen Netzwerkumgebungen interagieren und sich weiterentwickeln.
Die von uns bereitgestellte Simulation ist zugegebenermaßen einfach, aber das hat Vorteile. Ihr hochgradig abstrakter Charakter verbietet eine direkte Anwendung auf reale Systeme und bietet so einen Schutz vor potenziellem Missbrauch automatisierter Agenten, die damit trainiert wurden. Gleichzeitig ermöglicht uns ihre Einfachheit, uns auf bestimmte Sicherheitsaspekte zu konzentrieren, die wir untersuchen möchten, und schnell mit modernen Algorithmen des maschinellen Lernens und der KI zu experimentieren.
Beispielsweise konzentriert sich die aktuelle Implementierung auf Lateral-Movement-Cyberangriffstechniken, in der Hoffnung zu verstehen, wie Netzwerktopologie und -konfiguration diese beeinflussen. Mit diesem Ziel vor Augen waren wir der Meinung, dass die Modellierung des tatsächlichen Netzwerkverkehrs nicht notwendig sei. Dies ist nur ein Beispiel für eine wesentliche Einschränkung unseres Systems, die zukünftige Beiträge möglicherweise angehen möchten.
Auf der algorithmischen Seite stellen wir einige grundlegende Agenten als Ausgangspunkt bereit, aber wir wären neugierig zu erfahren, wie sich hochmoderne Reinforcement-Learning-Algorithmen im Vergleich zu ihnen verhalten. Wir haben festgestellt, dass der große Aktionsraum, der jedem Computersystem eigen ist, eine besondere Herausforderung für Reinforcement Learning darstellt – im Gegensatz zu anderen Anwendungen wie Videospielen oder Robotersteuerung. Das Trainieren von Agenten, die Anmeldeinformationen speichern und abrufen können, ist eine weitere Herausforderung bei der Anwendung von RL-Techniken, bei denen Agenten typischerweise keinen internen Speicher haben. Dies sind weitere Forschungsbereiche, in denen die Simulation für Benchmarking-Zwecke verwendet werden könnte.
Weitere Interessensgebiete umfassen den verantwortungsvollen und ethischen Einsatz autonomer Cybersicherheitssysteme: Wie entwirft man ein Unternehmensnetzwerk, das Verteidigern einen intrinsischen Vorteil verschafft? Wie führt man sichere Forschung durch, die darauf abzielt, Unternehmen vor autonomen Cyberangriffen zu schützen, während der schädliche Einsatz solcher Technologie verhindert wird?
Lesen Sie die Kurze Einführung in das Projekt.
| Typ | Branch | Status |
|---|---|---|
| CI | master | |
| Docker-Image | master |
Siehe Benchmark-Dokumentation. Jupyter-Notebooks mit den neuesten Läufen sind unter einem eigenen Tag unter /notebooks/benchmarks (latest_benchmark) eingecheckt.
Es wird dringend empfohlen, in einer Linux-Umgebung zu arbeiten, entweder direkt oder über WSL unter Windows. Das direkte Ausführen von Python unter Windows sollte funktionieren, wird aber nicht mehr unterstützt.
Beginnen Sie damit, das Repository zu klonen:
git clone https://github.com/microsoft/CyberBattleSim.git
Wenn beim Ausführen von Papermill auf den Notebooks (oder alternativ beim Ausführen von orca --help) der folgende Fehler auftritt:
/home/wiblum/miniconda3/envs/cybersim/lib/orca_app/orca: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
oder andere Shared Libraries wie libgdk_pixbuf-2.0.so.0,
dann führen Sie den folgenden Befehl aus:
sudo apt install libnss3-dev libgtk-3-0 libxss1 libasound2-dev libgtk2.0-0 libgconf-2-4
Die Anweisungen wurden auf einer Linux-Ubuntu-Distribution getestet (sowohl nativ als auch über WSL).
Wenn Conda noch nicht installiert ist, müssen Sie es installieren, indem Sie das Skript install_conda.sh ausführen.
bash install-conda.sh
Sobald dies erledigt ist, öffnen Sie ein neues Terminal und führen Sie das Initialisierungsskript aus:
bash init.sh
Dadurch wird eine Conda-Umgebung mit dem Namen cybersim erstellt, die alle erforderlichen Betriebssystem- und Python-Abhängigkeiten enthält.
Um die Umgebung zu aktivieren, führen Sie aus:
conda activate cybersim
Die unterstützte Entwicklungsumgebung unter Windows ist über WSL. Sie müssen zuerst eine Ubuntu-WSL-Distribution auf Ihrem Windows-Rechner installieren und dann mit den Linux-Anweisungen (nächster Abschnitt) fortfahren.
Um sich bei Git zu authentifizieren, können Sie entweder eine SSH-basierte Authentifizierung verwenden oder alternativ den Credential-Helper-Trick verwenden, um automatisch ein PAT-Token zu generieren. Letzteres kann durch Ausführen des folgenden Befehls unter WSL erfolgen (weitere Informationen hier):
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
Um Ihre Umgebung innerhalb eines Docker-Containers auszuführen, empfehlen wir, Docker über das Windows-Subsystem für Linux (WSL) gemäß den folgenden Anweisungen auszuführen: Installieren von Docker unter Windows über WSL).