EDR Anatomisi: Savunma Hattının Bilinmeyenleri

Herkese selamlar, bugün sizlere EDR güvenlik ürünlerinin bunca saldırıları tam olarak nasıl kestiğini yani bunları nasıl fark edip saldırı olarak işaretleyebiliyor dilim döndükçe anlatmaya çalışacağım.

Red Team çalışmalarında karşılaştığımız en büyük engel genellikle EDR (Endpoint Detection and Response) güvenlik çözümleridir. Ancak EDR’lar sihirli değnek değildir; sadece Windows işletim sisteminin sunduğu belirli mekanizmaları kullanan, iyi mühendislik ürünü yazılımlardır.

Bu seride, EDR’ların “karanlık sanatlarını” inceleyeceğiz. Onları atlatmak için önce onları anlamak zorundayız. İlk bölümde, EDR’ın mimarisine ve işletim sistemi seviyesinde veriyi nasıl topladığına (Telemetry) odaklanacağız.

EDR Mimarisi: İki Parçalı Bir Yapı

Modern bir EDR çözümü genellikle iki ana bileşenden oluşur ve bu ikili sürekli iletişim halindedir:

  • User-Mode Agent: Bir servis olarak çalışır, logları toplar, buluta gönderir ve kullanıcıya arayüz sunar.
  • Kernel-Mode Driver: Asıl operasyonun döndüğü yerdir. İşletim sisteminin kalbine yerleşir ve olayları (Process create, File write vb.) gerçekleştiği anda yakalar.

Bu yapı, EDR’ın hem kullanıcı alanındaki (User Mode) uygulamaları hem de çekirdek (Kernel Mode) seviyesindeki kritik işlemleri izlemesini sağlar.

Gözetim Mekanizmaları: EDR Bizi Nasıl Görür?

EDR’ın veri toplamak için kullandığı ana yöntemleri anlamak, bypass stratejileri geliştirmek için kritiktir. Peki EDR’lar nasıl ve nerelerden veri topluyor onlara bakalım:

1-) Kernel Callbacks
Windows Kernel, sürücülerin sistemdeki olaylardan haberdar olması için resmi kayıt mekanizmaları sunar. EDR sürücüleri bu mekanizmalara “abone” olur ve tüm verilere bu şekilde erişir. Peki bu veriler neler onlara bakalım:

  • Process Creation (PspCreateProcessNotifyRoutine): Sisteme yeni bir process başladığında veya bittiğinde tetiklenir. EDR buradan Process ID, Parent Process ID ve Command Line argümanlarını yakalar. Siz cmd.exe /c whoami çalıştırdığınızda, EDR komut satırını bu callback sayesinde görür.
  • Thread Creation (PspCreateThreadNotifyRoutine): Bir process’in içinde yeni bir thread oluşturulduğunda tetiklenir. Özellikle Code Injection saldırılarını tespit etmek için kullanılır. Eğer notepad.exe içinde alakasız bir bellek bölgesinde yeni bir thread başlarsa, EDR bunu şüpheli bulur.
  • Image Loading (PspLoadImageNotifyRoutine): Bir .EXE, .DLL veya .SYS dosyası belleğe yüklendiğinde (memory mapping) tetiklenir. İmza tabanlı taramaların çoğu bu aşamada yapılır. Örneğin bir zararlı DLL, LoadLibrary ile çağrıldığında EDR bunu diskten belleğe geçerken yakalar.

2-) Dosya Sistemi ve Minifilter Sürücüleri
Diske bir dosya yazdığınızda (örneğin bir malware’i diske kaydettiğinizde), bu işlem diske ulaşmadan önce “Minifilter” adı verilen sürücüler tarafından incelenir. EDR’lar, dosya sistemi yığınına (stack) belirli bir “Altitude” (yükseklik) değeriyle kaydolur. I/O Manager bir yazma isteği aldığında, bu istek önce EDR’ın Minifilter’ına uğrar. EDR dosyayı tarar, zararlı bulursa işlemi bloklar. Yani aslında süreç bu durumda aşağıdaki gibi gider:

User Request -> I/O Manager -> EDR Minifilter (Scan) -> File System -> Disk

3-) Object Callbacks ve Erişim Kontrolü

LSASS dump saldırılarının sık sık “Access Denied” hatasıyla sonuçlanmasının temel sebeplerinden biri Object Callbacks mekanizmasıdır. EDR sürücüleri, ObRegisterCallbacks aracılığıyla PsProcessType ve PsThreadType nesnelerine yönelik handle oluşturma ve çoğaltma isteklerini, Object Manager seviyesinde denetleyebilir.

Bir process lsass.exe için OpenProcess çağrısı yaptığında, bu istek handle oluşturulmadan önce EDR tarafından değerlendirilir. Şüpheli olarak değerlendirilen taleplerde EDR, isteği tamamen engellemek yerine, bellek okuma gibi kritik yetkileri talepten çıkarır. Böylece, çağrı başarılı görünse bile, bellek okuma veya dump alma işlemi başarısız olur.

4-) Ağ Yığını ve WFP (Windows Filtering Platform)
EDR sadece diski değil, ağ trafiğini de dinler. Bunu eski usul hook’larla değil, Microsoft’un sunduğu Windows Filtering Platform (WFP) ile yapar. EDR sürücüleri, ağ yığınının belirli katmanlarına “Filtreler” yerleştirir. Bir malware, C2 sunucusuna bağlanmaya çalıştığında, bu paket daha ağ kartına gitmeden EDR tarafından analiz edilir.

5-) API Hooking
Her şey Kernel’da bitmez. EDR’lar, çalışan process’lerin içine kendi DLL’lerini enjekte ederler. Bu DLL’ler, sık kullanılan Windows API’lerini (örneğin ntdll.dll içindeki fonksiyonları) “Hook”lar.

Normal bir API çağrısı şöyle görünür:

Program -> ntdll!NtCreateThreadEx -> SYSCALL (Kernel)

Hooklanmış bir çağrı ise şöyledir:

Bu teknik sayesinde EDR, Kernel’a gitmeden önce parametreleri inceleyebilir ve bellekteki şüpheli aktiviteleri yakalayabilir.

6-) ETW (Event Tracing for Windows)
Modern EDR’ların en güçlü silahlarından biri ETW’dir. Özellikle Microsoft-Windows-Threat-Intelligence sağlayıcısı, EDR’lara inanılmaz derinlikte veri sunar. Process Hollowing, Thread Injection veya şüpheli API çağrıları gibi davranışlar, işletim sistemi tarafından doğrudan ETW üzerinden loglanır ve EDR bu logları gerçek zamanlı sömürür.

Gördüğünüz gibi aslında EDR bir kara kutu değil; Process Callbacks, Minifilters, Object Callbacks ve ETW gibi işletim sistemi özelliklerinin bir kombinasyonudur. Bir saldırganın bu sistemi atlatabilmesi için, bu veri akışını nerede ve nasıl keseceğini (Un-hooking, Callback Removal, ETW Patching) bilmesi gerekir.

Serinin bir sonraki yazısında, bu teorik bilgiyi pratiğe dökerek biraz daha EDR bypass tarafına değinmeye çalışacağım. Okuduğunuz için teşekkür ederim.

Güvenli günler dilerim.

Leave a Reply

Your email address will not be published. Required fields are marked *