Volatility ile Memory Forensics İşlemleri

Herkese selamlar,

Bu yazım memory forensics ile ilgili olacak ve bunun için Volatility Framework‘un dan yararlanacağız. Şuan için Memory forensics framework’lar arasında en fazla tercih edilenlerden biri bu araçtır diyebilirim. Bunun haricinde Google’un Rekall adında bir aracı daha bulunuyor. Fakat birkaç defa yüklemeyi denedim, her defasında farklı farklı hatalar aldım. En son denememde aldığım hataya şuan için hala çözüm arıyorum.

Volatility Framework Kurulumu

Öncelikli olarak bu framework’un Python 3.7 ile uyumlu çalışmadığını belirtmek istiyorum. Bunun haricinde Python 2.7 ile de tam olarak uyumlu çalışmıyor. Sizlere tavsiyem Python 2.7.16 ile denemenizdir. Python’u yükledikten sonra ikinci olarak pip yüklememiz gerekiyor. Buradan gerekli dosyayı indirip çalıştırabilirsiniz. (python get-pip.py install)

Bu yüklemeyi de gerçekleştirdikten sonra bunları PATH yolunu belirtmemiz gerekiyor. Computer/Properties/Advanced System Settings/Environment Variables/PATH kısmına Python ve pip’i kurduğumuz yeri belirtmemiz gerekiyor.

;C:/Python27;C:/Python27/Tools/Scripts;C:/Python27/Scripts

Gerekli framework’i indirmeden önceki önemli bir bölümü tamamladık. Şimdi ise tool’a ait dosyaları indirebiliriz. İsterseniz git ile ilgili aracı indirip işlerinizi CMD üzerinden halledebilirsiniz. Veya Github üzerinden de projeyi direkt indirebilir ve kurabilirsiniz.

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

Daha sonra ise CMD üzerinden klasöre gidip, setup dosyasını çalıştırabiliriz. Bu komutu çalıştırdıktan sonra belli başlı paketleri yüklememiş olacak bu yüzden direkt olarak framework’u çalıştırmayacağız. Aşağıda yükleyeceğimiz paketler yer almaktadır:

1-  Visual C++ Compiler for Python 2.7
2- Pycrypto – pip install pycrypto
3- Openpyxl – pip install openpyxl
4- Ujson – pip install ujson
5- diStorm3 – Python2/3 (exe dosyası)
6- YARA – burada sonu 2.7.exe ile bitenlerden (x64 veya x86) birini indirmeniz gerekiyor özellikle son versiyonlarından biri olmasına dikkat edin.

Yukarıdaki gerekli dosyaları indirdikten sonra vol.py –help komutunu çalıştırabiliriz.

Cridex Malware Dump analizi

Açıkcası bu dump örneğini framework’un github sayfasından direkt olarak indirdim. İsteyen kişiler diğer örneklere de göz gezdirebilirler.

İlk olarak dump hakkında bilgi almak amacıyla “imageinfo” komutunu kullanacağız ve ön bilgi edineceğiz. Ön bilgi kısmını tamamladıktan sonra forensic kısmına başlayabiliriz.

pslist çıktısı

Dump’ı aldığımız makinenin WindowsXPSP2x86 olduğunu biliyoruz. Bu yüzden “–profile=WindowsXPSP2x86” komutunu kullanıp, zararlı yazılım bulaşmış kullanıcının bilgisayarında neler olmuş ona bakacağız.

pstree çıktısı

Burada “pslist” pluginini kullanıyoruz ve buna alternatif olarakta “pstree” de kullanabiliriz. Yukarıdaki çıktıya ilk gözattığımızda explorer.exe işlemi altında çalışan “reader_sl.exe” olduğunu fark ediliyor. Bir sonraki adımda bu iki işleme bakacağız fakat bu işlemlerden önce arka tarafta gizlenmiş işlemlere de gözatmamız da yarar var diye düşünüyorum.

psxview çıktısı

