İçeriğe atla
0 XP 0
12 dkderinleşmeyle 13 dk50 XP6 etkinlik

Dosyayı çalıştırmadan tanımak

Bu derste
  • Dosyayı çalıştırmadan türüne, özetine ve içindeki dizelere bak. Bunlardan dosyanın ne olabileceğine dair ilk ipuçlarını çıkar. Tek bir ipucunu kesin sonuç sayma.
  • Özet değeri, tür tespiti ve dizeler on dakikada bir ilk resim verir.
  • Bu derste file, sha256sum ve strings çıktısını birlikte okumayı öğrenirsin.

Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

Altay Kargo'nun güvenlik ekibine e-postayla bir ek düşer: fatura.pdf.exe. Çift uzantı ilk uyarıdır ama tek başına karar vermez. Önündeki soru şudur: bu dosya ne ve çalıştırmadan ne kadarını öğrenebilirim. Statik analiz tam bunu yapar.

Dosyayı hiç koşmadan, yalnız baytlarını okuyarak türünü, kimliğini ve niyetini çıkarır. Bu derste özet değeri, tür tespiti ve dizelerle on dakikada bir ilk resim kurarsın. İlk resim, bir sonraki adımın gerekip gerekmediğini söyler. Bu adımların hiçbiri dosyayı çalıştırmaz, bu yüzden hepsi risksizdir.

Kimliği sabitle: SHA-256

Eline bir örnek geldiğinde ilk iş onun kimliğini sabitlemektir. SHA-256 özeti bunu yapar. Özet, dosyanın parmak izidir.

İçeriği 256 bitlik tek bir değere indirger ve bu değeri onaltılık yazdığında 64 karakter tutar. Tek bir bayt değişirse özet baştan sona başka bir değere döner. Bu yüzden iki dosyanın özeti aynıysa içerikleri de aynıdır, adları ne olursa olsun.

Özeti nereye kullanırsın? Önce arama yaparsın. Zararlı yazılım servislerine dosyanın kendisini yüklemeden yalnız özetini sorarsın ve ilk sonucu alırsın. Sonra paylaşırsın.

Ekip içinde örnek gönderirken dosya yerine özeti iletirsin, böylece yanlışlıkla çalıştırma riski ortadan kalkar. En sonda rapora yazarsın. Bir bulguyu belgelerken örneği özetiyle anarsın; o değer, aynı dosyadan söz ettiğinizin tartışmasız kanıtıdır.

Hangi özet algoritmasını seçtiğin önemlidir. Eski MD5 ve SHA-1 özetleri hâlâ sık görünür ama ikisinde de çakışma bulundu: farklı iki dosya aynı özeti verecek biçimde üretilebiliyor. Bir saldırgan bu zayıflıkla kendi hazırladığı zararsız ve zararlı iki dosyayı aynı özete oturtabilir.

SHA-256 için bugün bilinen pratik bir çakışma yok, bu yüzden kimlik için onu seçersin. Bir olay kaydında örneği hangi anda, hangi makinede bulduğunu özetiyle birlikte yazarsın; bu kayıt, delil zincirinin ilk halkasıdır ve sonradan dosyanın değişmediğini kanıtlar.

$ sha256sum ornek.bin
9f2c7b1e...4ae1  ornek.bin
$ file ornek.bin
ornek.bin: PE32+ executable (GUI) x86-64, for MS Windows
$ strings -n 8 ornek.bin | head -2
GetProcAddress
http://guncelleme-servis.example/ping
Üç komut, üç ayrı bilgi. Hiçbiri dosyayı çalıştırmaz.

Üç satırı birlikte oku. Birinci komut özeti verir: dosyanın kimliği budur. İkinci komut türü verir: dosya bir Windows yürütülebiliridir, 64 bit, grafik arayüzlü.

Üçüncü komut ilk niyeti verir: ilk iki dizede bile dinamik çözümleme ve dış bir adres görünüyor. Henüz hiçbir şey çalışmadı ama elinde kimlik, tür ve ilk ipucu var.

Etkinlik 1 / 6

Komut ne döner?

Önce kodu oku, sonra çıktıyı seç.

$ sha256sum ornek.bin

Türü belirle: file ve sihirli bayt

İkinci iş tür tespitidir. file aracı dosyanın baştaki birkaç baytını okur ve gerçek türünü tek satırda söyler. Bu baytlara sihirli sayı denir.

Windows yürütülebilirleri MZ harfleriyle, yani 4d 5a baytlarıyla başlar. Linux yürütülebilirleri 7f ELF dizisiyle açılır. file bu imzaya bakar, dosyayı çalıştırmaz; o yüzden ilk adımda uzantıya değil bu çıktıya güvenirsin.

