Merge pull request #47 from avast/polishing2

Polishing2
develop
Thorsten Sick 2 years ago committed by GitHub
commit ff8622b3b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,6 +1,8 @@
![main branch test](https://github.com/avast/PurpleDome/actions/workflows/main_by_makefile.yml/badge.svg?branch=main)
![develop branch test](https://github.com/avast/PurpleDome/actions/workflows/develop_by_makefile.yml/badge.svg?branch=develop)
**Important: During the next months the main developer is mostly AFK. There are fallback maintainers, but you can expect reduced response time. Please plan accordingly, fork and cooperate. Thanks**
# PurpleDome creates simulated systems which hack each other
It creates several virtual machines to simulate a target network. A Kali attacker will be spawned and use configured attacks to blast at the targets. Those attacks can be Kali command line tools, Caldera abilities or Metasploit tools.

@ -0,0 +1,3 @@
:root {
--r-heading-text-transform: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

@ -46,6 +46,7 @@ revealjs_script_conf = {
"history": True,
"center": True,
"transition": "slide",
"slideNumber": False
}
revealjs_script_plugins = [
{
@ -63,7 +64,7 @@ revealjs_script_plugins = [
]
revealjs_css_files = [
"revealjs4/plugin/highlight/zenburn.css",
"custom.css",
"mod.css",
]
# Graphviz

@ -8,96 +8,456 @@ Purple Dome - Kein Schwein greift mich an
:glob:
:hidden:
Spoiler
=======
Es geht um ein neues Tool, das Angriffe simuliert, damit man seine Verteidigungs-Technologie mal in Aktion sehen kann.
Kein Schwein greif mich an
Ich
===
* Thorsten Sick
* Erfahrener Entwickler einiger Angriffs Analyse Tools und MW Erkennungs Technologien
* u.a. viele Beiträge zur Cuckoo Sandbox
Origin story
============
Purple Dome ist für unsere Security Firma ein weiteres Tool, um unsere eigenen Produkte zu stress testen. Es ging ca. 1 Jahr Entwicklungszeit da rein.
Da hat man mal richtig in security investiert ...
=================================================
Die Firma hat jetzt:
* SIEM (Security Information and Event Management)
* ein SOC (Security Operation Center) Team
* eine CISO (Chief Information Security Officer)
aber....
Was ist jetzt das Problem ?
===========================
Niemand weiss ob alles funktioniert oder wie die Logs eines Angriffs aussehen....
Mehr Probleme
-------------
...Oder ob die Sensoren mit dem OS Update noch tun wie erwartet...
Noch mehr Probleme
---------------l---
...Oder ob die Logs dann minimal anders aussehen und die Regexe nicht greifen...
Sehr viel mehr Probleme
-----------------------
...Oder ob die selbstgeschriebenen Erkennungsregeln überhaupt was erkennen...
Denn: Kein Schwein greift mich an !
===================================
Früher war mehr EICAR (test-virus Datei). Damit stupst man seine File-Erkennung und schaut ob die noch lebt.
Heute ist mehr file-less
========================
* In-memory Exploits
* Admin tools (LOLBINs)
* harmlose Programme, die aber vulnerabel sind.
Das kann man mit dem EICAR test file nicht mehr so komfortabel nachbilden
In-memory Exploits
------------------
Wenn man als Angreifer ein System hacked, das nur einen Datei scanner hat, kommt man unbemerkt durch, solange man keine Datei anlegt
LOLBins
-------
Living-off-the-land binaries. Also zum Angriff nehmen was eh schon als Tools rumliegt. Fällt weniger auf.
Vulnerable programme
--------------------
Signierte aber veraltete und verwundbare Treiber sind da ein Klassiker. Die schaffen dem Angreifer Systemrechte.
EICAR test file für Behaviour
-----------------------------
Es gibt einige Scripte, die um Dinge auf dem Rechner anrichten, um Behaviour Detection zu testen.
Sie haben aber eher schwankende Qualität und nicht unbedingt Aussagekraft
Behaviour und AV
----------------
Schon seit vielen Jahren hat jede ernst zu nehmende AV Software eine Behaviour Komponente
Leroy Jenkins: Metasploit vs. Production environment
====================================================
Jetzt kann man selbst mit Metasploit und Mimikatz seine eigene Produktionsumgebung angreifen und schauen, was passiert. Ist dann halt kacke.
Lösung
======
Das Open Source Projekt Purple Dome kann eine in VM simulierte Umgebung von Target Maschinen hochziehen und diese dann gescripted angreifen.
Kann nix passieren
------------------
Da alles in der simulierten Umgebung läuft, kann nix passieren
Lieber trotzdem vom Firmen Netz trennen.
Alles wird aufgezeichnet !
==========================
Habe mir gerade einen neuen Event Logger auf meinem Server installiert. Die Log Details hochgedreht... und jetzt greift mich keiner an.
Sensoren auf den Targets oder im Netz zeichnen den Angriff dann auf
Keine Ahnung ob die Sensoren tun ?
----------------------------------
Wir überhaupt mitgelogged was wichtig ist ?
PurpleDome macht File-less Angriff handhabbarer
===============================================
Daten habe ich jetzt ....aber Erkennungslogik ?
-----------------------------------------------
Wir brauchen das...
Nach was greppe ich denn nun in den Logs ?
* Zum Entwickeln der Sensoren
* Zum Entwickeln der Logik
* Zum Testen der Sensoren (unter leicht modifizierten Umständen)
Viel gemacht aber alles ungetestet
==================================
Was kann das ?
==============
Die einzige Lösung: Ein Angreifer muss her. Vielleicht nicht auf mein Produktivsystem.
Aktuell als Beispiele vorhanden sind:
Simulierte Angriffe
===================
Angriffe
========
Purple Dome erlaubt es, Angriffe zu simulieren. Scriptbar und als Python Pluins
* Metasploit
* Kali command line
* Caldera
Metasploit
----------
* Metasploit kann per implant oder exploit auf das Target kommen
* Es baut danach eine Verbindung zum Attacker auf
* und kann das System auf verschiedene Arten (meist Windows API) beeinflussen
Caldera
-------
Kali Linux commandline
----------------------
* Caldera benötigt implants
* Es baut eine Verbindung zum Attacker auf
* Es beeinflusst das System vor allem über Kommandozeilen Befehle (powershell, shell)
Simulierte Ziele
================
Kali
----
Die Angriffe gehen nicht auf das Produktivsystem, sondern auf VM targets
Die aktuell verwendeten Kali tools sind Netzwerk zentriert und dienen vor allem dazu, im Purple Dome Kontext Netzwerkprotokolle zu füllen
Sensoren nach Wunsch
====================
(hydra, nmap)
Welche Sensoren auf den Targets laufen kann man per config und Plugin definieren
Mimikatz
--------
Vulnerabilities nach Wunsch
===========================
* Wird im Rahmen von Metasploit eingesetzt
* Extrahiert Credentials aus dem Speicher des Targets
* Bei realen Angriffen oft ein Standard-Bestandteil
Damit die Angriffe auch etwas Schaden hinterlassen, kann man per Plugins auch erst mal Vulnerabilities auf den Targets installieren.
Cobalt
------
Targets nach Wunsch
* Ähnlich wie Metasploit
* Wird stark von Malware Angriffen genutzt
* Benötigt eine Lizenz
* Ist (noch) nicht implementiert in Purple Dome
Sensoren
========
* Logstash/filebeat
Virtuelle Maschinen
===================
* Vagrant
* standalone VirtualBox
Vulnerabilities
===============
* RDP
* Schwache User Passwörter
Anwendung
=========
Ein gut automatisierbares Tool mit commandline und config files
Commandline
-----------
.. revealjs-code-block:: console
./experiment_control.py run --configfile hello_world.yaml
Dann ein paar Minuten warten
Config
------
.. revealjs-code-block:: yaml
:linenos:
:data-line-numbers: 1|3|6|8
caldera_attacks:
linux:
- "bd527b63-9f9e-46e0-9816-b8434d2b8989"
windows:
plugin_based_attacks:
linux:
- hydra
Targets
-------
Erzeugt mittels Vagrant oder als bestehende VM
Wie das Ganze dann aussieht
===========================
Ergebnisse eines Purple Dome Laufs
==================================
Resultat: PDF
-------------
Was raus kommt:
* sehr viele Sensor Logs
* Angriffs log
* und ein PDF Dokument für die Manager
Resultat: Sensordaten
Manager lesbares PDF - Übersicht
--------------------------------
Ein PDF zum entspannt lesen
-
.. revealjs-section::
:data-background-image: _static/pdf_contents.png
:data-background-size: contain
Manager PDF - Angriffsdetails
-----------------------------
Mit Details
_
.. revealjs-section::
:data-background-image: _static/pdf_details.png
:data-background-size: contain
Angriffs Log
------------
Ein Auszug
.. revealjs-code-block:: json
:linenos:
:data-line-numbers: 1,2|3,4|5|6,7|8,9,10,11,12,13|14
"timestamp": "12:10:09.006964",
"timestamp_end": "12:15:23.064067",
"type": "attack",
"sub_type": "caldera",
"source": "http://192.168.178.126:8888/",
"target_paw": "target3",
"target_group": "red_linux",
"ability_id": "bd527b63-9f9e-46e0-9816-b8434d2b8989",
"hunting_tag": "MITRE_T1033",
"name": "Current User",
"description": "Obtain user from current session",
"tactics": "System Owner/User Discovery",
"tactics_id": "T1033",
"result": [ "vagrant" ]
Sensor Log (Filebeat)
---------------------
Resultat: Angriffsdaten
-----------------------
Hydra Angriff
.. revealjs-code-block:: json
:linenos:
:data-line-numbers: 1|2,3|4|5,6,7,8
{"@timestamp":"2022-04-07T10:18:37.907Z",
"message":"Apr 7 10:18:37 target3 sshd[3113]:
Failed password for invalid user nonexistend_user_1 from 192.168.178.126 port 44924 ssh2",
"host":{"hostname":"target3"},},
{"@timestamp":"2022-04-07T10:18:38.907Z",
"message":"Apr 7 10:18:38 target3 sshd[3113]:
Failed password for invalid user nonexistend_user_1 from 192.168.178.126 port 44924 ssh2",
"host":{"hostname":"target3"},}
Purple Dome: Was im Hintergrund geschieht
=========================================
Nach dem Start von der Kommandozeile startet die vollautomatisierte Simulations Umgebung
Aufsetzen der Ziele
===================
Virtuelle Maschinen mit dem Ziel OS werden aufgesetzt. So können wir unsere Sensoren mit verschiedenen OS Versionen testen.
Starten der Maschinen
=====================
Targets und Attacker werden gestartet
Vulnerabilities nach Wunsch
===========================
Damit die Angriffe auch etwas Schaden hinterlassen, kann man per Plugins auch erst mal Vulnerabilities auf den Targets installieren.
Aufsetzen der Sensoren
======================
Sensoren werden automatisch auf den Zielen installiert. Ab jetzt wird aufgezeichnet
Welche Sensoren auf den Targets laufen kann man per config und Plugin definieren
Durchführen der Angriffe
========================
Welche Angriffe durchgeführt werden bestimmt das Skript
* Caldera
* Metasploit
* Kali tools
Input: Commandline
Sammeln der Sensor Daten
========================
Daten aller Sensoren werden gesammelt. Zusammen mit einem Log der Angriffe.
Wem bringt PurpleDome sonst noch was ?
======================================
Erste Ideen kam schon an:
Schulungen
----------
Security Schulungen basierend auf Purple Dome. Besonders im Bereich Forensik
Trainings
---------
Blue vs Red Team Trainings und Erzeugen von Übungsdaten
CTF
---
Capture the Flag Herausforderungen können auf Purple Dome basieren.
Dafür muß aber das Threat Modell angepasst werden.
Mehr Ideen bitte !
------------------
Input: Config
-------------
Das war sicher noch nicht alles
Erweiterbarkeit dank Plugins
============================
Viel Funktionalität ist als Plugin implementiert
* Angriffe
* Vulnerabilities
* Integration von Sensoren in die Targets
* Unterstützte VMs
Wo kann ich PurpleDome kaufen ?
Beispiel Sensor: Linux Filebeat
===============================
Gar nicht. Ist kostenlos und Open Source
Boilerplate
-----------
https://github.com/avast/PurpleDome
.. revealjs-code-block:: python
:linenos:
:data-line-numbers: 1|2|3|4,5,6
Bitte forken. Jetzt.
class LinuxFilebeatPlugin(SensorPlugin):
name = "linux_filebeat"
description = "Linux filebeat plugin"
required_files = ["filebeat.conf",
"filebeat.yml",
]
Install
-------
.. revealjs-code-block:: python
:linenos:
:data-line-numbers: 1|3,4
def prime(self):
fb_file = "filebeat-7.15.2-amd64.deb"
self.run_cmd(f"curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/{fb_file}")
self.run_cmd(f"sudo dpkg -i {fb_file}")
Start
-----
.. revealjs-code-block:: python
:linenos:
:data-line-numbers: 1|2,3
def start(self):
self.run_cmd("sudo filebeat modules enable system iptables")
self.run_cmd("sudo filebeat setup --pipelines --modules iptables,system,")
Collect
-------
.. revealjs-code-block:: python
:linenos:
:data-line-numbers: 1|2,3|4
def collect(self, path):
dst = os.path.join(path, "filebeat.json")
self.get_from_machine("/tmp/filebeat_collection.json", dst)
return [dst]
Weitere potentielle Sensoren
============================
Nicht alle sind bereits Bestandteil des Open Source projekts, mit ihnen habe ich aber "gespielt" oder werde es noch:
* EBPF (system API monitor)
* Frida (process API monitor)
* OSQuery (system stats)
* Sysmon (von MS, auch für Linux)
* Volatility (memory forensics)
Fragen ?
========
Origin story
------------
Mastodon: @thorsi@chaos.social
* Sensoren eines Behaviour Blockers müssen mit jedem OS update neu getestet werden
* Jeder neue Angriff muss verifiziert werden...
https://github.com/avast/PurpleDome
Bitte forken. Jetzt.
Also wurde automatisiert.
Danke
=====
Vielen Dank fürs zuhören. Und jetzt: abschalten

@ -10,14 +10,15 @@ paramiko==2.10.1
pymetasploit3==1.0.3
pylint==2.12.2
flask==2.0.3
pydantic==1.9.0
pydantic
dotmap==1.3.26
# Sphinx stuff
sphinx-argparse==0.3.1
sphinxcontrib-autoyaml==0.6.1
sphinx-pyreverse==0.0.17
sphinxcontrib.asciinema==0.3.3
sphinx>=4.2.0
sphinx-argparse
sphinxcontrib-autoyaml
sphinx-pyreverse>=0.0.17
sphinxcontrib.asciinema>=0.3.3
sphinx-revealjs
# sphinx-pydantic # This one has issues that must be fixed upstream first

Loading…
Cancel
Save