RAM Analizi Nedir?~ Magnet RAM Capture-Volatility3~ Kurulum ve Uygulama

Herkese merhaba, bu yazımda windows için Magnet RAM ile ram imajı alınması, volatility programı ile alınan ram imajının incelenmesi, zararlı yazılım indirip iki ram imajının arasındaki farklardan bahsedeceğim.

RAM bilgisayar kapatıldığında içeriği silinen geçici bir bellek. Bu nedenle, RAM imajı alınmazsa olay anındaki kritik veriler kalıcı olarak kaybolabilir. RAM imajı alma işlemi özellikle adli bilişim çalışmaları için önemlidir çünkü RAM’de açık dosyalar, şifrelenmemiş veriler, zararlı yazılım izleri, aktif ağ bağlantıları ve kullanıcı etkinliği gibi veriler bulunabilir. Sabit diskte kayıtlı olmayabilir ve sadece RAM’de geçici olarak tutulur.

Zararlı yazılım analizinde de önemli bir rol oynar. Çünkü bellekte çalışan zararlı yazılımın kodları, bağlantıları ve yürütülme yolları görülebilir. RAM, bazı uygulamalar tarafından geçici olarak kullanılan şifreler, oturum anahtarları ve şifre çözme anahtarlarını da içerebilir; bu da özellikle şifrelenmiş disklerin çözülmesinde büyük avantaj sağlar. Son olarak, sistemde yaşanan beklenmedik hataların veya çökmelerin analiz edilmesi için RAM imajı almak, olayın meydana geldiği anın teknik detaylarına ulaşmak açısından kritik öneme sahiptir.

Magnet RAM Capture RAM imajı almak için geliştirilen ücretsiz bir araçtır. Magnet Forensics tarafından sunulur ve özellikle olay müdahalesi ve bellek analizi süreçlerinde tercih edilir.

Magnet RAM Capture — Magnet Forensics sitesinden bilgilerimizi dolduralım. Belirttiğimiz mail adresine gelen setup dosyasını indirelim.

Kuruluma başlayalım. Kullanıcı sözleşmesini kabul edelim.

Segment size seçeneği RAM verisinin ne şekilde kaydedileceğini belirliyor. Don’t Split seçeneği RAM’i tek bir dosyada kaydederken, 500MB, 1GB, 2GB ve 4GB seçenekleri veriyi parçalara ayırarak kaydediyor; özellikle büyük RAM boyutlarında analiz ve taşıma kolaylığı sağlıyor. 4GB, FAT32 dosya sistemi için maksimum dosya boyutu; bu nedenle hedef diskin dosya sistemi seçimi önemli. Eğer NTFS kullanılıyorsa büyük tek dosyalar tercih edilebilirken, FAT32 kullanılıyorsa segmentlere bölmek gerekiyor.

Browse seçeneği ile imaj dosyamızı nereye kaydedeceğimizi seçebiliriz. Sonrasında Start butonu ile başlatalım.

Başarıyla imaj dosyamızı oluşturduk.


.raw uzantılı imaj dosyamızı Volatility 3 ile inceleyeceğiz.

Python ve git programlarının yüklü olması gerekiyor. Python versiyonunu cmd ile kontrol edelim.

Eğer python yüklü değilse ve python bulunamadı gibi bir hata alırsanız bu linkten, git yüklü değilse bu linkten indirebilirsiniz.

Volatility 3’ün kaynak kodlarını klasörümüze indirelim.

git clone https://github.com/volatilityfoundation/volatility3

python vol.py -h komutu ile kullanabileceğimiz tüm temel seçenekler ve parametreleri listeleyebiliriz.

Bellek analizini detaylandırmak için farklı pluginler kullanılıyor. Her plugin, RAM imajından belirli verileri çıkararak sistem durumu, süreçler, ağ bağlantıları gibi kritik bilgileri ortaya çıkarıyor.

                                            temel pluginler

~windows.info~

windows.info plugini, RAM imajındaki Windows işletim sistemine ait sürüm, mimari, yüklü modüller gibi temel bilgileri çıkarır ve analiz öncesinde sistem hakkında genel bir durum değerlendirmesi yapılmasını sağlar. Bu sayede, bellek imajının hangi Windows sürümüne ait olduğu doğrulanır, uygun profil ve sembol dosyalarının seçilmesine yardımcı olur ve daha doğru, hedefe yönelik analizlerin yapılabilmesi için sağlam bir temel oluşturur.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.info

Aşağıdki çıktıda göründüğü gibi hangi windows sürümünün yüklü olduğu, mimari yapısı, işlemci sayısı, çekirdeği ve sistem zamanına dair bilgiler gibi verileri öğrenmemizi sağlar.

