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
| Era | Framework Dominan | Alasan |
|---|---|---|
| 2015β2018 | Empire | PowerShell di mana-mana, deteksi minimal, modul lengkap. |
| 2018β2022 | Cobalt Strike | Stealth lebih tinggi, malleable C2, BOF, sleep mask. |
| 2022βsekarang | Havoc / Sliver | Open-source dengan teknik evasion modern (indirect syscalls). |
| Selalu relevan | Empire | Masih 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:
| Listener | Cara Kerja | Stealth Level |
|---|---|---|
| HTTP/HTTPS | Agent check-in via GET, tasking via POST. Dapat dikustomisasi User-Agent, cookie, URI. | Menengah (bisa di-mimic, tapi tidak secanggih Malleable C2). |
| DNS | Agent check-in via DNS TXT/MX query ke server, tasking dikirim via DNS response. | Tinggi (bypass firewall, sulit dimonitor) β tetapi lambat. |
| SMB | Agent berkomunikasi via Named Pipe di jaringan internal untuk pivoting. | Tinggi (tidak ada traffic keluar). |
| TCP | Direct 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-Expressionatau[ScriptBlock]::Create().
2. Agent Core
Agent setelah staging adalah script PowerShell yang melakukan:
- Membuat objek
System.Net.WebClientatauSystem.Net.Http.HttpClientuntuk komunikasi. - Mendaftarkan diri ke server dengan mengirim metadata (hostname, user, domain, OS, PowerShell version).
- Loop: tidur (default 5 detik, bisa diatur
SleepdanJitter) β 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
| Modul | Fungsi | Teknik MITRE |
|---|---|---|
credentials/mimikatz/logonpasswords | Ekstrak password plaintext, hash NTLM, Kerberos ticket dari LSASS. | T1003.001 |
credentials/mimikatz/dcsync | DCSync: mendapatkan hash semua user dari Domain Controller. | T1003.006 |
credentials/mimikatz/kerberos_ticket_list | Ekspor ticket Kerberos yang tersimpan di memori. | T1558.001 |
credentials/powerdump | Dump password hash dari SAM (via reg save). | T1003.002 |
credentials/lazagne | LaZagne: mencuri password dari browser, WiFi, aplikasi. | T1555.003 |
credentials/vault_credential | Ekstrak Windows Vault credentials. | T1555.004 |
Lateral Movement
| Modul | Fungsi | Teknik MITRE |
|---|---|---|
lateral_movement/invoke_psexec | Remote execution via SMB (PsExec-style). | T1021.002 |
lateral_movement/invoke_wmi | Remote execution via WMI. | T1047 |
lateral_movement/invoke_dcom | Remote execution via DCOM (ShellWindows, ShellBrowserWindow). | T1021.003 |
lateral_movement/invoke_smbexec | Execution via SMB service (SMBExec). | T1021.002 |
lateral_movement/new_gpo_immediate_task | Lateral via GPO immediate scheduled task. | T1053.005 |
Persistence
| Modul | Fungsi | Teknik MITRE |
|---|---|---|
persistence/userland/registry | Registry Run key untuk persistensi user-level. | T1547.001 |
persistence/elevated/wmi | WMI Event Subscription untuk persistensi SYSTEM. | T1546.003 |
persistence/elevated/schtasks | Scheduled task SYSTEM. | T1053.005 |
persistence/misc/add_net_user | Buat user lokal untuk backdoor. | T1136.001 |
persistence/misc/golden_ticket | Golden Ticket attack untuk persistensi domain. | T1558.001 |
Situational Awareness
| Modul | Fungsi | Teknik MITRE |
|---|---|---|
situational_awareness/network/get_domain_controller | Temukan DC di domain. | T1018 |
situational_awareness/host/computerdetails | Enum informasi sistem, patch, antivirus. | T1082 |
situational_awareness/network/portscan | Port scanning internal via agent. | T1046 |
situational_awareness/host/winenum | Enum user, grup, share, service, dll. | T1069 |
situational_awareness/network/bloodhound3 | Jalankan SharpHound (via reflection) untuk data BloodHound. | T1482 |
Evasion & Utility
| Modul | Fungsi |
|---|---|
management/bypassuac | Bypass UAC untuk elevasi ke admin. |
management/invoke_amsi_bypass | Matikan AMSI. |
management/disable_win_defender | Menonaktifkan Windows Defender. |
management/psinject | Injeksi 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
AmsiScanBufferdiamsi.dlldan menimpa instruksi awalnya denganret(return false). - Registry: Mengatur
HKLM\SOFTWARE\Microsoft\AMSI\Providersuntuk 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.dlldi 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\ScriptBlockLoggingke 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.exedengan command line yang sangat panjang (base64). Sysmon Event ID 1 dapat menangkap ini. Command line dengan-encatau-ediikuti 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-Expressionadalah 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.exemengakseslsass.exedengan hakPROCESS_VM_READ. - Injection Detection: EDR dapat mendeteksi ketika
powershell.exemenyuntikkan kode ke proses lain menggunakanCreateRemoteThreadatauWriteProcessMemory.
3. Artefak Spesifik Empire
| Artefak | Lokasi / 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 Task | Task dengan nama aneh yang menjalankan powershell.exe -enc .... |
| Mimikatz in memory | String βmimikatzβ, βgentilkiwiβ di memori proses. |
| Empire Agent Variable | Nama variabel PowerShell aneh seperti $KxzQ, $Global:X yang digunakan untuk menyimpan agent state. |
4. Deteksi via Windows Event Log
- Event ID 4688: Proses
powershell.exedengan command line berkode base64. - Event ID 5140: Share access ke
C$atauADMIN$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
| Lapisan | Tindakan |
|---|---|
| Perimeter | Blokir akses keluar dari workstation ke port 80/443 yang tidak perlu. Paksa semua traffic web melalui proxy dengan inspeksi SSL. |
| Network | Analisis NetFlow untuk beaconing. Deteksi DNS tunneling dengan entropy analysis. Monitor URI staging Empire. |
| Endpoint | Aktifkan 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. |
| AMSI | Jangan hanya mengandalkan AMSI β tapi pastikan AMSI tetap aktif. Monitor upaya menonaktifkan AMSI (memory patching, registry changes). |
| Application Control | Gunakan WDAC (Windows Defender Application Control) untuk membatasi eksekusi script PowerShell. |
| Credential Guard | Aktifkan Credential Guard untuk melindungi hash dari Mimikatz. |
| LAPS | Terapkan LAPS untuk mencegah pass-the-hash lateral. |
| Logging | Kirim log PowerShell ke SIEM. Buat alert untuk: command line dengan -enc atau -e, scriptblock dengan Invoke-Expression dan base64, proses PowerShell mengakses LSASS. |
| Response | Jika 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
bloodhound3yang 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