Volatility ile bir bellek analizi başlatmak için, bellek görüntüsünün türünü tanımlamak zorunlu bir adımdır.
İşte bazı yararlı komutlar.
imageinfo
Analiz etmekte olduğunuz bellek örneğinin üst düzey bir özeti için, imageinfo komutunu kullanın. Genellikle bu komut, iletim sistemini, hizmet paketini ve donanım mimarisini (32 or 64 bit) tanımlamak için kullanılır, ancak DTB adresi ve örneğin toplandığı zaman gibi diğer yararlı bilgileri de içerir.
imageinfo çıktısı, diğer eklentileri kullanırken profile=PROFILE parametresi olarak geçirmeniz gereken önerilen profili size söyler. Eğer profiller birbiriyle çok ilişkiliyse, birden fazla profil önerisi olabilir. Ayrıca, sırasıyla işlem ve modül listesi başlıklarını bulmak için pslist ve modules gibi eklentiler tarafından kullanılacak KDBG (kısaltması _kddebugger_data64) yapısının adresini de yazdırır. Bazı durumlarda, özellikle büyük bellek örneklerinde, çoklu KDBG yapısı olabilir. Benzer şekilde, birden fazla işlemci varsa, her biri için KPCR adresini ve CPU numarasını görürsünüz.
Eklentiler ihtiyaçları olduğunda KPCR ve KDBG değerlerini otomatik olarak tararlar. Ancak, --kpcr=ADDRESS veya kdbg=ADDRESS bilgilerini sağlayarak herhangi bir eklenti için değerleri doğrudan belirtebilirsiniz. Profil ve KDBGyi (veya başarısız olursa KPCRyi) Volatility komutlarına sağlayarak, mümkün olan en doğru ve en hızlı sonuçları alırsınız.
Not: imageinfo eklentisi doğru profil verilmedikçe hazırda bekletilen dosyalarda çalışmayacaktır. Bunun nedeni, önemli yapı tanımlarının farklı işletim sistemleri arasında değişiklik göstermesidir.
kdbgscan
Sadece profil önerisi sağlayan imageinfo aksine, kdbgscan doğru profili ve doğru KDBG adresini (eğer birden fazla olması durumunda) olumlu bir şekilde tanımlaman için tasarlanmıştır. Bu eklenti volatility profillerine bağlı KDBGHeader imzalarını tarar ve yanlış pozitifleri azaltmak için doğruluk testini uygular. Gereksiz çıktılar ve gerçekleştirilebilecek doğruluk testi sayısı, Volatilitynin bir DTB bulup bulamayacağına bağlıdır. Bu yüzden, doğru profili zaten biliyorsanız (ya da imageinfodan bir profil öneriniz varsa), kullandığınızdan emin olun.
Burada bu eklentinin ne zaman yararlı olabileceğini gösteren bir senaryo var. Windows 2003 SP2 x64 olduğuna inandığım bir bellek örneği var, ancak pslist hiç bir işlem göstermiyor. Pslist eklentisi, KDBG tarafından işaretlenen işlem listesi başlıklarını bulmaya çalışır. Bununla birlikte, eklenti bellek örneğinde bulduğu ilk KDBGyi alır, bu her zaman en iyisi değildir. Eğer geçersiz PsActive ProcessHead işaretçisine sahip bir KDBGyi geçerli olan KDBGden daha önce (yani daha düşük bir fiziksel offsette) bulunursa, bu sorunla karşılaşabilirsiniz.
kdbgscanin iki KDBG yapısını nasıl seçtiğine dikkat edin: geçersiz olan (0 işlem ve 0 modül ile) ilk bulundu 0xf80001172cb0 ve geçerli olan (37 işlem ve 116 modül ile) sonra bulundu 0xf80001175cf0. Bu örnekte pslisti düzeltmek için, pslist eklentisine kdbg = 0xf80001175cf0 değerini sağlamanız yeterlidir.
kpcrscan
Vistada Nesne Köklerini Bulmada açıklandığı gibi kendi kendine referans veren üyeleri kontrol ederek potansiyel KPCR yapılarını taramak için bu komutu kullanın. Çok çekirdekli bir sistemde, her işlemcinin kendi KPCRsi vardır. Bu nedenle, IDT ve GDT adresi de dahil olmak üzere her işlemci için ayrıntıları görebileceksiniz; akım, boşta ve sonraki konular; CPU numarası, sağlayıcı & hız; ve CR3 değeri.
Eğer KdVersionBlock null değilse, o zaman KPCR ile makinenin KDBG adresini bulmak mümkün olabilir. Aslında, pslist gibi eklentiler tarafından kullanılan KDBGyi bulmanın yedekleme yöntemi, kpcrscanden yararlanmak ve ardından KPCR.get_kdbg() API fonksiyonun çağırmaktır.
İşte bazı yararlı komutlar.
imageinfo
Analiz etmekte olduğunuz bellek örneğinin üst düzey bir özeti için, imageinfo komutunu kullanın. Genellikle bu komut, iletim sistemini, hizmet paketini ve donanım mimarisini (32 or 64 bit) tanımlamak için kullanılır, ancak DTB adresi ve örneğin toplandığı zaman gibi diğer yararlı bilgileri de içerir.
Kod:
$ vol.py -f ~/Desktop/win7_trial_64bit.raw imageinfo
Volatility Foundation Volatility Framework 2.4
Determining profile based on KDBG search...
Kod:
Suggested Profile(s) : Win7SP0x64, Win7SP1x64, Win2008R2SP0x64, Win2008R2SP1x64
AS Layer1 : AMD64PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/Users/Michael/Desktop/win7_trial_64bit.raw)
PAE type : PAE
DTB : 0x187000L
KDBG : 0xf80002803070
Number of Processors : 1
Image Type (Service Pack) : 0
KPCR for CPU 0 : 0xfffff80002804d00L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2012-02-22 11:29:02 UTC+0000
Image local date and time : 2012-02-22 03:29:02 -0800
imageinfo çıktısı, diğer eklentileri kullanırken profile=PROFILE parametresi olarak geçirmeniz gereken önerilen profili size söyler. Eğer profiller birbiriyle çok ilişkiliyse, birden fazla profil önerisi olabilir. Ayrıca, sırasıyla işlem ve modül listesi başlıklarını bulmak için pslist ve modules gibi eklentiler tarafından kullanılacak KDBG (kısaltması _kddebugger_data64) yapısının adresini de yazdırır. Bazı durumlarda, özellikle büyük bellek örneklerinde, çoklu KDBG yapısı olabilir. Benzer şekilde, birden fazla işlemci varsa, her biri için KPCR adresini ve CPU numarasını görürsünüz.
Eklentiler ihtiyaçları olduğunda KPCR ve KDBG değerlerini otomatik olarak tararlar. Ancak, --kpcr=ADDRESS veya kdbg=ADDRESS bilgilerini sağlayarak herhangi bir eklenti için değerleri doğrudan belirtebilirsiniz. Profil ve KDBGyi (veya başarısız olursa KPCRyi) Volatility komutlarına sağlayarak, mümkün olan en doğru ve en hızlı sonuçları alırsınız.
Not: imageinfo eklentisi doğru profil verilmedikçe hazırda bekletilen dosyalarda çalışmayacaktır. Bunun nedeni, önemli yapı tanımlarının farklı işletim sistemleri arasında değişiklik göstermesidir.
kdbgscan
Sadece profil önerisi sağlayan imageinfo aksine, kdbgscan doğru profili ve doğru KDBG adresini (eğer birden fazla olması durumunda) olumlu bir şekilde tanımlaman için tasarlanmıştır. Bu eklenti volatility profillerine bağlı KDBGHeader imzalarını tarar ve yanlış pozitifleri azaltmak için doğruluk testini uygular. Gereksiz çıktılar ve gerçekleştirilebilecek doğruluk testi sayısı, Volatilitynin bir DTB bulup bulamayacağına bağlıdır. Bu yüzden, doğru profili zaten biliyorsanız (ya da imageinfodan bir profil öneriniz varsa), kullandığınızdan emin olun.
Burada bu eklentinin ne zaman yararlı olabileceğini gösteren bir senaryo var. Windows 2003 SP2 x64 olduğuna inandığım bir bellek örneği var, ancak pslist hiç bir işlem göstermiyor. Pslist eklentisi, KDBG tarafından işaretlenen işlem listesi başlıklarını bulmaya çalışır. Bununla birlikte, eklenti bellek örneğinde bulduğu ilk KDBGyi alır, bu her zaman en iyisi değildir. Eğer geçersiz PsActive ProcessHead işaretçisine sahip bir KDBGyi geçerli olan KDBGden daha önce (yani daha düşük bir fiziksel offsette) bulunursa, bu sorunla karşılaşabilirsiniz.
kdbgscanin iki KDBG yapısını nasıl seçtiğine dikkat edin: geçersiz olan (0 işlem ve 0 modül ile) ilk bulundu 0xf80001172cb0 ve geçerli olan (37 işlem ve 116 modül ile) sonra bulundu 0xf80001175cf0. Bu örnekte pslisti düzeltmek için, pslist eklentisine kdbg = 0xf80001175cf0 değerini sağlamanız yeterlidir.
Kod:
$ vol.py -f Win2K3SP2x64-6f1bedec.vmem --profile=Win2003SP2x64 kdbgscan
Volatility Foundation Volatility Framework 2.4
**************************************************
Instantiating KDBG using: Kernel AS Win2003SP2x64 (5.2.3791 64bit)
Offset (V) : 0xf80001172cb0
Offset (P) : 0x1172cb0
KDBG owner tag check : True
Profile suggestion (KDBGHeader): Win2003SP2x64
Version64 : 0xf80001172c70 (Major: 15, Minor: 3790)
Service Pack (CmNtCSDVersion) : 0
Build string (NtBuildLab) : T?
PsActiveProcessHead : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList : 0xfffff80001197ac0 (0 modules)
KernelBase : 0xfffff80001000000 (Matches MZ: True)
Major (OptionalHeader) : 5
Minor (OptionalHeader) : 2
Kod:
**************************************************
Instantiating KDBG using: Kernel AS Win2003SP2x64 (5.2.3791 64bit)
Offset (V) : 0xf80001175cf0
Offset (P) : 0x1175cf0
KDBG owner tag check : True
Profile suggestion (KDBGHeader): Win2003SP2x64
Version64 : 0xf80001175cb0 (Major: 15, Minor: 3790)
Service Pack (CmNtCSDVersion) : 2
Build string (NtBuildLab) : 3790.srv03_sp2_rtm.070216-1710
PsActiveProcessHead : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList : 0xfffff8000119aae0 (116 modules)
KernelBase : 0xfffff80001000000 (Matches MZ: True)
Major (OptionalHeader) : 5
Minor (OptionalHeader) : 2
KPCR : 0xfffff80001177000 (CPU 0)
kpcrscan
Vistada Nesne Köklerini Bulmada açıklandığı gibi kendi kendine referans veren üyeleri kontrol ederek potansiyel KPCR yapılarını taramak için bu komutu kullanın. Çok çekirdekli bir sistemde, her işlemcinin kendi KPCRsi vardır. Bu nedenle, IDT ve GDT adresi de dahil olmak üzere her işlemci için ayrıntıları görebileceksiniz; akım, boşta ve sonraki konular; CPU numarası, sağlayıcı & hız; ve CR3 değeri.
Kod:
$ vol.py -f dang_win7_x64.raw --profile=Win7SP1x64 kpcrscan
Volatility Foundation Volatility Framework 2.4
**************************************************
Offset (V) : 0xf800029ead00
Offset (P) : 0x29ead00
KdVersionBlock : 0x0
IDT : 0xfffff80000b95080
GDT : 0xfffff80000b95000
CurrentThread : 0xfffffa800cf694d0 TID 2148 (kd.exe:2964)
IdleThread : 0xfffff800029f8c40 TID 0 (Idle:0)
Details : CPU 0 (GenuineIntel @ 2128 MHz)
CR3/DTB : 0x1dcec000
**************************************************
Offset (V) : 0xf880009e7000
Offset (P) : 0x4d9e000
KdVersionBlock : 0x0
IDT : 0xfffff880009f2540
GDT : 0xfffff880009f24c0
CurrentThread : 0xfffffa800cf694d0 TID 2148 (kd.exe:2964)
IdleThread : 0xfffff880009f1f40 TID 0 (Idle:0)
Details : CPU 1 (GenuineIntel @ 2220 MHz)
CR3/DTB : 0x1dcec000
Eğer KdVersionBlock null değilse, o zaman KPCR ile makinenin KDBG adresini bulmak mümkün olabilir. Aslında, pslist gibi eklentiler tarafından kullanılan KDBGyi bulmanın yedekleme yöntemi, kpcrscanden yararlanmak ve ardından KPCR.get_kdbg() API fonksiyonun çağırmaktır.
Son düzenleme:
