Memory Forensic Artifact: RAM'den Çıkarılan Adli Delillerin Tam Listesi

RAM imajı, modern adli bilişimin en zengin tek kaynağıdır. Bir saldırgan diskte iz bırakmadan çalışsa bile, çalıştığı her saniye işletim sistemi onun varlığına dair onlarca yapı kaydı tutar. Bu yazı, Volatility Framework ile RAM Analizi makalesinin doğal devamıdır: orada aracı tanıttık, burada o aracın bulduğu spesifik artifact kategorilerini tek tek açıyoruz. Hangi yapı nerede yaşıyor, hangi saldırı tekniğini ele veriyor, hangi Volatility plugin'i çıkarıyor ve mahkemede nasıl raporlanıyor.

Kaynaklar açık tutulmuştur: Volatility Foundation, MITRE ATT&CK, SANS DFIR, NIST SP 800-86 (Guide to Integrating Forensic Techniques into Incident Response), Sysinternals / Windows Internals ve Microsoft Defender Threat Intelligence yayınları.

1. Process Tree ve Parent / Child Anomalileri

RAM'de her çalışan süreç EPROCESS yapısıyla temsil edilir. Volatility'nin windows.pstree plugin'i bu yapıları ağaç şeklinde dizer. Adli açıdan kritik olan şey listenin kendisi değil, ebeveyn–çocuk ilişkisinin doğallığıdır.

Doğal örnek: explorer.exe -> chrome.exe. Şüpheli örnek: winword.exe -> powershell.exe -> rundll32.exe. Bu zincir MITRE ATT&CK tekniği T1059.001 (PowerShell) ve T1218 (Signed Binary Proxy Execution) ile birebir örtüşür. Office uygulamasının PowerShell doğurması, makro tabanlı initial access'in klasik imzasıdır.

Ek olarak pslist ve psscan arasındaki delta, DKOM (Direct Kernel Object Manipulation) ile gizlenmiş süreçleri ortaya çıkarır. pslist aktif linked list'i okur, psscan ise pool tag taraması yapar. İkisi arasında fark varsa, fark başlı başına bulgudur.

Process tree analizi sırasında üç ek nokta raporda mutlaka belgelenir: süreç başlangıç zamanı (CreateTime), oturum kimliği (SessionId) ve token integrity level. Yüksek integrity (System) bir sürecin orta integrity (Medium) bir kullanıcı süreci tarafından açılması, UAC bypass veya token impersonation (T1134) işaretidir. Bu üç alan birlikte değerlendirildiğinde, saldırının yetki yükseltme aşaması hangi süreç üzerinden geçtiği geriye dönük olarak haritalanır.

2. Loaded Modules ve DLL Injection

Her sürecin yüklediği DLL'ler PEB.Ldr ve VAD üzerinden iki kez kayıtlıdır. windows.dlllist PEB'i okur, windows.ldrmodules ise üç listeyi (InLoad, InMem, InInit) karşılaştırır. Bir modül VAD'de var ama PEB listesinde yoksa, klasik reflective DLL injection (MITRE T1055.001) bulgusudur.

malfind plugin'i ise sayfa korumalarını tarar. PAGE_EXECUTE_READWRITE izinli, hiçbir dosyaya bağlı olmayan bellek bölgeleri shellcode veya process hollowing (T1055.012) işaretidir. Bölgenin ilk baytları çoğunlukla MZ veya doğrudan 0x55 0x8B 0xEC (push ebp; mov ebp,esp) gibi x86 prologue'larıdır.

3. Network Connections (TCP / UDP + IPv6)

windows.netscan Tcpip.sys'in pool yapılarını tarar ve bağlantı kapansa bile kalıntı yakalar. Disk loglarında olmayan, bellek-only C2 trafiği burada görünür. Her satır: yerel IP/port, uzak IP/port, durum (ESTABLISHED, CLOSE_WAIT, LISTENING), sahibi süreç PID'i, protokol (TCPv4, TCPv6, UDPv4, UDPv6).

Adli değer: bir svchost.exe örneğinin 4444, 8443 veya yabancı bir ASN'ye giden bağlantısı, IR Playbook tetiklemeye yeter. IPv6 unutulmamalıdır; saldırganlar IPv4 odaklı tespiti atlatmak için Teredo / 6to4 tüneller kullanır.

4. Open File Handles ve Mutex

