Local Privilege Escalation via EXE Hijacking | Yerel Yetki Yükseltme: EXE Hijacking ile Güvenlik Açıklarından Yararlanma

Local Privilege Escalation via EXE Hijacking

Local Privilege Escalation via EXE Hijacking

Local Privilege Escalation (LPE), bir kullanıcının veya uygulamanın yerel makinede sahip olduğu yetkileri yükseltmesini sağlayan bir güvenlik açığıdır. EXE hijacking ise, bir Windows uygulamasının veya servisin, kendisiyle aynı dizinde bulunan kötü niyetli bir çalıştırılabilir dosyayı (EXE) çalıştırmasını sağlamaya yönelik bir tekniktir. Bu saldırı yöntemi, güvenlik açıklarından veya yapılandırma hatalarından yararlanarak kötü niyetli bir dosyanın çalıştırılmasına neden olur ve genellikle bir saldırganın sistemdeki yetkilerini yükseltmesine olanak tanır.

1. EXE Hijacking Nedir?

EXE hijacking, özellikle bir uygulamanın veya servisin çalıştırdığı yürütülebilir dosyaların hedef alınmasıdır. Windows'ta bir uygulama, çalıştırılabilir bir dosyayı yüklemek istediğinde, belirli bir sırayla dizinlerde bu dosyayı arar. EXE hijacking saldırıları, bu yükleme sırasını istismar ederek kötü niyetli bir dosyanın meşru bir dosya yerine çalıştırılmasını sağlamaya çalışır.

Örneğin, bir uygulama "notepad.exe" adlı bir dosyayı çalıştırmak istediğinde, işletim sistemi önce uygulamanın çalıştığı dizinde bu dosyayı arar. Eğer bu dizinde kötü niyetli bir "notepad.exe" dosyası bulunuyorsa, işletim sistemi bu dosyayı çalıştıracaktır.

2. EXE Hijacking ile Privilege Escalation Nasıl Gerçekleşir?

Bir saldırgan, şu adımları izleyerek bir EXE hijacking saldırısıyla yetki yükseltme gerçekleştirebilir:

  1. Hedef Uygulamayı veya Servisi Belirlemek: Saldırgan, ilk olarak sistemde yüksek yetkilerle çalışan bir uygulamayı veya servisi belirler. Bu genellikle sistem servisleri veya yönetici yetkileriyle çalışan üçüncü taraf uygulamalar olabilir.
  2. EXE Hijacking İçin Uygun Bir Hedef Bulmak: Hedef uygulamanın veya servisin çalıştırmaya çalıştığı yürütülebilir dosyalar incelenir. Bu dosyaların dosya yolunu tam olarak belirtip belirtmediği veya sisteme özgü dizinlerde arama yapıp yapmadığı tespit edilir. Örneğin, uygulama veya servis "C:\Windows\System32\notepad.exe" yerine yalnızca "notepad.exe" komutunu çalıştırıyorsa, saldırganın bu dosyanın bulunduğu dizine kötü niyetli bir dosya yerleştirmesi mümkündür.
  3. Kötü Niyetli EXE Dosyasını Yerleştirmek: Saldırgan, hedef dizine, orijinal yürütülebilir dosyayla aynı ada sahip, fakat farklı bir işlev gerçekleştiren kötü niyetli bir EXE dosyası yerleştirir. Bu kötü niyetli dosya, saldırganın kontrolü altında olan bir shell veya benzeri bir zararlı yazılım olabilir.
  4. Uygulama veya Servisin Kötü Niyetli Dosyayı Çalıştırmasını Sağlamak: Saldırgan, hedef uygulama veya servisi, kötü niyetli dosyayı çalıştıracak şekilde tetikler. Bu tetikleme işlemi, manuel bir kullanıcı etkileşimi veya belirli bir zaman diliminde çalışan planlanmış bir görevle gerçekleştirilebilir.
  5. Yetki Yükseltme: Uygulama veya servis, kötü niyetli EXE dosyasını çalıştırdığında, bu dosya artık uygulama veya servisin çalıştığı yetkilerle çalışır. Eğer uygulama veya servis yönetici yetkileriyle çalışıyorsa, kötü niyetli dosya da yönetici yetkileriyle çalışacaktır. Böylece saldırgan, düşük yetkilere sahip bir hesaptan yönetici haklarına sahip bir hesaba geçiş yapabilir.

3. EXE Hijacking'in Temel Nedenleri

EXE hijacking saldırılarının başarıya ulaşmasının birkaç ana nedeni vardır:

  • Yanlış Dosya Yolu Kontrolü: Bir uygulama veya servis, belirli bir dosya yolunu belirtmeden yalnızca dosya adını çağırıyorsa, bu durum kötü niyetli bir dosyanın meşru dosya yerine geçmesine olanak tanır.
  • Yanlış Dosya İzinleri: Sistem dizinlerindeki dosyaların yanlış izinlerle yapılandırılmış olması, saldırganların bu dizinlere dosya eklemesine veya mevcut dosyaları değiştirmesine olanak tanır.
  • Yanlış Dizin Arama Sırası: Windows'un bazı sürümlerinde, sistemin yürütülebilir dosyaları arama sırası, saldırganların belirli dizinlere dosya ekleyerek EXE hijacking saldırılarını gerçekleştirmelerine olanak tanır.

