Volatility
Ram Capturing
Windows 7 makine de memory(RAM) dump etmek için DumpIt aracını kullanacağım. Aracı buradan indirebilirsiniz. Windows7 makinede cmd açarak bulunduğu dizine gelip DumpIt.exe’yi çalıştırıyoruz. Memory Dump işlemi başlıyor ve belli bir süre sonra kapatıp durduruyoruz. DumpIt.exe’nin bulunduğu dizinde oluşan RAW dosyasını görüyoruz ve bu bizim Volatility ile inceleyeceğimiz Memory Dump File‘mız olacak.
Volatility Analiz
İlk olarak volatility ile RAW bilgilerine bakmak için şu komutu kullanıyoruz.
volatility -f ZAFIYETLI-PC.raw imageinfo
Sonrasında profile göre KDBGSCAN yapıyoruz. Kdbgscan Olası KDBG değerlerini bulmamızı sağlar. KDBG, hata ayıklama amacıyla Windows çekirdeği tarafından tutulan bir yapıdır. Çalışmakta olan süreçlerin ve yüklenen çekirdek modüllerinin bir listesini içerir. Ayrıca hangi Hizmet Paketi’nin yüklendiğini ve bellek modelini (32-bit vs 64-bit) belirleyebilmenizi sağlayan bazı sürüm bilgilerini de içerir.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 kdbgscan
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 pslist
KDBG değerinide belirledikten sonra o anda çalışan processleri görüntülemek için PSLIST komutunu ekledim. Burada en altta DumpIt.exe görünüyor, o an kullandığımız DUMP aracı olarak. Bunun yanında tarayıcılar veya diğer çeşitli programları görüyoruz.
32 ve 64 bit Windows Vista, Windows 2008 Server ve Windows 7 RAM imajlarında ağ programlarını taramak için NETSCAN komutunu kullanırız. Bu tarama, TCP bitiş noktalarını, TCP dinleyicilerini, UDP uç noktalarını ve UDP dinleyicilerini bulur. IPv4 ve IPv6 arasında ayrım yapar, yerel ve uzak IP’yi (varsa), yerel ve uzaktaki bağlantı noktasını (varsa), soketin bağlı olduğu veya bağlantı kurulduğu zamanı ve geçerli durumunu (TCP bağlantıları için) gösterir.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 netscan
Fiziksel bellekteki FILE_OBJECT’leri bulmak için FILESCAN komutunu kullanırız.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 filescan
Bir sonraki taramamız PSSCAN taraması. Bu daha önce sona eren işlemleri (etkin olmayan) ve bir rootkit tarafından gizlenmiş veya bağlantısız olan işlemleri bulabilir. Diğer yandan da işlem listesini bir ağaç yapısında görüntülemek için, PSTREE komutunu kullanırız. Bu süreçleri pslist ile aynı tekniği kullanarak numaralandırır, bu nedenle de gizli veya bağlantısız süreçler gösterilmez. Child process’ler, girinti ve süreler kullanılarak belirtilir
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 psscan
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 pstree
Uygulama
Bellekte kayıt defterinin sanal adreslerini ve karşılık gelen disk üzerindeki tam yolları bulmak için, HIVELIST komutunu kullanırız.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 hivelist
Burada bir uygulama gerçekleştireceğim. Windows makinenin kullanıcı parolasını dump edip kırmaya çalışacağız.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 hashdump -s 0xfffff8a000aa2010 -y 0xfffff8a000023010 > hash.txt
Burada -s parametresi \SystemRoot\System32\Config\SAM kısmını, -y parametresi de \REGISTRY\MACHINE\SYSTEM kısmını alıyor . Hash değerlerini aldıktan sonra OPHCRACK aracını kullanarak parolayı buluyoruz.
Bir işlemin yüklenmiş DLL’lerini görüntülemek için DLLLIST komutunu kullanırız. Bir süreç LoadLibrary (veya LdrLoadDll gibi bazı türevleri) çağırdığında DLL’ler otomatik olarak bu listeye eklenir.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 dlllist
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 dlllist -p 2624
volatility -f ZAFIYETLI-PC2.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 dlldump --pid 2356 --dump-dir=.
Bir işleme ait açık handles’ları görüntülemek için, HANDLES komutunu kullanırız. Bu, dosyalar, kayıt defteri anahtarları, muteksler, adlandırılmış kanallar, olaylar, pencere istasyonları, masaüstleri, iş parçacıkları ve diğer tüm yürütülebilir nesne türleri için geçerlidir.
volatility -f ZAFIYETLI-PC2.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 handles -p 2624
UserAssist yardımcı programı, bir Windows makinesinde çalıştırılan programların sayısını,son yürütme tarihini ve saatini içeren bir program tablosunu görüntüler. Windows Gezgini, bu bilgileri UserAssist kayıt defteri girdileri içinde tutar.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 userassist
CMDSCAN eklentisi, bir konsol kabuğu (cmd.exe) üzerinden girilen komutlar için XP / 2003 / Vista / 2008’de csrss.exe ve Windows 7’de conhost.exe belleklerini arar.
MaxHistory değerinin cmd.exe penceresinin sol üst köşesinde sağ tıklayarak Özellikler’e gelerek değiştirilebilir. Windows sistemlerinde varsayılan değer 50’dir, yani en son 50 komut kaydedilir.
volatility -f ZAFIYETLI-PC.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 cmdscan
volatility -f ZAFIYETLI-PC3.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 consoles
IEHISTORY eklentisi IE geçmişi önbellek dosyalarının parçalarını kurtarır. Erişilen temel bağlantıları (FTP veya HTTP üzerinden), bulabilirsiniz.
volatility -f ZAFIYETLI-PC2.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 iehistory
Çalışan Windows Servislerini görmek için SVCSCAN taraması yapıyoruz.
volatility -f ZAFIYETLI-PC2.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 svcscan
Fiziksel bellekteki DRIVER_OBJECT’leri bulmak için, DRIVERSCAN komutunu kullanırız.
volatility -f ZAFIYETLI-PC2.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 driverscan
Bir işlemle ilişkili SID’leri (Güvenlik Tanımlayıcıları) görüntülemek için, GETSIDS komutunu kullanırız. Diğer şeylerin yanı sıra, bu, kötü niyetle ayrıcalıklara ve hangi süreçlerin belirli kullanıcılara ait olduğunu belirlemenize yardımcı olabilir.
volatility -f ZAFIYETLI-PC2.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 getsids
Tek bir dosyaya bir süreçte yerleşik tüm sayfaları ayıklamak için , MEMDUMP komutunu kullanırız. Çıkış dizinini -D veya –dump-dir = DIR ile sağlarız.
volatility -f ZAFIYETLI-PC3.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 memdump -p 1804 -D RECOVER
Bir işlemin yürütülebilir dosyasını çıkarmak için PROCDUMP komutunu kullanırız.
volatility -f ZAFIYETLI-PC3.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 procdump -p 1804 -D RECOVER
Uygulama
Ram imajı alınırken arkada paint.exe açacağız ve bunun RAM’e yansımasını inceleyeceğiz. Aldığımız RAM imajından mspaint.exe için memory dump yapıyoruz. Paint için PID numarasını buluyoruz.
volatility -f ZAFIYETLI-PC5.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 psxview
volatility -f ZAFIYETLI-PC5.raw --profile=Win7SP1x64 --kdbg=0xf80001a570a0 memdump -p 2724 -D RECOVER
Sonrasında burada çıkan .dmp uzantılı dump dosyasını .data dosyasını çeviriyoruz. Ve GIMP’te açıyoruz.
NOT: mspaint.exe için çalışırken görev yöneticisine giderek Applications bölümüne gelip sağ tıklayarak CREATE DUMP FILE diyerekte dump dosyası alabiliriz.
GIMP ‘te offset değerleriyle oynayarak anlamlı bir şey bulmaya çalışırken test_FLAG‘i bulmuş oluyoruz.