Siber Silah ile Sızma Testleri

Bugün, sızdırıldığından bu yana Garnizon Bilgi Güvenliği olarak analiz ettiğimiz ve sızma testlerinde aktif olarak kullandığımız, NSA’in sızdırılan dökümanları içerisinde bulunan Fuzzbunch’dan bahsedeceğim.

WannaCry ve Petya gibi fidye yazılımlarının sızdırılan bazı zafiyetler üzerinden çalışması ve gündemi uzun süredir meşgul etmesinden dolayı aslında daha öncesi için planladığım bu yazıyı şimdi yazıyorum.

Windows işletim sisteminde kullanıcı etkileşimi gerektirmeyen ve SMB üzerinden erişim sağlandığı taktirde uzaktan kod çalıştırılabilen zafiyetleri istismar eden Fuzzbunch, kullandığı yöntemler ve içerdiği exploitler bakımından güvenlik sektörüne savunma ve saldırı anlamında büyük ilerlemeler kaydettirmiştir.

Ring0 üzerinden çalışan DoublePulsar arka kapısı, pek çok analist ve zararlı yazılım geliştiriciye kernel üzerinde kod çalıştırma konusunda farklı teknikler geliştirmeleri için ilham kaynağı olmuştur. (bu konuda verebileceğim örnek bir çalışma)

Sızdırılan aracı edinebileceğiniz kaynaklar:

Fark edeceğiniz üzere, sızdırılan belgeler içerisinde windows, swift ve oddjob adında üç adet klasör bulunmakta.

Windows klasörü içerisinde windows exploitlerini, implantlarını ve payloadlarını ve Fuzzbunch’ı barındırıyor. Sızma testleri için kullanılan kaynakları içeren klasör windows klasörü.

Fuzzbunch, metasploit gibi bir exploitation framework’ü olmakla beraber python dilinde yazılmıştır. 32-bit windows makinalarda çalışmak üzere tasarlanmıştır. İçerisinde bulunan exploitlere bakalım (README dosyasından alınmıştır);

  • EARLYSHOVEL RedHat 7.0 – 7.1 Sendmail 8.11.x exploiti
  • EBBISLAND (EBBSHAVE)  SPARC and x86 mimarilerindeki Solaris 6, 7, 8, 9 & 10 (ve muhtemelen yeni versiyonlarda da) RPC XDR overflow ile root yetkisiyle uzaktan kod çalıştırma.
  • ECHOWRECKER Samba 3.0.x Linux uzaktan kod çalıştırma.
  • EASYBEE MDaemon email sunucu zafiyeti
  • EASYFUN 9.5.6 öncesi WDaemon / IIS MDaemon/WorldClient için EasyFun 2.2.0 Exploiti
  • EASYPI IBM Lotus Notes exploiti (Stuxnet olarak tespit edilmiştir.)
  • EWOKFRENZY IBM Lotus Domino 6.5.4 & 7.0.2 exploiti
  • EXPLODINGCAN Arka kapı oluşturan IIS 6.0 exploiti
  • ETERNALROMANCE SMBv1 exploiti. (XP, 2003, Vista, 7, Windows 8, 2008 ve 2008 R2) İstismarı sonucunda SYSTEM yetkisi veriyor. (MS17-010)
  • EDUCATEDSCHOLAR SMB exploiti (MS09-050)
  • EMERALDTHREAD SMB exploiti (Windows XP ve Server 2003) (MS10-061)
  • EMPHASISMINE IBM Lotus Domino 6.6.4 ve 8.5.2 arası için IMAP exploiti
  • ENGLISHMANSDENTIST Outlook Exchange WebAccess kurallarını kullanıcı tarafında mail olarak çalıştırılabilir kod yollamak için değiştirir.
  • EPICHERO 0-day Avaya Call Server uzaktan kod çalıştırma.
  • ERRATICGOPHER SMBv1 exploiti (Windows XP ve Server 2003 için)
  • ETERNALSYNERGY SMBv3 uzaktan kod çalıştırma (Windows 8 ve Server 2012 SP0) (MS17-010)
  • ETERNALBLUE SMBv2 uzaktan kod çalıştırma (Windows 7 SP1) (MS17-010)
  • ETERNALCHAMPION SMBv1 uzaktan kod çalıştırma
  • ESKIMOROLL Kerberos exploiti (2000, 2003, 2008 and 2008 R2 domain controllerlar)
  • ESTEEMAUDIT RDP exploiti ve arka kapısı (Windows Server 2003)
  • ECLIPSEDWING Server servisi üzerinden uzaktan kod çalıştırma (Windows Server 2008 ve sonrası) (MS08-067)
  • ETRE IMail 8.10 ve 8.22 arası için exploit
  • ETCETERABLUE IMail 7.04 ve 8.05 arası için exploit
  • EXPIREDPAYCHECK IIS6 exploiti
  • EAGERLEVER NBT/SMB Windows NT4.0, 2000, XP SP1 & SP2, 2003 SP1 ve SP0 exploiti
  • EASYFUN WordClient / IIS6.0 exploiti
  • ESSAYKEYNOTE
  • EVADEFRED
  • ODDJOB İstismar sonrası karşı sunucuya enjekte edilmek üzere implant üreten komuta kontrol sunucusu. Aynı zamanda Windows 2000 ve sonrası için exploit de çalıştırabiliyor.

