The Sleuth Kit (TSK) uygulamaları ile dosya sistemi seviyesinde gerçekleştirilebilecek adli bilişim analizlerini ele aldığımız yazı dizimizden sonra şimdi de bu uygulamaların kullanım örneklerini ele alacağımız bir yazı dizisine başlıyoruz. Daha önce yazdığımız yazı dizimizde sırasıyla ilk makalede adli bilişim incelemelerinde dosya sistemi seviyesinde analiz yapmamıza imkan tanıyan The Sleuth Kit (TSK) uygulamalarına genel bir bakış atmış, ikinci makalede mmls ile fsstat'ın kullanımına değinmiş ve üçüncü makalede ise blkcat, blkstat, blkls gibi veri katmanı üzerinde işlem yapmamıza imkan tanıyan uygulamaları ele almıştık. Son makalemizde ise Metadata Katmanı (Metadata Layer) üzerinde işlem yapmamıza imkan tanıyan araçlar olan ifind, istat ve icat uygulamalarını incelemiştik. İlgili makaleleri okumak için aşağıdaki linklere tıklayabilirsiniz.
http://halilozturkci.com/adli-bilisim-the-sleuth-kit-tsk-ile-file-system-forensics-1
http://halilozturkci.com/adli-bilisim-the-sleuth-kit-tsk-ile-file-system-forensics-2/
http://halilozturkci.com/adli-bilisim-the-sleuth-kit-tsk-ile-file-system-forensics-3/
http://halilozturkci.com/adli-bilisim-sleuth-kit-tsk-ile-file-system-forensics-4/
Bu yazı dizimizde izlediğimiz adımları sizler de kendi sistemleriniz üzerinde takip edebilirsiniz. Örneklerde kullanacağımız imaj dosyası olan able2.dd imajını http://linuxleo.com/Files/able2.tar.gz adresinden indirebilirsiniz. Bu sıkıştırılmış dosya içinde yer alam able2.dd imaj dosyasının hash değeri aşağıdajki ekranda gösterilmiştir.

Şimdi örnek senaryomuza geçebiliriz. Bu senaryomuzda ilgili disk imajı içinde yer alan silinmiş dosyaları TSK araçları ile nasıl tanımlayabileceğimizi ve ardından bu dosyaları yine TSK araçları ile nasıl kurtarabileceğimizi göreceğiz. Senaryoyu ve senaryoda takip edeceğimiz adımları aşağıdaki şekilde özetleyebiliriz.
Amaç: able2.dd isimli disk imajı içindeki silinmiş dosyaları kurtarmak.
Araçlar: TSK uygulamaları.
Adımlar:
- Partition Table’ını Öğren (mmls)
- Dosya Sistemi Detaylarını Öğren (fsstat)
- Dosya Sisteminde Gezin (fls)
- Silinmiş Dosyaları Tespit Et (fls)
- Silinmiş Dosyaları Kurtar (icat)
Şimdi sırasıyla bu adımları izleyerek silinmiş dosyaları kurtaralım. Bu aşamada çalıştırdığımız komutlar ve komut parametreleri için ilgili aracın anlatıldığı blog yazısına bakmayı ihmal etmeyin 🙂
Öncelikle elimizdeki imajın bir disk imajı olduğundan yola çıkarak ilgili diskteki bölüm (partition) bilgisini mmls yardımı ile öğreniyoruz. Aşağıda mmls komutunun çalıştırılması sonucunda elde edilen çıktının yer aldığı ekran görüntüsü bulunmaktadır.

Bir sonraki aşamada 3 numaralı bölüm hakkında detaylı bilgiyi öğrenmek için aşağıda gösterildiği gibi fsstat uygulamasını çalıştırıyoruz ve ilgili dosya sisteminin ext2 olduğunu öğreniyoruz. Aynı zamanda ilgili disk bölümünün düzgün şekilde unmount edilmediği bilgisini de aynı çıktıdan okuyabiliyoruz.

Bir önceki adımda detaylarını öğrendiğimiz disk bölümünde hangi dosyaların yer aldığını öğrenmek için fls uygulamasını çalıştırıyoruz ve karşımıza aşağıdaki ekran görüntüsü çıkıyor.

