WannaCry Saldırısı Anatomisi

WANNACRY ANATOMİSİ WANNA CRY GENEL YAPISI ÖZET WannaCry, bir solucan ile fidye yazılımı(ransomware)’in birleşimidir en kısa tabiri ile. İki ana fonksiyonu da birleşmelerden...

WANNACRY ANATOMİSİ

WANNA CRY GENEL YAPISI ÖZET

WannaCry, bir solucan ile fidye yazılımı(ransomware)’in birleşimidir en kısa tabiri ile. İki ana fonksiyonu da birleşmelerden de anlayacağımız üzere yayılmak ve şifrelemektir. Yayılmak için 12 Mayıs 2017’de ortaya çıkan bu ibine SMBv1 protokolündeki güvenlik açığı olan EternalBlue(MS17-010) açığını kullandı. Sonraki kısıma geçmeden bu SMBv1 protokolünden de bahsetmek istiyorum biraz

SMBv1 Protokolü: Windows’un eski sürümlerinde ağ üzerinden dosya, yazıcı ve seri port paylaşımı için kullanılan, günümüzde güvenlik açıkları nedeni ile önerilmeyen eski bir ağ iletişim protokolüdür. Common İnternet File Sytem(CIFS) olarak ta bilinir. Günümüzde yerini SMBv2 ve SMBv3 gibi protokollere bırakmıştır.

Devam edelim; şifreleme için AES-128 CBC ve RSA-2048 chain kullanmıştır. Önemli detaylardan biri şudur ki WannaCry içerisinde kill switch domain kontrolü vardır. Domain erişilebilirse kendini imha ederdi. Ağ üzerinden kendi kendine yayılır ve kullanıcı etkileşimine ihtiyaç duymazdı, tek bir 445 portu bile yeterliydi yani. Devrik gidiyorum baya ama gelelim neden Kill switch domain kontrolü gibi bir şey vardı bunun içerisinde?

Şimdi bu özelliğin asıl olayı şuydu; WannaCry’ın kodunun içine gömülmüş çok uzun ve anlamsız bir alan adı vardı. Yazılım her bulaştığında direkt dosyaları şifrelemek yerine şu adımları izliyordu:

1.Bu URL’ye bir http get isteği gönderir

2.Eğer böyle bir URL yoksa veya aktif değilse şifrelemeye ve yayılmaya devam ederdi.

3.Ammaaa URL eğer aktif ise çalışmayı durdururdu.

Burada ise aslında geliştiricilerin amacı şuydu, yani en azından analistlerin tahmini şöyleydi, dogmatik bilgi vermek istemem çünkü: Bunlardan biri Sandbox koruması iken bir diğeri ise Saldırganların saldırıyı istedikleri an durdurmak için koydukları bir kapatma tuşu olabileceğidir. İyi ki de böyle bir şey koymuşlar, koymasalar vay halimize, yakalanma olayı da zaten şöyle ki; Marcus Hutchins isimli, diğer adıyla MalwareTech isimli nereli olduğunu bilmediğim bir araştırmacı, kodun içindeki bu URL’yi fark etti. URL’nin kayıt edilmemiş olduğunu gördüğünde ise sadece ne olacağını görmek için 8-10 dolar gibi ucuz bir fiyata bu domaini satın aldı ve kendi sunucusuna yönlendirdi. Domain aktif olunca ise şansa bala biraz önce de söylediğim mesele sayesinde virüs durduruldu. Bu kısmı daha uzatmayacağım, haber bültencisi gibi tarih anlatasım yok hiç



ETERNALBLUE(MS17-010) MEKANİZMASI

EternalBlue, SMBv1 protokülndeki buffer overflow’u kullanır. Hedef fonksiyon ise “srv!SrvOs2FeaToNt” idi. Saldırı adımları ise şu şekilde ilerledi:

Attacker,” trans2 SESSION:SETUP” paketini gönderir. Bu pakette ise özel hazırlanmış bir FEA listesi bulunuyordu. srv!SrvOs2FeaToNt bu listeyi işlerken non-paged pool’a taşar. Ve bu şekilde de Pool Grooming ile kontrol dilebilir bir chunk’a dönüştü. Shellcode de bu chunk içinde kernel modda çalışır. Shellcode de işte “DoublePulsar” isimli backdoor u sisteme enjekte eder.

Sayı sıraları ile gidecektim de şimdi fark ettim öyle başladığımı, neyse fark etmez bence. Parametreler içerisinde ise DataBlock alanı overflow bölgesi idi. SMBv1’in hala açık olma sebebi ise Windows XP, Windows 7, Windows Server 2008 R2 gibi eski sistemlerde bu protokolün default şekilde açık olması ve yöneticilerin ihmal ile bu protokolü değiştirmemesiydi. Ve de buna karşın Microsoft’un Mart 2017’de MS17-010 yamasını çıkarmasıyla birlikte kısa süre sonra yamasız sistemler hedef olucak şekilde Mayıs 2017’de WannaCry salındı.



DOUBLEPULSAR-RİNG0 BACKDOOR

Bir kere adını geçirdikten sonra buna da girmeden geçmek istemedim. DoublePulsar, EternelBlue ile kurulan kernel- level backdoor dur. Boyutu sadece 64 byte idi ve bu kadar küçük olmasının sebebi ise pool’dan sığdırmak içindir. EternalBlue shellcode’i çalıştığında ise şunlar gerçekleşti:

