Adli bilişim alanında herhangi bir suçu ya da olayı tespit etmek için disk analizi yapılmaktadır. Daha önceki makalelerimde bahsettiğim dosya sistemleri kısmında bir çok farklı dosya sistemi olduğunu öğrendik. Farklı dosya sistemi olmasının yanında bu farklı dosya sistemlerinin analiz yöntemleri de farklı olmaktadır.
Bu makalemde NTFS dosya sistemi içerisinde yer alan MFT(Master File Table)’nin adli bilişim açısından önemine ve analizi kısımlarına değineceğim.
MFT(Master File Table)
MFT İşletim sistemleri üzerinde oluşturulan tüm dosyalar için kendi içerisinde bir kayıt barındırmaktadır.
MFT, NTFS dosyasının temelini oluşturur ve NTFS’in kalbi olarak bilinmektedir.
Daha anlaşılır olabilmesi için şu şekilde anlatabilirim;
- Örneğin işletim sistemi üzerinde yeni oluşturulan herhangi bir dosya(kadir.txt, rapor.docx, foto.jpeg…) için MFT üzerinde bir kayıt açılır. Ve bu oluşturulan dosyalar buraya kayıt edilir.
İstenilen yani talep edilen dosyaların kullanıcılara sunulması için yerlerinin belirli olması gerekmektedir. MFT ise bu dosyaları kendi üzerine kayıt ediyor ve istenilen yanıtı bizlere getiriyor.
MFT tablosu üzerinde yer alan dosyaların özellikleri nelerdir?
MFT tablosunda tutulan her bir dosya için şu veriler bulunur;
- dosyanın nerede yer aldığı,
- içerisinde bulunan veriler,
- metadata bilgisi (Metadata bilgisi dosyaların detaylı bilgilerini içerisinde barındırmaktadır. İçeriğinde dosyanın oluşturulma tarihi, erişilme tarihi, değiştirilme tarihleri, üzerinde oynama yapılma durumları gibi bir çok bilgi MFT tablosu içerisinde yer almaktadır.)
MFT tablosu üzerinde ne kadar kayıt tutulabilir ?
MFT tablosu üzerinde istenildiği kadar oluşturulan sonsuz bir tablo olarak düşünebilirsiniz. Yani biz ne kadar dosya oluşturursak oluşturalım alt kısma sonsuza kadar tablo oluşturulabiliriz.
Burada bilinmesi gereken ve bizim için önemli olan konu ise şudur. $MFT dosyası üzerinde yer alan ilk 16 tablo sistemin çalışması için daha önceden rezerve edilmiştir. Bu nedenle buraya veri yazamayız ve içeriğini değiştiremeyiz.
Yukarıdaki görselde MFT içerisinde rezerve edilen ilk 16 kayıt ve bu kayıtların isimlerini görebilirsiniz.
Bu ilk 16 kayıt içerisinde bizim için önemli olan 3 dosyadan bahsetmek istiyorum. Bunlar $MFT, $LogFile ve $USNjrnl dosyalarıdır.
- $MFT: Bu dosya MFT parse işlemini yapmak istediğimiz zaman kullanacağımız dosyadır. Bu dosya içerisinde aynı şekilde tüm bilgiler yer almaktadır. Tüm MFT kayıtları burada bulunmaktadır. Eğer filtreli şekilde bilgileri çekmek istersek diğer 15 kayıt içerisinde bulunan dosyaları parse edebiliriz.
- $LogFile: Sistem çökmesi ya da elektrik kesintileri durumunda dosya sisteminin bozulmaması için kullanılmaktadır. Bu dosya içerisinde de dosyalara ait verileri elde edebiliriz.
- $USNjrnl: Microsoft dosya güvenirliği açısından NTFS içerisine journal(günlük) kayıt dosyası eklemiştir. Yapılan tüm işlemlerin log kayıtlarının tutulduğu özel bir dosyadır. Herhangi bir sistem çökmesi durumunda burada yer alan kayıtlar kullanılarak bilgilerin kurtarılmasına olanak sağlamaktadır.
MFT’nin Yapısı
Her yeni dosya oluştuğunda bu tablo üzerinde yeni bir kayıt oluştuğundan bahsetmiştik.
Burada oluşan kayıttan kastım şudur;
- Biz masaüstünde yeni bir dosya oluşturduk diyelim ve bu dosya $MFT tablosu içerisine kaydedildi. Bu kayıt MFT üzerine şu şekilde başlıklar halinde kaydedilir.
- MFT Header (MFT başlığı),
- Standart İnfo Attribute (standart bilgi özniteliği),
- FileName attribute (dosya adı özniteliği),
- Volume Attribute (hacim özniteliği),
- Data Attribute (veri özniteliği),
- >Other attribute
- >Other attribute
- >Other attribute
Yukarıda yer alan kısımda en önemli bilgiler 2, 3 ve 5. kısımlardır.
2) Standart İnfo Attribute: Burada şu bilgiler bulunur;
- Dosyaya son erişilme (access) tarihi,
- Dosyaya son yazılma (modifiied) tarihi,
- Dosya oluşturulma(create) tarihi gibi bilgiler yer almaktadır.
3) FileName Attribute: Bu kısımda da “Standart İnfo Attribute” ile aynı bilgiler yer alır.
- Dosya adı,
- Dosyaya son erişilme (access) tarihi,
- Dosyaya son yazılma (modifiied) tarihi,
- Dosya oluşturulma(create) tarihi gibi bilgiler yer almaktadır.
5) Data Attribute:
Bizim oluşturduğumuz data içerisinde bulunan veriler burada yer almaktadır.
Burada önemli olan şey oluşturulmuş olan dosyanın boyutu 700-800 byte arası bir değerden küçükse MFT tablosunun içerisinde tutulmaktadır.
MFT içerisinde oluşturulan bir veriye varsayılan olarak 1024 byte değer atanır. Eğer bu datanın içerisine hiçbir şey koymasak bile 1024 byte değer olmuş olacak. Bu yüzden 700-800 byte arasında oluşan veri için yeni bir tablo oluşturmak yerine, bu tablo içerisine sığdırabilirsiniz.
- Örnekleyecek olursak; Diyelim ki biz yeni bir dosya oluşturduk bunun adı da “dersadı.txt” olsun. Bu dosya MFT tablosu içerisine eklenmiş oldu. Eğer bu dosyanın içerisine girip 700-800 byte dan küçük bir veri koyarsak, içerisine Matematik yazmış olalım. Dosya içerisine yazmış olduğumuz Matematik verisi MFT tablosunda “Data Attribute” kısmında görüntülenmektedir.
- Böylece içerisine yazmış olduğumuz dosyayı da ayrıca yeni bir MFT tablosu içerisine kaydetmemiş oluruz.
Standart İnfo Attribute ve FileName Attribute veri bilgileri neden aynı ?
Bu iki attribute arasında aynı bilgilerin iki yerde de bulunmasının nedeni şudur ;
Saldırganlar dosyalar üzerinde anti-forensic yöntemleri uygulayabilmektedir. Yani dosya bilgilerini değiştirerek hem kendilerini gizleyebilir hem de analizcilerin işini zorlaştırabilirler.
- Saldırganlar Standart İnfo Attribute kısmında bulunan verileri yetkileri olmadan rahatlıkla değiştirebilirler. Ve hem işleri zorlaştırıp hem de kendilerini gizlemiş olurlar. Ancak FileName Attribute kısmında bulunan verileri değiştirebilmek için sistemde üst düzey yetki sahibi olmak gerekir. Bu nedenle burada bulunan dosya verilerini değiştirmek zordur.
- Herhangi bir analiz durumunda Standart İnfo Attribute ve FileName Attribute kısmında yer alan dosya verilerini karşılıklı olarak eşleştirebilmek gerekmektedir. Eğer bu bilgiler eşleşmezse Standart İnfo Attribute kısmında yer alan dosya bilgilerinin değiştirildiğini söyleyebiliriz.
$MFT Windows 10 Zaman Çizelgesi
Diğer bir adıyla MAC(b) zamanları Modified, Accessed, Changed, Birth zamanlarının baş harflerinden oluşur. MAC(b) zamanları, dosyaların son değişiklik zamanları, oluşturma zamanları, erişim zamanları, $MFT değiştirme zamanı bilgilerini tutmaktadır.
Tüm dosya sistemleri birt time yani ilk oluşturma zamanını tutmamaktadır.
Bu bilgiler Standart İnfo Attribute ve File Name Attributelerinde yer almaktadır. Her bir dosya MFT’de dört tane Standart İnfo için, dört tane de File Name için totalde sekiz adet zaman damgası bulundurmaktadır.
Aşağıdaki görselde gördüğünüz MFT zaman çizelgesi Windows 10 sistemler için hazırlanmış ve test edilmiştir.
- Bu tabloya göre örneğin “Standart İnfo” özniteliğinde Dosya adı (File rename) değiştirildiği zaman değişim tarihi (modified), erişim tarihi (access), oluşturma (creation) tarihlerinin değişmediğini metadata bilgisinin değiştiğini görüyoruz.
- Bu tabloya göre örneğin “File Name” özniteliğinde Dosya adı (File rename) değiştirildiği zaman değişim tarihi (modified), erişim tarihi (access), oluşturma (creation) tarihi ve metadata bilgisinin değişmediğini görüyoruz.
- Bu görselde gördüğünüz MFT zaman çizelgesi Windows 7-8 işletim sistemleri için hazırlanmış ve test edilmiştir.
- Yukarıdaki iki görseli karşılaştırarak aralarındaki farklı görebilir ve değerlendirmeler yapabilirsiniz.
Buraya kadar okuduğunuz için Teşekkürler. 🙂