Yukarıdaki ekran görüntüsünde yer alan dosya ve dizin isimlerinden isimlerinin ilk harfi . olan dosya ve dizin dikkatimizi çekiyor. Bu dosya ve dizin gizli (hidden) olacak şekilde oluşturulan birer dosya ve dizin. Bunu bir yere not edip analizimize devam ediyoruz. Fls uygulamasını aşağıdaki parametreler ile çalıştırarak ilgili sadece disk bölümü içinde yer alan silinmiş dosyaların listesini elde ediyoruz.

Burada yer alan ifadelerin en anlama geldiğini anlamlandırmak için fls'in ne iş yaptığını tekrardan hatırlayalım. fls "Dosya Adı Katmanı"nda çalışır ve bu fls çıktısında yer alan realloc ifadesi dosya isminin unallocated olarak işaretlendiğini gösterir. Yani, silinen dosyaya ait inode, başka bir dosyaya atanmış olabilir. Silinen dosyaya ait inode başka bir dosyaya atanmış olsa dahi bizim bu dosyaya ait dosya adı katmanındaki verileri görebiliyor olmamızın temel sebebi şudur;
- Dosya Adı Katmanı ile Metadata Katmanı birbirinden bağımsızdır fakat her bir dosya için bu iki katmanda da birer kayıt bulunur ve her bir kayıdın kendine ait bir allocation durumu vardır.
- Eğer bir dosya silindi olarak işaretlenirse (yani silinirse) bu katmanlardaki kayıtların ikisi de unallocated olarak işaretlenir. Bunun yanında eğer bir dosya "realloc" olarak işaretlenmişse bu şu anlama gelir; bu dosyaya ilişkin dosya adı unallocated, metadatası ise allocated durumdadır.
Aşağıdaki durumlar buna sebep olabilir;
- Dosyanın ismi değiştirilmişse ve yeni dosya adı için dosya adı katmanında yeni bir kayıt oluşturulmuşsa,
- NTFS tarafından isimler yeniden sıralanmışsa (bu durumda ismin eski kopyası unallocated olacaktır)
- Dosya silinmiş ve dosyaya ait metadata adresi başka bir dosyaya atanmışsa
İlk iki durumda metadata, silinen dosya adına tam karşılık gelir. Fakat üçüncü durumda metadata artık yeni dosyaya karşılık gelir.
Bu bilgiler ışığında veri kurtarma işlemine devam edelim. Örnek olarak kurtaracağımız dosya yukarıdaki çıktıda yer alan ve inode numarası 2139 olan lrkn.tgz isimli dosya. Fakat yukarıdaki çıktıyı biraz daha dikkatli incelediğimizde 2139 numaralı inode'un iki dosya ismi kaydına denk geldiğini görüyoruz. Aşağıdaki gibi ffind uygumalası ile 2139 numaralı inode'un hangi dosyaları gösterdiği bilgisine ulaşabiliriz.
root@rock:~/able2 # ffind -o 10260 able2.dd 2139
*/dev/ttYZ0/lrkn.tgz
*/root/lrkn.tgz
Her iki dosyanın da silinmiş olduğunu görüyoruz. Bu inode üzerinden istat ile detaylı bilgilere ulaştığımızda karşımıza çıkan bilgiler ise aşağıdaki ekran görüntüsünde yer almaktadır.

İlgili dosyanın 10 Ağustos 2003 tarihinde saat 04:29:58'de silindiğini görebiliriz. Aynı şekilde ilgili dosyaya ilişkin direck block bilgilerine ulaşabiliyoruz. Bu durum bizim silinen dosyaları kurtarabilme ihtimalimizi güçlendirir. Bu kurtarma işlemini gerçekleştirmek için icat uygulamasına ilgili inode bilgisini verip aşağıdaki şekilde çalıştırıyoruz ve ardından file komutunu kullanarak kurtardığımız dosyanın dosya tipi olarak nasıl göründüğünü öğreniyoruz.

Yukarıdaki çıktıdan da görülebileceği üzere silinmiş bir dosyayı başarılı şekilde kurtarabildik. Bir sonraki örnek senaryomuzda elimizdeki "dirty word list" içinde yer alan kelimelerin sabit disk imajları içinde aranıp hangi dosyaların içinde geçtiğinin bulunması senaryosunu ele alacağız.