Uzantı yalnız bir addır ve serbestçe değiştirilir. fatura.pdf.exe adındaki dosya bir PDF değildir; sondaki .exe gerçek türdür ve baştaki .pdf gözü oyalamak için konur. Windows dosyayı nasıl açacağına son uzantıya bakarak karar verir ve .exe yüzünden onu program olarak başlatır. Kullanıcı ise .pdf kısmına bakar ve belgeye güvenir.

Çift uzantı hilesi tam da bu güveni sömürür ve zararsız bir belge açtığını düşündürür. Dosya yöneticisi bilinen uzantıyı gizlerse kullanıcı yalnız fatura.pdf görür.

file aracının bunu nasıl bildiği de öğretici. Araç, baştaki baytları bir imza veritabanıyla karşılaştırır; bu veritabanı binlerce dosya türünün sihirli baytlarını ve okuma kurallarını tutar.

MZ ile başlayıp PE imzası taşıyan dosyaya PE, 7f ELF ile açılan dosyaya ELF der; PDF için 25 50 44 46, yani %PDF dizisini arar. Bu yüzden file güçlü ama yanılmaz değildir: dikkatle hazırlanmış bir başlık onu şaşırtabilir, çünkü araç yalnız ilk baytlara bakar, dosyanın gerçekten geçerli olup olmadığını denetlemez. İlk kararı file ile verirsin, sonra bölüm tablosu ve giriş noktasıyla doğrularsın.

Etkinlik 2 / 6

fatura.pdf.exe adlı dosyanın ilk baytları 4d 5a ise ilk yorum ne olur?

Dizeleri oku: niyetin ilk izi

Üçüncü iş dizeleri okumaktır. strings dosyadaki okunabilir karakter dizilerini listeler. Çıktı uzundur ve çoğu gürültüdür.

En az uzunluk bayrağı bu gürültüyü kırpar; sekiz karakterden kısa parçaları atlayınca anlamlı diziler öne çıkar. Dizelerde adresler, alan adları, dosya yolları, kayıt defteri anahtarları, komut satırı parçaları ve hata iletileri ararsın. Bunlar programın niyetini anlatır.

Karakter kodlaması kolayca gözden kaçar. Windows programları metni çoğu zaman iki baytlık biçimde, yani UTF-16 ile tutar. strings varsayılan taramada yalnız tek baytlık dizeleri bulur, o yüzden iki baytlık dizeleri görmek için kodlama seçeneğini açarsın.

Bir kayıt defteri yolu ya da bir pencere başlığı çoğu zaman tam bu geniş biçimde durur ve varsayılan taramada hiç görünmez. Gömülü dosyalara da bakarsın: bir ikilinin içinde ikinci bir yürütülebilir ya da bir arşiv saklı olabilir.

Dosyanın sonuna eklenmiş fazladan veriyi de ararsın. Diskteki dosya boyutu ile başlıkta bildirilen boyut arasındaki fark bir ipucudur: aradaki fazlalık, bölümlerin dışına eklenmiş bir blok olabilir. Bu blok çoğu zaman bir yapılandırma, bir ikinci aşama ya da şifreli bir yük taşır ve pek çok araçta gözden kaçar.

Dizeleri bu ek bloğun içinde de aratırsın, çünkü asıl adres ya da anahtar orada saklı olabilir. Boyut farkı küçük görünse de niyeti anlatan parça çoğu zaman tam oraya sıkıştırılmıştır.

Bulduğun her dize doğru olmayabilir. Yazarlar sahte iz bırakır: başka bir aileye ait adres, yanıltıcı bir hata iletisi ya da taklit bir sürüm dizesi. Dizeyi kanıt değil ipucu sayarsın. Dizelerin az olması da bilgidir.

Sıradan bir program yüzlerce dize taşır. Elinde otuz dize varsa dosya büyük olasılıkla paketli ya da karartılmıştır. Bu durumu modülün paketleme dersinde ayrıca görürsün.

$ strings -n 8 ornek.bin
GetProcAddress
LoadLibraryA
http://guncelleme-servis.example/ping
Software\Microsoft\Windows\CurrentVersion\Run
Dört satır üç niyet gösterir: dinamik çözümleme, dış adres, kalıcılık anahtarı.

Bu çıktıyı satır satır çöz. İlk iki satır, LoadLibraryA ve GetProcAddress, bir çağrının adını çalışma anında çözme desenidir; asıl çağrı tabloda görünmez. Üçüncü satır bir dış adrestir, yani program dışarıyla konuşmaya niyetli.

Dördüncü satır Run kayıt defteri yoludur, yani her açılışta yeniden çalışma, kalıcılık işareti. Üç satır dosyayı çalıştırmadan sana bir indirici ve kalıcılık profilini anlattı.

Etkinlik 3 / 6

