Konteks Etis & Legal

Empire adalah framework post-exploitation open-source untuk adversary simulation dan red teaming. Informasi di bawah bersumber dari dokumentasi publik, kode sumber, dan penelitian keamanan. Pembahasan ini murni edukasional dan defensif. Penggunaan tanpa otorisasi terhadap sistem yang bukan milik sendiri adalah tindakan kriminal. Tujuan dokumen ini adalah membekali defender agar mampu mendeteksi, merespons, dan melakukan hardening terhadap serangan berbasis Empire.


🧬 Apa Itu Empire?

Empire adalah framework post-exploitation dan C2 yang awalnya dikembangkan oleh Will Schroeder, Justin Warner, dan Matt Nelson (sekarang di SpecterOps) pada 2015. Empire menggabungkan PowerShell sebagai bahasa agent native dengan Python sebagai backend server. Selama bertahun-tahun Empire menjadi framework C2 pilihan utama red teamer karena:

  • PowerShell tersedia di setiap Windows modern (tidak perlu upload executable).
  • Kemampuan in-memory execution yang menghindari disk.
  • Ratusan modul siap pakai untuk credential dumping, lateral movement, persistence, dan situational awareness.
  • Antarmuka CLI yang kuat dan scripting.

Setelah sempat tidak terpelihara pada 2019–2020, proyek Empire diambil alih oleh komunitas BC-Security (dan fork Starkiller GUI). Versi modern (Empire 5.x) mendukung:

  • Agent PowerShell (versi klasik, paling matang).
  • Agent C# (Covenant-style, untuk lingkungan di mana PowerShell dimonitor ketat).
  • Agent Python (untuk Linux/macOS, via IronPython).
  • Starkiller GUI berbasis React.

Posisi Empire dalam Evolusi C2

EraFramework DominanAlasan
2015–2018EmpirePowerShell di mana-mana, deteksi minimal, modul lengkap.
2018–2022Cobalt StrikeStealth lebih tinggi, malleable C2, BOF, sleep mask.
2022–sekarangHavoc / SliverOpen-source dengan teknik evasion modern (indirect syscalls).
Selalu relevanEmpireMasih digunakan di lingkungan yang tidak punya EDR modern atau untuk testing specific PowerShell-based attacks.

