WİNDOWS ROOTKİT

                                  

WİNDOWS ROOTKİT

    Bu yazımda, Windows Rootkitlere değineceğim. Genel olarak rootkitlerin ne olduğundan, bu zararlı yazılım türüyle nelerin yapılabileceğinden ve Windows özelinde hangi teknikleri kullandığından bahsedeceğim.

Rootkit Nedir?


Rootkit adı, Unix ve Linux işletim sistemlerindeki en ayrıcalıklı hesap yöneticisi olan "root" ile, yetkilendirilmemiş kök veya yönetici düzeyinde erişime izin veren uygulamalar olan "kit" sözcüklerinin birleşiminden gelir.

Rootkit, bilgisayar korsanlarının hedef cihaza erişmesini ve bu cihazı kontrol etmesini sağlamak için tasarlanmış bir kötü amaçlı yazılım türüdür. Çoğu rootkit, yazılımları ve işletim sistemlerini etkiler. Ancak bazıları bilgisayarınızın donanımını ve aygıt yazılımını da etkileyebilir. Rootkitler varlıklarını gizlemede uzmandır ancak gizli kaldıkları süre boyunca etkinliklerine devam ederler.

Bilgisayarlara yetkisiz erişim elde ettikten sonra, rootkit’ler siber suçluların kişisel verileri ve finansal bilgileri çalmalarına, kötü amaçlı yazılımlar yüklemelerine veya bilgisayarları bir botnet'in parçası olarak kullanmalarına olanak sağlar ve suçlular böylece spam'leri dolaşıma sokabilir ve cihazları DDoS (dağıtılmış hizmet reddi) saldırıları için kullanabilir. Hatta güvenlik yazılımlarını devre dışı bırakabilir veya kaldırabilirler.

Rootkit'ler işletim sisteminin çekirdeğinin yakınında veya içinde çalışır ve bu da onlara bilgisayarda komutlar başlatma olanağı sağlar. İşletim sistemi kullanan her cihaz, rootkitler için potansiyel bir hedeftir.

Uzaktan BT desteği sağlamak veya antivirüs gibi güvenlik yazılımlarında sistemin işleyişini kontrol etmek amacıyla bazı rootkit teknikleri yasal amaçlarla kullanılır. Ancak çoğunlukla kötü amaçlı olarak kullanılırlar. Rootkitleri bu kadar tehlikeli kılan, çok çeşitli kötü amaçlı yazılım türleri dağıtabilecek olmalarıdır. Bu tür yazılımlar, bilgisayarın işletim sistemini değiştirebilir ve uzak kullanıcılara yönetici erişimi sağlayabilir.

Rootkit Çeşitleri Nelerdir?


Kernel mode rootkit: Çekirdek modu rootkit'leri, işletim sisteminizin çekirdeğini (yani çekirdek düzeyini) hedeflediği için bu tehdidin en ciddi türlerinden biridir. Bilgisayar korsanları bu dosyaları yalnızca bilgisayarınızdaki dosyalara erişmek için değil, kendi kodlarını ekleyerek işletim sisteminizin işleyişini değiştirmek için de kullanır.

Hardware - Firmware Rootkit: Donanım veya aygıt yazılımı rootkit'leri sabit sürücünüzü, yönlendiricinizi veya bilgisayarınızın anakartındaki küçük bir bellek yongasında yüklü olan sisteminizin BIOS'unu etkileyebilir.

Sanal Rootkit: Sanal bir rootkit, kendisini bilgisayarın işletim sisteminin altına yükler. Daha sonra, hedef işletim sistemlerini sanal makine olarak barındırır ve bu, orijinal işletim sistemi tarafından yapılan donanım çağrılarına müdahale edebilmesine olanak tanır. Bu tür bir rootkit, işletim sistemini değiştirmek için çekirdeği değiştirmek zorunda değildir ve tespit edilmesi çok zor olabilir.

