NTFS $I30 Files Attributes Analizi
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:\Users\MA\maygun 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