Time Stomping
Time stomping anti forensics yöntemlerinden biridir. Bazı malware’lar zamanı durdurma (time stomping) yöntemini kullanmaktalar. Bir sistemde Forensics uygulandığı zaman veya bir malware sisteme bulaştığında temel olarak sormuş olduğumuz ne, kim, nerede, nasıl, neden, ne zaman gibi soruların cevabını bulmaya çalışırız. Anti-forenscisyöntemi olan time stomping yöntemi ile ne zaman sorusuna cevap bulmamız zorlaşmaktadır. Malware’ın bu tekniği uygulamasındaki amacı, hedef uç noktadaki varlığını koruyabilmesi için fark edilmeden ilerlemek ve hedefinden saklanmaktır. Bazı saldırgan aktörleri bu görevi gerçekleştirmeye çalışmasının olası bir yolu, Time Steomping tekniği olarak bilinen malwareların zaman damgalarını değiştirmektedir.
Time Steomping tekniğini uygulayan malware, sistem üzerinde algılanan diğer kötü amaçlı etkinliklerin zaman çizelgesine girmemiş gibi görünmesini sağlamak, analiz eden kişinin yanıltmasını sağlayan zaman damgalarını değiştirmektir. Olayı analiz eden analist, enfekte olan makinedeki uyarıları, günlükleri ve diğer yapıtları gözden geçirmeye başladığında, zaman damgaları malware tarafından değiştirilirse, zamanlanmış bir dosya araştırma kapsamının dışında kalabilir. Bu tekniğin uygulanıp uygulanmadığını anlamak için söz konusu dosyaya karşılık gelen MFT kaydında ilişkili birden çok zaman damgası karşılaştırılarak algılanabilir. NTFS zaman damgası uyuşmazlığı yapıtığı zaman örneğinin meydana gelmiş olabileceğinden şüphelendiğiniz olay yanıtı araştırmalarında bir başlangıç noktası sağlar. İşte analist burada şüphelenmeye başlar.
Anti Forensics tekniği olan Time stomping yöntemini tam manasıyla anlamak için NTFS dosya sisteminde bahsetmek istiyorum;
Dosya sistemlerinin çalışma yapıları farklılık gösterebilmektedir. Bununla birlikte genellikle tüm dosya sistemleri dosya üstbilgilerini ve dosya içeriklerini diskin farklı yerlerinde tutarlar. Bu durumu bir kitaba benzeterek açıklamak gerekirse, kitabın içindekiler kısmında bulunan konu başlıklarını dosya üstbilgileri olarak, kitabın ilerleyen sayfalarındaki konu içeriklerini ise dosya içerikleri olarak düşünebiliriz. Güncel Windows işletim sistemleri NTFS dosya sistemini kullanırlar.
NTFS Dosya Sistemi (The New Technologies File System) Windows NT sürümünden itibaren Windows işletim sistemleri için “default” dosya sistemi olan NTFS bugün dünyada en çok kullanılan dosya sistemidir. NTFS tüm yönetimsel araçları kullanıcı dosyaları gibi birer dosya şeklinde tutmaktadır. Bu dosyalar üst dosyalar olarak (metafile) isimlendirilmiştir. Spesifik sektörlerin dosya sistemi tarafından ayrıldığı ve kullanıcıların kullanımına kapalı olduğu diğer dosya sistemlerinden NTFS’i ayıran en önemli hususlardan biri her sektörün bir dosyaya tahsis edilmiş olmasıdır. Bu dosyalar içerisinde indeksleme görevini üstlenen MFT dosyasıdır.
MFT Dosya ve klasör üstbilgileri MFT isimli bir dosya içerisinde tutmaktadır. MFT’nin hangi adreste bulunduğu ise dosya sisteminin bulunduğu bölümün ilk sektöründeki “boot” kaydında bulunmaktadır. MFT dosyası her dosya veya klasör için ayrılmış 1024 baytlık kayıtlardan meydana gelir. İlk kayıt kendine yani $MFT dosyasına aittir. Her kayıt içerisinde dosyanın ismi, oluşturma, erişim tarihleri gibi üstbilgiler bulunur. Kritik önemdeki bu dosyanın genellikle ilk dört kaydın bir yedeği MFTMirr dosyasında tutulmaktadır. Her MFT kaydı bölümlerden oluşur. MFT kayıtları içerisinde bulunabilecek bölümler (attributes) $AttrDef içerisinde tanımlanır.
MFT’nin yapısı
MFT Header: MFT kaydının başlangıcında “FILE” veya sorunlu kayıtlar için “BAAD” değeri bulunur. Ayrıca bu bölümde, hataların tespiti amacıyla konulan “fixup” değerleri, MFT kaydının boyutu, kullanılan alan, dosyanın kullanımda olup olmadığı ile ilgili olarak ve kaydın bir dosyaya mı veya klasöre mi ait olduğuna dair işaretler yer almaktadır.
$FILE_NAME: Bu bölümde dosyanın hangi klasörde bulunduğu, dosya oluşturma, değiştirme, erişim ve MFT kaydı değişim tarihleri, dosyaya ayrılmış alan, gerçek dosya boyutu, işaretler (gizli, sistemi arşiv vs.) ve dosya ismi gibi bilgiler bulunur.
$STANDARD_INFORMATION: Bu bölümde ise yine oluşturma, dosya değişim, MFT değişim, dosya erişim tarihleri, sınıf ID, sahip ID gibi bilgiler tutulur. Windows dosya özellikleri kısmındaki tarihler bu bölümden gelmektedir
$DATA: Bu bölümde ise dosya içeriği bulunmaktadır. Dosya içeriği MFT kaydına ayrılmış 1024 baytlık alandan kalan kısma sığarsa dosya içeriği için ayrıca bir alan ayrılmamaktadır. Dolayısıyla küçük dosyaların içeriği MFT kaydı içerisinde tutulmaktadır. Ancak daha büyük boyutlu dosyalar için bu dosya içeriklerinin hangi adreslerde tutulduğuna ilişkin listeler $DATA bölümüne kaydedilmektedir.
Logfile: Dosya üstbilgilerindeki değişiklikleri arşivler.
Volume: Bölüm etiketi, dosya sistem versiyonu gibi bölüm ile ilgili bilgileri barındırır.
AttrDef: MFT kayıtlarındaki dosya özelliklerini tutan tablodur. NTFS dosya sistemi dosya adı, dosya erişim yetkisi veya dosya içeriği gibi her şeyi dosya özelliği olarak görür. AttrDef dosyasında da bu özellikler, isimleri ve ID numaraları bulunmaktadır. ,
Bitmap: Bu dosya içerisinde bulunan her bir sektörün bir dosya tarafından kullanılıp kullanılmadığını ifade eder. NTFS dosya sisteminde bu üst dosyalar dışında $BadClus, $Secure, $UpCase gibi başkaca sistemsel dosyalar da bulunmaktadır
NTFS Dosya Sisteminde Bir Dosya Oluşturmak
- MFT dosyası içerindeki kullanımda olmayan ilk kayıt $BITMAP taranarak tespit edilir ve burası yeni oluşturulacak kayıt için temizlenir. $BITMAP’te ilgili yer 1’e çevrilir.
- $FILE_NAME ve $STANDARD_INFORMATION bölümleri MFT kaydında oluşturulur.
- Dosya oluşturma ve diğer tarihler ayarlanır.
- Dosyanın kullanımda olduğuna dair (in-use) işaret konur.
- $BITMAP dosyasından disk üzerinde dosyanın boyutuna göre en uygun yer tespit edilerek bu sektörlere dosya verisi kaydedilir. Dosya verisi MFT kaydı içerisine sığacak boyutta ise MFT kaydı içerisine kaydedilir.
- MFT dosyasının beşinci sırasında bulunan “root” klasörünün özelliklerinden dosyanın oluşturulacağı klasör tespit edilir. Klasörün MFT kaydına gidilerek buraya yeni oluşturulan dosya için indeks kaydı oluşturulur.
- Dosya ile ilgili yapılan işlemlerin kayıtları $LogFile dosyasında arşivlenir. Kısacası yeni bir dosya olduğunda disk üzerinde üç ana değişiklik olur. Bunlardan birincisi dosya ile ilgili MFT kaydı oluşturulur. İkincisi $BITMAP’te dosya içeriğinin kaydedildiği sektörler 1’e çevrilir. Üçüncüsü dosyanın oluşturulduğu klasörün MFT kaydı yeni dosya eklenerek güncellenir.
Temel bilgileri hatırladıysak Time Stomping kısmına tekrar dönelim;
NTFS uç noktasında depolanan bir dosyanın MFT kaydında, bir dosya hakkında çeşitli türde bilgiler içeren birden çok bölüm veya öznitelik olduğundan bahsettik. Bu yeni yapıt için $Standard_Information ($SI) ve $File_Name ($FN) özniteliklerinin zaman damgası ile bilgileri muhafaza ettiğinde bu dosyalara odaklanacağız. Time stomping anti forensics Malware dosyalarının zaman damgalarını değiştirilebilir. Bu değişikliğin ne zaman nasıl yapıldığını öğrenmek için timestamp değerlerine bakarız. Temel olarak MFT’de 8 zaman damgasını oluşturan 2 farklı küme var her kümede Oluşturma zamanı, değişiklik zamanı, MFT süresi, son erişilen saat bilgileri bulunur. Bu kümeler, Standard Information file attributes ve File Information attributes ‘dir.
$FILENAME: Dosya ve dizinlerin adlarını saklamaktadır. Ayrıca bir dosyanın oluşturulma tarihi, son değiştirilme tarihi, son erişim tarihi ve MFT deki son değişim tarihi olmak üzere toplam 4 adet zaman damgası bulunur.
$STANDAR_INFORMATION: Bir dosyadaki standart bilgileri, sahiplik bilgileri, metadata bilgileri, dosyanın oluşturulma tarihi, son değiştirilme tarihi, son erişim tarihi, MFT de son değiştirilme tarihi olmak üzere toplam 4 zaman damgası vardır. Windows Gezgini’nde normal olarak görüntülenenlerdir.
STANDARD_INFORMATION ve FILENAME arasındaki temel fark; STANDARD_INFORMATION kullanıcı tarafından değiştirilebilir zaman damgalarını barındırmaktadır. FILENAME zaman damgası ise ancak sistem çekirdeği tarafından değiştirilebilmektedir.
Çoğu zaman time stomping yöntemini uygulayan zararlılar yalnızca $STANDARD_INFORMATION kümesini değiştirir. Hem $STANDARD_INFORMATION hem de $FILE_NAME özniteliklerini görüntüleyen araçları kullanarak, bir dosyanın zaman değişimine uğrayıp uğramadığını belirlemek için iki kümedeki değeleri karşılaştırabiliriz. $STANDARD_INFORMATION daki değeler $FILE_NAME’den daha önce geliyorsa geliyorsa, olası bir şüphelenmemiz gerekmektedir.
Örnekle açıklamak gerekirse;
(M: Modigied, A: Accessed, C:Changed($MFT değiştirme Zamanı), B: Birth (Dosya oluşturma zamanı))
şüpheli dosyanın $STANDARD_INFORMATION ve $FILE_NAME özniteliklerini inceleyerek, bir uyumsuzluk olduğunu gördük bu nedenle, diğer göstergelerle birleştirilip analiz edildiğinde burada Time Stomping uygulanadığını söyleyebiliriz. Gördüğünüz gibi, kırmızıyla vurgulanan $STANDARD_INFORMATION, $FILE_NAME tarihlerinden önce gelmektedir yukarda da bahsettiğim gibi şüphelenmemiz gerekir.
Bir malware farklı sistemlerde farklı $STANDARD_INFORMATION ve $FILE_NAME değerinlerini farklı değere sahip olabilir
Misalen yukardaki A sistemi olsun aşağıdaki de B sistemi olsun görüldüğü gibi FILE_NAME kısmı farklı değerlere sahiptir.
Buna benzer bir şüpheli dosya ile karşılaşırsak;
change.log dosyalarını geri yükleme noktalarını kontrol edebilirsiniz. Bu dosyalar, dosya oluşturma ve yeniden adlandırma gibi değişiklikleri izler, şüpheli dosyanın oluşturulup oluşturulmadığını ve yeniden adlandırıldığını görmek için USN dosyası da analiz edilebilir.
Uygulama
- Test amaçlı 2 txt dosyasını oluşturdum1 tanesine Time Stomping uygulayacağım bir tanesinide taririhndeki değerleri göreceğim
2- Daha sonra oluşturulan bu txt dosylarından timestommping.exe aracı ile maygun.txt Time Stomping yöntemini uyguladım.
Görüldüğü gibi tarihini değiştirid,m değiştirme tarihinde 2003 olduğu görülüyor.
3- 3- Bir dosyaya time stomping uygulanıp uygulanmadığını tespit etmek için MFT den analiz etmemiz gerekmektedir. FTK Imager ile MFT dosyasını export ettim.
4- 4- Export edilen MFT dosyasnı parse etmek için MFTanlayzer kullandım.
MFTanalyese tool sayesin outout.csv şeklinde bir çıktım aldım.
5- 5- Aldığım çıktıyı daha rahat kullanabilmek için TimeExplorere aracına output.csv dosyasını import ettim ve analiz işlemimi gerçekleştirdim.
Görülüğü gibi FILENAME ve STANDAR_INFORMATION arasında farkların olduğunu görebildik.
Kaynak:
http://az4n6.blogspot.com/2014/10/timestomp-mft-shenanigans.html
Expose Evidence of Timestomping with the NTFS Timestamp Mismatch Artifact | Magnet Forensics
how to use MFT as a determine if time stomping has occurred
Digital Forensics
Muhammed AYGUN
DFIR
Adli Bilişim Blog
Adli Bİlişim Mühendisi