Bootkit: Önyükleme mekanizması, işletim sisteminin bilgisayara yüklenmesinden sorumludur. Önyükleme rootkit'ler, bilgisayarınızın gerçek önyükleyicisini korsan bir önyükleyiciyle değiştirerek bu sisteme saldırır. Böylece bilgisayarınızın işletim sistemi tamamen yüklenmeden önce bile rootkit etkinleştirilmiş olur.

Bellek Rootkit: Bellek rootkit'leri bilgisayarınızın rasgele erişim belleğinde (RAM) gizlenir ve arka planda kötü amaçlı etkinlikler gerçekleştirmek için bilgisayarınızın kaynaklarını kullanır. Bellek rootkit'leri bilgisayarınızın RAM performansını etkiler. Bunlar yalnızca bilgisayarınızın RAM'inde bulundukları ve kalıcı kod eklemedikleri için sistemi yeniden başlattığınızda bellek rootkitleri kaybolur. Kısa kullanım ömürlerinden dolayı genellikle önemli bir tehdit olarak algılanmazlar.

Uygulama veya Userspace Rootkit: Uygulama rootkit'leri, bilgisayarınızdaki standart dosyaları rootkit dosyalarıyla değiştirir. Standart uygulamaların çalışma şeklini bile değiştirmeleri mümkündür. Bu rootkit'ler Microsoft Office, Notepad veya Paint gibi programlara bulaşır. Saldırganlar, bu programları her çalıştırdığınızda bilgisayarınıza erişebilir. Rootkit bulaşan programlar hala normal çalıştığından, kullanıcıların bunu algılaması zordur. Ancak antivirüs programları her ikisi de uygulama katmanında çalıştığından bunları algılayabilir.

Koruma Halkası (Protection Ring)



                             Resim:Uygulama veya Userspace Rootkit


Görüldüğü gibi yeşil kullanıcı modu ve ortadaki kırmızı çekirdek modudur. 1 ve 2 halkaları olmasına rağmen, Windows ve diğer işletim sistemleri sadece iki halkayı kullanır, bu yüzden sadece 0 veya 3'e atıfta bulunuruz.

WinAPI fonksiyon çağrıları, halka 3'ten çağrılır ve halka 3, CPU ile doğrudan iletişim kuramadığından, bir dizi ayrıcalık denetimi yoluyla içeriye doğru halka 0'a gitmesi gerekir. 0 halkasına girdikten sonra, işletim sistemi, fonksiyon çağrısı için gerekli olanı gerçekleştirmek için talimatları yürütür.

Windows Rootkit Teknikleri

Import Address Table (IAT) hooking:
Çalıştırılabilir dosyalar sistem servis API’larını kullanmak için kullanılan API ve Modül bilgilerini IAT (Import Address Table) adı verilen tabloda tutar. IAT, PE Başlığında bulunan Windows yürütülebilir dosyasının standart bir parçasıdır. Dinamik kitaplıklardan işlevleri kullanan her yürütülebilir dosyanın, hangi kitaplıklara ihtiyaç duyduğunu ve bunlardan hangi işlevleri kullandığını belirten bir IAT'si vardır.

IAT Hooking, IAT tablosundaki gerçek fonksiyon adresini kontrol ettiğimiz adresle değiştirmeye dayanır.

Bu teknikte, hedef (meşru) sürece bir DLL enjekte edildikten sonra, enjekte edilen DLL'deki (Dllmain() işlevi) kod, hedef süreçteki IAT girişlerini hooklar. Aşağıda, bu tür bir hooking işlemini gerçekleştirmek için kullanılan adımlara yüksek düzeyde bir genel bakış verilmektedir:

- Yürütülebilir görüntüyü bellekte ayrıştırarak IAT'yi bulun.

- Hooklanacak fonksiyonun girişini tanımlayın.

- Fonksiyonun adresini zararlı fonksiyonun adresiyle değiştirin.

