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.
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.
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.
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.
Ç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.
Bir sonraki adımda ise pc üzerinde son çalıştırılan komutlara cmdscan
, consoles
ve cmdline
eklentilerini kullanarak bakabiliriz.
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.
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.
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.