Run anahtarıyla kalıcılığa karşı nasıl savunulur
Run anahtarına yazmak kurulu yazılımlar için normaldir ve onları bozmadan engellenemez; savunma tespit ve neyin çalışabileceği üzerindeki kontroldür. Run ve RunOnce anahtarlarına yazılan değerleri loglayın (Sysmon Event ID 13), değer bir script yorumlayıcısını ya da kod çalıştırmak için sık kullanılan bir sistem dosyasını başlatıyorsa alarm üretin, açılışta çalışan kayıtları Autoruns ile gözden geçirin ve onaylanmamış bir program kayıtlı olsa bile oturum açılışında çalışmasın diye App Control for Business kullanın.
Saldırgan ne yapar
Bu anahtarlar altındaki her değer, bir kullanıcı oturum açtığında bir program başlatır:
HKCU\Software\Microsoft\Windows\CurrentVersion\RunveRunOnce: mevcut kullanıcı için. Her kullanıcı buraya yönetici yetkisi olmadan yazabilir.HKLM\Software\Microsoft\Windows\CurrentVersion\RunveRunOnce: bütün kullanıcılar için. Buraya yazmak yönetici yetkisi ister.
Bir kez kod çalıştırmış saldırgan, kod her yeniden başlatmadan sonra tekrar çalışsın diye bir değer ekler. RunOnce değerleri çalıştıktan sonra silinir.
Logda nasıl görünür
Bir registry değer yazma olayı (Sysmon Event ID 13, category: registry_set): TargetObject değerin tam yolu, Details çalışacak komut, Image onu yazan programdır. Kayıtlarda bir post-exploitation framework'ünün yazdığı iki kayıttan biri:
| Image | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe |
|---|---|
| TargetObject | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Updater |
| Details | "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -c "$x=$((gp HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion Debug).Debug);powershell -Win Hidden -enc $x" |
| EventType | SetValue |
Değer PowerShell'i başlatıyor; PowerShell asıl script'ini başka bir registry değerinden okuyor. Kurulu yazılımlar ise genellikle kendi çalıştırılabilir dosyasını kaydeder.
Tespit
Challenge verisinde ölçüldü: kural 2 saldırı olayından 2 tanesini yakaladı, 9.691 normal olaydan 1 tanesiyle eşleşti.
Kuralı göster (önce challenge'ı deneyin)
title: Run key value that starts a script interpreter
id: 5e7f0a3c-9d28-4b61-8e4a-2c6b1f9d7a05
status: test
description: Detects a value written under a Run or RunOnce key whose command starts a script interpreter or a system binary often used to run code. Installed software normally registers its own executable.
references:
- https://attack.mitre.org/techniques/T1547/001/
- https://howdefend.com/defend/run-key-persistence/
author: Bartu Kılıç
date: 2026-10-20
tags:
- attack.persistence
- attack.t1547.001
logsource:
product: windows
category: registry_set
detection:
selection_key:
TargetObject|contains:
- '\CurrentVersion\Run\'
- '\CurrentVersion\RunOnce\'
selection_value:
Details|contains:
- 'powershell'
- 'pwsh'
- 'mshta'
- 'wscript'
- 'cscript'
- 'rundll32'
- 'regsvr32'
- 'cmd.exe'
condition: all of selection_*
falsepositives:
- Software that registers a script or a rundll32 command at logon (review the Details value)
level: medium
Kuralın kaçırdıkları
- Bırakılmış bir çalıştırılabilir dosya. Değer saldırganın kendi programını, örneğin
AppDataiçinde, gösteriyorsaDetails'te yorumlayıcı görünmez. Kurulu yazılımlar daAppData'da durur (temiz istemcide Spotify ve bir Python kurulum programı oraya işaret eden değerler kaydediyor); klasör tek başına bir şey ayırmaz, App Control ayırır. - Diğer otomatik başlatma yerleri. Startup klasörü, servisler, zamanlanmış görevler, Winlogon değerleri ve ATT&CK'in listelediği diğer anahtarların her biri ayrı kural ister.
- Bilinen bir false positive. Temiz Windows 10 istemcisinde OneDrive kurulumu, eski sürüm klasöründe
cmd.exe /q /c rmdir /s /qçalıştıran birRunOncedeğeri yazdı. Onucmd.exe'ye göre değil, değerin tamamına göre filtreleyin. - Eksik loglama. Sysmon yalnızca yapılandırmasındaki anahtarları kaydeder. Kurala güvenmeden önce kullanılan yapılandırmanın Run anahtarlarını kapsadığını kontrol edin.
Önleme
- Nereye kaydedildiğini değil, neyin çalıştığını kontrol edin. App Control for Business ya da AppLocker uygulandığında, kayıtlı ama politikanın izin vermediği bir program oturum açılışında başlamaz.
- Listeyi gözden geçirin. Autoruns (Sysinternals) her otomatik başlatma yerini imza ve yayıncı bilgisiyle listeler; çıktısını makineler arasında karşılaştırmak yalnızca bir makinede olan kayıtları gösterir.
Pratik
Kuralı aynı veri üzerinde, hedeflerin hepsi etiketliyken kendiniz yazın.