Volatility ile Memory Forensics İşlemleri

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.

Volatility ile Memory Forensics İşlemleri

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 çıktısı

Yukarıdaki 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ı şu ana 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.