Sistemin 64-bit mimariye sahip olup PAE (Physical Address Extension) kullanılmadığını, bellek analizi sırasında çekirdek taban adresinin 0xf80730e00000olduğunu, DTB ise 0x1aa000 olarak belirlendiğini, sembol çözümlemesi için kullanılan dosyanınntkrnlmp.pdb adlı sembol dosyasının D9424FC4861E47C10FAD1B35DEC6DCC8 kimliğine sahip sürümü olduğunu ve bu dosya analiz sırasında başarıyla eşleştirildiğini gösteriyor.

Bellek yapısının WindowsIntel32e katmanında FileLayer üzerinden incelendiği, sistemde 2 işlemci çekirdeği bulunduğunu ve KdVersionBlock adresi 0xf80731a0f400 olarak tespit edildiğini, işletim sistemi saati 6 Temmuz 2025, 10:29:31 UTC olarak kaydedildiğini, Sistem kök dizini C:\Windows olarak gösterilirken, işletim sistemi türü Windows NT olarak tanımlandığını da gösteriyor. PE (Portable Executable) başlığına göre işletim sisteminin büyük ve küçük sürüm numaraları 10.0 şeklinde olduğu ve zaman damgası 9 Aralık 2019, 11:07:51 tarihini gösterdiği belirtiliyor.

~ komut sonuna > dosyaAdı.txt ekleyerek belgeyi not defteri dosyası olarak kaydedebiliriz.~

~windows.pslist~

windows.pslit ile sistemde bellek anında aktif olan veya daha önce çalışmış processlerin listesini çıkarırız. Her işlemin adı, işlem kimliği (PID), parent işlem kimliği (PPID), başlatılma ve varsa sonlanma zamanları gibi bilgileri içeriyor.

Processler ile ilgili önceden yazmış olduğum yazıyı okumak isterseniz tıklayabilirsiniz.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.pslist

pslist çıktısında yer alan alanlar, bir sistemde çalışan işlemlerin durumunu analiz etmek için kritik bilgiler sunar. Her bir alan belirli bir anlam taşır ve değerlerinin olağan sınırların dışında olması durumunda şüpheli faaliyetlerin habercisi olabilir.

PID (Process ID), işlemin benzersiz kimliği. Genellikle 1000’den yüksek değerler alır. Çok düşük PID’ler (0, 4, 8) sistem süreçlerini işaret ederken, kullanıcı süreçlerinin PID’leri daha yüksek olur. PID’nin PPID (Parent PID) ile aynı olması ya da hiç parent işlem olmaması şüpheli olabilir, çünkü bu tür durumlar genellikle injection veya hollowing tekniklerinde görülür.

ImageFileName, çalıştırılan dosyanın adını belirtir. Normalde svchost.exe, explorer.exe, services.exe gibi bilindik sistem dosyaları görülür. Ancak benzer görünümlü (scvhost.exe gibi yazım hatalı) veya rastgele adlandırılmış dosyalar kötü amaçlı yazılımların kamufle olma çabası olabilir.

Threads (iş parçacığı sayısı) ve Handles (tutulan kaynaklar) genellikle işlem türüne göre değişir. Tipik bir kullanıcı uygulaması için 5–50 arası thread ve 50–500 arası handle normaldir. Ancak çok az (örneğin 1) veya aşırı yüksek (örneğin 1000+) thread/handle sayısı, özellikle sistem süreçlerinde olağandışıysa, potansiyel bir kötü niyetli davranışa işaret edebilir.

 SessionId, işlemin bağlı olduğu oturum numarasıdır. Sistem süreçleri genellikle 0’da, kullanıcı oturumları ise 1 ve sonrasında çalışır. Sistem oturumu dışında çalışan services.exe gibi işlemler şüpheli olabilir.

Wow64 değeri, işlemin 32-bit olup olmadığını gösterir. 64-bit sistemde çalışan 32-bit işlem normaldir; ancak sistem klasöründen çalışıyor görünen 32-bit işlemler ekstra dikkat gerektirir.

Son olarak CreateTime ve ExitTime, işlemin ne zaman başladığını ve ne zaman sonlandığını gösterir. Sistem açıldığında başlaması gereken bir işlemin çok daha sonra başlaması veya olağandışı saatlerde başlatılmış olması, kullanıcı veya zararlı yazılım müdahalesini gösterebilir. Kısa süreli işlemler (hemen başlayıp hemen kapananlar) da injection veya payload taşıma gibi davranışların işareti olabilir. Bu parametreler bir arada analiz edildiğinde, olağandışı aktiviteler daha net tespit edilebilir.

