Anasayfa Makale Rootkit Nedir?

Rootkit Nedir?

Rootkit nedir

Rootkit nedir yazımızda zararlı yazılımlar arasındaki en tehlikeli türlerden birisi olan rootkitleri inceliyoruz.

Dünyada her gün veri ihlalleri ile ilgili, ele geçirilmiş sistemlerle ilgili ve siber olaylarla ilgili birçok haber duyuyoruz. Bugün hedef başkası iken yarın hedef tahtasında bizler de olabiliriz. Teknolojinin getirmiş olduğu yararların yanında zararlarını da bilerek ona göre tedbir almalıyız. Bu sebeple siber farkındalık kazandırmak için zararlı yazılımların türlerini anlatan “Worm, Spyware ve Ransomware Nedir” ve “Trojan ve Backdoor Nedir” isminde makaleler yayınlamıştık hatırlarsanız. İşte Rootkit nedir isimli bu yazı da insanlara faydalı olması temennisiyle yazdığımız yazılardan bir tanesi.

Rootkitleri diğer zararlılardan ayıran en büyük özelliği yüksek haklarla çalışması ve yazılım türleri arasından en tehlikeli olan türlerden olmasıdır. Rootkitler kelime anlamıyla “kök kullanıcı takımı” denilen zararlılardır. Sisteme yerleştiklerinde sistem çekirdeğini kimi zaman modifiye ederek kimi zaman da sistem çekirdeği ile her daim irtibatta kalarak sistemde varlığını sürdüren zararlı yazılım türleridir.

Bu türdeki yazılımlar, sistemde yönetimsel haklara sahip olmasıyla kendisini veya beraberinde getirmiş olduğu zararlı yazılımı güvenlik yazılımlarından gizlemeye çalışması, process injection teknikleri, Windows üzerindeki programların çalışması ve API’lerin kullanımı ele geçirip dizayn etmesi gibi yöntemlere başvurması sayesinde yapısal olarak oldukça güçlü. Donanımı da etkileyen türleri bulunan bu zararlı günümüzde en tehlikeli türler arasında yer alıyor.

Rootkitlerin Tarihçesi

Rootkitlerin tarihine bakacak olursak ilk rootkit 1990 yılında SunOS adı verilen işletim sistemi için yazıldı. Unix tabanlı işletim sistemlerinde ana yönetici hesabı root olarak adlandırıldığı için ismi buradan gelmekte. Windows NT için ise ilk rootkit 1999 yılında Greg Hoglund tarafından oluşturulan NTRootkit idi. Bilimsel bir araştırma temelli yazılan bu rootkit türü ile ilgili yazı, bilgisayar korsanları ve bilgisayar bilimi dergisi olan Phrack üzerinde yayınlandı.

En bilinen rootkit vakalarından birisi Sony BMG tarafından kopya koruması (DRM) için yazılmış olan ve müzik CD’leri ile yayılan rootkittir. Sony BMG’nin “Extended Copy Protection” adı verilen gelişmiş kopya koruma sistemi prensip olarak bir rootkit gibi çalışıyor ve müziklerin kopyalanmasını engelliyor, adeta sisteme yapışıyordu.

Güvenlik araştırmacılarından Mark Russinovich rootkit tespiti için yazmış olduğu Rootkit Revelaer aracı ile kendi bilgisayarında yaptığı araştırma sonucu bir rootkite rastladı. İncelediğinde bunun Sony BMG etiketli CD üzerinden geldiğini ve kopya koruma amaçlı yazılmış bu rootkitin sistemi dışarıdan saldırıya açık hale getirdiği yani sistemi savunmasız hale getirdiği, kopya koruma amaçlı ise sistemi takip ettiği ortaya çıktı. Bu durum Sony BMG’nin itibarını zedeledi ve sistemden rootkitin kaldırılabilmesi için bir temizleme aracı yayınladı.

Rootkit nedir
Rootkit Revealer’den bir resim.

Günümüzde Rootkitlerin Kullanım Alanları

Günümüzde birçok kez kullandığımız bazı iyi niyetli ve gerekli programlar işlevlerini yerine getirmek için birer rootkit gibi çalışırlar. Bunlar güvenilir ve faydalı yazılımlar.

  • Bazı kopya koruma yöntemleri (DRM)
  • Anakart üreticilerinin bazı kontrol yazılımları
  • Antivirüs programları gerçek zamanlı korumayı bir rootkit gibi sistemde yüksek haklar elde edip yazılımlara müdahale ederek sağlar
  • Hile koruma yazılımları (VanGuard, BattleEye, AhnLab gibi…)
  • Güvenlik duvarları
  • Honeypot, process müdahale araçları
  • CD sürücüsü sanallaştırma yazılımları (Daemon Tools, Alcohol %120 gibi.)
  • Bazı sürücülerin hata ayıklayıcıları
  • Birtakım tersine mühendislik araçları (Kernel-mode çalışan WinDBg, SoftICE gibi.)
Rootkit nedir
Kernel-mode debugging yapan WinDBg

Rootkitlerin Basitçe Çalışma Mantığı

