NTFS $I30 Files Attributes Analizi
NTFS dosya sistemi analizi konusunda $MFT dosyasının nasıl parse edilip analiz edildiğinden bahsettim (https://www.muhammedaygun.com/2022/08/ntfs-new-technologies-file-system-dosya.html) Bu blog yazımda ise FTK Imagerda bazı dizinlerin içerisinde görmüş olduğumuz $I30 dosyasının ne olduğu ve nasıl parse edilip analiz edildiği hakkında bilgi vereceğim.
NTFS Index Attributes olarak bilinen $I30 , dosyası Microsoft tarafından NTFS dosya sisteminin bozulmasını engelleyerek bütünlük sağlamak için geliştirilmiş bir sistem dosyasıdır. NTFS dosya sistemi dosyaların yerlerini indexlemek için B-tree indexlemeyi kullanıcı ve büyük veri kümelerinin verimli bir şekilde depolanmasını ve çok hızlı aramalar yapmasını sağlar. $I30 dosyası dizine ait olan tüm dosyaları, dizinlerin index kaydını tutar. Dosya veya dizin ilgili dizinden kaldırıldıktan sonra $I30 dizin kayıtları buna göre yeniden düzenler ancak dizin kayıtlarının yeniden düzenlenmesi bir alan içinde silinen dosya/klasör girişinin kalıntılarını bırakabilir. Bundan dolayı forensics bakış açısı ile bu dizinde var olabilecek dosyaları belirlemek için analize faydalı olabilir. $I30 dosya farklı farklı dizinlerde karşımıza çıkabilir çünkü her dizin için farklı index içerecektir.
NTFS Master File Table (MFT) dosyası girişlerine benzer şekilde, dosya silme gerçekleştiğinde B-tree içindeki dizin girişleri tamamen kaldırmaz. Bunun yerine, karşılık gelen bir $BITMAP özniteliği kullanılarak silinmiş olarak işaretlenir. B-tree yeniden dengelenmesinin diğer bir yanı da genellikle ayrılmamış düğümlerdeki verilerin üzerine yazılmasıyla sonuçlanmasıdır. $I30 dosyaları $FILE_NAME öznitelik (attribute) zaman damgaları olması $STANDART_INFORNATION zaman damgalarının olmamasıdır.
$I30 Analiz edilmesi
$I30 dosyasını analiz etmek için ilk olarak dosyayı elde etmemiz gerekmektedir ilgili dosyayı elde etmek için FTK Imager tool kullanabiliriz. $I30 dosyası her dizinde bulunabileceğinden bahsettik ben bu blog yazımda C:UsersMAmaygun dizininde bulunana $I30 dosyasını parse edip analizini gerçekleştireceğim.
İlk olarak FTK Imager tool’umuzu çalıştırıyoruz ve diskimizi içeri import ediyoruz.
Daha sonra ilgili dizine gidip $I30 dosyasını görüyoruz sağ tıklayıp istediğimiz konuma export alıyoruz.
Böylelikle $I30 dosyasını elde edebiliyoruz.
İlgili dosyayı elde ettikten sonra Willi Ballenthin tarafından oluşturulan open source INDXParse (https://github.com/williballenthin/INDXParse) aracını kullanacağız.
INDXParse aracı $I30 dosyasını parse ederek CSV, XML dosyas çıktıları sunmaktadır. Bu araç python dilinden yazılmıştır bu aracı kullanmadan önce analizi gerçekleştireceğiniz bilgisayarda Python kurulu olmasına dikkat edin.
$I30 attributes parse işlemi gerçekleştirdiğimiz zaman silinen dosyalar, değiştirilen dosyaları tespit etmemiz mümkündür.
FTK Imager ile $I30 dosyasını elde ettikten sonra INDXParse aracını kullanabiliriz.
-h parametresini kullanarak kullanabileceğimiz parametleri ve ne işe yaradıklarını görebiliyoruz.
Daha sonra python .INDXParse.py -d I30 > maygun.csv komutunu yazıp çalıştırıyorum. ($ karakterini siliyorum ki parse işleminde herhangi bir hata ile karşılaşamamak için)
Komut çalıştıktan sonra karşıma vermiş olduğum isimde csv dosyası oluştu.
Csv dosyansın içeriği bu şekilde karşımıza gelmektedir.
Şimdi ise ilgili dizene gidip hangi dosyaların olduğunu görmek
Görüldüğü gibi dizinde biz 5 tane dosya görmekteyiz. $I30 dosyası parse edildiğinde ise karşımıza 9 dosya çıktığını görüyoruz böylelikle $I30 attributes parse işlemi gerçekleştirdiğimiz zaman silinen dosyalar, değiştirilen dosyaları nasıl tespit edebileceğimizi gösterdik 🙂
Parser Tool: https://github.com/williballenthin/INDXParse
Kaynak:
[1] https://www.sans.org/blog/ntfs-i30-index-attributes-evidence-of-deleted-and-overwritten-files/
[2] https://docs.google.com/presentation/d/1AWsQtEWwSq8bjvFN-DmASNUKIieijJfNIzrQqH1O4po/htmlpresent?pli=1