windows.handles her sürecin tuttuğu tüm Object Manager handle'larını listeler: File, Key, Mutant, Event, Section, Token. Adli olarak iki tür özellikle kıymetlidir:

  • Mutex (Mutant) isimleri: Kötü yazılımlar tek instance garantisi için sabit mutex açar. Global\\_QM_<id>, RstrtMgr<guid> gibi imzalar Microsoft Defender Threat Intelligence raporlarında aileyle eşleştirilir.
  • File handle'ları: Disk silinmiş olsa bile handle hâlâ açıksa, dumpfiles plugin'iyle dosya bellekten kurtarılabilir. Ransomware'in şifreleme sırasında açık tuttuğu kurban dosyaları bu yöntemle bütün olarak çıkarılabilir.

5. Registry Hives, In-Memory Kopya

Windows performans için aktif registry hive'larını RAM'e map'ler. windows.registry.hivelist map'lenmiş hive'ları, printkey belirli anahtarı okur, userassist ise kullanıcının çalıştırdığı GUI programlarını ROT13 şifreli olarak çıkarır.

Kritik anahtarlar:

  • Run, RunOnce, Image File Execution Options (T1547.001 persistence)
  • Services (T1543.003)
  • AppCompatCache / ShimCache (program execution evidence)
  • UserAssist (kullanıcı etkileşim kanıtı, bilirkişi raporunda timeline'a girer)

Disk üzerindeki hive dosyası saldırgan tarafından düzeltilmiş olsa bile, RAM'deki kopya çoğunlukla eski temiz hâli veya canlı kötü hâli korur.

6. Komut Satırı Geçmişi ve PSReadline Buffer

windows.cmdline her sürecin başlangıç argümanlarını verir. Ama asıl hazine PowerShell ConsoleHost_history ve PSReadline buffer'ıdır. PSReadline, kullanıcının yazdığı her satırı (silinmiş, iptal edilmiş dahil) süreç belleğinde tutar.

Yara kuralı veya basit string araması ile Invoke-Expression, IEX, FromBase64String, DownloadString, Add-MpPreference -ExclusionPath gibi imzalar yakalanır. Microsoft Defender Threat Intelligence bu indikatörleri AMSI bypass ve fileless execution kümesinde sınıflandırır.

7. Tarayıcı Cache ve Cookie, RAM Versiyonu

Chrome, Edge, Firefox sayfayı render ederken decoded HTML, JavaScript, çerez, oturum token, hatta auto-fill form değerlerini süreç heap'inde tutar. Browser kapatılınca disk cache temizlense bile RAM'de izi kalır.

Yöntem: ilgili chrome.exe veya msedge.exe PID'inin memdump'ı alınır, bulk_extractor veya strings ile URL, JWT, Set-Cookie, Authorization: Bearer desenleri taranır. Casus yazılım analizinde bu yöntem mobil cihazlarda da paraleldir.

8. Kriptografik Anahtarlar: Master Keys, Session Keys, BitLocker FVEK

RAM, anahtarın açık hâlinin bulunduğu tek yerdir; disk hep şifreli tutar. Volatility'nin windows.lsadump, windows.cachedump ve windows.hashdump plugin'leri LSASS belleğinden çıkarır.

  • DPAPI Master Key: Kullanıcının tüm şifrelenmiş credential'larının ana anahtarı.
  • TLS Session Key: SCHANNEL'in tuttuğu pre-master secret; pcap ile birleştirilince HTTPS trafiği decrypt edilebilir.
  • BitLocker FVEK (Full Volume Encryption Key): Sistem açıkken RAM'dedir. bulk_extractor -e aes veya MemProcFS ile çıkarılır. Cihaz kapanmadan canlı imaj alınmazsa bu anahtar sonsuza kadar kaybolur. Bu, fidye sonrası ilk 24 saatte "cihazı kapatma, hibernate'e atma" kuralının teknik gerekçesidir.

9. Clipboard İçeriği

Windows clipboard win32k.sys'in kullanıcı oturumu içinde saklanır. windows.clipboard plugin'i son kopyalanan metni döker. Adli kıymeti yüksek: kurbanın az önce kopyaladığı şifre, kripto cüzdan adresi, veya clipper malware (T1115) tarafından değiştirilmiş cüzdan adresi burada görünür.

10. URL ve Path String'leri, YARA Kuralları

Ham strings çıktısı gürültülüdür. Onun yerine YARA kuralları ile hedefli arama yapılır. Tipik kural setleri:

  • C2 domain pattern'leri (DGA imzaları)
  • Base64 PowerShell payload başlangıçları (JABzAD0A, cwBlAHQA)
  • Mimikatz string'leri (sekurlsa::logonpasswords, gentilkiwi)
  • Cobalt Strike beacon imzaları (%s as %s\\%s: %d)

SANS DFIR'in FOR508 müfredatı bu metodolojiyi standartlaştırır: önce process-aware arama (sadece şüpheli PID), sonra global tarama.

11. Şifreli Mesajlaşma Uygulamalarının RAM'deki Düz Metin Hâli

Bu kategori KVKK ve özel hayat açısından en hassasıdır, dolayısıyla mahkeme kararı veya açık rıza zorunludur. Ama teknik olarak mümkündür:

  • WhatsApp Desktop: Electron tabanlı; mesajlar render edildiğinde renderer process belleğinde UTF-16 düz metin olarak bulunur.
  • Signal Desktop: SQLite veritabanı SQLCipher ile şifrelidir, ama anahtar config.json üzerinden DPAPI ile korunur ve kullanıcı oturumu açıkken RAM'dedir.
  • Telegram Desktop: tdata klasörü local key ile şifrelidir; oturum açıkken anahtar yine bellektedir.

Yöntem standart: süreç memdump, ardından SQLite header (SQLite format 3) veya konuşma fragment'leri için string arama. Süreç adli bilişim sürecinin delil zinciri kuralları altında yürür.

12. VAD (Virtual Address Descriptor) Tree

Her süreç sanal adres alanını VAD ağacı olarak yönetir. windows.vadinfo her bölgenin başlangıç-bitiş adresini, koruma bayrağını, eşlenen dosyayı listeler. vadwalk ağacın bütünlüğünü doğrular.

Adli kullanım: anonim, PAGE_EXECUTE_READWRITE izinli, dosya backing'i olmayan büyük bölgeler injected code adayıdır. vaddump o bölgeyi dosyaya yazar, ardından pescan veya pestudio ile PE header taranır. Process hollowing'de orijinal .text segmenti diskteki binary ile byte-byte uyuşmaz; bu farkın kendisi bulgudur.

13. Cached Credentials ve LSASS Dump

lsass.exe, oturum açan tüm kullanıcıların kimlik bilgilerini bellekte tutar: NTLM hash, Kerberos TGT, plaintext (eski WDigest açıksa). MITRE T1003.001'in tam tanımıdır.

Adli tarafta amaç saldırının değil saldırı sonrasının kanıtlanmasıdır: saldırgan lsass'tan dump aldıysa, dump dosyasının kendisi (genelde .dmp uzantılı) çoğunlukla %TEMP%, C:\\Windows\\Temp\\, \\ProgramData\\ altında bırakılır. RAM'de hâlâ açık handle'ı varsa handles | grep lsass ile yakalanır.

14. Mimikatz İzleri: NTLM Hash ve Kerberos Ticket

Mimikatz bellekte çalıştığında kendi string imzaları ve aldığı çıktının fragmanları RAM'de kalır. YARA kuralı ile aranan tipik desenler: mimikatz, gentilkiwi, sekurlsa::, kerberos::list, lsadump::sam.

Kerberos ticket'lar TGT/TGS olarak .kirbi formatında çıkarılır. Bir ticket'ın lifetime alanı 10 yıla yakınsa Golden Ticket (T1558.001), domain controller'ın krbtgt hash'iyle imzalanmış demektir. Tespit anı, IR playbook'unda "tüm krbtgt parolasını iki kez sıfırla" adımını tetikler.

15. PowerShell Decoded Payload

Saldırganların favori encoding zinciri: Base64 + Gzip + IEX. Diskteki komut satırı -enc <base64> olarak görünür ama gerçek payload runtime'da decode edilip string olarak heap'e yazılır.

Çıkarma yöntemi: pwsh.exe / powershell.exe memdump, sonra From-Base64 | gunzip zincirini RAM içeriği üzerinde tekrarlayarak son komut satırına ulaşma. Çıkan payload tipik olarak Empire, Covenant, Sliver veya Cobalt Strike stager'ıdır.

16. Network Beacon ve C2 Trafik İndikatörleri

Beacon davranışının iki ayrı izi RAM'dedir:

  1. Network: netscan çıktısında düzenli aralıklarla aynı uzak IP'ye giden kısa ömürlü bağlantılar (jitter eklenmiş olabilir).
  2. Memory: Cobalt Strike beacon'ı kendi konfig bloğunu 0x2e2e2e2e veya 0x69696969 XOR'lu olarak heap'te tutar. CobaltStrikeScan, 1768.py gibi açık kaynak araçlar bu bloğu decode eder ve C2 URL, sleep time, jitter, watermark çıkarır.

Microsoft Defender Threat Intelligence, watermark değerini operatör grubu ile eşleştirir; bu, atıf (attribution) sürecinde bilirkişi raporunun "Aktör Değerlendirmesi" bölümüne giren bir bulgudur.

Beacon konfig bloğundan çıkan parametreler tek başına IOC değeri taşır: sleep süresi, jitter yüzdesi, named pipe adı, malleable C2 profili, spawnto_x86 ve spawnto_x64 yolları. Bu alanların kombinasyonu çoğu zaman tek bir kampanyaya ait olduğu için, threat intel havuzlarında geçmiş vakalarla eşleşme sağlanabilir. Bu eşleşme, aynı aktörün başka kurumlarda da aktif olup olmadığını gösterir ve ilgili kurumlara koordineli bilgilendirme yapılması gerekip gerekmediğine karar verilir.

17. DSET Memory Lab, Nitel Kullanım

DSET'in Hacettepe Teknokent Ankara laboratuvarında memory forensic istasyonu üç bileşenden oluşur: write-blocker üzerinden çekilen .raw imaj havuzu, Volatility 3 koşan analiz workstation'ı, ve YARA + bulk_extractor zinciri için ayrı bir tarama node'u. Tüm bulgular, adli bilişim sürecimizin zorunlu kıldığı şekilde SHA-256 hash'leri ve süre damgalarıyla delil zincirine bağlanır. Pratikte gözlemlediğimiz şey: bir vakanın kırılma noktası çoğunlukla diskteki bir dosya değil, RAM'deki açık bir handle, bir mutex adı veya beacon konfig bloğudur.

18. Sık Sorulan Sorular

1. RAM imajı kaç saat geçerli? Cihaz çalışmaya devam ediyorsa içerik her saniye değişir. "Anlık fotoğraf" niteliğindedir; aynı cihazın iki farklı saatte alınan iki imajı iki farklı delil olarak raporlanır.

2. Şifreli mesajları RAM'den okumak hukuki mi? Mahkeme kararı veya kullanıcının açık rızası şarttır. KVKK md. 5 ve CMK kapsamında dayanak olmadan yapılan analiz delil değerini yitirir.

3. BitLocker açık cihazda kapatma yapılırsa ne olur? FVEK RAM'den silinir. Cihaz tekrar açıldığında recovery key veya TPM olmadan disk okunamaz. Kural: canlı cihazı kapatma, önce RAM imajı al.

4. LSASS dump almak antivirüs alarmı verir mi? Modern EDR'ler MiniDumpWriteDump çağrısını izler. Adli çalışmada bu yüzden yerel ajan değil, Velociraptor, DumpIt veya kernel-mode WinPMEM kullanılır.

5. Volatility 3'te Linux desteği nasıl? Banker / SSH server vakalarında kritik. Symbol table (ISF) hedef kernel sürümüne tam uymak zorundadır; uymazsa plugin'ler boş döner.

6. Memory imajı ne kadar büyük olur? Fiziksel RAM kadar. 32 GB RAM'li sistemden ~32 GB ham imaj çıkar. Sıkıştırılmamış saklanır; sıkıştırma hash zincirinden sonra yapılır.

7. RAM bulguları tek başına mahkeme delili olur mu? Olur, ancak korelasyon güçlendirir. RAM bulgusu + disk artifact'ı + ağ logu üçlüsü standart yaklaşımdır. Bilirkişi raporu bu üçlüyü "Bulgular" başlığı altında ayrı ayrı sunar.

8. Hibernate dosyası (hiberfil.sys) RAM imajı yerine geçer mi? Kısmen. Sistemin hibernate'e girdiği andaki belleğin sıkıştırılmış kopyasıdır. volatility bu dosyayı doğrudan okuyabilir, ama o andan sonrası kayıptır.

Sonuç

RAM'deki her artifact bir hikâyenin parçasıdır: process tree saldırganın nasıl başladığını, network bağlantıları kime konuştuğunu, LSASS / mimikatz izleri neyi çaldığını, beacon konfigi kimin operatör olduğunu anlatır. Bu yapıları doğru sırada toplamak ve delil zincirine yerleştirmek, modern adli bilişimin omurgasıdır.

DSET olarak Hacettepe Teknokent Ankara'daki memory forensic laboratuvarımızda Volatility 3, Rekall, MemProcFS ve YARA tabanlı analiz hattıyla kurumsal vakaları yürütüyoruz. Ransomware sonrası canlı sistem, şüpheli insider, APT şüphesi veya BitLocker açık şifreli cihaz incelemesi için +90 536 662 38 09 numarasından adli bilişim ekibimize ulaşabilirsiniz.