Bellek dökümü almak
- Canlı makineden adli açıdan sağlam bir bellek dökümü almayı, Windows ve Linux araçlarını, sembolleri ve dökümü doğrulamayı öğren.
- Bu derste fin-pc12 makinesinden bellek dökümü alma adımlarını kuracaksın.
- Dökümü almak dakikalar sürer. Kaçırırsan geri dönüşü yoktur.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +55 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Bir olayda diske bakmak çoğu zaman geç kalmaktır. Diskte şifreli ya da paketli duran zararlı kod, çalışırken bellekte açık hâlde durur. Açık ağ bağlantısı, oturum jetonu ve kullanıcının az önce girdiği parola yalnız bellekte ve kısa bir süre kalır. Bu derste fin-pc12 makinesinden adli açıdan sağlam bir bellek dökümü alacaksın.
Önce bellekte neyin durduğunu ve neden ilk sırada alındığını göreceksin. Sonra Windows ve Linux araçlarını, sanal makine dosyalarını ve diskte kalan bellek izlerini tanıyacaksın. En sonda dökümü sembollerle açıp doğru okunduğunu denetleyeceksin. Döküm için çoğu zaman tek şansın olur, bu yüzden hazırlık işin yarısıdır.
Bellekte ne var, neden önce bellek
Bellek dökümü, fiziksel RAM'in bit bit kopyasıdır. İçinde o an çalışan süreçler, açık dosya tanıtıcıları, ağ soketleri ve çekirdek veri yapıları durur. Diskte şifreli duran zararlı yazılım, bellekte çözülmüş ve çalışır hâlde bekler.
Dosyasız (fileless) saldırılarda kod diske hiç yazılmaz, yalnız bellekte yaşar. Böyle bir olayda döküm yoksa elinde neredeyse hiç kanıt kalmaz. Şifreli disk kullanan makinede bellek daha da değerlidir, çünkü diski açan anahtar da oradadır. Makineyi kapatırsan anahtar, açık oturumlar ve bağlantılar birlikte kaybolur.
Kanıtı uçuculuk sırasına göre toplarsın. En hızlı kaybolan kayıt bellek ve ağ durumudur, disk daha kalıcıdır. Bu yüzden önce belleği alırsın, diski sonra imajlarsın. Döküm boyutu RAM boyutuna eşittir.
On altı gigabaytlık bir makinede dosya da yaklaşık on altı gigabayt olur. Disk döküm bitmeden dolarsa kopya yarıda kalır ve dosya işe yaramaz. Bu yüzden çanta olaydan önce hazırlanır: yazma korumalı bir USB birim, önceden denenmiş araçlar, boş bir delil diski ve delil formu. Olay anında araç indirmek hem dakikaları yakar hem de makineye yeni iz bırakır.
Derinleş:Kanıt toplama sırası: RFC 3227
Belleği diskten önce almanın yazılı bir dayanağı vardır. IETF'in Şubat 2002'de yayımladığı RFC 3227 (BCP 55), delil toplamada uçuculuk sırasını (order of volatility) tanımlar. Sıra en hızlı kaybolandan en kalıcıya doğru ilerler: yazmaçlar ve önbellek; yönlendirme tablosu, ARP önbelleği, süreç tablosu, çekirdek istatistikleri ve bellek; geçici dosya sistemleri; disk; uzaktaki günlük ve izleme verisi; fiziksel yapılandırma ve ağ topolojisi; en sonda arşiv ortamı.
Mantık basittir: bir kanıtı toplamak başka bir kanıtı bozabilir, o yüzden en kırılganı önce alırsın. Belge kaçınılacak işleri de sayar. Toplama bitmeden makineyi kapatma. Sistemdeki programlara güvenme, kendi araçlarını korunan bir ortamdan çalıştır.
Bütün dosyaların erişim zamanını değiştiren komutları kullanma. Ağdan ayırmanın, bağlantı koptuğunda delil silen tuzakları tetikleyebileceğini de hatırlatır. Aradan yirmi yılı aşkın zaman geçse de olay müdahale kılavuzları bu ilkeyi temel alır.
Etkinlik 1 / 7
32 GB RAM'li bir sunucunun ham bellek dökümü yaklaşık kaç GB yer kaplar?
Tahminini kaydır, sonra gönder.
Windows'ta canlı döküm
Windows tarafında en yaygın araç WinPmem'dir. winpmem_mini_x64.exe tek bir çalıştırılabilir dosyadır. Kendi sürücüsünü yükler, fiziksel belleği okur ve ham (raw) imaj üretir.
İş bitince sürücüyü kendiliğinden kaldırır. Aracı çalıştırmak için yönetici yetkisi gerekir. DumpIt gibi başka araçlar da aynı işi görür.
Aracı incelenen makineye kurmazsın. Yazma korumalı USB birimden çalıştırır, çıktıyı dış delil diskine yazarsın. Sistemdeki programlara da güvenmezsin, çünkü saldırgan onları değiştirmiş olabilir. Özet hesaplayan aracı bile kendi biriminden çağırırsın.
# Toplama: araç da çıktı da dış diskte (E:), C: sürücüsüne yazılmaz C:\> E:\arac\winpmem_mini_x64.exe E:\eviz\fin-pc12.raw C:\> E:\arac\sha256sum.exe E:\eviz\fin-pc12.raw b7e41c09a3f28d6510b4c73e9f2a80d15c63e478b90a2f31d8c5647e09b1a3f2 E:\eviz\fin-pc12.raw # Analiz istasyonu: taşımadan sonra özet aynı mı? $ ls -lh fin-pc12.raw -r--r----- 1 analist adli 16G Sep 14 03:21 fin-pc12.raw $ sha256sum fin-pc12.raw b7e41c09a3f28d6510b4c73e9f2a80d15c63e478b90a2f31d8c5647e09b1a3f2 fin-pc12.raw
Komutları satır satır oku. İlk komutta araç da çıktı da E: sürücüsündeki delil diskinde durur. C: sürücüsüne tek bayt yazılmaz, böylece silinmiş alanın üzerine veri binmez.
İkinci komut dökümün SHA-256 özetini hemen alır. Bu değeri saatiyle birlikte delil formuna yazarsın. Analiz istasyonunda önce dosya boyutuna bakarsın: 16G, makinenin RAM'iyle tutuyor.
Dosya salt okunur izinle duruyor. Sonra özeti yeniden hesaplarsın. İki değer aynıysa kopya yolda bozulmamıştır.
Farklıysa o dosyayla analize başlamazsın. Dökümü sıkıştırmak alan kazandırır ama önce özeti alır, sonra sıkıştırırsın.
Etkinlik 2 / 7
Canlı makinede bellek dökümü adımlarını sıraya koy.
Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.
- 1Delil formuna araç adını, sürümünü ve saati yaz
- 2Dökümün SHA-256 özetini hesapla
- 3WinPmem ile dökümü dış diske al
- 4Dış delil diskini tak ve boş alanı doğrula
- 5Açık bağlantıları ve süreç listesini kaydet
Sıralamada ağ durumunun dökümden önce geldiğine dikkat et. Açık bağlantılar ve süreç listesi saniyeler içinde değişir. Bu kaydı kısa komutlarla alır, çıktıyı yine dış diske yazarsın. Özet hesaplama adımı her delilde aynıdır.
Disk imajı için ne yaptıysan bellek dökümü için de aynısını yaparsın. Dosya her el değiştirdiğinde özeti yeniden denetler, sonucu saatiyle forma yazarsın. Mühürsüz bir döküm, raporda sorgulanan ilk kanıt olur.
Etkinlik 3 / 7
fin-pc12.raw bellek dökümünün SHA-256 özetini hesapla.
Linux, sanal makine ve diskteki bellek izleri
Linux tarafında iki yaygın yol vardır. LiME bir çekirdek modülüdür. insmod ile yüklenir, belleği bir dosyaya ya da ağ soketine yazar. Modülün, incelenen makinenin çekirdek sürümü için derlenmiş olması gerekir.
Sunucuda derleyici yoksa bu işi olaydan önce, aynı çekirdekli bir test makinesinde yaparsın. AVML ise kullanıcı alanında çalışan tek bir dosyadır. Çekirdek modülü istemez, belleği /proc/kcore ya da /dev/crash gibi kaynaklardan okur ve LiME biçiminde yazar. Bulut sunucularında modül derlemek çoğu zaman mümkün olmadığı için AVML sık tercih edilir.
# LiME: çekirdek modülü, format=lime bölge adreslerini korur $ sudo insmod ./lime-$(uname -r).ko "path=/mnt/eviz/web01.lime format=lime" # Ya da AVML: modül istemez, LiME biçiminde yazar $ sudo /mnt/arac/avml acquire /mnt/eviz/web01.lime # Her iki yolda da döküm biter bitmez mühürle $ sha256sum /mnt/eviz/web01.lime > /mnt/eviz/web01.lime.sha256
Biçim seçimi analizi belirler. LiME'nin lime biçimi her bellek bölgesinin başına, o bölgenin fiziksel adresini taşıyan küçük bir başlık koyar. Analiz aracı sayfaları bu sayede doğru yere oturtur. raw biçimi bölgeleri art arda ekler ve adres bilgisini atar.
LiME'nin kendi belgesi bu biçimi ileri kullanıcılar dışında önermez, çünkü çoğu adli araç böyle bir dosyayı çözemez. AVML'nin sıkıştırma seçeneği de vardır ve Volatility 3 bu biçimi doğrudan okur. Çekirdek kilitleme (lockdown) açık bir makinede ise AVML belleği okuyamaz. Bunu sahaya çıkmadan bilmek seni yanlış araçla vakit kaybetmekten korur.
Canlı RAM tek kaynak değildir. Windows, belleğe sığmayan sayfaları pagefile.sys dosyasına, modern uygulamaların sayfalarını swapfile.sys dosyasına indirir. Bellekten atılmış bir sayfa orada bir süre daha kalır.
Uyku (hibernate) durumuna geçen makine belleğini sıkıştırarak hiberfil.sys dosyasına yazar. Bu dosyayı çoğu araç önce ham biçime çevirir. Makine mavi ekranla çöktüyse Windows klasöründe MEMORY.DMP kalır.
Sanal makinede askıya alma, belleği .vmem dosyasına yazar. Volatility bu dosyanın yanında aynı adlı .vmss ya da .vmsn dosyasını arar. Hyper-V'de askıya alınan makinenin durumu ise .vmrs dosyasına yazılır ve Volatility bu biçimi doğrudan açmaz.
Derinleş:Çökme dökümü türleri
Windows çökme anında dört tür döküm yazabilir. Tam döküm (complete) bütün fiziksel belleği kaydeder. Bunun için sayfa dosyasının fiziksel RAM artı 257 megabayt kadar olması gerekir. Çekirdek dökümü (kernel) yalnız çekirdeğe ve sürücülere ayrılan belleği tutar.
Kullanıcı modundaki programların belleğini ve ayrılmamış alanı dışarıda bırakır. Küçük döküm (small) 64 kilobaytlık asgari bilgi yazar: durdurma kodu, yüklü sürücüler ve çöken iş parçacığının bağlamı. Etkin döküm (active) kullanıcı belleğini de alır. Sanal makine barındıran bir sunucuda konuk makinelerin sayfalarını ayıklar, bu yüzden tam dökümden çok daha küçüktür.
Windows 8 ile gelen otomatik döküm (automatic) içerik olarak çekirdek dökümüyle aynıdır; farkı sayfa dosyasını boyutlandırma biçimindedir. Seçili tür, CrashControl anahtarındaki CrashDumpEnabled değerinde durur. Elinde yalnız bir çekirdek dökümü varsa kullanıcı sürecinin komut satırını ya da enjekte kodu orada aramak boşunadır.
Etkinlik 4 / 7
Her bellek kaynağını içinde tuttuğu veriyle eşle.
Kapatmak mı, açık tutmak mı
Olay yerinde açık bir makine bulduğunda ilk dürtü onu kapatmaktır. Çoğu durumda bu hatadır. Tam disk şifreleme kullanan bir dizüstünde birim, sistem açıkken çözülmüş hâlde durur. Diski açan anahtar bellektedir.
Makine kapanınca birim yeniden kilitlenir. Kurtarma anahtarı elinde değilse diskin içeriğine ulaşmak neredeyse imkânsız olur. Bu yüzden önce belleği alırsın. Ardından, makine hâlâ açıkken, çözülmüş birimin mantıksal imajını çıkarmayı düşünürsün.
Kapatmanın başka bir tehlikesi de vardır. Saldırgan kapanış betiklerini delil silecek biçimde değiştirmiş olabilir.
Ağdan ayırma kararı da teknik değil, olay yönetimi kararıdır. Kabloyu çekmek yayılmayı durdurur ama saldırganı uyarabilir. Bazı zararlılar ağdan koptuğunu fark edince kendi izlerini siler.
Ekip kanıt kaybını ve yayılma riskini birlikte tartar, kararı kayda geçirir. Kurumsal ortamda çoğu döküm artık sahaya gidilmeden alınır.
EDR ürünleri uç noktanın belleğini ağ üzerinden toplayabilir. Bunun için olay müdahale planında önceden onaylanmış bir araç listesi bulunur. Hangi aracın hangi yetkiyle ve kimin onayıyla çalışacağı olaydan önce yazılır. Onay listesi olmayan ekip, olay gecesi bu tartışmaya saatler harcar.
Etkinlik 5 / 7
Şifreli diskli bir dizüstü bilgisayarı olay yerinde bulan ekip neden hemen kapatmaz?
Semboller, doğrulama ve sık hatalar
Volatility bir dökümü okumak için o işletim sistemine ait sembol bilgisini ister. Semboller, çekirdek yapılarının hangi alanları hangi sırayla taşıdığını söyler. Windows tarafında bu iş kendiliğinden yürür.
Volatility dökümdeki sürüm izini okur ve gereken sembol dosyasını Microsoft'un sembol sunucusundan indirir. İnternete kapalı bir analiz istasyonunda sembol paketlerini önceden indirip koyarsın. Linux tarafında her çekirdek sürümü kendine özgüdür.
Volatility burada ISF adı verilen bir JSON sembol dosyası ister. Önce banners eklentisiyle dökümün hangi çekirdeğe ait olduğunu bulursun. Sonra o çekirdeğin hata ayıklama sembollerinden dwarf2json ile ISF üretir ya da hazır bir sembol deposunda ararsın.
$ vol -f fin-pc12.raw windows.info Variable Value Kernel Base 0xf80652a00000 Symbols file:///opt/vol3/symbols/windows/ntkrnlmp.pdb/... Is64Bit True NTBuildLab 22621.1.amd64fre.ni_release.220506-1250 KeNumberProcessors 4 SystemTime 2026-09-14 03:15:02+00:00 NtSystemRoot C:\Windows NtMajorVersion 10 $ vol -f web01.lime banners Offset Banner 0x1a00100 Linux version 6.8.0-45-generic (buildd@lcy02-amd64-075) ... #45-Ubuntu SMP
Çıktıyı satır satır oku. Symbols satırı, Volatility'nin uygun sembol dosyasını bulduğunu gösterir. NTBuildLab değerindeki 22621, makinenin Windows 11 22H2 yapısında çalıştığını söyler. Bunu olay öncesinde not aldığın sürümle karşılaştırırsın.
SystemTime dökümün alındığı andaki sistem saatidir ve UTC olarak yazılır. Delil formuna döküm zamanını kendi saatinle değil, bu değerle geçersin.
KeNumberProcessors ve Is64Bit alanları donanım notunla tutmalıdır. banners çıktısındaki 6.8.0-45-generic dizesi ise Linux dökümü için aradığın ISF dosyasını belirler. Sembol dosyası tam olarak bu çekirdeğe ait olmalıdır.
Volatility sembol bulamadığında sessiz kalmaz. Unsatisfied requirement ile başlayan satırlar ve bir kontrol listesi basar. Daha sinsi durum, eklentinin hata vermeden boş dönmesidir. Bir Windows dökümünde pslist hiç satır döndürmüyorsa bu temiz makine anlamına gelmez.
Teşhise sırayla gidersin: dosya boyutu RAM'le tutuyor mu, özet formdaki değerle aynı mı, info çıktısı sürümü tanıyor mu? Sonra psscan gibi bir tarama eklentisi denersin. O da boşsa sorun dökümün kendisindedir.
Bir de bellek bulanıklığı (smear) vardır. Döküm sürerken bellek değişir, bazı listeler kırık görünür. Bunu raporda bulgu değil, sınırlama olarak yazarsın.
Etkinlik 6 / 7
banners çıktısı web01 dökümünün 6.8.0-45-generic çekirdeğine ait olduğunu gösterdi. linux.pslist ise aşağıdaki çıktıyı verdi. En olası neden hangisidir?
Önce kodu oku, sonra çıktıyı seç.
$ vol -f web01.lime linux.pslist Unsatisfied requirement plugins.PsList.kernel.layer_name: Unsatisfied requirement plugins.PsList.kernel.symbol_table_name: A symbol table requirement was not fulfilled. Please verify that: You have the correct symbol file for the requirement The symbol file is under the correct directory or zip file
Sahada üç hata sık tekrarlanır. Birincisi dökümü incelenen makinenin kendi C: sürücüsüne yazmaktır. İkincisi Linux'ta sembol hatasını ya da boş çıktıyı temiz makine sanmaktır.
Üçüncüsü sanal makineyi askıya almadan .vmem dosyasını kopyalamaktır. Bir durum da dökümü yanlış yorumlatır. Credential Guard açık bir makinede parola özetleri ve biletler ayrı, yalıtılmış bir süreçte durur. Böyle bir dökümde LSASS belleği beklediğinden boş görünür, ama döküm eksik değildir.
Son olarak döküm dosyasını koru. İçinde kurumun parolaları ve jetonları olabilir, bu yüzden şifreli disk ve kısıtlı klasör izni şarttır.
Etkinlik 7 / 7
Doğru mu, yanlış mı?
Bellek dökümünü incelenen makinenin kendi diskine yazmak kabul edilebilir bir yöntemdir.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.
- Etkinlik 1· Bellekte ne var, neden önce bellek
- Etkinlik 2· Windows'ta canlı döküm
- Etkinlik 3· Windows'ta canlı döküm
- Etkinlik 4· Linux, sanal makine ve diskteki bellek izleri
- Etkinlik 5· Kapatmak mı, açık tutmak mı
- Etkinlik 6· Semboller, doğrulama ve sık hatalar
- Etkinlik 7· Semboller, doğrulama ve sık hatalar