πŸ—οΈ Arsitektur Empire

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Empire Client (CLI atau Starkiller GUI)     β”‚
β”‚  - powershell-empire CLI (Python)                            β”‚
β”‚  - Starkiller (React web GUI)                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ (REST API over HTTPS)
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Empire Server (Python 3.x)                 β”‚
β”‚  - Mendengarkan di port 1337 (API) dan listener C2           β”‚
β”‚  - Database agent (SQLite)                                    β”‚
β”‚  - Modul staging & payload generation                        β”‚
β”‚  - Logging aktivitas operator                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ (HTTP/S, DNS, SMB, TCP)
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Agent (PowerShell / C# / Python)           β”‚
β”‚  - Berjalan sepenuhnya di memori (reflective loading)        β”‚
β”‚  - Loop check-in via HTTP GET/POST ke server                 β”‚
β”‚  - Eksekusi PowerShell scriptblock dari C2                   β”‚
β”‚  - Modul internal: keylogging, screenshot, mimikatz, etc.    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Listener & Komunikasi

Empire mendukung beberapa protokol listener:

ListenerCara KerjaStealth Level
HTTP/HTTPSAgent check-in via GET, tasking via POST. Dapat dikustomisasi User-Agent, cookie, URI.Menengah (bisa di-mimic, tapi tidak secanggih Malleable C2).
DNSAgent check-in via DNS TXT/MX query ke server, tasking dikirim via DNS response.Tinggi (bypass firewall, sulit dimonitor) β€” tetapi lambat.
SMBAgent berkomunikasi via Named Pipe di jaringan internal untuk pivoting.Tinggi (tidak ada traffic keluar).
TCPDirect TCP connection.Rendah (mudah terdeteksi).

πŸ‘Ύ Agent PowerShell: Jantung Empire Klasik

Agent PowerShell adalah komponen paling ikonik. Ia adalah script PowerShell yang berjalan di memori, tidak pernah menulis executable ke disk. Tahapan:

1. Stager (Launcher)

Stager adalah one-liner PowerShell yang dikirim ke target (via phishing, macro, exploit). Contoh stager:

powershell -noP -sta -w 1 -enc SQBmACgAJABlAG4Ad...

Ketika dieksekusi, ia:

  • Melakukan HTTP GET ke Empire server pada URI staging (misal /download/Launcher.ps1).
  • Menerima payload utama (agent lengkap, terenkripsi AES).
  • Mendekripsi dan mengeksekusi payload dalam memori via Invoke-Expression atau [ScriptBlock]::Create().

2. Agent Core

Agent setelah staging adalah script PowerShell yang melakukan:

  1. Membuat objek System.Net.WebClient atau System.Net.Http.HttpClient untuk komunikasi.
  2. Mendaftarkan diri ke server dengan mengirim metadata (hostname, user, domain, OS, PowerShell version).
  3. Loop: tidur (default 5 detik, bisa diatur Sleep dan Jitter) β†’ GET task dari server β†’ eksekusi task β†’ POST hasil ke server β†’ tidur lagi.

3. Eksekusi Task

Task dari server biasanya berupa PowerShell scriptblock yang diunduh dan dieksekusi di memori. Karena semuanya adalah PowerShell, tidak ada perbedaan antara β€œmodul” dan β€œperintah”. Semua adalah scriptblock yang bisa diinjeksikan.

4. Key Features

  • In-memory: Tidak menyentuh disk setelah staging awal. Namun, PowerShell host (powershell.exe) mungkin terlihat di process list.
  • AMSI bypass: Empire memiliki built-in teknik untuk menonaktifkan AMSI (Antimalware Scan Interface) agar scriptblock jahat tidak di-scan.
  • Script Block Logging bypass: Empire berusaha menonaktifkan PowerShell Script Block Logging (Event ID 4104) dengan mengatur registry atau menggunakan teknik memory patching.
  • Token Manipulation: Dapat mencuri token, impersonate user, menjalankan Invoke-TokenManipulation.

πŸ–₯️ Starkiller: GUI Modern untuk Empire

Starkiller adalah antarmuka web React yang dikembangkan oleh BC-Security sebagai pengganti CLI Empire. Fitur:

  • Dashboard: Grafik agen, listener, task.
  • Agent Manager: Melihat semua agen, interaksi via terminal web.
  • Module Marketplace: Browse dan eksekusi modul dengan parameter UI.
  • Multiuser: Mendukung kolaborasi operator.
  • Reporting: Log dan timeline aktivitas.

Meskipun GUI memudahkan, banyak operator tetap menggunakan CLI untuk scripting dan otomatisasi.


πŸ“¦ Modul Kritis Empire

Empire memiliki lebih dari 300 modul bawaan. Berikut yang paling relevan untuk simulasi APT:

Credential Dumping

ModulFungsiTeknik MITRE
credentials/mimikatz/logonpasswordsEkstrak password plaintext, hash NTLM, Kerberos ticket dari LSASS.T1003.001
credentials/mimikatz/dcsyncDCSync: mendapatkan hash semua user dari Domain Controller.T1003.006
credentials/mimikatz/kerberos_ticket_listEkspor ticket Kerberos yang tersimpan di memori.T1558.001
credentials/powerdumpDump password hash dari SAM (via reg save).T1003.002
credentials/lazagneLaZagne: mencuri password dari browser, WiFi, aplikasi.T1555.003
credentials/vault_credentialEkstrak Windows Vault credentials.T1555.004

Lateral Movement

ModulFungsiTeknik MITRE
lateral_movement/invoke_psexecRemote execution via SMB (PsExec-style).T1021.002
lateral_movement/invoke_wmiRemote execution via WMI.T1047
lateral_movement/invoke_dcomRemote execution via DCOM (ShellWindows, ShellBrowserWindow).T1021.003
lateral_movement/invoke_smbexecExecution via SMB service (SMBExec).T1021.002
lateral_movement/new_gpo_immediate_taskLateral via GPO immediate scheduled task.T1053.005

Persistence

ModulFungsiTeknik MITRE
persistence/userland/registryRegistry Run key untuk persistensi user-level.T1547.001
persistence/elevated/wmiWMI Event Subscription untuk persistensi SYSTEM.T1546.003
persistence/elevated/schtasksScheduled task SYSTEM.T1053.005
persistence/misc/add_net_userBuat user lokal untuk backdoor.T1136.001
persistence/misc/golden_ticketGolden Ticket attack untuk persistensi domain.T1558.001

Situational Awareness

ModulFungsiTeknik MITRE
situational_awareness/network/get_domain_controllerTemukan DC di domain.T1018
situational_awareness/host/computerdetailsEnum informasi sistem, patch, antivirus.T1082
situational_awareness/network/portscanPort scanning internal via agent.T1046
situational_awareness/host/winenumEnum user, grup, share, service, dll.T1069
situational_awareness/network/bloodhound3Jalankan SharpHound (via reflection) untuk data BloodHound.T1482

Evasion & Utility

ModulFungsi
management/bypassuacBypass UAC untuk elevasi ke admin.
management/invoke_amsi_bypassMatikan AMSI.
management/disable_win_defenderMenonaktifkan Windows Defender.
management/psinjectInjeksi kode PowerShell ke proses lain.

πŸ›‘οΈ Teknik Evasion di Empire

1. AMSI Bypass

AMSI (Antimalware Scan Interface) di Windows 10+ memungkinkan EDR memeriksa konten scriptblock sebelum dieksekusi. Empire memiliki banyak teknik untuk menonaktifkannya:

  • Memory patching: Mencari fungsi AmsiScanBuffer di amsi.dll dan menimpa instruksi awalnya dengan ret (return false).
  • Registry: Mengatur HKLM\SOFTWARE\Microsoft\AMSI\Providers untuk menonaktifkan provider.
  • PowerShell downgrade: Menjalankan PowerShell versi 2 (-version 2) yang tidak memiliki AMSI. Teknik ini sudah tidak efektif di Windows 10+.
  • Reflection: Membongkar dan memodifikasi assembly System.Management.Automation.dll di memori.

2. Script Block Logging Bypass

PowerShell secara default mencatat semua scriptblock yang dieksekusi ke Event ID 4104. Empire mencoba menonaktifkannya dengan:

  • Mengatur HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging ke 0.
  • Atau, jika tidak bisa, mengaburkan scriptblock sehingga log tidak berguna.

3. Constrained Language Mode Bypass

Jika PowerShell dalam Constrained Language Mode (misal via Device Guard), banyak modul Empire tidak akan jalan. Empire memiliki modul untuk bypass CLM menggunakan teknik PowerShell downgrade (tidak efektif lagi) atau COM object abuse (Shell.Application).

4. Obfuskasi Script

Stager dan payload Empire sering di-obfuskasi dengan:

  • Base64 encoding (standar).
  • XOR encryption dengan kunci acak.
  • String splitting & concatenation.
  • Invoke-Obfuscation teknik (variabel acak, fungsi acak).

5. Reflective Loading (untuk .NET)

Empire dapat memuat assembly .NET secara reflektif menggunakan [System.Reflection.Assembly]::Load($bytes). Ini memungkinkan eksekusi Mimikatz, SharpHound, atau Rubeus tanpa menyentuh disk.


πŸ” Deteksi Empire

1. Deteksi Jaringan

  • HTTP Beaconing Pattern: Empire agent check-in dengan interval tetap (Sleep). Meskipun ada jitter, analisis statistik NetFlow dapat mendeteksi koneksi periodik ke IP eksternal pada port tidak standar (80, 443, 8080).
  • Default URI: Stager Empire default menggunakan URI seperti /download/Launcher.ps1, /admin/get.php, /news.php. Banyak operator tidak mengubahnya.
  • User-Agent: Default sering Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) AppleWebKit/.... Bisa diubah.
  • DNS Tunneling: Jika menggunakan listener DNS, query TXT/MX ke domain C2 dengan payload base64 yang panjang adalah anomali besar.

