Volatility Framework ile RAM Dump Analizi: Memory Forensics Pratik Rehberi

Disk analizinin sınırı vardır. Çalışan bir saldırgan, dosya sistemine hiç dokunmadan bellekte yaşar; PowerShell scriptleri RAM'de açılır, Cobalt Strike beacon'ları process injection ile başka süreçlere sızar, ransomware'in şifreleme anahtarı çoğu zaman sadece bellekte bir kez belirir. Cihaz kapandığında bu kanıtlar tamamen kaybolur. İşte tam bu yüzden modern adli bilişimde memory forensics, yani bellek analizi, disk imajı kadar kritik bir delil katmanıdır.

Bu yazıda Volatility Framework ile RAM dump üzerinden nasıl analiz yapıldığını, hangi komutların hangi delili çıkardığını, raporlama ve delil zinciri açısından nelere dikkat edilmesi gerektiğini pratik şekilde ele alıyoruz. Adli bilişimin genel sürecini henüz okumadıysanız önce adli bilişim süreci, KVKK ve delil zinciri yazımıza göz atmanızı öneririz.

Volatility Framework Nedir?

Volatility, Volatility Foundation tarafından sürdürülen, açık kaynaklı bir Python tabanlı bellek analiz çerçevesidir. Windows, Linux ve macOS sistemlerinden alınmış RAM dump dosyalarını okur; process listesi, ağ bağlantıları, registry kovanları, enjekte edilmiş kod parçaları, açık dosya tanıtıcıları gibi onlarca artefakt türünü ayrıştırır. Akademik çevrede ve kolluk birimlerinde de fiilen standart kabul edilen araçlardan biridir.

Google bünyesinde geliştirilen Rekall projesi Volatility'den çatallanmış bir alternatiftir, fakat aktif gelişim büyük oranda Volatility 3 tarafına kaymıştır. NIST de SP 800-86 Guide to Integrating Forensic Techniques into Incident Response belgesinde uçucu (volatile) verinin disk verisinden önce, "order of volatility" ilkesine göre toplanması gerektiğini vurgular. RAM bu listede her zaman en üst sıradadır.

Volatility 2 ve Volatility 3 Arasındaki Fark

Volatility'nin sahada karşılaşacağınız iki ana sürümü vardır.

Volatility 2 (vol.py) uzun yıllar fiili standarttı. Python 2 üzerine kuruluydu ve her işletim sistemi sürümü için ayrı bir profile (örneğin Win10x64_19041) seçmeniz gerekiyordu. Komutlar --profile=... -f bellek.raw pslist şeklinde yazılırdı.

Volatility 3 (vol) Python 3 ile baştan yazıldı. Artık profile vermeniz gerekmiyor; framework, dump üzerindeki kernel sembollerini otomatik tanır ve internetten ilgili sembol paketini çeker. Komut sözdizimi de değişti: vol -f bellek.raw windows.pslist. Plugin isimleri OS prefixi ile gelir (windows.netscan, linux.bash, mac.psaux).

Pratikte yeni vakalar Volatility 3 ile çalıştırılır. Ancak eski raporlarda, eski örneklerde ve bazı niş pluginlerde hâlâ Volatility 2 görürsünüz. Bu yazıda her iki sözdizimini de göstereceğiz.

RAM Dump Nasıl Alınır?

Analiz öncesi en kritik adım, dump'ı doğru ve değiştirmeden almaktır. ISO/IEC 27037, sayısal delilin tanımlanması, toplanması ve muhafazası için temel uluslararası standarttır ve uçucu verinin önceliğini açıkça belirtir. Sahada en sık kullanılan araçlar:

  • FTK Imager (Windows): Ücretsiz, GUI tabanlı. "Capture Memory" seçeneği ile .mem dosyası üretir. Ek olarak pagefile.sys'i de alma seçeneği vardır; bunu mutlaka işaretleyin, çünkü process'lerin diske swap edilmiş parçaları orada olabilir.
  • DumpIt (Windows): Tek tıkla çalıştırılan, küçük bir komut satırı aracı. Sistemin tüm fiziksel belleğini çalıştırıldığı dizine .raw formatında yazar. Olay yerinde hız gerektiğinde tercih edilir.
  • LiME (Linux): Çekirdek modülü olarak yüklenen Linux Memory Extractor. insmod lime.ko "path=/mnt/usb/bellek.lime format=lime" şeklinde kullanılır. Linux sunucularda fiili standarttır.
  • macOS: Apple'ın SIP ve kernel kısıtlamaları nedeniyle ham bellek almak son yıllarda zorlaştı. Genellikle hibernation file, swap ve sürüm özelinde araçlar kombine edilir.

