Memory Forensics'e Giriş
Dijital Adli Bilişim araştırmacıları, dijital kanıtlardan delil elde ederken farklı veri biçimleriyle uğraşmak zorundadır. Uçucu olmayan veri kaynaklarıyla uğraşmak kolay bir işken, aynı şeyi uçucu bellekle yapmak çok hassas ve zahmetli bir iştir. En uçucu bellek olan RAM'in elektronik cihazlardan alınması ve dijital adli soruşturma sırasında ele alınması çok zordur. RAM'de bulunan veriler, güç kaynağı kapatıldığında veya elektrik şarjı olmadığında kolayca kaybolur. RAM'in uçucu yapısı nedeniyle, dijital adli bilişim sürecinde edinim önceliğinde en üst sırada yer alır ve kanıtın bütünlüğünü korumak için profesyonel bir özenle ele alınmalıdır.
RAM'in elde edilmesi ve üzerinde adli açıdan sağlıklı bir inceleme yapılması, RAM'in genellikle aktif ve gizli işlemler, şifrelenmiş veya şifrelenmemiş parolalar dahil olmak üzere kullanıcı bilgileri ve çok daha fazlası gibi yararlı bilgiler içermesi nedeniyle dijital adli incelemenin önemli bir parçasıdır.
Adli Bellek, dijital cihazlardan elde edilen bellek dosyalarının analizidir. Adli Bellek Analizinin birincil amacı, RAM'den adli olarak sağlam kanıtların hazırlanmasına yardımcı olacak yararlı bilgiler elde etmektir.
Artık Memory Forensics hakkında bir anlayışa sahip olduğumuza göre, Volatility Framework ile başlayalım.
Volatilite Framework'ünün Kurulması
Volatility, adli araştırmacılara bellek görüntülerinden alınan zengin bilgiler sağlayan çok sayıda yararlı eklentiden oluşan güçlü bir dijital adli bilişim ve olay müdahale aracıdır. Volatility, Python'u destekleyen herhangi bir büyük işletim sisteminde çalıştırılabilen çapraz platformlu bir araç olmasına rağmen, zahmetli bir iş olan gerekli bağımlılıkları veya dosyaları ek olarak yüklememiz gerekmediğinden Kali Linux'ta kullanacağız. Volatility, aşağıdakiler dahil olmak üzere birden fazla görüntü dosyası formatını analiz etmek için kullanılabilir:
Volatility kali linux üzerinde apt ile indirilebilir.
Eğer apt deponuzda mevcut değilse, doğrudan volatility foundation web sitesinden indirebilir ve manuel olarak kurabilirsiniz. İndirilip başarıyla kurulduysa, terminalinizde kurulumu doğrulayın:
Artık her şey yapılandırıldığına ve ortam hazır olduğuna göre, test etmek için bir bellek dosyasına ihtiyacımız var. Bu makalede, Abhiram Kumar tarafından hazırlanan Memlabs Memory Forensic CTF Görüntülerinden, dijital adli bilişim alanına yeni başlayan veya bellek adli bilişim becerilerini geliştiren herkes için ücretsiz olarak sunulan bir giriş sınavını kullanacağız. Çözeceğimiz görev "Lab 0: Never Too Late Mister" olup zorluk derecelendirmesinde "Örnek Görev" olarak işaretlenmiştir ve başlamak için mükemmel bir noktadır.
İndirin: MemLabs Lab 0 - Never Too Late Mister
Görev için bir google sürücü bağlantısı sağlayan GitHub sayfasından indirin ve daha ileri gitmeden önce görev açıklamasını okuyun.
Never Too Late Mister
"Arkadaşım John bir "çevre" aktivisti ve yardımseverdir. Avengers filmindeki Thanos'un ideolojisinden nefret ederdi: Sonsuzluk Savaşı. Programlama konusunda berbattır. Herhangi bir programı yazarken çok fazla değişken kullanır. Bir gün John bana bir memory dump verdi ve dump alırken ne yaptığını bulmamı istedi. Bunu benim için çözebilir misin?"
Zorluğun tanımı "çevresel" kelimesine vurgu yapıyordu. Bununla birlikte akla gelen ilk şey Ortam Değişkenleridir. "John" ismi de Karındeşen John'un yarışmanın bir noktasında kullanılabileceği ihtimalini yaratıyor. Doğru olmayabilir, ama bunu aklımızda tutalım.
Yarışma dosyasını açın ve çıkardıktan sonra ham bir görüntü dosyası elde edeceksiniz.
Şimdi bu meydan okuma dosyasında volatiliteyi kullanmaya başlayacağız ve bayrağı alacağız.
Volatiliteye Başlarken
Bilmek isteyebileceğimiz ilk şey, görüntü dosyası hakkında temel bilgilerdir. Bunun için volatility'deki imageinfo eklentisini kullanabiliriz.
imageinfo eklentisi bize işletim sistemlerinin bellek döküm dosyasına ilişkin tahminleri olan önerilen profilleri sağlar. Diğer volatilite eklentilerini kullanmak için bellek dosyasının profilini almak çok önemlidir. Genellikle birden fazla işletim sistemi tahmin eder, genellikle ilk birkaç tanesi doğru olanlardır. İlk profil diğer eklentilerle çalışmıyor gibi görünüyorsa, diğer tahminlere basın ve deneyin.
Şimdi her zaman aradığımız bir sonraki faydalı bilgi, bellek sistemden döküldüğünde aktif olan işlemlerin listesidir ve soruşturma sürecinde cazip veya yararlı olabilecek genel hizmetlerden öne çıkan herhangi bir hizmeti arayın. Süreçlerin listesini pslist eklentisi ile alabiliriz.
Profil seçeneği, bellek dosyasının işletim sistemini belirtmek içindir. Bu imageinfo eklentisinden elde edilmiştir. Şimdi, bellek dökümü alındığında sistemde çalışan işlemlerin tam listesini aldık. Bu işlem listesi arasında öne çıkan belirli bir hizmet cmd.exe hizmetidir.
Normal bir kullanıcı, CLI üzerinde bazı komutları çalıştırması gerekmedikçe genellikle komut istemini kullanmaz. Volatility ile komut isteminde hangi komutların çalıştırıldığını bile alabiliriz. Bu cmdscan eklentisi ile yapılabilir.
İlk cmd komutu, sistemde oturum açan "hello" kullanıcısı tarafından bir python betiğinin çalıştırılmasını sağlıyor. Eğer betiğe hangi argümanların aktarıldığını ve hangi çıktıların alındığını öğrenebilirsek bu noktadan devam edebiliriz. Bu volatility'deki consoles eklentisi ile elde edilebilir.
Çıktı ilginç görünüyor. Dize uzunluğuna bağlı olarak, muhtemelen bir hex dizesi veya belki başka bir şifreli metin olabilir. Bunun bir hex dizesi olup olmadığını görmek için CyberChef web sitesini kullanabiliriz.
Belki de onaltılık bir dizge değildir. Görev tanımını okuduğumuzda aklımıza gelen ilk düşünceye geri dönmenin zamanı geldi. Görev, ortam değişkenlerine işaret ediyordu. Belki orada bizi ilgilendiren bir şey bulabiliriz. Ortam değişkenleri envars eklentisi ile dökülebilir.
Güzel. Şimdi 2 ipucumuz var, xor ve şifre. Belki de python betiğinden aldığımız çıktı bir xor şifreleme metniydi. CyberChef'te XOR kaba kuvvetini kullanabilir ve bunun doğru yol olup olmadığını görebiliriz.
Bayrağın diğer yarısını da aldık! Ortam değişkenlerinden elde ettiğimiz diğer ipucu " password" idi. Belki kullanıcı şifrelerinden bir şeyler elde edebiliriz. Kullanıcı şifrelerini hashdump eklentisi ile alabiliriz.
Komut istemcisinin çıktısından hatırlarsanız. "hello" sistemdeki mevcut oturum açmış kullanıcı idi. Muhtemelen, eğer bu hash'i kırabilirsek, bayrağımızın ilk yarısını elde edebilir ve zorluğu çözebiliriz. Hash'i kırmak için CrackStation veya JohnTheRipper kullanabilirsiniz. Ancak, bu hash'i kırmak artık mümkün değildir, çünkü yazar tarafından bu yarışmayı oluşturmak için kullanılan hash veritabanı artık mevcut değildir.
Dijital Adli Bilişim araştırmacıları, dijital kanıtlardan delil elde ederken farklı veri biçimleriyle uğraşmak zorundadır. Uçucu olmayan veri kaynaklarıyla uğraşmak kolay bir işken, aynı şeyi uçucu bellekle yapmak çok hassas ve zahmetli bir iştir. En uçucu bellek olan RAM'in elektronik cihazlardan alınması ve dijital adli soruşturma sırasında ele alınması çok zordur. RAM'de bulunan veriler, güç kaynağı kapatıldığında veya elektrik şarjı olmadığında kolayca kaybolur. RAM'in uçucu yapısı nedeniyle, dijital adli bilişim sürecinde edinim önceliğinde en üst sırada yer alır ve kanıtın bütünlüğünü korumak için profesyonel bir özenle ele alınmalıdır.
RAM'in elde edilmesi ve üzerinde adli açıdan sağlıklı bir inceleme yapılması, RAM'in genellikle aktif ve gizli işlemler, şifrelenmiş veya şifrelenmemiş parolalar dahil olmak üzere kullanıcı bilgileri ve çok daha fazlası gibi yararlı bilgiler içermesi nedeniyle dijital adli incelemenin önemli bir parçasıdır.
Adli Bellek, dijital cihazlardan elde edilen bellek dosyalarının analizidir. Adli Bellek Analizinin birincil amacı, RAM'den adli olarak sağlam kanıtların hazırlanmasına yardımcı olacak yararlı bilgiler elde etmektir.
Artık Memory Forensics hakkında bir anlayışa sahip olduğumuza göre, Volatility Framework ile başlayalım.
Volatilite Framework'ünün Kurulması
Volatility, adli araştırmacılara bellek görüntülerinden alınan zengin bilgiler sağlayan çok sayıda yararlı eklentiden oluşan güçlü bir dijital adli bilişim ve olay müdahale aracıdır. Volatility, Python'u destekleyen herhangi bir büyük işletim sisteminde çalıştırılabilen çapraz platformlu bir araç olmasına rağmen, zahmetli bir iş olan gerekli bağımlılıkları veya dosyaları ek olarak yüklememiz gerekmediğinden Kali Linux'ta kullanacağız. Volatility, aşağıdakiler dahil olmak üzere birden fazla görüntü dosyası formatını analiz etmek için kullanılabilir:
- Windows dökümleri
- Virtualbox dökümleri
- Vmware dökümleri (.vmem)
- Raw bellek (.dd)
- Expert Witness Format (.EWF)
Volatility kali linux üzerinde apt ile indirilebilir.
sudo apt install volatility
Eğer apt deponuzda mevcut değilse, doğrudan volatility foundation web sitesinden indirebilir ve manuel olarak kurabilirsiniz. İndirilip başarıyla kurulduysa, terminalinizde kurulumu doğrulayın:
volatility -h (help)
Artık her şey yapılandırıldığına ve ortam hazır olduğuna göre, test etmek için bir bellek dosyasına ihtiyacımız var. Bu makalede, Abhiram Kumar tarafından hazırlanan Memlabs Memory Forensic CTF Görüntülerinden, dijital adli bilişim alanına yeni başlayan veya bellek adli bilişim becerilerini geliştiren herkes için ücretsiz olarak sunulan bir giriş sınavını kullanacağız. Çözeceğimiz görev "Lab 0: Never Too Late Mister" olup zorluk derecelendirmesinde "Örnek Görev" olarak işaretlenmiştir ve başlamak için mükemmel bir noktadır.
İndirin: MemLabs Lab 0 - Never Too Late Mister
Görev için bir google sürücü bağlantısı sağlayan GitHub sayfasından indirin ve daha ileri gitmeden önce görev açıklamasını okuyun.
Never Too Late Mister
"Arkadaşım John bir "çevre" aktivisti ve yardımseverdir. Avengers filmindeki Thanos'un ideolojisinden nefret ederdi: Sonsuzluk Savaşı. Programlama konusunda berbattır. Herhangi bir programı yazarken çok fazla değişken kullanır. Bir gün John bana bir memory dump verdi ve dump alırken ne yaptığını bulmamı istedi. Bunu benim için çözebilir misin?"
Zorluğun tanımı "çevresel" kelimesine vurgu yapıyordu. Bununla birlikte akla gelen ilk şey Ortam Değişkenleridir. "John" ismi de Karındeşen John'un yarışmanın bir noktasında kullanılabileceği ihtimalini yaratıyor. Doğru olmayabilir, ama bunu aklımızda tutalım.
Yarışma dosyasını açın ve çıkardıktan sonra ham bir görüntü dosyası elde edeceksiniz.
Şimdi bu meydan okuma dosyasında volatiliteyi kullanmaya başlayacağız ve bayrağı alacağız.
Volatiliteye Başlarken
Bilmek isteyebileceğimiz ilk şey, görüntü dosyası hakkında temel bilgilerdir. Bunun için volatility'deki imageinfo eklentisini kullanabiliriz.
volatility -f Challenge.raw (girdi dosyası) imageinfo
imageinfo eklentisi bize işletim sistemlerinin bellek döküm dosyasına ilişkin tahminleri olan önerilen profilleri sağlar. Diğer volatilite eklentilerini kullanmak için bellek dosyasının profilini almak çok önemlidir. Genellikle birden fazla işletim sistemi tahmin eder, genellikle ilk birkaç tanesi doğru olanlardır. İlk profil diğer eklentilerle çalışmıyor gibi görünüyorsa, diğer tahminlere basın ve deneyin.
Şimdi her zaman aradığımız bir sonraki faydalı bilgi, bellek sistemden döküldüğünde aktif olan işlemlerin listesidir ve soruşturma sürecinde cazip veya yararlı olabilecek genel hizmetlerden öne çıkan herhangi bir hizmeti arayın. Süreçlerin listesini pslist eklentisi ile alabiliriz.
volatility -f Challenge.raw (girdi dosyası) --profile=Win7SP1x86_23418 pslist
Profil seçeneği, bellek dosyasının işletim sistemini belirtmek içindir. Bu imageinfo eklentisinden elde edilmiştir. Şimdi, bellek dökümü alındığında sistemde çalışan işlemlerin tam listesini aldık. Bu işlem listesi arasında öne çıkan belirli bir hizmet cmd.exe hizmetidir.
Normal bir kullanıcı, CLI üzerinde bazı komutları çalıştırması gerekmedikçe genellikle komut istemini kullanmaz. Volatility ile komut isteminde hangi komutların çalıştırıldığını bile alabiliriz. Bu cmdscan eklentisi ile yapılabilir.
volatility -f Challenge.raw --profile=Win7SP1x86_23418 cmdscan
İlk cmd komutu, sistemde oturum açan "hello" kullanıcısı tarafından bir python betiğinin çalıştırılmasını sağlıyor. Eğer betiğe hangi argümanların aktarıldığını ve hangi çıktıların alındığını öğrenebilirsek bu noktadan devam edebiliriz. Bu volatility'deki consoles eklentisi ile elde edilebilir.
volatility -f Challenge.raw --profile=Win7SP1x86_23418 consoles
Çıktı ilginç görünüyor. Dize uzunluğuna bağlı olarak, muhtemelen bir hex dizesi veya belki başka bir şifreli metin olabilir. Bunun bir hex dizesi olup olmadığını görmek için CyberChef web sitesini kullanabiliriz.
Belki de onaltılık bir dizge değildir. Görev tanımını okuduğumuzda aklımıza gelen ilk düşünceye geri dönmenin zamanı geldi. Görev, ortam değişkenlerine işaret ediyordu. Belki orada bizi ilgilendiren bir şey bulabiliriz. Ortam değişkenleri envars eklentisi ile dökülebilir.
volatility -f Challenge.raw --profile=Win7SP1x86_23418 envars
Güzel. Şimdi 2 ipucumuz var, xor ve şifre. Belki de python betiğinden aldığımız çıktı bir xor şifreleme metniydi. CyberChef'te XOR kaba kuvvetini kullanabilir ve bunun doğru yol olup olmadığını görebiliriz.
Bayrağın diğer yarısını da aldık! Ortam değişkenlerinden elde ettiğimiz diğer ipucu " password" idi. Belki kullanıcı şifrelerinden bir şeyler elde edebiliriz. Kullanıcı şifrelerini hashdump eklentisi ile alabiliriz.
volatility -f Challenge.raw --profile=Win7SP1x86_23418 hashdump
Komut istemcisinin çıktısından hatırlarsanız. "hello" sistemdeki mevcut oturum açmış kullanıcı idi. Muhtemelen, eğer bu hash'i kırabilirsek, bayrağımızın ilk yarısını elde edebilir ve zorluğu çözebiliriz. Hash'i kırmak için CrackStation veya JohnTheRipper kullanabilirsiniz. Ancak, bu hash'i kırmak artık mümkün değildir, çünkü yazar tarafından bu yarışmayı oluşturmak için kullanılan hash veritabanı artık mevcut değildir.