Skip to content
Siber Vatan

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.

İlk erişimden yeniden çalıştırmaya uzanan Persistence akışı

Persistence Mantığı

Bir Persistence girişimi çoğunlukla dört parçadan oluşur:

  1. İlk erişim: Saldırgan bir zafiyet, çalınmış kimlik bilgisi veya zararlı yazılım aracılığıyla sisteme ulaşır.
  2. Yerleşme: Bir dosya bırakır ya da Registry, servis veya görev yapılandırmasını değiştirir.
  3. Gizlenme: Meşru görünen adlar, kullanıcı dizinleri veya sistem araçlarıyla görünürlüğü azaltmaya çalışır.
  4. 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öntemNasıl çalışır?İzlenebilecek başlıca kayıtlar
Scheduled TasksKomut veya dosya belirli bir zaman ya da olayla çalıştırılırSecurity 4698/4702, Task Scheduler Operational logları
ServislerBir servis başlangıç türü otomatik olacak şekilde eklenir veya değiştirilirSystem 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ırSecurity 4657, Sysmon 12/13/14
Startup klasörleriDosya, oturum açılışında yürütülen klasörlerden birine bırakılırSysmon 11, dosya oluşturma ve değişiklik kayıtları
Gizli dosya ve dizinlerPayload olağan dışı veya gizli bir konumda saklanırEDR/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.

Windows Registry Editor hiyerarşisi

Kırmızı numaralar Registry hiyerarşisindeki temel bölümleri işaretliyor.

Varsayılan Run key'leri

text
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

Run 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

text
# 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\StartUp

Startup folder'larının konumu aşağıdaki Registry alanlarıyla da belirlenebilir:

text
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 Folders

RunServices, 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:

  1. Registry veya Startup klasöründeki değişikliği yakalıyoruz.
  2. Değeri oluşturan kullanıcıyı ve process'i belirliyoruz.
  3. Hedef dosyanın hash, imza ve ilk görülme bilgisini kontrol ediyoruz.
  4. Değişiklikten sonra başlayan process'i aynı host ve kullanıcı bağlamında arıyoruz.
  5. Dosyanın kullanıcı tarafından yazılabilir bir dizinden çalışıp çalışmadığını inceliyoruz.
SinyalNeden önemlidir?
%AppData%, %Temp% veya kullanıcı profilinden çalışan imzasız dosyaAutostart 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ğerFileless 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ülmesiBirden 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.

Kaynakça

Persistence İçin Kaynakça