Olay günlükleri, servisler ve Active Directory'ye giriş
- Windows olay günlüğündeki Event ID'ler bir makinede ne olduğunu sayılarla anlatır; kaba kuvvet ve servis kalıcılığının imzasını bu derste tanıyacaksın.
- Son olarak tek makineden çok makineye geçip Active Directory'nin orman, etki alanı ve OU yapısına giriş yapacaksın.
- Günlük temizleme ve merkezî izlemenin neden önemli olduğunu da göreceksin.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +60 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Önceki derste PowerShell ile tek tek sorgular yaptın. Şimdi bu sorguları bir makinenin bütün olay geçmişine uyguluyoruz. Windows, olup biten her şeyi olay günlüğüne yazar ve her olay bir sayı, bir Event ID taşır.
Bir SOC analisti bütün metni okumaz; önce hangi ID'lerin önemli olduğunu bilir ve süzmeyi oradan başlatır. Bu derste kimlik ve yetki olaylarının Event ID'lerini, bir kaba kuvvet denemesinin günlükteki imzasını ve servis kalıcılığının izini tanıyacaksın. Son olarak tek makineden çıkıp Active Directory'nin orman, etki alanı ve OU yapısına gireceksin. Olayları okumak, bir makinenin ne yaşadığını sonradan anlamanın en güçlü yoludur.
Olay günlükleri ve Event ID
Windows olayları üç ana günlükte toplar. Application programların kendi mesajlarını, System sürücü ve servis olaylarını, Security ise kimlik doğrulama ve yetki kullanımını kaydeder. Event Viewer bu günlükleri görsel olarak açar; aynı veriye PowerShell'de Get-WinEvent ile ulaşırsın. Her olay bir Event ID taşır ve bu numara olayın türünü sabit biçimde tanımlar; günlük Türkçe ya da İngilizce görünse de numara değişmez.
Kimlik tarafında birkaç ID öne çıkar: 4624 başarılı oturum açma, 4625 başarısız deneme, 4634 oturum kapatma, 4672 bir oturuma özel ayrıcalık atanması, 4688 yeni süreç oluşturma. Hesap ve grup tarafında 4720 yeni hesap oluşturma, 4732 bir hesabın yerel güvenlik grubuna eklenmesi önemlidir. 4732 doğrudan bir yetki değişikliğinin izidir ve bir saldırının en görünür adımlarından biridir.
Bu ID'leri bir arada görmek, dağınık satırları bir hikâyeye çevirir. 4625'in ayrıntısında oturum türü de yazar. LogonType 2 kullanıcının kendi klavyesinden girişini, LogonType 3 ağ üzerinden erişimi, LogonType 10 ise uzak masaüstünü (RDP) gösterir. Aynı kaynaktan saniyeler içinde art arda gelen 4625 kayıtları, farklı kullanıcı adlarıyla denenen bir kaba kuvvet saldırısının klasik imzasıdır.
Seriyi bitiren tek bir 4624 ise denemenin tuttuğu anı işaretler. Hemen ardından gelen 4732, ele geçen hesabın bir yönetici grubuna eklendiğini söyler. Üç olayı yan yana koyduğunda saldırının üç adımını okursun: dene, gir, yetkini büyüt. Bu üç adımlı desen o kadar yaygındır ki, onu tanımak bir analistin ilk öğrendiği kalıplardandır.
23:41:02 EventID=4625 Hesap=admin LogonType=10 KaynakIP=203.0.113.19 Sonuc=Basarisiz 23:41:04 EventID=4625 Hesap=muhasebe1 LogonType=10 KaynakIP=203.0.113.19 Sonuc=Basarisiz 23:41:09 EventID=4625 Hesap=destek2 LogonType=10 KaynakIP=203.0.113.19 Sonuc=Basarisiz 23:41:47 EventID=4624 Hesap=destek2 LogonType=10 KaynakIP=203.0.113.19 Sonuc=Basarili 23:42:15 EventID=4732 Hesap=destek2 Grup=Administrators Eylem=Uye-Eklendi 23:43:02 EventID=7045 Hesap=destek2 Servis=WinUpdateHelper Yol=C:\Users\Public\svc.exe
Çizelgeyi tek bir günlükten okumadığına dikkat et. 4625, 4624 ve 4732 Security günlüğünde durur. En alttaki 7045, yani yeni servis olayı ise System günlüğüne düşer; servis kurulumunu Security tarafında 4697 olayı da kaydedebilir. Gerçek bir incelemede bu iki günlüğü birbirine zaman damgasıyla bağlarsın.
LogonType 10 kaynağın uzak masaüstünden geldiğini söylüyor; bu da muh-pc07'de RDP'nin dışarıya açık kaldığı anlamına gelir. Zinciri auth.log okur gibi okursun, yalnız alanların adı değişir. Aynı dış adresten üç farklı kullanıcı adı, birkaç saniye arayla; bu ritim insan değil, bir araç kokar.
Etkinlik 1 / 6
Aşağıdaki günlükte kaba kuvvet denemesine ve sonrasına ait satırları işaretle.
Şüpheli satırlara tıkla. Birden fazla olabilir.
Kaba kuvveti otomatikleştirmek
Aynı süzmeyi gözle değil, PowerShell ile yaparsın. Get-WinEvent tam olarak Event ID'ye göre filtreler ve tarih aralığını da sorguya katar. Böylece dakikalar süren gözle tarama birkaç saniyeye iner ve sonuç düzenli bir tabloya dökülür. Bir kaba kuvvet araştırmasında zinciri şöyle kurarsın: günlüğü çek, yalnız 4625 olaylarını bırak, zamana göre sırala, gösterilecek alanları seç.
4625'in içindeki alt durum kodu (Sub Status) da ipucu verir. 0xC000006A yanlış parolayı, 0xC0000064 ise olmayan bir kullanıcı adını gösterir. Art arda 0xC0000064 görmek bir kullanıcı adı taraması, art arda 0xC000006A ise bilinen bir hesaba parola denemesidir.
İkisini ayırmak saldırının niyetini anlamana yardım eder: saldırgan hesap mı arıyor, yoksa bulduğu bir hesabın parolasını mı kırmaya çalışıyor? Kaynak adres de ayrı bir süzgeçtir; aynı dış IP'den gelen bir deneme yığını, dağınık tek tük hatalardan çok farklı bir resimdir ve çoğu zaman otomatik bir aracın imzasıdır.
Etkinlik 2 / 6
muh-pc07'de başarısız girişleri PowerShell ile çekip zamana göre sıralayan zinciri kur.
Parçalara tıklayarak komutu soldan sağa kur.
Servisler ve kalıcılık
Servisler arka planda sürekli çalışan programlardır ve Windows onları Hizmet Denetim Yöneticisi (Service Control Manager) ile yönetir. services.msc grafik arayüzü, sc query ve PowerShell'deki Get-Service aynı bilgiyi verir. Bir saldırgan makinede kalıcı olmak istediğinde çoğu zaman bir servis kurar, çünkü servis sistem her açıldığında kendiliğinden başlar. Yeni bir servis kurulduğunda System günlüğüne 7045 olayı düşer; Security tarafında aynı kurulumu 4697 kaydeder.
MITRE ATT&CK bu tekniği T1543.003 olarak izler. Kalıcılığın tek yolu servis değil: 4698 yeni bir zamanlanmış görevi, 4720 yeni bir hesabı, 4732 bir yönetici grubuna eklemeyi kaydeder. Bilinen yazılım listesinde olmayan bir servis ya da beklenmedik bir zamanlanmış görev, incelenmesi gereken ilk işaretlerdir. Çizelgedeki WinUpdateHelper adı tanıdık görünür, ama yolu Public klasörüdür; meşru bir güncelleme servisi oraya kurulmaz.
Etkinlik 3 / 6
7045 numaralı olay bir SOC analisti için neden önemlidir?
Saldırganın bir sonraki hamlesi çoğu zaman izini silmektir. Olay günlüğünü temizlemek bunun en kaba yoludur ve kendisi de bir iz bırakır: Güvenlik günlüğü temizlendiğinde 1102 olayı yazılır. Denetim ilkesinin değiştirilmesi 4719, günlüğün büsbütün temizlenmesi 1102 ile görünür.
Microsoft 4719'u yüksek, 1102'yi orta-yüksek önemde sayar; beklenmedik bir temizleme tek bir oluşumda bile araştırılır. Çünkü meşru bir yönetici günlüğü nadiren siler, ama izini kapatmak isteyen biri bunu erken yapar. Komut satırından olay günlüğüyle wevtutil de ilgilenir: wevtutil qe bir günlüğü sorgular, wevtutil cl ise temizler. Bu yüzden wevtutil cl çağrısını görmek başlı başına bir uyarıdır.
Etkinlik 4 / 6
Bir saldırgan izini kapatmak için Güvenlik günlüğünü sildi. Bu eylem hangi olayla kaydedilir?
Active Directory'ye giriş
Tek makinede bu kadar bilgiyi izlemek bile emek ister; bir kurumda yüzlerce makine varsa hesap ve izinleri tek tek yönetmek sürdürülemez. Active Directory (AD) bunu merkezî bir dizin hizmetiyle çözer. En dışta bir orman (forest) güven sınırını çizer. İçinde bir ya da daha çok etki alanı (domain) kendi kullanıcı ve bilgisayarlarını barındırır.
Her etki alanının etki alanı denetleyicisi (Domain Controller, DC) hem kimlik doğrulamayı yürütür hem de dizin verisini tutar; üstünde Kerberos ve LDAP servisleri çalışır. Kullanıcılar ve bilgisayarlar OU (Organizational Unit) adlı klasörlerde gruplanır. GPO (Group Policy Object) adlı kural kümeleri bu OU'lara bağlanır ve oradaki her nesneye aynı anda iner. Böylece bir ayar binlerce makineye tek hamlede uygulanır.
Hiyerarşiyi yukarıdan aşağı okursun. Orman en dıştaki güven sınırıdır ve içinde bir ya da daha çok etki alanı barındırır. Her etki alanının kendi DC'si kimlik servislerini yürütür. OU'lar etki alanını departmana ya da konuma göre böler ve GPO'lar oraya bağlanır.
En altta duran nesneler, yani kullanıcı ve bilgisayar hesapları, bağlı bulundukları OU'nun kurallarını devralır. Bir ayarı yalnız bir departmana uygulamak istiyorsan, o departmanın OU'suna bağlarsın; etki alanının köküne bağlarsan herkese iner. Bu yapı yönetimi kolaylaştırır, ama aynı kolaylık bir hatayı da hızla yayar; o yüzden kapsamı doğru seçmek önemlidir.
Etkinlik 5 / 6
Muhasebe departmanındaki bilgisayarlara aynı ekran kilidi politikasını tek seferde uygulamak istiyorsun. Kuralı hangi durağa bağlarsın?
Diyagramda doğru kutuyu tıkla.
Merkezî yönetim, merkezî risk
Merkezî yönetimin gücü, riski de merkezîleştirir. Önceki derslerdeki Bordro klasörünü düşün: Everyone:(F) izni tek makinede bir sorunsa, aynı hatayı bir GPO ile bütün etki alanına yayarsan sorun yüz kat büyür. Aynı kaldıraç savunmada da işe yarar: doğru bir sıkılaştırmayı da tek hamlede her makineye uygularsın. Bu yüzden merkezî izleme kurarsın.
Sysmon, süreç oluşturmayı komut satırıyla birlikte (olay 1), ağ bağlantılarını (olay 3, yapılandırmada açılır) ve alternatif veri akışlarını (olay 15) kaydederek Windows'un varsayılan günlüğünü zenginleştirir. Olayları bir SIEM'de toplar, 1102 gibi kurcalama sinyalleri için alarm kurarsın.
Merkezî toplamanın bir yararı da temel çizmektir: neyin normal olduğunu bir kez ölçtükten sonra, ondan sapan her şey kendiliğinden öne çıkar. Bir makinede ilk kez görülen bir servis adı ya da gece yarısı gelen bir RDP girişi, temeli bilen bir sistemde hemen alarma dönüşür. Tek makineyi okumayı öğrendin; aynı gözle artık bütün filoyu okursun.
Bu dört ders birlikte bir makinenin güvenlik iskeletini verdi: izinler kimliğe bağlıdır, kimlikler SID ile tanınır, PowerShell bu bilgiyi ölçeğe taşır, olay günlüğü de olup biteni sonradan okutur. muh-pc07 hikâyesini baştan sona izlersen zinciri görürsün: gevşek bir klasör izni, dışarıya açık bir RDP, tek bir zayıf parola, ardından yetki yükseltme ve kalıcı bir servis. Her halka ayrı bir ders konusuydu.
Savunma her adımda aynıdır: en az yetki, iyi bir günlük ve merkezî bir göz. Bu üç ilkeyi her sisteme taşıyabilirsin; işletim sistemi değişse de mantık aynı kalır.
Etkinlik 6 / 6
Doğru mu, yanlış mı?
Bir GPO, yalnız bağlandığı OU'daki bilgisayarları değil, etki alanındaki bütün OU'ları otomatik kapsar.
Derinleş:Süreç oluşturma (4688) ve komut satırı
Kimlik olaylarının ötesinde en değerli olaylardan biri 4688, yani yeni süreç oluşturma olayıdır. Varsayılan ayarıyla yalnız sürecin adını yazar; ama denetim ilkesinde süreç oluşturma denetimini ve komut satırını açarsan, her yeni sürecin tam komut satırını da kaydeder. Böyle bir kayıt, bir saldırının en açık izidir: hangi programın hangi argümanlarla çalıştığını görürsün.
Örneğin bir belgeden doğan bir PowerShell süreci ve içindeki kodu çözen uzun bir komut satırı, tek başına güçlü bir sinyaldir. 4688'i Sysmon'un 1 numaralı olayı tamamlar; ikisi süreç ağacını, yani hangi sürecin hangisini doğurduğunu çıkarmana yarar. Kaba kuvvetten sonra bu ağaç, saldırganın makinede ne çalıştırdığını gösterir ve olayı bir hikâyeye dönüştürür.
Derinleş:Günlüğü korumak
Bir günlük yalnız yazıldığı yerde durursa, o makineyi ele geçiren biri onu silebilir. Bu yüzden olayları oluştukları makinede bırakmaz, bir toplayıcıya ya da SIEM'e akıtırsın. Böylece saldırgan yerel günlüğü temizlese bile (1102), kopyası merkezde durur ve silme girişimi de ayrıca bir alarma dönüşür.
Windows Event Forwarding bu akıtmayı yerleşik olarak yapar. Günlüğün kendisini de sertleştirirsin: boyutunu yeterli tutar, üzerine yazmayı sınırlar, kimin temizleyebileceğini kısarsın.
Olay günlüğü bir güvenlik aracına ancak korunduğunda dönüşür; korunmayan bir günlük, saldırganın ilk sildiği şeydir. Bu yüzden toplama ve koruma, tespit kadar önemlidir. İyi kurulmuş bir ortamda analist, olayın hangi makinede olduğuna bakmadan hepsini tek bir yerden sorgular ve bir saldırının makineden makineye sıçrayışını tek bir ekranda izler.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.