•System Call Table/System Service Descriptor Table (SSDT) hooking: 
Spesifik Kernel API’ları için bu yöntem kullanılır. Bu API’lar SSDT (System Service Descriptor Table)'de tutulur. SSDT, sistem çağrılarını kernel fonksiyon adreslerine eşler. Bir user space uygulaması tarafından bir sistem çağrısı yayınlandığında, hangi sistem çağrısının çağrıldığını belirtmek için parametre olarak service indexini içerir. SSDT daha sonra ntoskrnl.exe içindeki karşılık gelen fonksiyonun adresini çözümlemek için kullanılır.

SSDT'nin modifikasyonu, sistem çağrılarını çekirdeğin dışındaki rutinlere yönlendirmeye izin verir. Bu rutinler, yazılımın varlığını gizlemek veya saldırganların çekirdek ayrıcalıklarıyla kalıcı kod yürütmesine izin vermek için bir arka kapı görevi görmek için kullanılabilir. Her iki nedenden dolayı da, SSDT çağrılarını hooklamak, hem Windows çekirdek modu rootkit'lerinde hem de antivirüs yazılımında bir teknik olarak sıklıkla kullanılır

SSDT Hook’da amacımız tabloda bulunan bir fonksiyonun adresini alıp, aynı prototipde bir fonksiyon yaratıp o adrese yerleştirmek.

•Interrupt Descriptor Table (IDT) hooking: Kesinti Tanımlayıcı Tablosu (IDT), ISR (Kesme Hizmeti Rutinleri veya Kesinti işleyicileri) olarak bilinen işlevlerin adreslerini depolar. Bu işlevler, kesintileri ve işlemci istisnalarını işler. Kesinti (interrupt), mevcut aktiviteyi durdurmak ve yeni bir görevi tamamlamak anlamına gelir. Yazılım veya donanımdan kaynaklanabilir. Bir kesme tanımlayıcı tablosu (IDT), bir işlemci tarafından, bir programın yürütülmesini, normal çalışma süreci sırasında ortaya çıkan kesintileri işleyen yazılım rutinlerine aktarmak veya bir donanım arızası gibi istisnai bir durumu bildirmek için kullanılır.

Saldırganlar, kötü amaçlı kod yürütmek için sık sık IDT işaretçilerini değiştirir. Saldırgan, SSDT'yi hooklamak gibi, denetimi kötü amaçlı koda yeniden yönlendirmek için IDT'deki girişleri bağlayabilir.

Bu yöntem genellikle sistem çağrılarını izlemek ve analiz etmek için kullanılır.Amaç, IDT tablosundaki INT 2E interruptını değiştirerek ve onu kendi interrupt servisimize processing rutinimize yönlendirerek elde edilir.

Yürütme denetimi IDT işleyicisine geri dönmez, bu nedenle orijinal fonksiyonu çağırma, verileri filtreleme ve ardından hookdan geri dönme gibi tipik hook tekniği çalışmayacaktır. IDT hook yalnızca bir geçiş fonksiyonudur ve kontrolü asla yeniden kazanmaz, verileri filtreleyemez.

•Direct Kernel Object Manipulation (DKOM): Doğrudan çekirdek nesnesi manipülasyonu, Microsoft Windows için zararlı olabilecek üçüncü taraf işlemleri, sürücüleri, dosyaları ve ara bağlantıları görev yöneticisinden ve olay zamanlayıcıdan gizlemek için yaygın bir rootkit tekniğidir.

Windows çekirdeğinin, işlem zamanlaması gibi çeşitli amaçlar için kullandığı çeşitli nesneler (yapılar) vardır. Çekirdek nesnesi (Kernel object), kendisi hakkında bilgi içeren bir kaynak için sanal bir yer tutucudur. Bir bilgisayardaki her şey, her dosya, her işlem, her port vb. gibi ilişkili bir çekirdek nesnesine sahip olacaktır. Bir çekirdek nesnesi oluşturulduğunda, ona tutamaç (handle) adı verilen bir index numarası verilir, üzerinden erişilir. Bir program bir değişiklik yapmak istediğinde (örneğin bir process oluşturmak ya da yok etmek), çekirdek nesnesini değiştirmek için bir istekte bulunur ve çekirdeğin kendisi (Object Handler) isteğin kabul edilip edilmeyeceğine karar verir. Rootkit'ler veya bazen meşru yazılımlar (antivirüsünüz gibi) bu yapıyı çoğunlukla verileri filtrelemek/araya sokmak veya bazen belirli koşullar altında kendi kodlarını yürütmek için değiştirir. Bu yapıyı değiştirmeye DKOM denir.

