Windows'ta Persistence Yöntemleri ve Tespiti
Mehmet Mermer · @Mermerim
Bu yazıda Windows sistemlerde kullanılan Persistence yöntemlerini inceliyor, Registry ve Startup değişikliklerini loglar üzerinden nasıl ilişkilendirdiğimizi anlatıyoruz.
Persistence Nedir?
Persistence, saldırganın ilk erişimi kesilse bile hedef sisteme yeniden ulaşabilmek için kullandığı tekniklerin genel adıdır. Sistem yeniden başlatıldığında, kullanıcı parolasını değiştirdiğinde veya ilk kullanılan açık kapatıldığında erişimin devam etmesi amaçlanır.
Persistence ilk erişim yöntemi değildir; saldırgan sisteme girdikten sonra kurduğu devam mekanizmasıdır. Zararlı bir dosyanın başlangıçta çalıştırılması, bir servisin otomatik başlatılması veya bir Scheduled Task oluşturulması bu mekanizmalara örnektir.
Persistence Mantığı
Bir Persistence girişimi çoğunlukla dört parçadan oluşur:
- İlk erişim: Saldırgan bir zafiyet, çalınmış kimlik bilgisi veya zararlı yazılım aracılığıyla sisteme ulaşır.
- Yerleşme: Bir dosya bırakır ya da Registry, servis veya görev yapılandırmasını değiştirir.
- Gizlenme: Meşru görünen adlar, kullanıcı dizinleri veya sistem araçlarıyla görünürlüğü azaltmaya çalışır.
- Yeniden çalıştırma: Logon, boot veya zaman tabanlı bir trigger erişimi tekrar etkinleştirir.
Bu zincirin savunma açısından önemli tarafı şudur: yalnızca bırakılan dosyayı silmekle yetinmiyoruz; dosyayı yeniden çalıştıran trigger'ı da bulup kaldırıyoruz.
Yaygın Persistence Yöntemleri
| Yöntem | Nasıl çalışır? | İzlenebilecek başlıca kayıtlar |
|---|---|---|
| Scheduled Tasks | Komut veya dosya belirli bir zaman ya da olayla çalıştırılır | Security 4698/4702, Task Scheduler Operational logları |
| Servisler | Bir servis başlangıç türü otomatik olacak şekilde eklenir veya değiştirilir | System 7045, Security 4697, servis yapılandırma değişiklikleri |
| Registry Run anahtarları | Bir program kullanıcı oturum açtığında çalıştırılır | Security 4657, Sysmon 12/13/14 |
| Startup klasörleri | Dosya, oturum açılışında yürütülen klasörlerden birine bırakılır | Sysmon 11, dosya oluşturma ve değişiklik kayıtları |
| Gizli dosya ve dizinler | Payload olağan dışı veya gizli bir konumda saklanır | EDR/FIM telemetrisi, file attribute ve file creation event'leri |
Yeni bir servis veya Run key meşru bir yazılım kurulumu sırasında da oluşabilir. Kullanıcı, zaman, code-signing durumu, path ve hemen ardından başlayan process'i birlikte değerlendiriyoruz.
Registry Run Keys ve Startup Folder
MITRE ATT&CK bu davranışı T1547.001 — Registry Run Keys / Startup Folder alt tekniğiyle izler. Bir Run değerinin işaret ettiği program, ilgili kullanıcı oturum açtığında onun yetkileriyle çalışır.
Registry hiyerarşisi
- HKEY_LOCAL_MACHINE (HKLM): Bilgisayar genelindeki ayarları tutar; yapılan değişiklik bütün kullanıcıları etkileyebilir.
- HKEY_CURRENT_USER (HKCU): Oturum açmış kullanıcıya ait ayarları tutar; değişiklik yalnızca bu kullanıcı bağlamında çalışır.

Kırmızı numaralar Registry hiyerarşisindeki temel bölümleri işaretliyor.
Varsayılan Run key'leri
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceRun değerleri her oturum açılışında, RunOnce değerleri ise adından da anlaşılacağı üzere bir kez çalıştırılmak üzere kullanılır. Bu anahtarların meşru kullanımı yaygındır; şüpheyi artıran şey genellikle değer adı değil, işaret edilen dosyanın yolu ve çalıştırma bağlamıdır.
Startup klasörleri
# Oturum açmış kullanıcı
C:\Users\<kullanıcı>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
# Tüm kullanıcılar
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUpStartup folder'larının konumu aşağıdaki Registry alanlarıyla da belirlenebilir:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell FoldersRunServices, RunServicesOnce ve Policies\Explorer\Run gibi daha az yaygın alanları da izliyoruz. Ancak bir anahtarın sistemde bulunması tek başına kötü amaç göstergesi değildir.
Tespit Yaklaşımı
MITRE'nin DET0365 stratejisi, bilinen Run/Startup konumlarındaki değişikliği alışılmadık bir binary yolu veya hemen ardından başlayan process ile korele eder. Pratikte şu akışı izliyoruz:
- Registry veya Startup klasöründeki değişikliği yakalıyoruz.
- Değeri oluşturan kullanıcıyı ve process'i belirliyoruz.
- Hedef dosyanın hash, imza ve ilk görülme bilgisini kontrol ediyoruz.
- Değişiklikten sonra başlayan process'i aynı host ve kullanıcı bağlamında arıyoruz.
- Dosyanın kullanıcı tarafından yazılabilir bir dizinden çalışıp çalışmadığını inceliyoruz.
| Sinyal | Neden önemlidir? |
|---|---|
%AppData%, %Temp% veya kullanıcı profilinden çalışan imzasız dosya | Autostart entry'leri için olağan dışı ve kullanıcı tarafından yazılabilir konum |
powershell.exe, wscript.exe, mshta.exe gibi script host veya LOLBin'lere işaret eden değer | Fileless veya script tabanlı çalıştırma ihtimali |
| Rastgele görünen değer adı ya da dosya adı | Masquerading davranışı olabilir |
| Registry değişikliğinin hemen ardından aynı dosyanın çalışması | Yapılandırma ve yürütme arasında güçlü korelasyon |
| Yeni görev/servis ile aynı hash'in görülmesi | Birden fazla Persistence yönteminin birlikte kullanılması |
Gerekli log ayarları
- Security 4657 için Registry denetimini ve ilgili anahtarlardaki SACL yapılandırmasını açıyoruz.
- Security 4688 için Audit Process Creation'ı; komut satırını görmek için de Include command line in process creation events ilkesini etkinleştiriyoruz.
- Sysmon'da en az process oluşturma, dosya oluşturma ve Registry olay türlerini ortamın ihtiyacına göre filtreliyoruz.
Önleme ve Hardening
Windows'un başlangıç özelliklerini tamamen kapatmak gerçekçi değildir; aynı mekanizmaları meşru yazılımlar da kullanır. Bu nedenle önleme ve görünürlük katmanlarını birlikte kuruyoruz:
- Kullanıcılara yalnızca ihtiyaç duydukları yetkileri veriyoruz.
- WDAC veya AppLocker ile kullanıcı tarafından yazılabilir dizinlerden çalıştırmayı sınırlandırıyoruz.
- Run key'leri, Startup folder'ları, servisler ve Scheduled Task'lar için known-good baseline oluşturuyoruz.
- İmzasız veya yeni görülen dosyaları EDR/FIM ile takip ediyoruz.
- Registry değişikliğini process, kullanıcı ve ağ bağlantısı telemetrisiyle ilişkilendiriyoruz.
- Müdahalede yalnızca dosyayı değil, onu tekrar başlatan bütün trigger'ları kaldırıyoruz.

