Atomic Red Team Senaryolarını Sysmon ve Security Loglarında İncelemek
Rabia Ekşi

Atomic Red Team, MITRE ATT&CK tekniklerini küçük ve tekrarlanabilir testlere dönüştüren açık kaynak bir kütüphanedir. Amaç “sistemi ele geçirmek” değil; güvenlik kontrolünün beklenen davranışı görüp görmediğini, doğru logun oluşup oluşmadığını ve analistin bu sinyali yakalayıp yakalayamadığını ölçmektir.
Bu çalışmada kontrollü bir Windows lab'ında testi seçiyor, Sysmon ve Security log kaynaklarını hazırlıyor, Atomic test'i çalıştırıyor ve elde ettiğimiz event'leri DFIR bakışıyla inceliyoruz.
1. MITRE ATT&CK, Taktik ve Teknik
MITRE ATT&CK, gerçek dünya gözlemlerine dayanan saldırgan davranışı bilgi tabanıdır. İki temel kavramı ayırmak gerekir:
- Taktik, saldırganın o aşamadaki hedefidir: Initial Access, Execution, Persistence veya Discovery gibi.
- Teknik, bu hedefe ulaşmak için kullanılan somut davranıştır: PowerShell, Scheduled Task/Job veya Registry Run Keys / Startup Folder gibi.
Atomic Red Team'deki her test bir ATT&CK teknik kimliği altında tutulur. Örneğin PowerShell testleri T1059.001 dizininde yer alır. Aynı teknik altında farklı komut, prerequisite ve platformlara sahip birden fazla Atomic test bulunabilir.
2. Event ID Nedir?
Windows Event Log'daki her olay türü sayısal bir Event ID ile tanımlanır. Event ID olayın sınıfını söyler; olayın bağlamı ise kullanıcı, host, zaman, process, komut satırı ve ağ alanlarından çıkarılır.
| Kaynak | Örnek Event ID | Sağladığı visibility |
|---|---|---|
| Windows Security | 4688 | Yeni process, kullanıcı ve isteğe bağlı komut satırı |
| Windows Security | 4624/4625 | Başarılı ve başarısız oturum açma |
| Sysmon | 1 | Process oluşturma, parent process, hash ve ProcessGUID |
| Sysmon | 3 | Process ile ilişkilendirilmiş ağ bağlantısı; yapılandırmada açıyoruz |
| Sysmon | 11 | Dosya oluşturma |
| Sysmon | 12/13/14 | Registry nesnesi oluşturma, değer yazma, silme veya yeniden adlandırma |
Tek bir Event ID “saldırı” demek değildir. Testin beklenen davranışıyla logdaki alanları eşleştiriyor, ardından bu davranışın meşru yazılım etkinliğinden nasıl ayrıldığını değerlendiriyoruz.
3. Lab Hazırlığı
Test ortamımızı şu bileşenlerle hazırlıyoruz:
- Snapshot alınmış, üretimden izole bir Windows sanal makinesi
- Yönetici erişimi ve belgelenmiş test izni
- Aktif Sysmon yapılandırması
- Security loglarında process creation audit'i
- Logları merkezi sisteme taşıyan EDR, SIEM veya Windows Event Forwarding
- Test öncesi ve sonrası timestamp
Test sonunda önce Atomic testinin kendi Cleanup Commands bölümünü uyguluyor, gerektiğinde snapshot ile lab'ı bütünüyle sıfırlıyoruz.
4. Sysmon Kurulumu ve Log Kaynağı
Sysmon, Microsoft Sysinternals tarafından sağlanan bir Windows hizmeti ve sürücüsüdür. Process, ağ, dosya ve Registry gibi olayları ayrıntılı alanlarla Microsoft-Windows-Sysmon/Operational kanalına yazar.
Microsoft'un imzalı paketini indirip ortamımıza uygun XML yapılandırmasını hazırladıktan sonra yönetici terminalinde şu komutu çalıştırıyoruz:
Sysmon64.exe -accepteula -i .\sysmonconfig.xmlMevcut yapılandırmayı güncelliyoruz:
Sysmon64.exe -c .\sysmonconfig.xmlDurumu ve geçerli yapılandırmayı kontrol ediyoruz:
Sysmon64.exe -c
Get-WinEvent -LogName 'Microsoft-Windows-Sysmon/Operational' -MaxEvents 5Sysmon bütün event'leri varsayılan olarak toplamadığı için özellikle ağ bağlantılarını gösteren Event ID 3'ü yapılandırmada açıyoruz. Noise'u azaltmak için dahil etme ve hariç tutma filtrelerini test hedeflerimize göre planlıyoruz.
5. Security Logunda 4688'i Hazırlamak
Windows Security Event ID 4688, yeni process oluşturulduğunda üretilir. Bunun için Advanced Audit Policy altında Detailed Tracking → Audit Process Creation başarılı olaylarını etkinleştiriyoruz.
Komut satırını da görmek için Group Policy'de:
Computer Configuration
└─ Administrative Templates
└─ System
└─ Audit Process Creation
└─ Include command line in process creation events = Enabled6. Invoke-AtomicRedTeam Kurulumu
PowerShell'i yönetici olarak açıyor ve Invoke-AtomicRedTeam modülünü PowerShell Gallery'den kullanıcı scope'unda kuruyoruz:
Install-Module -Name invoke-atomicredteam,powershell-yaml -Scope CurrentUser
Import-Module invoke-atomicredteamTest tanımlarını resmi depodan ayrı bir lab dizinine alıyoruz:
git clone --depth 1 https://github.com/redcanaryco/atomic-red-team.git C:\AtomicRedTeam
$PSDefaultParameterValues = @{
'Invoke-AtomicTest:PathToAtomicsFolder' = 'C:\AtomicRedTeam\atomics'
}Atomic deposundaki bin ve src dosyaları güvenlik ürünlerini tetikleyebilir. Geniş bir klasör istisnası açmıyor; yalnızca seçtiğimiz testi izole VM'de çalıştırıyoruz.
7. Test Seçimi ve Ön İnceleme
Önce teknik altındaki testleri listeliyor, komutu doğrudan çalıştırmadan içeriğini inceliyoruz:
$Technique = 'T1059.001'
Invoke-AtomicTest $Technique -ShowDetailsBriefListeden bir test seçtikten sonra numarasını değişkene alıyoruz:
$TestNumber = 1 # ShowDetailsBrief çıktısında incelediğiniz test
Invoke-AtomicTest $Technique -TestNumbers $TestNumber -ShowDetails
Invoke-AtomicTest $Technique -TestNumbers $TestNumber -CheckPrereqsShowDetails çıktısında şu alanlara bakıyoruz:
- Çalıştırılacak komut ve kullanılan binary
- Yönetici yetkisi gerekip gerekmediği
- İndirilecek veya oluşturulacak dosyalar
- Değiştirilecek Registry, servis veya görev alanları
- Ağ bağlantısı gereksinimi
- Cleanup komutu
- Beklenen Sysmon ve Security olayları
Prerequisite eksikse -GetPrereqs kullanmak mümkündür; ancak bu adım dış kaynaktan dosya indirebilir. Bu nedenle URL'yi ve hash'i incelemeden otomatik indirme yapmıyoruz.
8. Testi Çalıştırma ve Temizleme
Test başlangıç zamanını kaydediyor ve testi çalıştırıyoruz:
$StartTime = Get-Date
Invoke-AtomicTest $Technique -TestNumbers $TestNumber
$EndTime = Get-DateTest tamamlanınca merkezi log altyapısındaki aktarım gecikmesini hesaba katıp kısa bir süre bekliyor, ardından cleanup adımını çalıştırıyoruz:
Invoke-AtomicTest $Technique -TestNumbers $TestNumber -CleanupCleanup komutunun başarılı dönmesi yeterli değildir. Oluşturulan dosya, Registry değeri, kullanıcı, servis veya görevin gerçekten kaldırıldığını ayrıca doğruluyoruz.
9. Sysmon ve Security Log Analizi
Test penceresindeki Sysmon process olaylarını PowerShell ile çekmek için:
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
Id = 1
StartTime = $StartTime
EndTime = $EndTime.AddMinutes(2)
} | Select-Object TimeCreated, Id, MessageSecurity 4688 için:
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4688
StartTime = $StartTime
EndTime = $EndTime.AddMinutes(2)
} | Select-Object TimeCreated, Id, MessageAnalizde yalnızca test komutunu aramıyor, event chain'i kuruyoruz:
| Alan | Analiz sorusu |
|---|---|
| UtcTime / TimeCreated | Olay test penceresinde mi? Saat dilimleri doğru mu? |
| User / SubjectUserName | Test beklenen hesap bağlamında mı çalıştı? |
| Image / NewProcessName | Hangi executable başladı? |
| CommandLine | Parametreler test tanımıyla eşleşiyor mu? |
| ParentImage / CreatorProcessName | Process'i hangi üst process başlattı? |
| ProcessGUID / ProcessId | Dosya ve ağ olayları aynı process'e bağlanabiliyor mu? |
| Hashes / Signature | Binary bilinen ve imzalı mı? |
| DestinationIp / DestinationPort | Beklenen veya beklenmeyen ağ bağlantısı var mı? |
Beklenen sonuç matrisi
| Kontrol | Beklenti | Sonuç |
|---|---|---|
| Endpoint logu | Sysmon Event ID 1 oluşur | Geçti / Kaldı |
| Security logu | 4688 ve komut satırı görünür | Geçti / Kaldı |
| Toplama | Olay SIEM'e belirlenen sürede ulaşır | Geçti / Kaldı |
| Tespit | Kural doğru önem seviyesiyle alert üretir | Geçti / Kaldı |
| Enrichment | ATT&CK teknik kimliği ve host bilgisi eklenir | Geçti / Kaldı |
| Cleanup | Oluşturulan artifact'ler kaldırılır | Geçti / Kaldı |
Bir kontrolün “kaldı” sonucu vermesi başarısız bir çalışma değildir; eksik telemetri, yanlış filtre veya tespit mantığındaki boşluğu görünür hâle getirir.
10. DFIR Raporu
Her test için kısa ama tekrarlanabilir bir rapor tutuyoruz:
Test kimliği : ATT&CK tekniği + Atomic test GUID/numarası
Amaç : Doğrulanacak güvenlik kontrolü
Yetki ve scope : Onay sahibi, host ve zaman aralığı
Prerequisite'ler : Sysmon sürümü, config hash'i, audit policy
Çalıştırma zamanı : UTC başlangıç ve bitiş
Üretilen artifact'ler: Dosya, Registry, servis, görev, ağ bağlantısı
Gözlenen loglar : Kanal, Event ID, Record ID
Tespit sonucu : Alert adı, önem seviyesi, gecikme
Boşluklar : Eksik alan, filtre veya korelasyon
Cleanup sonucu : Kaldırılan artifact'ler ve doğrulama
Kanıtlar : Sorgu çıktısı, ekran görüntüsü, olay dışa aktarımıTest numaraları ve adları zaman içinde değişebilir. Otomasyonda mümkün olduğunda Atomic test GUID'sini ve kullanılan repo commit'ini kaydetmek sonucu yeniden üretilebilir kılar.
Sonuç
Atomic Red Team'in değeri yalnızca bir komut çalıştırmasında değil, test boyunca kurulan ölçüm döngüsündedir: ATT&CK tekniğini seçmek, telemetriyi hazırlamak, beklenen olayı üretmek, tespiti doğrulamak ve ortamı temizlemek.
Sysmon ayrıntılı endpoint bağlamını, Security logları ise Windows denetim izini sağlar. İki kaynak aynı zaman, kullanıcı ve process bağlamında korele edildiğinde tek bir event'ten çok daha güçlü bir tespit hikâyesi oluşur.

