Try Hack Me Volatility çözümü
Bu blog yazımda; Try Hack Me platformunda bulunan, Volatility ile RAM içerisinde incelemenin nasıl yapıldığını anlatan odanın çözümünü anlatacağım.
Bu oda bizlere; Intro, Obtaining Memory Samples, Examining Our Patlent, Post Actions, Extra Credit olmak üzere 5 farklı görev vermektedir gelin birlikte bu görevleri gerçekleştirelim.
Görev-1:
Volatilite, Volatilite laboratuvarları tarafından geliştirilen ve sürdürülen ücretsiz bir bellek(Ram) inceleme aracıdır. Olay müdahalesinde forensics açısından için altın standart olarak kabul edilen Volatility, bir eklenti sistemi aracılığıyla genişletilebilir ve Mavi takım için paha biçilmez bir araçtır.
Bu oda için sanal makine https://darkstar7471.com adresinden de indirilebilir, makinenin kimlik bilgileri aşağıdaki gibidir: voluser: volatility
Volatility’yi istediğiniz iş istasyonunuza kurun veya sağlanan sanal makineyi kullanın. Kali gibi Debian tabanlı sistemlerde bu, “apt-get install volatility” aracılığıyla yapılabilir.
Burada bize volatilty hakkında genel bir bilgi vermektedir deploy butonuna tıklayarak hedef makinemizi aktifleştirdikten sonra görevi tamamlıyoruz.
Görev-2
(RAM örneklerinin elde edilmesi)
( Makinelerde bir RAM imajı almanın çeşitli yolları vardır, en kolay yöntem genellikle ne ile çalıştığınıza bağlı olarak değişir. Canlı makinelerde(açık olan) ram imajı aşağıdakiaraçlardan biriyle yakalanabilir;
· FTK Imager –link
· Redline –link
· Dumpl.exe
· Win32dd.exe / win64dd.ex
Bu yukardaki araçlar tipik olarak, sistem belleğinin bir görüntüsünü içeren bir .raw dosyası çıkarır. .raw biçimi, en yaygın bellek dosyası türlerindendir.
Çevirmdışı makineler, sürücüleri şifrelenmediği sürece belleklerini nispeten daha kolay çekebilir. Windows sistemleri için bu, aşağıdaki dosya çekilerek yapılabilir;
%SystemDrive%/hiberfil.sys
Windows hazırda bekletme dosyası olarak bilinen hiberfil.sys, önceki önyüklemeden sıkıştırılmış bir bellek görüntüsü içerir. Microsoft Windows sistemleri, daha hızlı başlatma süreleri sağlamak için bunu kullanır, ancak bu dosyayı bizim durumumuzda bazı uzmanlar kullanmaktadır.
Sanal makinelerde ram imajı almak biraz daha zorlaştırıyor. Farklı sanal makine hipervizörleri için bir bellek görüntüsü içeren bellek yakalama dosyaları aşağıda verilmiştir;
· VMware- .vmem file
· Hyper-V- .bin file
· Paralles- .mem file
· VirtualBox- .sav file
Bu dosyalar genellikle karşılık gelen hiper yöneticinin veri deposunda bulunabilir ve genellikle ilişkili sanal makine kapatılmadan basitçe kopyalanabilir. Bu sanal makinenin imaj bütünlüğünü koruyarak sanal makineye neredeyse sıfır müdahale sağlar.
Açıklamayı okuduktan sonra soruların çözümlerine geçebiliriz.
(ram incelenmsini yapmak istedğimiz Windows sistem yanlışlıkla kapatıldı. Hangi dosya sıkıştırılmış bir bellek görüntüsü içerir ?)
(VMware tabanlı bir sanal makinede ram incelenemsi yapmak , istersek dosya uzantısı ne olur ?)
Şimdi hafıza resmimizi topladığımıza göre, onu inceleyelim! Bu etkinlik için kendi iş istasyonunu kullananlar için, bu göreve ekli bellek örneğimize bir indirme bağlantısı sağladım. Bu aktivite için VM olarak sağladığım iş istasyonunu kullanıyorsanız, bellek görüntüsünü ‘voluser’ ana dizininde bulacaksınız.
Açıklamayı okuduktan sonra sorulara geçelim.
İlk önce hangi profili kullanmamız gerektiğini bulalım. Her Windows sürümü biraz farklı olduğundan, profiller Volatility’nin bellek imajımıza nasıl davrandığını belirler. Şimdi `volatility -f MEMORY_FILE.raw imageinfo` komutuyla seçeneklerimizi görelim.
Bu görevi yapmadan önce ilk olarak githubtan volatility makinemize klonluyoruz daha sonra indirmiş olduğumuz ram imajını volality klasörü içerisine atıyoruz.
Komutu yazdıktan sonra profilin WinXPSP2x86 olduğu gördük
Volatility’de imageinfo komutunu çalıştırmak bize test edebileceğimiz bir dizi profil sağlayacaktır, ancak yalnızca biri doğru olacaktır. Bu profilleri pslist komutunu kullanarak test edebilir, profil seçimimizi döndürülen sonuçların sayısıyla doğrulayabiliriz. Bunu şimdi `volatility -f MEMORY_FILE.raw –profile = PROFILE pslist` komutu ile yapın. Bu hafıza görüntüsü için hangi profil doğru?
Burada bizden daha önce imageinfo parametresiyle bulmuş olduğumuz WinXPSP2x86 ne olduğunu sormaktadır daha sonraki volatility komutlarında profile değerine WinXPSP2x86 girileceğinden çok önemlidir.
Resmimizdeki süreçlere bir göz atın. Smss.exe işlemi için işlem kimliği nedir? Sonuçlar ekran dışına kayıyorsa, çıktınızı daha az
Aktif süreçleri görüntülemeye ek olarak, görüntü oluşturma sırasında aktif ağ bağlantılarını da görebiliriz! Şimdi bunu `volatility -f MEMORY_FILE.raw –profile = PROFILE netscan` komutu ile yapalım. Ne yazık ki, komut netscan onu desteklemediğinden, hedef işletim sisteminin çok eski olması nedeniyle burada harika olmayan bir şey olacak.
Kötü amaçlı yazılımların kendisini ve onunla ilişkili süreci gizlemeye çalışması oldukça yaygındır. Bununla birlikte, kasıtlı olarak gizlenmiş süreçleri `psxview` komutu ile görüntüleyebiliriz. Hangi süreçte yalnızca bir ‘Yanlış’ listelenmiştir?
Gizli işlemleri psxview aracılığıyla görüntülemeye ek olarak, bunu ‘ldrmodules’ komutuyla daha büyük bir odaklanarak kontrol edebiliriz. Burada ortada InLoad, InInit, InMem olmak üzere üç sütun görünecektir. Bunlardan herhangi biri yanlışsa, o modül muhtemelen enjekte edilmiştir ki bu gerçekten kötü bir şeydir. Normal bir sistemde yukarıdaki grep ifadesi hiçbir çıktı döndürmemelidir. Hangi işlemin üç sütunu da ‘Yanlış’ olarak listelenmiş (Sistem dışında)?
Bir makineyi incelerken ilgilendiğimiz tek alan süreçler değildir. ‘Apihooks’ komutunu kullanarak, standart sistem DLL’lerindeki beklenmedik yamaları görebiliriz. Hooking modülünün olduğu bir örnek görürsek: <unknown> bu gerçekten kötü. Bu komutun çalışması biraz zaman alacak, ancak size kötü amaçlı yazılımın getirdiği tüm yabancı kodları gösterecektir.
Enjekte edilen kod büyük bir sorun olabilir ve çok çok kötü şeylerin büyük ölçüde göstergesidir. Bunu “malfind” komutu ile kontrol edebiliriz. Tam `volatility -f MEMORY_FILE.raw –profile = PROFILE malfind -D <Destination Directory> ‘komutunu kullanarak bu kodu sadece bulamayız, aynı zamanda belirttiğimiz dizine dökebiliriz. Bunu şimdi yapalım! Bu dökümü daha sonra daha fazla analiz için kullanacağız. Bu kaç dosya oluşturur?
Burada konumunu tmp olarak veriyoruz daha sonra tmp dizini içerisinde kaç tane dosya oluşturduğunu sayıp cevaplıyacağız.
Son fakat kesinlikle en az değil, belleğe yüklenen tüm DLL’leri görebiliriz. DLL’ler, sistem işlemlerinde kullanılan paylaşılan sistem kitaplıklarıdır. Bunlar genellikle kaçırma ve diğer yandan yükleme saldırılarına maruz kalır ve bu da onları adli tıp için kilit bir hedef haline getirir. Şimdi hafızadaki tüm DLL’leri `dlllist` komutuyla listeleyelim.
Artık bellekte çalışan tüm DLL’leri gördüğümüze göre, bir adım daha ileri gidelim ve onları dışarı çekelim! Bunu şimdi “ volatility -f MEMORY_FILE.raw –profile = PROFILE –pid = PID dlldump -D <Destination Directory> ” komutuyla yapın; burada PID, daha önce tanımladığımız virüslü işlemin işlem kimliğidir (soru beş ve altı ). Bu kaç tane DLL çekiyor?
Zararlı yazılım olan csrss.exe nin pid sini bulmak için ;
Daha sonra bulduğumuz pid yi çalıştırdık
Daha sonra dll leri listelemek için tmp maili içerisinde ls komutumuzu çalıştırdık ve dllleri listeledik toplamda 12 tane dll dosyasıyla karşılaştık.
Görev-4
Şimdi bazı temel adli tıp çalışmaları yaptığımıza göre, bir adım daha ileri gidelim ve topluluğun genel olarak keşfettiğimiz öğeler hakkında neler söyleyeceğini görelim. Aşağıdaki iki siteye göz atın ve önceki bölümümüzden çıkardığımız enjekte edilen kodu yükleyin. Bu kodu, yukarıdaki kutuyla birlikte SCP aracılığıyla, yerel değişkenlik iş istasyonunuz aracılığıyla veya bu göreve eklenmiş bir indirme bağlantısı aracılığıyla alabilirsiniz.
Örneğimize hangi kötü amaçlı yazılım bulaştı? Bunu VirusTotal ve Hybrid Anaylsis’in sonuçlarında bulabilirsiniz.
İlk olarak dll dosyamızın md5 hash bilgisini aldık daha sonra hybrid-analysis programı ile inceledik.