Time Stomping ile Anti-Forensics
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-forenscis
yö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