PowerShell Empire Serisi – I | Empire’a Giriş

Bu yazı dizisinde açık kaynak kodlu Empire platformunu uygulamalı bir şekilde inceleyeceğiz. Bu ilk yazıda ise Empire hakkında giriş seviyesinde bilgi vermek istiyorum.

Empire istismar sonrası süreçleri için üretilmiş, komuta kontrol sunucuları Python dilinde, uç noktalardaki modüllleri ise PowerShell ile yazılmış, dökümantasyonu gayet yeterli seviyede olan, kullanımı da gayet kolay olan bir araçtır. İstismar sonrası süreçleri için geliştirilmiş olmasına rağmen, istismar aşamasına yönelik kısımları da mevcuttur.

Empire’ı bu kadar özel kılan şey, Advance Persistent Threat(APT,Gelişmiş Sürekli Tehdit) davranışlarını oldukça yakından model alıyor oluşudur. Empire gizlilik(stealth), esneklik(flexibility) ve güvenli iletişim(secure connection) sağlamaktadır.

Geleneksel imza veritabanlı anti-virüs programlarını ve ağ güvenlik araçlarını atlatmak için tasarlanmış Empire, saldırganlara PowerShell’in güçlü imkanlarından faydalanıp Windows sistemleri tamamen ele geçirme imkanı sunmaktadır.

Yazının başında da bahsettiğimiz gibi Empire açık kaynak kodlu olup, kaynak kodları GitHub’da mevcuttur.

Terminoloji

Empire terminolojisinde temel olarak 4 kavram mevcuttur.

  1. Stagers: Empire kontrol sunucusu ile bağlantı kuran ve hedef sistemi kontrol etmek için kullanılan payload.
  2. Listeners: Hedef sistemde Stagers tarafından açılan bağlantıları dinlerler.
  3. Agents: Enfekte olmuş(infected) sistemlere verilen isimdir. Kurban ya da hedef sistem de denilmektedir.
  4. Modules: Ele geçirilmiş(enfekte olmuş) sistemler üzerinde kalıcılık, hak yükseltme gibi işlemlerin yapılmasını sağlayan scriptlerdir.

Empire’ın çalışma mantığı aşağıdaki resimdeki gibidir.

İlk olarak hedef sisteme stager gönderilir ve kontrol sunucusuna(Empire’ın olduğu sunucu) bağlantı açılır. Açılan bu bağlantı listener tarafından karşılanır ve dinlenir.

Empire Agent‘ları asenkrondur yani birbirinden bağımsız olarak çalışabilirler. Agent‘lar görevler için belirli aralıklarla sunucuyu yoklarlar. Bu değer varsayılan olarak 5 saniyedir. Sunucuya gönderilen HTTP GET isteği ile sunucu yoklanırken, HTTP POST isteği ile de veri transferi gerçekleşir.

Empire, fark edilmeyi zorlaştırmak ve gizliliği sağlamak için oluşturduğu bağlantıları şifrelemekte ve zararsız bir işlemmiş gibi görünmektedir. Bu durum ağ güvenlik elemanları tarafından Empire’ın tespit edilmesini güçleştirmektedir.

Empire Kurulumu
  • Proje GitHub sayfasından indirilir.

  • İnen dosyaların içinde setup adlı bir klasör mevcut. Bu klasörün içindeki install.sh adlı bash script kodu ile kurulum yapılıyor. ./installl.sh komutu ile kurulumu başlatıyoruz.

  • Empire dizini içinde empire adlı çalıştırılabilir bir dosya mevcut. ./empire komutu ile programı başlatıyoruz.

  • Karşımıza gelen açılış sayfası ise şu şekilde.

Ahmet Selim Kaya

Ofansif Güvenlik Araştırmacısı, TOBB ETU Siber Güvenlik Yüksek Lisans öğrencisi. Bilmediklerinin öğrencisi, bildiklerinin öğretmeni.