2. Deteksi Endpoint

  • PowerShell Process Creation: Stager menelurkan powershell.exe dengan command line yang sangat panjang (base64). Sysmon Event ID 1 dapat menangkap ini. Command line dengan -enc atau -e diikuti string panjang adalah red flag.
  • Script Block Logging (Event ID 4104): Jika script block logging tidak berhasil dinonaktifkan, scriptblock Empire akan tercatat. Meskipun di-obfuskasi, scriptblock panjang dengan base64 dan Invoke-Expression adalah indikator.
  • Module Logging (Event ID 4103): Pipeline execution log. Bisa menangkap pemanggilan modul Empire.
  • Process Access (Sysmon Event ID 10): Empire sering mengakses proses lain (LSASS, SAM) untuk credential dumping. Anomali: proses powershell.exe mengakses lsass.exe dengan hak PROCESS_VM_READ.
  • Injection Detection: EDR dapat mendeteksi ketika powershell.exe menyuntikkan kode ke proses lain menggunakan CreateRemoteThread atau WriteProcessMemory.

3. Artefak Spesifik Empire

ArtefakLokasi / Deteksi
Registry (WMI Persistence)HKLM\SOFTWARE\Microsoft\Wbem\Scripting atau HKLM\SOFTWARE\Microsoft\Wbem\ESS β€” objek __EventFilter dan __EventConsumer.
Registry (Run Key)HKCU\Software\Microsoft\Windows\CurrentVersion\Run dengan nilai PowerShell one-liner.
Scheduled TaskTask dengan nama aneh yang menjalankan powershell.exe -enc ....
Mimikatz in memoryString β€œmimikatz”, β€œgentilkiwi” di memori proses.
Empire Agent VariableNama variabel PowerShell aneh seperti $KxzQ, $Global:X yang digunakan untuk menyimpan agent state.