~windows.dlllist~ 

windows.dlllist, bellek imajındaki her bir processin belleğe yüklediği DLL dosyalarını listeler. Her çalışmakta olan veya daha önce çalışmış bir process in hangi kütüphaneleri kullandığı detaylı bir şekilde görülebilir.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.dlllist

Aşağıda temel ve çok bilinen DLL’ler, işlevleri ve kritik durumları özetleyen tabloyu inceleyebilirsiniz.

~windows.psscan~

windows.psscan plugini, RAM imajında çalışan ve çalışmayı bırakmış ancak hala bellek üzerinde izleri bulunan tüm processlerin kalıntılarını tarar ve listeler. Bu sayede normal süreç listesinden (pslist) kaçabilecek veya gizlenmiş olan süreçler tespit edilir. Kötü amaçlı yazılımların veya şüpheli süreçlerin yakalanmasında, sistemde aktif olmayan ama bellek izleri bulunan süreçlerin ortaya çıkarılmasında kullanılır ve derinlemesine süreç analizi için kritik öneme sahiptir.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.psscan

~windows.cmdline~

windows.cmdline plugini, RAM imajındaki her bir sürecin komut satırı argümanlarını (command line arguments) çıkarır ve listeler. Bu sayede süreçlerin nasıl başlatıldığı, hangi parametrelerle çalıştığı ve potansiyel şüpheli veya zararlı komutların tespiti mümkün olur. Süreç davranışlarını detaylı analiz etmek, zararlı yazılım aktivitelerini incelemek ve saldırganların kullandığı gizli parametreleri ortaya çıkarmak için kullanılır.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.cmdline

~windows.malfind~

windows.malfind plugini, RAM imajında şüpheli ve kötü amaçlı yazılım faaliyetlerini tespit etmek için kullanılır. Bellek alanlarında gizlenmiş, yürütülebilir kod parçalarını (injected code), bellekten çalışan zararlı modülleri ve anormal bellek bölgelerini bulur. Bu sayede rootkit, zararlı kod enjeksiyonu ve diğer bellek tabanlı saldırılar tespit edilir. Güvenlik analizi ve kötü amaçlı yazılım incelemesinde kritik bir araçtır.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.malfind

~windows.sessions~ 

windows.sessions plugini, RAM imajındaki Windows oturumlarını tespit eder ve listeler. Sistemde açık olan kullanıcı oturumlarının kimlik bilgileri, oturum süreleri ve ilişkili süreçler hakkında bilgi edinilir. Çok kullanıcılı sistemlerde kullanıcı aktivitelerini analiz etmek, hangi oturumların aktif olduğunu görmek ve adli incelemelerde kullanıcı bazlı olayları takip etmek için kullanılıyor.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.sessions

~windows.registry.hivelist~

windows.registry.hivelist plugini, RAM imajında yüklü olan tüm Windows kayıt defteri ~registry~ hücrelerini ~hive~ tespit eder ve listeler. Bellekte hangi registry yapılarının aktif olduğu, bunların bellek üzerindeki konumları ve boyutları hakkında bilgi edinilir. Kayıt defteri analizine başlamadan önce bellekteki hive dosyalarının bulunması ve diğer registry pluginleri için referans noktası oluşturması açısından da önemli.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj.raw" windows.registry.hivelist

Offset bellek yığınında (RAM) dosyanın bulunduğu adres.

Dosya Yolu işlemci tarafından bellekten erişilen kayıt dosyalarının veya yapıların dosya yolu.

File output Disabled ise bu dosyalar Volatility tarafından otomatik olarak çıktı olarak alınmamış (kaydedilmemiş).


Şimdi ise sanal makinemize zararlı yazılım indirelim ve ram imajını alıp volatility ile analiz edelim.

Sanal makineyi izole etmek adına ağ ayarlarını nat olarak değiştirebiliriz.

Snapshot özelliği sayesinde sanal makinenin durumunu belirli bir zamanda kaydedebiliyoruz ve istediğimiz zaman o anki haline geri getirebiliyoruz.

~Dinamik analiz yapmak için procmon, process hacker, regshot gibi programlar kullanarak alt processler, dll ler ile ilgili daha detaylı bilgi alabilirsiniz, bu yazıda volatility ile devam edeceğiz.~

İncelemek isterseniz any run bağlantısı için tıklayabilirsiniz.

Zararlı yazılımın md5 değeri => 7a0093c743fc33a5e111f2fec269f79b

Virustotal’den kontrol edelim, güzel(!) bir sabıkası bulunuyor diyebiliriz.