•Kernel Object Hooking (KOH): KOH rootkit'leri çekirdek kontrol akışını ele geçirirken DKOM rootkit'leri bunu yapamaz. (çekirdek nesnelerindeki fonksiyon pointerlarını değiştirerek veya mevcut kod parçasının üzerine zararlı kod yazarak çekirdek kontrol akışını ele geçirir). rootkit, sistem çağrı tablosundaki bir fonksiyon pointerını, dosyaları ve dizinleri gizleyen zararlı bir koda yönlendirmek için değiştirebilir. Rootkit, bellekteki çekirdek kodundaki bir hedef fonksiyonun girişlerini zararlı rutinlerle değiştirebilir ve çekirdek kodunun yazma korumasını devre dışı bırakmak için CPU kayıtlarını manipüle edebilir.

Bir KOH rootkit, çekirdek yürütme kontrolünü ele geçirebilir.

•IO Request Packet (IRP) filtering: Windows Sürücü Modeli (WDM) ve Windows NT aygıt sürücüleri tarafından birbirleriyle ve işletim sistemiyle iletişim kurmak için kullanılan çekirdek modu yapılarıdır.

Bir sürücünün IRP Ana İşlev tablosundaki pointerların değiştirilmesini içerir. Dosyaları gizlemek için dosya sistemi yazmasını durdurur. TCP querylerini durdurarak portları gizler.

Inline Hook: Koşulsuz, doğrudan bir hook fonksiyonuna atlama ile hedef fonksiyonun ilk birkaç baytının yazılmasını içerir. Hook çağrıldığında bytelar değiştirilir, ve fonksiyon geri döndüğünde hook restore edilir. Baytlar, hedef fonksiyonun geri kalanına işaret eden koşulsuz bir atlama ile eklenir ve hook fonksiyonu yürütüldükten sonra yürütülür.

Rootkit Tespit Yöntemleri

•Bütünlük Kontrolü (Integrity Checking): Belirli dosyanın/dosyaların hash değerinin alınıp veri tabanına kaydediltikten sonra belirtilen frekanslarda o dosyanın/dosyaların hash kontrolünün yapılıp değişiklik olması durumunda yetkiliyi bilgilendirmesidir. OSSEC, Wazuh, Tripwire gibi açık kaynak çözümlerle bütünlük kontrolü gerçekleştirilebilir.

•Cross View Detection: Bu yöntem, registry bilgilerini çekirdek modu ve kullanıcı modu enumerasyonundan karşılaştırarak, rootkit tarafından gizlenen registry gizli öğelerini bulur ve ardından rootkiti tespit eder.

•Uygulama Beyaz Listesi (Application Whitelisting): Uygulama beyaz listesi, bir kullanıcının makinesinde veya bir ağda hangi programların çalışmasına izin verildiğini kontrol eder ve son kullanıcı yerine bir kuruluşun yöneticileri tarafından kontrol edilir.


KAYNAKÇA
  • https://www.kaspersky.com.tr/resource-center/definitions/what-is-rootkit
  • https://opensecuritytraining.info/Rootkits.html
  • https://www.researchgate.net/publication/238519435_A_Windows_Rootkit_Detection_Method_Based_on_Cross-View
  • https://en.wikipedia.org/wiki/Rootkit
  • https://nixhacker.com/understanding-windows-dkom-direct-kernel-object-manipulation-attacks-eprocess/
  • https://www.blackhat.com/presentations/win-usa-04/bh-win-04-butler.pdf
  • https://www.cs.fsu.edu/~zwang/files/ccs09.pdf
  • http://www.stillart.ch/programming/Import_Address_Table_Hooking.pdf


Yorum Gönder

0 Yorumlar