Eternal ile başlayan exploit grubu Windows sunucuların yaygın kullanılması, MS17-010 güncelleştirmesi eksikliği ve SMBv1, SMBv2 ve SMBv3 için farklı şekilde exploit edilebilmelerinden dolayı sızma testlerinde iyi yapılan bir keşif ve zafiyet analiziyle beraber kullanıldığında çok güçlü olmakta ve iyi sonuçlar vermektedir.

Fuzzbunch’ı çalıştırdığımızda bizi karşılayan konsol ekranında biraz gezelim;

“help” komutu bize framework içerisinde kullanabileceğimiz komutları gösteriyor.

fbhelp

“use” komutu tanımında “plugin” olarak tanımlananlar, yukarıda listenemiş olduğum exploitlerdir. “use <tab>” ile kullanabileceğimiz pluginleri görebiliriz.

fbuse.png

İçerisinde “touch” geçen pluginler, karşı sistemi istismar amacıyla keşif yapmak amacıyla kullanılan modüllerdir. Bu modüllerin kullanımı sonucunda alınan çıktı ile karşı sunucunun hakkında bilgiler elde edilebiliyor.

Örnek olarak EternalBlue exploitini yamasız bir Windows 7 üzerinde deneyelim. Karşı sunucu ile alakalı ayarlamalar yapıldıktan sonra SMB üzerinden EternalBlue çalışıyor;

fbeternalblue.png

EternalBlue SrvOs2FeaToNt içerisindeki memmove üzerindeki bir buffer overflowu exploit etmektedir. Srv!SrvOs2FeaListSizeToNt içerisinde yapılan hesapta DWORD ile yapılan çıkarma işlemi sonucu WORD olarak alınmaktadır. DWORD ve WORD arasındaki farktan dolayı oluşan anomali, kernel’ın düzenli yapısı sebebiyle SMBv1 bufferına overflow ettirilebilmektedir. Pointer manipülasyonu ile üzerine yazılmış hafıza bloğunun adresinin verilmesiyle exploit gerçekleşir. Kernel’ın yapısı bu olayı normal olarak algılamakta ve bu yüzden exploit başarılı bir şekilde hiç bir engele takılmadan gerçekleşebilmektedir.

Overflow tamamlandıktan sonra, exploit kodunun bir parçası olarak DoublePulsar arka kapısı uzak sunucuya kurulur. DoublePulsar, SrvTransaction2DispatchTable içerisinde bulunan SrvTransactionNotImplemented() fonksiyon pointerını kendi hook fonksiyonu yaptığından dolayı exploitation sonrası iki adet olması gereken SrvTransactionNotImplemented handler sembolünün bir tanesi kaybolmakta.

doublepulsar.png

İstismar işleminden sonra, Fuzzbunch üzerinden DoublePulsar ile uzak sunucudaki arka kapımızın durumunu kontrol edebiliriz;

fbdoublepulsarping.png

Aynı zamanda, bu arka kapıyı kullanarak shellcode çalıştırabilir ya da DLL enjeksiyonu yapabiliriz.

Screen Shot 2017-07-04 at 16.50.59.png

Enjeksiyon sonrası uzak sunucuda SYSTEM yetkileri içeren bir oturuma sahip oluruz.

Arkada iz bırakmamak için DoublePulsar içerisinde uninstall opsiyonu da bulunmakta. Bu sayede uzak sunucuda enjeksiyon ve istismar sonrası tam bir temizlik yapılabilmekte.

Anlatılan bu senaryo, “opsec-safe” olarak yürütüldüğünde her hangi bir engele takılmadan karşı sunucu üzerinde hareket edebilmek mümkündür.

Böyle bir siber silah iyi bir sızma testi metodolojisi ve gizlilik ilkesiyle kullanıldığında, sızma testi yapılan kurumun gelecekte ortaya çıkabilecek potansiyel tehditlere mümkün olabildiğince hazır olmasını sağlar.