4. Deteksi via Windows Event Log

  • Event ID 4688: Proses powershell.exe dengan command line berkode base64.
  • Event ID 5140: Share access ke C$ atau ADMIN$ dari IP tidak biasa (psexec, smbexec).
  • Event ID 4698: Scheduled task dibuat oleh user non-admin.
  • Event ID 4662: Operasi replikasi direktori (DCSync) β€” hanya boleh dari DC.

5. YARA & Memory Forensics

Rule YARA untuk Empire dapat menargetkan:

  • String unik di agent (Empire, taskings, results).
  • Signature Mimikatz dalam memori.
  • Pola scriptblock yang di-obfuskasi dengan Invoke-Obfuscation.

Volatility dapat digunakan untuk:

  • Malfind: menemukan injected code.
  • Cmdline: melihat command line proses yang mencurigakan.
  • Sockscan/Socks: menemukan koneksi ke C2.

↔️ Dual-Use Spectrum

DEFENSE ◄──────────────────────────────────────────► OFFENSE

Red Team                   Penetration Tester       APT / Ransomware
β”‚                          β”‚                        β”‚
Menguji kemampuan          Mengevaluasi             Lateral movement
deteksi PowerShell         keamanan AD              menggunakan
dan efektivitas            dengan modul             Invoke-PsExec
AMSI/Logging               Empire yang              dan DCSync
β”‚                          lengkap                  β”‚
β”‚                          β”‚                        β–Ό
β–Ό                          β–Ό                        Ransomware
Blue team:                 Auditor:                 seperti Ryuk
reproduksi serangan        simulasi                 menggunakan
untuk membangun            serangan                 Empire untuk
deteksi yang lebih         untuk klien              menyebar di
baik                                               enterprise