Bu yüzden “psxview” komutunu kullanıp arka tarafta gizlenmiş işlemlere bakıyoruz. Yukarıdaki çıktıyı bir önceki çıktı ile karşılaştırdığımızda arka tarafta çalışan herhangi bir gizli işlemin olmadığını fark edebiliyoruz.

connscan ve sockets çıktıları

Çalışan tüm işlemlere baktıktan sonra bu adımımızda çalışan sockets ve bağlantılara bakmakta da fayda var. Bunun için “connscan”, “netscan” ve “sockets” eklentilerini kullanacağız.

Connscan” eklentisi TCP bağlantılarını tarayan bir tarayıcıdır ve bize açık socketlerin listesini hazırlar. Bunun haricinde “netscan” eklentisini kullandığımız zamanlarda ise bize bağlantılar ve socketler için bir görüntü tarar. Fakat kullandığımız profil açısından bu eklentiyi kullanamıyoruz.

Yukarıdaki “connscan” çıktısına baktığımızda aynı PID değerine sahip iki TCP bağlantısı olduğunu görüyoruz. Yukarıdaki “pstree” çıktısından yola çıkarak bu bağlantıların explorer.exe işlemine ait olduğunu kolayca fark edebiliyoruz. Yukarıdaki TCP bağlantılara baktığımızda bir tanesinin hala açık olduğunu ve iletişim için 1038 portunu kullandığını görebiliyoruz.

cmdline çıktısı

Bir sonraki adımda ise pc üzerinde son çalıştırılan komutlara “cmdscan”, consoles” ve “cmdline” eklentilerini kullanarak bakabiliriz.

cmdscan ve consoles eklentisi

Açıkcası “cmdscan” ve “consoles” eklentilerini kullanmak istediğimizde herhangi bir çıktı alamadığımız göreceğiz. Fakat “cmdline” eklentisini kullandığımızda, gördüğünüz üzere işimize yarayacak yararlı bilgiler çıktığını göreceksiniz. Bu çıktıyla birlikte PID 1484 (explorer.exe) ve PID 1640 (reader_sl.exe) işlemlerinin tam path yoluna sahibiz.

Şuana kadar elde ettiklerimizden anlaşıldığı kadarıyla PID 1640 işlemi PID 1484 tarafından başlatılmış fakat klasik bir adobe reader uygulaması olması gerekirken, harici bir IP ile doğrudan çalıştığını fark ettik.

procdump ve memdump çıktısı

Bir sonraki adımımızda ise PID 1640’a ait exe ve .dmp dosyasını elde edeceğiz. Bunun için “procdump” ve “memdump” eklentilerinden yararlanacağız. Bu aşamadan sonra .dmp dosyamızdan bilgi almak için linux komutlarından biri olan “Strings”i kulanacağız.

strings ciktisi

Yukaridaki satırlardan dan gördüğünüz üzere “greb” komutunu bazı kombinler ile destekleyerek önceki ve sonraki satırlar hakkında bilgi almayı amaçladık. Yukarıdaki çıktıdan anladığımız üzere “reader_sl.exe” dosyası “41.168.5.140” IP adresine post request kullanarak doğrudan bir iletişim gerçekleştiriyor.

“Strings 1640.dmp | less” komutu kullanıldı.

İkinci olarak yine Strings komutunu kullanarak ilginç domain adreslerine rastlıyoruz. Yukarıdaki resimde listeye ait sadece küçük bir kısmı yer alıyor.

Sonuç

Açıkcası şuana kadarki olan kısımda istediklerimizi elde etmiş bulunuyoruz. Yukarıdaki çıktılar haricinde başka komutlar kullanarak register keys ile ilgili detaylara bakılabiliyor.

Bu kısımdan sonra daha önce elde ettiğimiz exe dosyasını tersine mühendislik yöntemlerini kullanarak unpack yapabiliriz. Konumuz tam manasıyla malware analizi olmadığı için bu kısma girmeyeceğim. Elimden geldiğince kolay ve anlaşılır bir şekilde Volatility’nin Windows üzerine kurulumunu ve kullanımı ile ilgili olarak bilgiler vermeye çalıştım.