Dump alındıktan hemen sonra SHA-256 hash hesaplanmalı, hash değeri delil tutanağına ve bilirkişi raporuna yazılmalıdır. Bu, mahkemede delilin sonradan değiştirilmediğini kanıtlamanın temel yoludur.

Desteklenen Sistem Versiyonları

Volatility 3 itibarıyla:

  • Windows: XP'den Windows 11'e, Server 2003'ten Server 2022'ye kadar tüm yaygın sürümler. Volatility 2'de profile listesi elle güncellenirken, Volatility 3 sembolleri otomatik indirir.
  • Linux: Çekirdeğe özel sembol dosyası (ISF, Intermediate Symbol File) gerekir. Çoğu modern dağıtım için topluluk paylaşımları vardır; özel kernel'lerde dwarf2json ile kendiniz üretirsiniz.
  • macOS: Intel ve Apple Silicon için kısmi destek. Sürüm ve güvenlik politikaları nedeniyle her zaman aynı olgunlukta değildir.

Temel Komutlar ve Ne İşe Yararlar?

Aşağıdaki komutlar her vakanın "ilk yarım saat" rutinidir. Volatility 3 sözdizimini esas alıyoruz.

windows.pslist: Kernel'in EPROCESS zincirinden okunan, çalışmakta olan process listesi. PID, PPID, başlangıç zamanı ve thread sayısı verir. Beklenmedik parent-child ilişkilerini (örneğin winword.exe altından doğan powershell.exe) burada yakalarsınız.

windows.pstree: Aynı listenin ağaç görünümü. Process injection ve "living off the land" senaryolarında ebeveyn-çocuk anomalisini görmek için daha kullanışlıdır.

windows.psscan: Bellekte tahsis edilmiş ama linked list'ten çıkarılmış (unlinked) process yapılarını da tarar. Rootkit veya DKOM tekniği kullanan zararlıların kendini gizlemesini açığa çıkarır.

windows.netscan: Açık TCP/UDP soketlerini, uzak IP'leri ve bağlı process'leri listeler. C2 sunucusuyla konuşan beacon'ı bu komut yakalar. Tespit ettiğiniz IP'leri MITRE ATT&CK ile eşleştirmek için ATT&CK Matrix çok değerlidir; özellikle Command and Control taktiği altındaki teknikler iyi bir referanstır.

windows.malfind: Bellekte execute izni olan ama dosya sistemine bağlı olmayan (yani diskte karşılığı bulunmayan) sayfaları arar. Reflective DLL injection, shellcode enjeksiyonu, Cobalt Strike beacon yerleşimi gibi tekniklerin klasik göstergesidir. Bulunan blokları dosyaya dump edip statik analize verebilirsiniz.

windows.dlllist: Her process'in yüklediği DLL'leri listeler. Beklenmeyen yollardan (%TEMP%, AppData\Roaming altı, kullanıcı profilinde DLL) yüklenen kütüphaneler şüphelidir.

windows.cmdline: Her process'in başlatılırken aldığı komut satırı argümanları. Encoded PowerShell (-enc), rundll32 javascript:, mshta http://, certutil -urlcache gibi LOLBins kullanımını burada görürsünüz.

windows.handles / windows.filescan / windows.registry.hivelist: Açık dosya tanıtıcıları, bellekteki dosya nesneleri ve registry kovanları. Saldırgan, persistence için hangi Run anahtarına yazmış, hangi servisi oluşturmuş, tüm bunları registry pluginleri ile çıkarırsınız.

