Docker Setup
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Docker Desktop installiert
- Docker läuft
Download
Abschnitt betitelt „Download“Lade den docker-setup Ordner herunter:
docker-setup.zip herunterladen
Ordnerdocker-setup/
- docker-compose.yml
Ordnerclient/
- Dockerfile
- client.py
Ordnerserver/
- Dockerfile
- server.py
Ordnerdns/
- Dockerfile
- entrypoint.sh
Ordneroutput/ (PCAPs werden hier gespeichert)
- …
- merge-pcaps.sh
- README.md
Quick Start
Abschnitt betitelt „Quick Start“-
In den Ordner wechseln
Terminal-Fenster cd docker-setup -
Container starten
Terminal-Fenster docker compose up --build -
Warten (~5 Minuten)
Du siehst die Beacons in der Konsole:
malware-client | [Beacon 1/10]malware-client | [DNS] Resolved update-checker-info.net -> 10.10.10.50malware-client | [HTTP] Beacon -> http://10.10.10.50:8088/checkin?id=4521c2-server | [BEACON] ID: 4521, Client: 10.10.10.10 -
Warten bis “Simulation complete”
malware-client | [DONE] Simulation complete -
Container stoppen
Terminal-Fenster # Ctrl+C oder:docker compose down -
PCAPs zusammenführen (optional aber empfohlen)
Terminal-Fenster ./merge-pcaps.shOder manuell mit Wireshark:
Terminal-Fenster mergecap -w output/training_c2.pcap output/dns_traffic.pcap output/http_traffic.pcap -
PCAP verwenden
Terminal-Fenster ls output/# training_c2.pcap (oder dns_traffic.pcap + http_traffic.pcap)
Architektur
Abschnitt betitelt „Architektur“┌─────────────────────────────────────────────────────────────┐│ Docker Network (10.10.10.0/24) ││ ││ ┌─────────────┐ ┌─────────────┐ ││ │ Client │ ──── DNS Query ────▶ │ DNS-Server │ ││ │ 10.10.10.10 │ ◀─── DNS Reply ───── │ 10.10.10.53 │ ││ └─────────────┘ └─────────────┘ ││ │ │ ││ │ HTTP Beacons tcpdump │ ││ ▼ ▼ ││ ┌─────────────┐ ┌─────────────┐ ││ │ C2-Server │ │dns_traffic │ ││ │ 10.10.10.50 │ ──── tcpdump ────▶ │ .pcap │ ││ └─────────────┘ └─────────────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │http_traffic │ ││ │ .pcap │ ││ └─────────────┘ │└─────────────────────────────────────────────────────────────┘| Container | IP | Funktion |
|---|---|---|
| dns-server | 10.10.10.53 | Lokaler DNS, löst C2-Domains auf |
| c2-server | 10.10.10.50 | Empfängt HTTP-Beacons |
| malware-client | 10.10.10.10 | Sendet DNS-Queries + HTTP-Beacons |
Simulierte C2-Domains
Abschnitt betitelt „Simulierte C2-Domains“Der DNS-Server löst diese fake Domains auf 10.10.10.50:
update-checker-info.net– Versucht legitim zu wirkenmalware-c2.evil– Offensichtlich verdächtigdata-sync-service.com– Tarnt sich als Service
Wireshark Filter
Abschnitt betitelt „Wireshark Filter“Nach dem Öffnen der PCAP:
# Alle DNS-Anfragendns
# Spezifische verdächtige Domaindns.qry.name contains "update-checker"
# Alle HTTP-Beaconshttp
# HTTP zu C2-Serverip.dst == 10.10.10.50 and tcp.port == 8088Konfiguration
Abschnitt betitelt „Konfiguration“Schnellere PCAP (für Tests)
Abschnitt betitelt „Schnellere PCAP (für Tests)“Bearbeite docker-compose.yml:
malware-client: environment: - BEACON_INTERVAL=10 # 10 statt 30 Sekunden - MAX_BEACONS=6 # 6 statt 10 Beacons→ PCAP in ~1 Minute statt ~5 Minuten
Mehr Traffic
Abschnitt betitelt „Mehr Traffic“malware-client: environment: - BEACON_INTERVAL=30 - MAX_BEACONS=20 # Mehr BeaconsTroubleshooting
Abschnitt betitelt „Troubleshooting“| Problem | Lösung |
|---|---|
| ”Cannot connect to Docker” | Docker Desktop starten |
| Leere PCAP | Warten bis “Simulation complete” |
| Permission denied | chmod 777 output/ |
| Port belegt | Ports werden nur intern verwendet |
| DNS nicht in PCAP | merge-pcaps.sh ausführen |
Aufräumen
Abschnitt betitelt „Aufräumen“# Container stoppendocker compose down
# Auch Images löschendocker compose down --rmi all
# Output leerenrm output/*.pcapPCAP verteilen
Abschnitt betitelt „PCAP verteilen“Nach dem Durchlauf und Mergen liegt die Datei unter:
output/training_c2.pcapDiese Datei an die Studierenden verteilen (Moodle, LMS, etc.).