ornek.bin içindeki en az 8 karakterlik dizeleri listele.

ogrenci@lab

Statik mi dinamik mi

Triyajözet, türStatik analizdizgi, içe aktarımDinamik analizyalıtılmış VMKod analizitersineIOC ve raportespit kuralı
Analiz zinciri: triyaj, statik, dinamik, kod analizi, IOC. Her adım bir sonrakine karar verdirir.

Statik analiz dosyayı hiç çalıştırmaz, yalnız okur. Özet almak, tür belirlemek, dizeleri taramak ve akış grafiğini incelemek bu kümeye girer. Dinamik analiz ise örneği koşturur ve davranışını izler.

Yalıtılmış bir makinede dosyayı çalıştırıp hangi dosyaya dokunduğunu, hangi adrese bağlandığını ve hangi kaydı yazdığını kaydedersin. İki yaklaşım birbirini tamamlar ama statik her zaman önce gelir, çünkü risksizdir.

Dinamik analize geçmeden önce ortamı doğru kurarsın. Örneği anlık görüntüsü alınmış bir sanal makinede açarsın; iş bitince makineyi temiz duruma geri alırsın. Ağı keser ya da taklit bir servise bağlarsın, böylece örnek gerçek bir sunucuya ulaşamaz. Bu önlemler, statik okumanın verdiği ilk resme göre ayarlanır: dosya ağa çıkıyorsa taklit DNS kurarsın, kayıt defterine yazıyorsa o anahtarları izlersin.

Etkinlik 4 / 6

Her işlemi statik ya da dinamik analiz kovasına koy.

Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.

0/5 seçenek yerleşti.

Kararı ver

Bu adımların sonunda elinde bir ilk resim olur: dosyanın türü, mimarisi, boyutu, özeti ve dizelerden çıkan niyet. Bu resim, sonraki adımın ne olacağına karar verdirir. İlk okuma yirmi dakikayı geçmemeli. Amaç dosyayı tam çözmek değil, bir sonraki adıma karar vermek: bu dosya basit bir indirici mi, karmaşık bir yükleyici mi, yoksa paketli bir kutu mu?

Resim yeterince netse dinamik analize hiç gerek kalmaz. Basit bir indirici için statik okuma yeter; dizelerdeki adres ve kalıcılık anahtarı raporu yazmana yeter. Karmaşık bir yükleyicide ise laboratuvar kurulur ve dosya kontrollü biçimde koşturulur.

Statik okuma soruyu keskinleştirir, kesin cevabı dinamik analiz ya da kod analizi verir. İyi analist bu iki aşamayı karıştırmaz; statik bulguyu bir yön, dinamik gözlemi bir kanıt olarak ayrı tutar.

Gerçek işte bu hız bir zorunluluktur. Bir güvenlik operasyon merkezine günde onlarca şüpheli dosya düşer. Analistin her birini saatlerce incelemesi olanaksızdır.

Statik triyaj tam burada devreye girer: on dakikalık okuma, dosyaların çoğunu üç kovaya ayırır. Açıkça zararsız olanlar kapanır. Açıkça zararlı olanlar hemen engellenir ve göstergeleri paylaşılır.

Belirsiz kalan küçük küme ise derin analize gider. Bu eleme olmadan ekip boğulur; eleme sayesinde dikkat gerçekten gereken örneklere kalır. Statik analiz bu yüzden yalnız bir teknik değil, bir iş akışı kararıdır.

Derinleş:Özet değişince izi nasıl korursun

SHA-256 güçlü bir kimliktir ama kırılgan bir izdir: yazar tek bir baytı değiştirip örneği yeniden derlerse özet baştan sona başkalaşır ve eski aramalar boşa çıkar. Bu yüzden analistler iki tamamlayıcı iz daha kullanır. imphash, bir PE dosyasının içe aktarma tablosundaki kütüphane ve yordam adlarını sırasıyla özetler; aynı derleyiciyle kurulan akraba örnekler çoğu zaman aynı imphash'i taşır.

ssdeep gibi bulanık özetler ise dosyayı parça parça özetler ve iki dosya için 0 ile 100 arası bir benzerlik puanı verir. Tek bayt değişince SHA-256 kopar ama imphash ve bulanık özet akrabalığı yakalamaya devam eder. Bir örneği raporlarken üç izi birlikte vermek, sonraki analistin aynı aileyi tanımasını kolaylaştırır.

Etkinlik 5 / 6

Statik analiz neden dinamik analizden önce yapılır?

Etkinlik 6 / 6

Doğru mu, yanlış mı?

Bir zararlı örneği analiz için normal iş bilgisayarında çalıştırmak kabul edilebilir.

Dersi bitirmek için 6 etkinlik kaldı

Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.

Bu derste bir hata mı gördün? Bildir