Empire adalah contoh klasik dual-use: di satu sisi, ia memungkinkan red team menguji pertahanan PowerShell yang sangat penting; di sisi lain, aktor jahat menggunakannya karena PowerShell ada di mana-mana dan sering tidak dimonitor dengan baik.


πŸ›‘οΈ Countermeasures Khusus Empire

LapisanTindakan
PerimeterBlokir akses keluar dari workstation ke port 80/443 yang tidak perlu. Paksa semua traffic web melalui proxy dengan inspeksi SSL.
NetworkAnalisis NetFlow untuk beaconing. Deteksi DNS tunneling dengan entropy analysis. Monitor URI staging Empire.
EndpointAktifkan PowerShell Script Block Logging (Event 4104) dan Module Logging (Event 4103). Jangan izinkan downgrade ke PowerShell v2. Aktifkan Constrained Language Mode untuk user non-admin.
AMSIJangan hanya mengandalkan AMSI β€” tapi pastikan AMSI tetap aktif. Monitor upaya menonaktifkan AMSI (memory patching, registry changes).
Application ControlGunakan WDAC (Windows Defender Application Control) untuk membatasi eksekusi script PowerShell.
Credential GuardAktifkan Credential Guard untuk melindungi hash dari Mimikatz.
LAPSTerapkan LAPS untuk mencegah pass-the-hash lateral.
LoggingKirim log PowerShell ke SIEM. Buat alert untuk: command line dengan -enc atau -e, scriptblock dengan Invoke-Expression dan base64, proses PowerShell mengakses LSASS.
ResponseJika Empire terdeteksi: isolasi host, cek log PowerShell untuk IOC, periksa registry WMI dan scheduled task, reset semua password yang mungkin telah dicuri.

πŸ”— Koneksi dalam Vault

  • cobalt-strike β€” Empire dan Cobalt Strike sering digunakan bergantian dalam operasi red team. Empire lebih mudah terdeteksi tetapi memiliki modul PowerShell yang lebih banyak. Cobalt Strike lebih stealth.
  • havoc-c2 β€” Havoc adalah penerus spiritual open-source yang mengatasi kelemahan Empire (sleep obfuscation, indirect syscalls) tetapi kehilangan kedalaman modul PowerShell.
  • metasploit β€” Payload Empire dapat di-deliver melalui exploit Metasploit. Metasploit juga memiliki modul post-exploitation yang tumpang tindih.
  • bloodhound β€” Empire memiliki modul bloodhound3 yang menjalankan SharpHound untuk mengumpulkan data AD, yang kemudian dianalisis di BloodHound.
  • Mimikatz β€” Empire mengintegrasikan Mimikatz dalam modul credentials/mimikatz/*.
  • shodan β€” Tidak langsung, tetapi jika Empire C2 server terekspos, bisa ditemukan via Shodan (port 1337, API endpoint).

πŸ“š Referensi

  • Schroeder, W., Warner, J., Nelson, M. (2015-2019). Empire Framework Documentation.
  • BC-Security. Empire 5.x & Starkiller Documentation (2023-2024).
  • MITRE ATT&CK: T1059.001 (PowerShell), T1003.001 (LSASS Memory), T1021.002 (SMB/Admin Shares).
  • O’Leary, S. (2020). Advanced PowerShell for Red Teams.
  • Microsoft, PowerShell Security Best Practices (2023).

Empire Deep Dive | PowerShell Post-Exploitation Framework | C2 & Adversary Simulation