1.”nt’NTCreateFile” syscall’ine inline hook yerleştirilir. Burayı ben de tam anlamadım ama Hook’lanan fonksiyonun prologu şu şekilde değişir: Orijinal ilk 5 Byte yerine “jmp [0Xfff…](Hook handler adresi)” ve Handler içerisinde XOR şifreli komutları dinler. Komut alma mekanizması ise şöyle:

İlk olarak SMB protokolü üzerinden özel paket gönderilir. Paketin içinde ise XOR anahtar ile şifrelenmiş shellcode bulunur. DoublePulsar bu shellcode’u kernel context’inde çalıştırır.

WannaCry ise şunu yapar: DoublePulsar’a şu komutu gönderir “CreateProcess(“tasksche.exe”)” buradaki tasksche.exe ise asıl encryptor payload’dır. Bu kadar tehlikeli olmasının sebebi ise şu ki; antivirüs normalde process oluşturmayı izler ama Kernel’den gelen CreateProcess çağrılarını genellikle kaçırır. Çekirdek içerisinde olduğu için de process listesinde görünmez ve sadece memory dump analizi ile bulunur. Tespit yöntemi ise memory dump ta “0x12 XOR” pattern’ini ve SMB trafiğindeki anomalous trans2 paketlerini bulmaktır.

WANNACRY AĞ YAYILIM ALGORİTMASI



Bunun yayılma mantığı aslında şu şekilde çalışıyordu: bir host infected olduktan sonra, o host yeni hedeflere saldırır. Bu zincirleme yayılmadır. IP hedefleme stratejisinin ise iki farklı modu vardı:

Lokal Subnet Taraması: Mevcut IP’nin /16 aralığını tarar. Aynı ağdaki Subnet mask’ini al ve aynı ağdaki tüm hostlara SMB isteği gönderir.

Rastgele Tarama: Rastgele /8 subnet’leri oluşturur. Efendime söyleyeyim 123.x.x.x gibi. Her seferinde rastgele bir /8 alır ve 445 portunu tarar. Cevap gelirse de zaten EternalBlue dener. Thread sayısı da yüksektir ayrıca(64 byte)

USB yayılımı: DeviceIoControl ile USB takılma event’i dinlenir. USB takıldığında ise direkt disk erişimi yapılır ve USB’deki tüm dosyalar şifrelenir. Modern Windows’larda engellenmesi sebebi ile Autorun.inf kullanılmaz. Bunun yerine USB’deki her drive letter için doğrudan şifreleme yapılır. Bu kadar hızlı yayılmasının sebepleri ise Patch’in olmaması, kullanıcı etkileşimi gerektirmemesi ve her infected host’un yeni bir saldırgan gibi çalışması sıralanabilir.



ÖDEME ALTYAPISI VE TOR MEKANİZMASI



WannaCry’ın ödeme sistemi diğer fidye yazılımlarından farklıydı. Her kurban için yeni bir unique Bitcoin adresi üretmek yerine sabit üç adres kullanırdı Ve bu üç adres te üç farklı .onion domain’e gömülüdür.

Ödeme sürecinde ise şifreleme ilk başta tamamlandığı zaman masaüstüne bir read_me ve WannaDecryptor.exe bırakılır. Kullanıcı .onion adresine tor ile girer ve sitede Bitcoin adresi ile ödeme miktarı gösterilir. Ödeme yapıldığında ise site confirmed der. Ve WannaDecryptor.exe çalıştırıldığında ödeme kontrolü yapılır. Ancak kimse ödeme yapmasına rağmen decrypt olmadı, sebebi ise şuydu: Sunucular overload oldu, ödeme doğrulama mekanizması çalışmadı ve bazı varyantlarda private key hiç kaydedilmemişti.



SONUÇ

WannaCry, EternalBlue (MS17-010) üzerinden SMBv1 açığı ile yayılan, AES-128 + RSA-2048 ile şifreleyen, DoublePulsar ile kernel persistence sağlayan bir solucan ransomware'dir. Patch uygulanmayan sistemlerde 445 portu açık olan her makineye kullanıcı etkileşimi olmadan yayılır. Kill switch domain'i erişilebilirse kendini durdurur, erişilemezse şifreleme başlar. Shadow copy imha eder, backup process'lerini öldürür, USB üzerinden otomatik yayılır. Sabit Bitcoin adresleri ve Tor onion domainleri kullanır. RSA private key infected makinede bulunmaz, sunucudadır. 12 Mayıs 2017'de patlamış, 150+ ülkede 200.000'den fazla makineyi şifrelemiştir. Kill switch domain'inin Marcus Hutchins tarafından register edilmesiyle global yayılım durmuştur. WannaCry'nin en büyük dersi: SMBv1'i kapat, MS17-010 patch'ini uygula, backup'larını offline tut. Bu gün hala ağlarda SMBv1 açık olan sistemler vardır ve benzer saldırılar (EternalBlue türevleri) çalışmaya devam etmektedir.
 
💬 SpyHackerz Telegram — Anlık tartışmalar ve duyurular için katıl
133,407Konular
3,282,020Mesajlar
318,996Kullanıcılar
BounoSon Üye
Üst Alt