Linux tarafında linux.pslist, linux.bash (kullanıcıların shell history'si bellekte!), linux.netstat ve linux.psaux aynı işlevleri görür.

Memory Artifact Türleri

Bellekte aradığımız delilleri kategorilere ayırırsak:

  • Process ve thread yapıları: EPROCESS, ETHREAD, token'lar, integrity level.
  • Ağ artefaktları: Açık soketler, DNS cache, ARP tablosu, route bilgisi.
  • Registry: Aktif hive'lar; Run, RunOnce, Services, AppInit_DLLs gibi persistence anahtarları.
  • Dosya tanıtıcıları (handles): Hangi process hangi dosyayı/named pipe'ı/mutex'i açmış.
  • Mutex'ler: Birçok zararlı yazılım tek kopya çalışmak için sabit isimli mutex kullanır; bu isimler imza işlevi görür.
  • Bellekte yüklü kod: PE imajları, shellcode, JIT'lenmiş .NET assembly'leri.
  • Kullanıcı verisi: Komut satırı geçmişi, clipboard, browser session token'ları, parolalar.

Bu artefakt çeşitliliği, disk imajının asla veremeyeceği bir çalışma anı görüntüsü sunar. Saldırgan diskte hiçbir iz bırakmasa, tüm kodu bellekte tutsa bile, mutex isimleri, network bağlantıları ve process token'ları onu ele verir. Bu yüzden modern adli bilişim eğitimlerinde memory artifact bilgisi disk artifact bilgisinden daha az önemli değildir.

Mimikatz, lsass Dump ve Credential Harvesting Tespiti

Saldırganın iç ağda yatay hareket için en sık başvurduğu yöntem, lsass.exe (Local Security Authority Subsystem) sürecinden parola, hash ve Kerberos ticket çekmektir. MITRE ATT&CK çerçevesinde bu davranış T1003.001 OS Credential Dumping: LSASS Memory tekniği olarak kayıtlıdır.

Volatility ile bellek üzerinde bu saldırının izlerini birden fazla açıdan görebilirsiniz:

  • windows.pslist çıktısında lsass.exe PID'sini bulun. Aynı sistemde lsass'ı açan başka bir process varsa (procdump, taskmgr, comsvcs.dll ile çalışan rundll32, Mimikatz'ın özel isimleri) bu çok güçlü bir indikatördür. windows.handles --pid <lsass_pid> ile lsass'a handle açan diğer process'leri görebilirsiniz.
  • windows.cmdline ile comsvcs.dll, MiniDump argümanı içeren rundll32 çağrılarını arayın; bu komut Microsoft'un kendi DLL'ini kullanarak lsass dump alma tekniğidir.
  • windows.malfind çıktısında lsass alanına enjekte edilmiş şüpheli kod parçaları görülebilir.
  • Mimikatz çalıştırılmışsa, çalıştıran process'in bellek bölgesinde sekurlsa::logonpasswords, kerberos::list, Mimikatz gibi okunabilir string'ler bulunabilir; windows.strings ile aratabilirsiniz.

Bu tespit yapıldıysa, olay artık tek makineli bir vaka değildir. Yatay hareket ihtimaline karşı kurumsal müdahale moduna geçmek gerekir; siber olay müdahale (IR) playbook yazımız NIST SP 800-61 çerçevesinde bu süreci adım adım anlatıyor. SANS DFIR ekibinin Digital Forensics ve Incident Response yayınları da credential dumping tespiti için kapsamlı referanslar sunar.

Ransomware Şifreleme Anahtarını Bellekte Yakalamak

Modern ransomware'lerin çoğu hibrit kripto kullanır: dosyalar simetrik bir anahtar (AES) ile şifrelenir, bu anahtar da saldırganın açık RSA anahtarıyla şifrelenip dosya başlığına yazılır. Eğer simetrik anahtar üretildikten sonra hâlâ aktif şifreleme yapılıyorsa, anahtar process'in heap'inde veya stack'te canlı duruyor olabilir.

Pratikte yaklaşım şu sırayla işler:

  1. Ransomware process'i belirlenir (pslist, pstree, malfind, cmdline).
  2. windows.memmap ile process'in tüm sayfalarının haritası çıkarılır.
  3. vol -f bellek.raw -o ./out windows.dumpfiles --pid <pid> veya windows.memmap --pid <pid> --dump ile süreç belleği diske aktarılır.
  4. bulk_extractor, yara, özel scriptler veya bilinen aileler için yayınlanmış decryptor projeleri ile bellekte AES anahtar adayları taranır (yüksek entropili sabit boyutlu bloklar, AES key schedule kalıpları).

Bu süreç ucu açıktır; her ransomware ailesi farklıdır ve çoğu vakada anahtar zaten zeroize edilmiş olur. Ancak şifrelemenin tam ortasında alınmış bir RAM dump, bazı durumlarda kurtarma için tek şanstır. Bu yüzden fidye yazılım vakalarında ilk 24 saatte cihazı kapatmadan, ağdan izole edip RAM almak hayati önemdedir; konuyu fidye yazılımı sonrası ilk 24 saat yazısında detaylı anlatıyoruz.

Adli Rapor için Hash ve Delil Zinciri

Memory forensics ne kadar teknik olursa olsun, çıktının mahkemede ayakta kalması için disiplin gerekir. Pratik notlar:

  • RAM dump alındığı an SHA-256 (mümkünse ek olarak SHA-1) hesaplanır; hash, donanım seri numarası, alan kişi, tarih ve saat tutanağa yazılır.
  • Tüm analizler dump'ın kopyası üzerinde yapılır; orijinal dosya read-only saklanır.
  • Volatility komutlarının tamamı, sürüm bilgisi, kullanılan sembol/profile, çalıştırılan tarih ve hash bilgisi raporun ekine konur. Bu, başka bir bilirkişinin sonucu tekrar üretebilmesi için şarttır.
  • Sonuçlar yorumlanırken kanıtla ulaşılan sonuç ile uzman görüşü ayrıştırılır.

Bu disiplinin neden bu kadar kritik olduğunu görmek için Yargıtay'ın bilirkişi raporunu reddettiği örüntüleri analiz ettiğimiz yazıya göz atabilirsiniz; eksik hash, tekrar üretilemeyen analiz ve metodoloji belirsizliği en sık reddedilme sebepleri arasındadır.

DSET Yaklaşımı

DSET olarak memory forensics işlerinde Volatility 3'ü temel araç olarak kullanıyor, gerektiğinde Rekall ve özel YARA kural setleriyle besliyoruz. Tipik akışımız: standardize RAM dump alımı (FTK Imager / DumpIt / LiME), SHA-256 ile damgalama, write-blocked çoğaltma, ardından paralel iki ekip ile çapraz analiz. Çıktıyı MITRE ATT&CK teknik kimlikleriyle eşleştirip CTI ekibimizin IOC veritabanı ile karşılaştırıyoruz.

Vakaya özel olarak Volatility'nin standart plugin setini kendi eklediğimiz tarayıcılarla genişletiyoruz; örneğin belirli ransomware ailelerine ait mutex listeleri, bilinen C2 panel string'leri ve Cobalt Strike profili imzaları için özel YARA kurallarını process bellek dökümü üzerinde çalıştırıyoruz. Sonuçların tekrar üretilebilirliği için her komut, sürüm bilgisi ve hash değeriyle birlikte deftere işleniyor; bu sayede ikinci bir bilirkişinin aynı çıktıyı üretmesi her zaman mümkün oluyor. Telefon tarafındaki bellek-uçucu kanıt ihtiyaçları için ise casus yazılım belirti tespiti yazımızdaki mobil DFIR yaklaşımı ile birlikte ele alıyoruz.

Sıkça Sorulan Sorular

1. RAM dump alırken bilgisayar kapatılır mı? Hayır. Kapatıldığı an bellek silinir. Cihaz açık tutulur, ağdan izole edilir, RAM ve ardından disk imajı alınır.

2. Volatility 2 mi, Volatility 3 mü kullanmalıyım? Yeni vakalar için Volatility 3 önerilir. Eski profile gerektiren raporları tekrar üretmek gerekirse Volatility 2 hâlâ geçerlidir.

3. Şifreli disk varsa bellek analizi anlamlı mı? Evet ve aslında daha da kritiktir. BitLocker, VeraCrypt gibi sistemlerin anahtarları çalışırken bellekte bulunur; cihaz kilitli açıkken alınan dump bazı vakalarda disk şifresinin çözülmesini sağlar.

4. Cloud VM'lerden RAM dump alınabilir mi? Evet. Hypervisor seviyesinde snapshot alınıp bellek dosyası ayrı ihraç edilebilir; bulut sağlayıcısına göre yöntem değişir.

5. RAM analizinden delil mahkemede kabul ediliyor mu? Doğru zincir tutulduğunda evet. Hash, tutanak, write-block, tekrar üretilebilirlik şartlarına uyulması esastır.

6. macOS sistemlerden bellek almak mümkün mü? Sınırlı ölçüde. Apple Silicon ve SIP kısıtlamaları sürecin son yıllarda zorlaştırdı, sürüm özelinde araç seçilir.

7. Volatility çıktısı tek başına yeterli midir? Hayır. Disk, log, ağ ve EDR verisi ile çapraz doğrulama yapılmalıdır; tek kaynaklı sonuç delil değeri taşımaz.

8. Bellek analizi ne kadar sürer? Tek makinelik basit bir tetkik 1-2 gün, kurumsal olay müdahalesindeki çok makineli vakalar haftalara yayılabilir.

Memory Forensics İhtiyacınız Varsa

Çalışan bir saldırgandan, fidye yazılımdan veya credential dump şüphesinden geçtiyseniz cihazları kapatmayın, ağdan ayırın ve uzman ekibe ulaşın. DSET adli bilişim ekibi, Volatility tabanlı RAM analizi ve memory forensics hizmetlerini Hacettepe Teknokent Ankara ofisinden yürütmektedir.

İletişim: +90 536 662 38 09

Disk geride iz bırakmasa bile bellek konuşur. Doğru anda, doğru yöntemle alınmış bir RAM dump, çoğu vakada saldırganı tam olarak ifşa eden tek delildir.