Basitçe göz atacak olursak üç tip çalışan rootkit bulunur. User mode, kernel mode ve donanıma müdahale edenler şeklinde.. Bunu daha da açıklayacak olursak yazılımlar işlevlerine ve yazıldıkları dillere bağlı olarak user-mode veya kernel-mode şeklinde çalışırlar.

Genel itibarıyla donanıma erişmesi gerekmeyen, kendisine ait sürücüleri olmayan yazılımlar user-mode çalışır. Yüksek seviyeli programlama dilleri ile yazılmış yazılımlar (C#, Python gibi.) genelde sistemde user-mode katmanında çalışır. Bu tür yazılımlar ihtiyaç duydukları işlevleri yüzeysel olarak gerçekleştirmek için sistem API’lerini kullanırlar.

Rootkit nedir
Katmanlar.

Kernel-mode üzerinde çalışan yazılımlar ise daha çok hız ve donanıma hitap edecek şekilde aynı zamanda kendisine ait sürücü kütüphaneleri (.drv, .sys) bulunduran, sistem çekirdeği ile daha yüksek şekilde iletişime geçebilen ve kimi zaman yönlendirebilen yazılımlara denir.

Birkaç örnekle durumu daha çok pekiştirebiliriz.

Genelde User-Mode katmanında çalışan normal yazılımlara örnek: Stok/Muhasebe yazılımları, sıradan bir web tarayıcı (istisnalar mevcut), CCleaner gibi.

Kernel-Mode çalışan yazılımlara örnek: Anti-hile yazılımları, antivirüs programları, WinDBg gibi.

Rootkitler de işlevlerine göre bunlardan birinde yer alırlar. İşletim sistemini etkileyenler arasında en tehlikeli olanları kernel-mode şeklinde çalışırken düşük seviyeli olanları user-mode katmanının kernel-mode katmanına yakın olan yerlerinde bulunurlar. Rootkitler de işlevlerine göre bu ikisinden birinde yer alırlar. En tehlikeli olanları kernel-mode şeklinde çalışırken düşük seviyeli olanları user-mode katmanının kernel-mode katmanına yakın olan yerlerinde bulunurlar.

Kernel-Mode rootkitler işletim sistemi çekirdeğine kendi kodlarını/yapılarını eklemeye veya sistem çekirdeğini manipüle edebilecek şekilde kendisini sisteme yerleştirmeye çalışır. Sistemde Administrator veya yüksek haklar ile hareket eder. Kernel-mode şekilde çalışan rootkitler sisteme yerleşirken başarısız olurlarsa veya işletim sisteminin kendi içerisindeki sistem dosyası koruma bileşenleri engel olursa sistem Windows için KERNEL_SECURITY_CHECK_FAILURE, Linux için ise sistemin Kernel Panic! hatası ile karşılaşırız.

Rootkit nedir
Kernel_Security_Check_Failure hatası veren Windows sistem.
Rootkit nedir
Kernel Panic! hatası veren Linux sistem.

Ama dikkat edelim her Kernel_Security ve  Kernel Panic! hatası rootkite işaret etmez. Yine sürücülerle alakalı bir durum da söz konusu olabilir.

User-mode çalışan rootkitler ise yine kendisine özgü sürücüler kullanabilir veya kullanmayabilir. Genelde process injection, DLL injection gibi teknikleri kullanarak hareket eden ve genelde Administrator haklarına sahip rootkit türüne denilir. Kendisini gizler ve sinsi davranışlar sergiler.

Geriye kalan rootkitlerden üçüne göz atalım.

  1. Firmware Rootkitler
  2. Boot Sektörüne Yerleşen Rootkitler
  3. HyperVisor Rootkitler

Firmware Rootkitler

Birinci türden olan firmware rootkitler sistemdeki hedeflediği donanımın çalışması ve işlevlerinin düzenlenmesini sağlayan yazılım kısmına kendi kod parçacıklarını yazar ve sinsice çalışmaya başlar. İşletim sistemine de bulaştığı donanıma göre müdahil olabilir. En tehlikeli rootkit türü denilebilir. Temizlemek için ilgili donanıma tekrardan Firmware yazılması gerekmektedir. Çoğu donanımda yeni Firmware yazılması esnasında önceki temizlendiği için kendisini enjekte eden rootkit de temizlenmiş olacaktır.

Örneğin UEFI rootkiti Lojax.

Boot Sektörünü Etkileyen Rootkitler

Bu tür rootkitler genelde kendisini MBR gibi boot bölümlerine yazar. Genelde sistem başlarken etkilemeyi hedefler.

HyperVisor Katmanında Çalışan Rootkitler

HyperVisor olan rootkitler sanallaştırma katmanını hedeflerler. Etkilenen bilgisayardaki işletim sistemi bir nevi sanal çalışır. İşin özünde donanımda yer alan sanallaştırma katmanı da birer yazılımdır. Intel VT ve AMD-V gibi. İşte bu türdeki rootkitler burayı etkilerler. Bunun sonucunda da etkilenen bilgisayardaki işletim sistemi sanal makine gibi çalışır ve rootkit kontrol eder. Maalesef genelde etkilenen işletim sistemi üzerindeki user-mode veya kernel-mode anti-rootkit araçları ile tespit edilemez.

Rootkitler ne ile yazılır?

Rootkitler genelde yüksek seviyeli diller buna müsait olmadığı için orta seviye veya düşük seviye diller ile yazılırlar.

Yazılım dillerinde seviye yükseldikçe yazılımın çalışması donanıma ve belleğe hakimiyetten uzaklaşır. Rootkitler ise tam tersine donanıma, işletim sistemine ve belleğe hükmetmek ister.

Genelde yazıldıkları dil C/C++ veya çok kompleks bir rootkit ise Assembly’dir. Bu diller sürücü yazımına, işletim sistemleri ve sistem çekirdekleri oluşturmaya, donanım ve belleğe hakimiyette diğer dillere göre daha öndedir ve biraz daha karmaşık dillerdir.

  • Yüksek seviye dillere örnek: Python, C#, VB6, VB .NET gibi.
  • Orta seviye dillere örnek: C/C++, Lisp(Düşük de olabilir.)
  • Düşük seviye dillere örnek: Assembly.
Rootkit nedir
Programlama dillerinin seviyelerini gösteren bir şema.

Rootkitler Nasıl Tespit Edilir ve Temizlenir?

Rootkit tespiti birden fazla şekillerde yapılabilir fakat tek yönteme bağlı kalınarak yapılmaması gerekir çünkü gelişmişlik düzeyleri farklı olarak rootkitlerin tespiti zorlaşabilmekte.

Günümüzde başarılı güvenlik ve antivirüs (IS) yazılımları rootkitleri bulaşmadan önce ve sonra genellikle başarı ile engelliyorlar.

Eskiden antivirüs/güvenlik yazılımları rootkit tespitinde zorlanıyordu. Büyük ihtimalle güvenlik yazılımları da kernel ile iletişimde kalarak zararlıları aktif olmadan engellediği için yalnızca kernelden gelen cevaba göre hareket ediliyor, rootkiti tespit etmekte zorluk çekiliyordu. Günümüzde antivirüs yazılımlarının içinde rootkit tespiti yapabilen ek modüller vardır ve artık gerçek zamanlı koruma, sezgisel ve veritabanlı tespit yöntemleri ile bilinen rootkit türlerinin birçoğu (hepsi olmasa da) engellenebiliyor.

Fakat senaryomuzu daha da kötüleştirip rootkitin sisteme antivirüs bulunmadan önce bulaştığını düşünürsek işler burada değişir ve antivirüs yazılımları önceki rootkitleri tespit edemeyebilir.

Rootkit tespiti ve temizliği için antivirüsler haricinde özel yazılımlar yapılmıştır fakat bilinçsiz bir şekilde kullanıldığında sisteme zarar verebilmektedir. Bu sebeple uzman birisinin öncülüğünde kullanılmalıdır. Tespit için bu yazılımlar da kullanılabilir.

Örneğin:

  • VBA32 Anti-Rootkit
  • Malwarebytes Anti-Rootkit Beta
  • RootkitRevealer
  • Kaspersky TDSSKiller
  • CHKRootkit
  • RKHunter
Rootkit nedir
VBA32 Anti-Rootkit yazılımından bir görüntü.

Rootkit tespiti ise daha çok ağdan ve kişisel bilgisayardan gerekli ayarlar yapılarak izole ortamda kurulmuş olan sanal makineler kurularak izlenilir. İki izole edilmiş sanal makine kurulup birisinden rootkit aktiviteleri izlenirken diğerinden paket izleyici yazılımlar ile ağ hareketleri izlenebilir.

Process Hacker, Process Monitor, Process Explorer araçları kullanılarak görevlerin hareketleri takip edilebilir. Sistemin enfekte edilmeden önceki ve sonraki hâli aşamalar halinde kayıt edilip raporlanarak incelenebilir. Şüpheli yazılım çalıştırılmadan statik analiz ve çalıştırılma sonrası debuggerlar kullanılarak dinamik analizler yapılabilir. Anti-debug teknikleri şüpheli dosyamızda uygulanmış ise debugger yazılımlarına eklenebilen birtakım eklentiler yoluyla veya farklı yazılımlar kullanılarak bu durum aşılabilir.

Rootkitler beraberinde genelde kendilerine özgü sürücüler ile gelirler, bunlar da tersine mühendislik teknikleri ile incelenebilir.

Rootkit taraması ve temizliğinin uzun uzun yazmış olduğumuz yukarıdaki sebeplere benzer birçok şeyden dolayı enfekte olduğu düşünülen işletim sisteminin dışındaki bir işletim sistemi ile yapılması daha mantıklı olacaktır. Windows sistemleri taramak için antivirüs firmalarının kurtarma disklerini kullanabilirsiniz. Bu diskleri boot edip Windows harici bir ortam üzerinden sisteminizi taratabilirsiniz.

Sormak istediğiniz, eklemek istediğiniz ve merak ettiğiniz bir şey varsa yorumlara yazabilir ve Technopat Sosyal üzerinde sorabilirsiniz.