4. EXE Hijacking'in Teknik Detayları ve Örnekler

EXE hijacking saldırılarını daha iyi anlamak için bazı teknik örneklere bakalım:

Örnek 1: Yanlış Yolda EXE Yükleme

Bir Windows uygulaması, "C:\Program Files\App\myapp.exe" dizininde çalışırken, system("notepad.exe") fonksiyonunu çağırıyor olsun. Eğer bu dizinde "notepad.exe" adında kötü niyetli bir dosya varsa, işletim sistemi önce bu dizinde dosyayı arayacağı için "C:\Program Files\App\notepad.exe" dosyasını çalıştıracaktır. Eğer bu dosya kötü niyetli bir komut içeriyorsa, saldırgan kodu yönetici haklarıyla çalışabilir.

Örnek 2: DLL Hijacking İle Benzerlikler

EXE hijacking, bir DLL hijacking saldırısına benzer. Ancak DLL hijacking, dinamik olarak bağlanmış kitaplıkları (DLL dosyalarını) hedef alırken, EXE hijacking doğrudan yürütülebilir dosyaları hedef alır. Bir uygulama, LoadLibrary("example.dll") fonksiyonunu çağırdığında, işletim sistemi önce mevcut dizinde bu DLL dosyasını arar. Eğer kötü niyetli bir "example.dll" dosyası aynı dizinde bulunuyorsa, işletim sistemi bu dosyayı yükleyecektir.

Örnek 3: Servisler Üzerinde EXE Hijacking

Bir Windows servisi, her başlangıçta belirli bir EXE dosyasını çalıştırmak üzere yapılandırılmış olabilir. Örneğin, bir yedekleme servisi belirli bir dizinden "backup.exe" dosyasını çalıştırıyorsa ve bu dizin kullanıcı tarafından yazılabilir durumdaysa, saldırgan bu dizine kötü niyetli bir "backup.exe" dosyası yerleştirerek servisin bu dosyayı çalıştırmasını sağlayabilir.

5. EXE Hijacking'e Karşı Alınabilecek Önlemler

EXE hijacking saldırılarına karşı korunmak için şu önlemler alınabilir:

  • Tam Dosya Yolu Kullanmak: Uygulama veya servisler, dosyaları çağırırken her zaman tam dosya yolunu kullanmalıdır.
  • Dosya ve Dizin İzinlerini Doğru Yapılandırmak: Sistem dizinlerindeki dosya ve dizin izinleri, yalnızca gerekli kullanıcılara yazma izni verecek şekilde yapılandırılmalıdır.
  • Dizin Arama Sırasını Yönetmek: Windows'ta dizin arama sırası güvenli bir şekilde yönetilmeli ve kritik uygulamalar için belirli dizinlere sınırlı erişim sağlanmalıdır.
  • Uygulamaların ve Servislerin Güvenlik Kontrollerini Yapmak: Tüm uygulama ve servisler düzenli olarak güvenlik açıklarına karşı kontrol edilmelidir.

Demo Uygulama: EXE Hijacking Saldırısı ile Yetki Yükseltme

Bu demo, Windows işletim sisteminde EXE hijacking saldırısını gösterir.

Gereksinimler

  • Bir Windows makinesi
  • Yönetici haklarına sahip bir kullanıcı hesabı
  • PowerShell veya CMD yetenekleri

Adım 1: Demo Ortamını Hazırlama

mkdir C:\Temp

Adım 2: Kötü Amaçlı EXE Dosyasını Oluşturma

echo 'Start-Process powershell -ArgumentList "-NoProfile -WindowStyle Hidden -Command `"Start-Sleep 5; Add-LocalGroupMember -Group Administrators -Member hacker`""' > C:\Temp\backup.exe

Bu komut, "hacker" adlı bir kullanıcıyı yönetici grubuna ekleyecek şekilde tasarlanmıştır.

Adım 3: EXE Hijacking Saldırısını Gerçekleştirme

Eğer bir servis veya uygulama "C:\Temp" dizininden "backup.exe" dosyasını çalıştırıyorsa, bu durumda uygulama başlatıldığında kötü niyetli dosyamız yönetici haklarıyla çalıştırılır.

Adım 4: Yetki Yükseltmeyi Doğrulama

Uygulama veya servis kötü niyetli "backup.exe" dosyasını çalıştırdıktan sonra, "hacker" kullanıcısının yönetici haklarına sahip olup olmadığını kontrol edebiliriz:

net user hacker

Eğer "hacker" kullanıcısı listeleniyorsa ve yönetici haklarına sahipse, EXE hijacking saldırısı başarıyla gerçekleştirilmiş demektir.

Sonuç

EXE hijacking, yerel yetki yükseltme saldırılarında yaygın olarak kullanılan etkili bir tekniktir. Bu makale ve demo uygulama, bu saldırının nasıl çalıştığını ve sistem yöneticilerinin bu tür tehditlere karşı nasıl koruma sağlayabileceğini göstermektedir. Uygulamalar ve servisler her zaman güvenlik en iyi uygulamalarına uygun olarak yapılandırılmalı ve izlenmelidir.

Yorumlar