3. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
GİRİŞ
Empire, kriptolojik olarak güvenli iletişim sağlayan ve esnek bir mimariye dayanan bir
PowerShell post-exploitation ajandır. Empire, Powershell.exe’ye gerek kalmadan PowerShell
çalıştırmayı sağlayabilen, Keyloggerlardan Mimikatz’a kadar post-exploitation modülleri
hızlıca yerleştirilebilin ve ağ tespit sistemlerinden kaçınmak için farklı teknikler barındıran bir
uygulamadır.
Empire 2015 yılında BSidesLV’de yayınlanmıştır. Bugüne kadar da yenilenmeye devam
etmiştir. Güncel kullanımda Empire 2.0 sürümü kullanılmaktadır. Empire hakkında tüm
dokümantasyonu ve proje açıklamalarını powershellempire.com adresini inceleyebilirsiniz.
Empire 2.0 Kurulumu ve Kullanımı
Empire, kriptolojik olarak güvenli bir iletişim sunan, çoğu mimari üzerine rahatça çalışabilen
bir PowerShell Exploitation aracıdır.
Empire Kurulumu
Empire kurulumu için öncelikle Github reposundan Empire son sürümü klonlanır.
git clone https://github.com/EmpireProject/Empire
Debian sistemlerde “./setup/install.sh” dizininde bulunan bash script çalıştırılarak gerekli
işlemler tamamlanarak kurulacaktır. Fakat script’in RHEL tabanlı bir sistemde çalışması
mümkün olmadığından yine setup dizininde bulunan req.txt dosyası içerisindeki Python
modülleri PIP aracılığıyla kurulabilmektedir. Daha sonra ./empire komutu ile Empire başlatılır.
4. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Ana Menüsü
Empire başlatıldığında yukarıdaki resimdeki gibi bir ana menüden oluşmaktadır. “Help” yani
yardım komutu Empire üzerinde kullanabileceğiniz diğer komutları görmenizi sağlar.
5. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Çalışma Yapısı
PowerShell Empire, üç ana bileşenden oluşmaktadır.
• Listeners,
• Stagers ve
• Agents
Listener, saldırdığımız makineden yani C&C üzerinde bağlantı dinleyen bir process’tir.
Empire Listeners
DBX; Empire Dropbox Listener’ıdır.
Agent’lar ile iletişim için Dropbox kullanır.
6. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
http; Standart HTTP listener’ıdır. Back-end’te Flask kullanır. Default profile olarak
/admin/get.php, news.php /login/process.php gibi GET ve POST istekleri atarak konuşur.
Python ya da Powershell olarak dil seçimi yapılabilmektedir. HTTPS için SSL sertifikası
kullanılabilmektedir.
HTTP_COM; HTTP/HTTPS listener oluşturur fakat http listener’dan farklı olarak yine GET/POST
request’leri atarak iletişim kurmuş olsa da bu modül, Net.WebClient yerine iletişim kurmak
için gizli Internet Explorer COM nesnelerini kullanır. Eğer https kullanılmak isteniyorsa valid bir
sertifika kullanılmalıdır.
7. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
HTTP_FOREIGN; http foreign, birden fazla C&C server kullanılıyorsa foreign bir http listener
oluşturulmasını sağlar.
HTTP_HOP; http_hop, Metasploit’teki reverse hop HTTP payload'ı gibi çalışır ve gelen
bağlantılar başka bir dinleyiciye gönderilir.
8. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
HTTP_MAPI; Liniaal, bir Exchange sunucusu aracılığıyla Empire agent’ları için bir C2 kanalı
oluşturulmasını sağlar. Tüm iletişim MAPI/HTTP veya RPC/HTTP üzerinden ve doğrudan Liniaal
agent'ı ile Exchange sunucusu arasında yapılır. Hiçbir trafik HTTP olarak gerçekleşmez ve çoğu
network-based Detection'ları atlatır.
9. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
METERPRETER; Klasik Meterpreter listener’i oluşturur.
ONEDRIVE; Listener olarak Onedrive kullanır.
10. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
REDIRECTOR; Internal redirector listener ayarlar. Listener’dan farklı bir internal listener’a peer
to peer bağlantı sağlar.
11. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Stagers
Empire 1.0'dan farklı olarak Empire2.0 da daha fazla stager bulunmaktadır.
Yeni eklenen stagerlar: (OSX/Python)
- Jar files
- ELF Pyinstaller source generation
- Empire AppBundles
- Empire .pkg installers
Empire stagerları işletim sistemi ortamlarına göre ayırılmıştır. Windows/Osx/Multi olarak
kategorilendirilmiştir.
Windows Stager’ları
Windows/BackdoorLnkMacro: .lnk dosyalarını kullanarak Backdoor oluşturur. Kullanıcı
tıkladığında bir empire launcher'ı indirir ve başlatır. Örneğin Internet Explorer.lnk dosyası
oluşturulup kullanıcının tıklamasıyla etkinleştirilir.
Windows/BunnyLauncher: Tek satırdan oluşan bir bunny script oluşturur.
12. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/C# Powershell Launcher: Powershell'in de içinde gömülü olduğu bir c# exe dosyası
oluşturur.
13. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/DLL Loader: Stager koduyla birlikte enjekte etmek için bir PowerPick Reflective
DLL'i oluşturur.
14. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/Ducky Script: Rubber Ducky için bir satırlık stager kodu içeren ducky script
oluşturur.
Not: Ducky kodu aynı şekilde Digispark’a dönüştürülebilir.
15. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/HTA Launcher: İçerisinde stager kodu bulunduran .HTA dosyası oluşturur.
16. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/BAT Launcher: İçerisinde stager kodu bulunan bir BAT launcher oluşturur. Ayrıca
bu bat dosyası daha sonra kendini silmektedir.
17. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/LNK Launcher: Stager kodu bulunduran bir LNK dosyası oluşturur.
18. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/Regsrv Launcher: İçerisinde stager kodu bulunduran SCT (COM Scriptlet) dosyası
oluşturur.
19. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/VBS Launcher: İçerisinde stager kodu bulunan .VBS dosyası oluşturur.
20. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/MSBUILD XML: Msbuild.exe ile birlikte çalıştırılması için içerisinde stager kodu
bulunduran xml dosyası oluşturur.
21. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/Office Macro: Office 97-2003 ve 2007 dosya türevlerinde çalışmak üzere MACRO
oluşturur.
Windows/Macroless Word: Kod yürütme için bir formül alanı kullanarak bir makro olmayan
belge oluşturur.
22. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/ShellCode Launcher: Windows shellcode stager’ı oluşturur.
23. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows/TeensyLauncher: Teensy için stager kodu içeren script oluştur.
24. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX Stager’ları
OSX/Apple Script Launcher: Empire stager’ı çalıştıran bir applescript oluşturur.
25. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX/Application: OSX için Empire Application’ı oluşturur.
OSX/DuckyLauncher: OSX için stager kodu içeren ducky script oluşturur. (Digispark’a
dönüştürülebilir.)
26. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX/Dynamic Library Extension: OSX için stager kodu içeren .dylib oluşturur.
OSX/Jar File: Stager kodu içeren .jar dosyası oluşturur.
27. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX/Launcher: Bir satırlık stager kodu oluşturur.
OSX/Macho: OSX için stager kodu içeren bir macho dosyası oluşturur.
28. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX/Macro: Ofisin yeni versiyonlarını da destekleyen OSX Office macro’su oluşturur.
29. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX/ .PKG STAGER: OSX için PKG installer oluşturur. Kurulum tamamlandığında empire
launcher başlatır.
OSX/HTML Launcher (Safari): HTML payload launcher oluşturur.
30. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
OSX/Teensy Launcher: OSX için Teensy script oluşturur.
31. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Multi Stager’ları
Multi/ Bash: Kendi kendisini silen launcher başlatan bir bash script oluşturur.
32. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Multi/ Launcher: Tek satırdan oluşan launcher kodu oluşturur.
33. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Multi/Macro: Hem Windows için hem OSX için 97-2016 ofis versiyonları için macro
oluşturur.
Multi/PyInstaller/ELF File: Pyinstaller kullanarak oluşturulmuş empire çalıştıran bir elf
dosyası oluşturur.
34. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Multi/War: Deploy edilebilir WAR dosyası oluşturur.
35. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Agent’ları
Bir agent bağlandığında aşağıdaki gibi bir mesaj gelir: Örneğin, [+] Initial agent
CGUBKC1R3YLHZM4V from 192.168.52.168 now active. Agents yazarak agents menüsüne
ulaşılabilir. Aktif agent’lar ile ilgili temel bilgiler bulunmaktadır.
Belirli agentlar üzerinde üzerinde veya agent menüsünden çeşitli komutlar uygulanabilir,
Örneğin “Kill All” diyerek tüm agent’lar kapatılabilir. Agent ile ilgili işlem yapmak için "interact
AGENT_ISMI" komutunu kullanılır. Agent ismi tüm komutlar için aynı olmalıdır.
36. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Interact Komutu Kullanımı:
37. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Agent Komutları
Agentları kontrol etmek için aşağıdaki komutlar kullanılır.
38. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Modülleri
Kullanılabilir modülleri görmek için, usemodule <tab> yazılması yeterlidir.
39. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Modül adlarını/açıklamalarını aramak için, örneğin "searchmodule privesc"
kullanılabilmektedir.
Bir modülü kullanmak için örneğin PowerView'dan netview kullanmak için usemodule
situational_awareness/network/sharefinder yazılması yeterlidir.
Custom Script Modül Kullanımı
Default tanımlı gelen modüllere ek olarak, Empire .ps1 scriptlerini kolayca içe
aktarabilmektedir. Scripti import etmek için scriptimport ./path/ komutunu kullanılır.
Daha sonra script içerisindeki tüm fonksiyonlar "scriptcmd" komutu kullanılarak aktif shell ile
uyumlu hale gelecektir. Bir modüle ek olarak fonksiyon eklenebilimesi gibi faydalı bir durum
oluşturmaktadır.
40. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Trafiği
Varsayılan olarak, Empire HTTP listener'ları, üç özel URL ile sürekli olarak konuşacak şekilde
ayarlanmıştır. Aşağıda resimde gösterilmiştir.
41. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire HTTP Request Davranışı
Empire URL’leri kolayca değiştirilebilmektedir. Empire C2 farklı HTTP GET ve POST talepleri
üretebilmektedir.
Örneğin, Empire agent’ları komut çalıştırmak veya dosya yüklemek gibi görevlerde HTTP GET
isteklerini kullanır. Empire C2 agent’ları Empire kontrol sunucusuna cevap verilerini
göndermek için HTTP POST isteklerini kullanmaktadır.
Bu özellikler normal ağ aktivitesi taban hatlarına göre incelenebilir. Örneğin, zaman içinde,
Empire kurbanları muhtemelen aşırı sayıda HTTP bağlantısı sergileyecek ve tek bir IP adresine
veya domain'e değiştirilen anormal bir veri hacmi gösterecektir.
Blue team'ler ayrıca HTTP POST taleplerinde potansiyel olarak anormal davranışlar
gözlemleyebilir. Genellikle, HTTP / TCP port 80 üzerinden gönderilen veriler şifrelenmez.
Saldırgan, Empire’ın giden iletişiminde 80 numaralı TCP bağlantı noktasını kullanıyorsa, blue-
team şifreli verilerin şifrelenmemiş olmamasını beklemeledir. Bu durum fark edilebilir. Fakat
bu durum saldırgan normal HTTPS kullanıldığında geçersiz olacaktır.
42. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire’ın Sistemde Bıraktığı Windows Event
Logları İncelemek
Windows Event Logları; Yapılandırmaya bağlı olarak, saldırganın faaliyetlerini bütünüyle
ayrıntılandıran PowerShell kullanımının bütün log’larını yakalamaktadır. Windows 8, 10 ve
Server 2012 R2 gibi işletim sistemleri, varsayılan olarak ayrıntılı PowerShell logları
toplamaktadır. Bu loglar, hangi PowerShell komutlarının belirli bir sistemde ne zaman ve
nereden (uzaktan veya yerel olarak) yürütüldüğünü gösterecektir. Aşağıdaki ekran görüntüsü,
saldırganın Empire C2 kullanmasından sonra oluşturulan log’ları gösterir.
Dolayısıyla burada analizcilerden Powershell log’larını bir şekilde Windows üzerinde açmaları
(Sysmon ile Powershell log’lanabilir) ve event’ler takip edilmesi gerekmektedir.
43. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Empire Tespit Yöntemleri Sysmon ile
Powershell Empire Kullanımı Tespit Etmek
Bir blue team üyesi için log’ları okumak ve kontrol etmek oldukça zor olabilmektedir.
Powershell Empire'ın agent’ları memory üzerinde çalışmaktadır ve minimum düzeyde log
üretmektedir. Ayrıca, yeni bir agent dağıtıldığında başlangıç komut dosyasını gizlemektedir.
Bu nedenle Powershell ScriptBlock log’larından bir şey elde etmek neredeyse imkansızdır.
Temelde aktivitesini gizleme yeteneği ve çeşitli exploitation modüllerini çalıştırabilme
yeteneği ile Powershell Empire'ı analistlerin tespit etmesi resmen bir kâbus olmaktadır. Fakat
sysmon Powershell Empire'ın kullanımını etkili bir şekilde tanımlamanın bir yöntemi olabilir.
Powershell Empire'ı Sysmon ile ve Event Log 1 ve 3 ile etkili bir şekilde tespit etmenin iki yolu
vardır.
1) Yeni bir agent yüklemesi üzerine, bu olayların her ikisi de tetiklenir. Event Log 1, aşağıdakine
benzer:
44. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Sysmon Event Log 1 "CommandLine" parametresinde, "-NoP -sta -w 1 -enc" anahtarlarıyla
Powershell'i çalıştıran ve ardından uzun bir base64 kodu ile başlar.
Kontrol etmek istediğiniz ilk şey, şu anda Sysmon ile Powershell kullanımını takip ettiğinizden
emin olmaktır. Sysmon'u powershell.exe kullanımını içerecek şekilde yapılandırdığınızdan
emin olmak için, Sysmon.xml konfigürasyon dosyanızdaki hem Event Log 1 ve 3'ün
yapılandırmasına, hem de powershell.exe için ayrı bir konfigurasyon eklemeniz
gerekmektedir.
Sysmon konfigurasyon dosyasını şuradan bulabilirsiniz:
https://github.com/ion-storm/sysmon-config/blob/master/sysmonconfig-export.xml
https://github.com/sametsazak/sysmon
Powershell kullanımını loglara kaydedecek şekilde yapılandırılmış bir Sysmon'a sahip
olduğunuzda ve powershell'in tam yolundan başlayarak "CommandLine" alanına dayalı
uyarıları tetiklemek için bazı koşulları yapılandırmanız gerekmektedir. Yukarıdaki
konfigürasyonları kullanıyorsanız, yapılandırmışsınız demektir. Powershell agent’larından
birisi çalıştığında bu parametrelerle bir Powershell başlatıldığının log’larını üretecektir.
2) Powershell Empire agentlarını tanımlamak için kullanılabilecek ikinci yol ise Sysmon Event
Log 3'ü izlemektir. Event Log 3 şuna benzer:
Powershell'i kullanarak external (dışarı doğru) bir ağ bağlantısı başlatılması çok nadiren olur
ve kullanıcının genellikle bundan haberi olur yani kullanıcı tarafından yapılmış bir işlem
sayılabilir. Bu tür bir olayı izleyerek, yalnızca birinin Powershell Empire agent'ını
kullanabileceğini değil, aynı zamanda powershell ile dosya indirilmesi, yüklenmesi gibi
Powershell'i bu amaçla kullanıldığında da logları üretilmiş olur ve bu logları SIEM'inize
yönlendirebilirsiniz ve farklı korelasyonlar oluşturabilirsiniz.
45. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
IDS (Snort/Suricata) ile Powershell Empire Tespit
Etmek
Daha önce yazımızda Powershell Empire agentlarının HTTP Request trafiğinden bahsetmiştik,
test ortamı olarak bir Windows7 kurup üzerinde powershell empire çalıştırıp bir süre packet
capture yaptık. Daha sonra bu pcap kaydını Snort/Suricata ile çalıştırdığımızda güncel kural
seti ile aldığımız sonuç…
(networktotal.com)
ETPRO TROJAN PowerShell Empire Request HTTP Pattern alarmının oluştuğunu görmekteyiz,
fakat bu kural ETPRO seti içerisinde mevcut. EmergingThreats’in paralı olan kural seti.
Emerging Threats Open Suricata kuralları içerisinde aşağıdaki gibi bir kural var:
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET TROJAN PSEmpire Checkin via
POST"; flow:to_server,established; content:"POST"; http_method; urilen:14;
content:"/admin/get.php"; fast_pattern:only; http_uri; content:"User-Agent|3a 20|Mozilla/5.0
(Windows NT 6.1|3b| WOW64|3b| Trident/7.0|3b| rv|3a|11.0) like Gecko|0d 0a|"; http_header;
content:!"Referer|3a 20|"; http_header; content:!"|0d 0a|Accept"; http_header;
pcre:"/Cookiex3ax20SESSIONID=[A-Z0-9]{16}rn/"; reference:url,www.powershellempire.com;
classtype:trojan-activity; sid:2021616; rev:2; metadata:created_at 2015_08_12, updated_at
2015_08_12;)
Şimdi bu kural bize ne söylemektedir? Adım adım inceleyeceğiz:
1. Bu kuralın tetiklenmesi için trafiğin $HOME_NET : any port olarak tanımlanmış olan
yerden örneğin(192.168.0.0/16) $EXTERNAL_NET : any port olarak tanımlanmış yere
gitmesi gerekiyor:
2. HTTP content içerisinde POST methodu olmaası gerekiyor.
3. HTTP content içerisinde “/admin/get.php” olması gerekiyor.
4. HTTP content içerisinde User Agent pattern’i aşağıdaki gibi olması gerekiyor.
5. ”User-Agent|3a 20|Mozilla/5.0 (Windows NT 6.1|3b| WOW64|3b| Trident/7.0|3b|
rv|3a|11.0) like Gecko|0d 0a|"
6. HTTP Header content’i şu pattern/patternleri içermemesi gerekiyor. "Referer|3a
20|";"|0d 0a|Accept";"|0d 0a|Accept"
7. "/Cookiex3ax20SESSIONID=[A-Z0-9]{16}rn/" regex pattern’i ile bir http header
beklenmektedir.
46. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Powershell Empire bu kurala her ne kadar şuanki trafiği ile yakalanıyor olsa da trafiğin bu
kurala ya da benzer kurallara yakalanmaması için düzenlenmesi zor bir işlem değil. Örneğin
burada admin/get.php yerine farklı bir dosya/dizin kullanılsaydı ve diğer content içerikleri
değiştirilmiş olsaydı kural bypass edilmiş olurdu.
Bu kuralların dışında PTResearch tarafından 2 adet kural daha yazılmış Powershell Empire’ı
tespit etmek için:
https://github.com/ptresearch/AttackDetection/blob/master/PowerShell%20Empire/power
_shell_empire.rules
alert http $HOME_NET any -> $EXTERNAL_NET any (msg: "MALWARE [PTsecurity] PowerShell
Empire Request HTTP Pattern";flow: established, to_server; content: "POST"; http_method;
content: "HTTP/1.1|0d0a|Cookie: session="; depth:1000; fast_pattern; content: "=|0d0a|User-
Agent: "; distance:27; within:400; content: "Host: "; within:400; content: "Content-Length:
462|0d0a|"; within: 400; content:!"Referer|3a|"; http_header; content: !"Content-Type: ";
http_header; classtype: trojan-activity; metadata: id_399044,created_at 2017_11_21; reference:
url, github.com/ptresearch/AttackDetection; metadata: Open Ptsecurity.com ruleset; sid:
10002268; rev: 2;)
alert http $EXTERNAL_NET any -> $HOME_NET any (msg: "MALWARE [PTsecurity] PowerShell
Empire stager receive over HTTP";flow: established, to_client; content:"200"; http_stat_code;
content: "If($PSVersionTable.PSVersion.Major -ge 3){"; http_server_body; nocase; depth: 1000;
content: "$GPS=[ref].Assembly.GetType(";http_server_body; nocase; within: 100; content:
"System.Management.Automation.Utils";http_server_body; within: 100; threshold: type limit, track
by_src, count 1, seconds 30; classtype: trojan-activity; metadata: id_377596,created_at
2017_11_22; reference: url, github.com/ptresearch/AttackDetection; metadata: Open
Ptsecurity.com ruleset; sid: 10002269; rev: 1;)
47. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Carbon Black İle Powershell Empire Tespit Etmek
Carbon Black, Üst düzey güvenlik operasyon merkezleri ve blue team ekipleri için
filtrelenmemiş görünürlük sağlayan ölçeklenebilir, gerçek zamanlı tehdit avcılığı ve olay
müdahale (IR) çözümüdür. Hali hazırda Carbon Black kullanıyorsanız birazdan aşağıda örneğini
vereceğim kurallar muhtemelen zaten deploy edilmiş ve aktifleştirilmiştir. Powershell Empire’ı
tespit etmek için oluşturulan kurallara yakından bakalım:
Kural 1:
● process_name:powershell.exe AND netconn_count:[1 TO *] AND (cmdline:”-Enc”
OR cmdline:”-Exec” OR cmdline:”bypass” OR cmdline:”hidden”)
Şimdi bu kuralı adım adım inleyelim.
1- İlk olarak process_name = powershell.exe olmalı,
2- En az 1 network bağlantısı yapmış olmalı,
3- Commandline parametresi olarak en az yukardaki -ENC, -EXEC şeklinde bir
parametre kullanmalı.
Bu kural deploy edildiğinde sadece Empire değil bu şekilde çalışan bütün Powershell
kullanımlarını yakalayacaktır.
48. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
(https://www.carbonblack.com/2015/08/14/how-to-detect-powershell-empire-with-carbon-black/)
49. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Splunk ile Powershell Empire Tespit Etmek
Splunk, Enterprise bir SIEM ürünüdür. Daha önce yazımızda anlattığımız Sysmon ve Windows
event log’ları takip ederek Powershell Empire tespit yöntemi gibi Splunk’ta Powershell Empire
agent’larını tespit etmek için aynı yöntemi uygulamaktadır.
Yani kısaca Powershell log’ları üzerinden gidilerek tespit edilecektir.
50. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
51. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
Windows Üzerinde Powershell Empire
Temizleme
Bu kısımda aslında Powershell Empire'ın "Persistence" yani sistem üzerinde kalıcı olmayı
sağlayan modülleri üzerine ve bu modüllerin nasıl kaldırılacağına değineceğiz. Kalıcılık
modüllerinin amacı, sunuculara sürekli olarak erişebilmenizi sağlamaktır. Powershell Empire
agent’ları memory üzerinde çalışır ve herhangi bir dosya oluşturmaz. Ancak saldırganlar için
olumsuz olan şey, yeniden başlatma veya herhangi bir işlerin ters gitme olasılığına karşı kalıcılık
sağlamak için diske dokunmaktadır. Bu, savunucuların bulabileceği veya güvenlik araçlarının
algılayabileceği eserler bırakır.
Powershell Empire persistence modüllerini tespit etmek ve temizlemek için NorkNork adında
bir araçtan faydalanacağız:
Github: https://github.com/n00py/NorkNork
Bu araç kısaca aşağıdaki Empire'ın "kalıcılık" için uyguladığı yöntemleri Windows üzerinde
bulur ve düzeltir:
● Scheduled Tasks (Zamanlanmış Görevler)
● Auto-run (Başlangıçta otomatik çalıştırılanlar)
● WMI subscriptions (WMI eventleri)
● Security Support provider
● Ease of Access Center backdoors
● Machine account password disable
Nasıl Kullanılır?
İndirdikten sonra aşağıdaki komutlar kullanılarak çalıştırılabilir:
PS C:Users>python norknork.py
PS C:Users> .norknork.exe
53. [EMPİRE 2.0 KURULUMU ve KULLLANIMI]
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
BGA Bilgi Güvenliği A.Ş. Hakkında
BGA Bilgi Güvenliği A.Ş. 2008 yılından bu yana siber güvenlik alanında faaliyet göstermektedir.
Ülkemizdeki bilgi güvenliği sektörüne profesyonel anlamda destek olmak amacı ile kurulan BGA Bilgi
Güvenliği, stratejik siber güvenlik danışmanlığı ve güvenlik eğitimleri konularında kurumlara hizmet
vermektedir.
Uluslararası geçerliliğe sahip sertifikalı 50 kişilik teknik ekibi ile, faaliyetlerini Ankara ve İstanbul ve
USA’da sürdüren BGA Bilgi Güvenliği’nin ilgi alanlarını “Sızma Testleri, Güvenlik Denetimi, SOME, SOC
Danışmanlığı, Açık Kaynak Siber Güvenlik Çözümleri, Büyük Veri Güvenlik Analizi ve Yeni Nesil Güvenlik
Çözümleri” oluşturmaktadır.
Gerçekleştirdiği başarılı danışmanlık projeleri ve eğitimlerle sektörde saygın bir yer edinen BGA Bilgi
Güvenliği, kurulduğu günden bugüne alanında lider finans, enerji, telekom ve kamu kuruluşlarına
1.000'den fazla eğitim ve danışmanlık projeleri gerçekleştirmiştir.
BGA Bilgi Güvenliği, kurulduğu 2008 yılından beri ülkemizde bilgi güvenliği konusundaki bilgi ve
paylaşımların artması amacı ile güvenlik e-posta listeleri oluşturulması, seminerler, güvenlik etkinlikleri
düzenlenmesi, üniversite öğrencilerine kariyer ve bilgi sağlamak için siber güvenlik kampları
düzenlenmesi ve sosyal sorumluluk projeleri gibi birçok konuda gönüllü faaliyetlerde bulunmuştur.
BGA Bilgi Güvenliği AKADEMİSİ Hakkında
BGA Bilgi Güvenliği A.Ş.’nin eğitim ve sosyal sorumluluk markası olarak çalışan Bilgi Güvenliği
AKADEMİSİ, siber güvenlik konusunda ticari, gönüllü eğitimlerin düzenlenmesi ve siber güvenlik
farkındalığını arttırıcı gönüllü faaliyetleri yürütülmesinden sorumludur. Bilgi Güvenliği AKADEMİSİ
markasıyla bugüne kadar “Siber Güvenlik Kampları”, “Siber Güvenlik Staj Okulu”, “Siber Güvenlik Ar-
Ge Destek Bursu”, ”Ethical Hacking yarışmaları” ve “Siber Güvenlik Kütüphanesi” gibi birçok gönüllü
faaliyetin destekleyici olmuştur.