Güvenlik duvarı ve açıksa av ayarlarını kapatalım.

Zararlı yazılımı indirebiliriz.

Dosyamızı ayıklayalım.

Şifreyi girelim ve çalıştıralım.

Magnet ram capture ile imaj dosyamızı oluşturalım.

cmd çalıştıralım ve volatility komutlarımızla önceki işlemlerimizi tekrarlayalım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.info

windows.info pluginini çalıştırdığımızda kernel base değiştiğini gözlemleyebiliriz, malware yüzünden de değişmiş olabilir veya sistemi açıp kapattığımızda da değişebilir.

windows.pslist komutunu çalıştıralım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.pslist

Normalde process isimlerinin yazdığı sütunda en son satırda zararlı yazılımın çalışmış olduğunu görebiliyoruz. PID değeri 1480, ppid değeri 7920 ve normalde csrss.exe’yi bu PID başlatmaz. Threads sayısının 0 olması çalışmamış ya da hızla kapanmış/inject edilmiş olarak yorumlanabilir. Başlangıç ve bitiş zamanının da aynı saniye olması işlemin şüpheli olduğunun bir diğer işareti diyebiliriz.

windows.dlllist için ise bilinmeyen veya şüpheli DLL yolları temp, appdata, downloads içinden yüklenen DLL’ler varsa, beklenmedik LoadTime zamanları yani sistemdeki diğer işlemlere göre uyumsuz bir yüklenme zamanı varsa, bilinmeyen işlemler (mesela wininit.exe gibi sistem işlemi gibi görünüp farklı konumdan çalışanlar) varsa, aynı PID altında tekrarlayan veya garip isimli DLL’ler varsa şüpheli olarak düşünebiliriz.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.dlllist

windows.psscan komutunu çalıştıralım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.psscan

Zararlı yazılımımızın bellek adresine baktığımızda şüpheli, (Offset: 0xd201de738080) Volatility dump’larında zararlı işlemler genelde bu şekilde görünüyor.

windows.cmdline komutunu çalıştıralım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.cmdline

Komut satırının tamamen boş olması ile; Process Hollowing düşünebiliriz, masum bir işlem kılıfına zararlı PE enjekte edilir. cmdline buradaki gibi genelde yoktur.

Reflective DLL Injection düşünebiliriz, belleğe yüklenir ama disk izi bırakmaz, ad ve argüman görünmez.

Shellcode Injection düşünebiliriz, cmdline hiç yazılmaz, PID spoofing yapılabilir.

Malware Dropper da düşünebiliriz anlık çalışır, kendi işini yapıp kaybolur.

windows.malfind komutunu çalıştıralım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.malfind

Analiz edilen malfind çıktısında PID 1480’e dair herhangi bir iz yok. Ancak daha önceki bulgularda PID 1480’in işlem adı ve komut satırının görünmediği, threads sayısının 0 olduğu ve aynı saniyede başlatılıp sonlandırıldığı göz önüne alındığında, bu işlemin bir başka sürece kod enjekte ettikten sonra kendini gizlemiş ya da silmiş olabileceği güçlü bir olasılık.

windows.sessions komutunu çalıştıralım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.sessions

Session ID = 1 normalde kullanıcı oturumu ama bu süreçte kullanıcı adı bilgisi eksik. Diğer süreçlerde kullanıcı adı “DESKTOP-IO9U7F7/Q” iken bunda hiç yok.

Session Type da eksik normalde “Console” olmalıydı. Bu da sürecin normal yollarla başlatılmadığını düşündürüyor.

windows.registry.hivelist komutunu çalıştıralım.

python C:\xxx\volatility\vol.py -f "C:\xxx\imaj-2.raw" windows.registry.hivelist

Bir önceki çıktıda görmediğimiz son satırda bulunan settings.dat dosyası Windows’un modern arayüzü (Başlat Menüsü, görev çubuğu vs.) için kullanılan ShellExperienceHost bileşeninin ayarlarını saklar. Normalde güvenli bir sistem dosyası. Ama malware’lar bazen sistem klasörlerine, özellikle appdata altındaki ayar dosyalarına kendilerini gizleyebiliyor.

settings.dat gibi dosyalar üzerinden kalıcılık sağlama, komut/alma veya kötü amaçlı ayar saklama mümkün olabiliyor.

Makineyi aldığımız anlık görüntüye geri yükle seçeneğine tıklayarak kapatabiliriz.

Okuduğunuz için teşekkür ederim..

https://www.siberguvenlik.web.tr/autopsy/

#MemoryForensics #DigitalForensics

About The Author

No Responses

Reply