Blog

Dosya Kazıma Taksonomisi

Dosya kazıma ya da sadece kazıma, üst verilerden ziyade içeriğe dayalı olarak dosya ya da diğer tür nesneler için bir girdi arama yöntemidir. Dosya kazıma, silinmiş eski dosya veya bozuk medyada bir analiz gerçekleştirirken, dizin girdileri bozuk veya eksik olduğunda dosyaları ve parçalarını kurtarmak için güçlü bir metottur. Çoğu dosya aracı, dosya üstbilgisi veya altbilgisi arayarak çalışır ve daha sonra bu iki sınır arasındaki blokları kazır. Semantik kazımalar, önerilen dosyaların içeriğinin analizine dayalı kazımalar yapar.

*Dosya kazıma orijinal disk yerine bir disk imajı üzerinde yapılmalıdır.

Birçok kazıma uygulamasında sadece başlıkların(dosya başlığı) bulunduğu sektör sınırlarına bakma veya yanındaki sektörlere bakma seçeneği vardır. Ancak tüm girdiyi aramak bize diğer dosyalar içerisinde gömülü halde bulunan dosyaları da bulacaktır. Örneğin, Word içerisindeki jpeg, png dosyaları gibi. Bu duruma bağlı olarak avantaj ve dezavantaj olarak nitelendirilebilir. Örnekleyelim, Aradığımız dosyadan ziyade içerisindeki parçaları bulmak dosya bütününe ulaşamamak veya yanlış ya da istemediğimiz sonuçlara bizi götürebilirken diğer yandan dosyalar içerisinde gizlenmiş, formatı değiştirilmeye çalışılmış dosyaları başlık bilgisine bakarak dosyanın kendisini çözemese de içerisinde gömülü olan parçaları bulacaktır ve analiz sırasında gözden kaçan bulgulara erişilebilir.

Dosya kazıma uygulamalarının çoğunluğu yalnızca ortam üzerinde bitişik dosyaları kurtarır. Bu ne demek derseniz? Dosya sistemine bağlı olarak dosyaların kaydolma durumları vardır. En baştan anlatmak gerekirse bir adet depolama birimimiz olduğunu varsayalım ilk defa aldığımızda bu depolama birimini biçimlendirerek dosya sistemi ve yapısını belirleriz. Depolama birimine bir dosya kaydettiğimizde süreç, dosya sisteminde uygun olan ilk adresten başlanır ve ne kadar devam edeceği dosya boyutuna bağlı olarak değişir. Örneğin Ntfs bir dosya sisteminde bulunan Ana Dosya Tablosunda($Mft) her kayıt için 1KB yer bulunur. Eğer dosya boyutu 1 KB veya daha düşük ise bu dosya $Mft tablosunda yer alır daha büyük ise dosya sisteminde bulunan uygun adreslere dağıtılır ve $Mft tablosuna bu adresler kaydedilir. Eğer depolama birimi yeni oluşturulmuş bir dosya sistemine sahipse veya yazılan herhangi bir dosya silinmemişse dosya parçalanmadan bitişik bir şekilde kaydedilir. Silinen bir dosya varsa dosya sistemi ilk bulduğu boşluktan başlayarak dosyayı ya da veriyi kaydedecektir bu durum dosyanın parçalanmasına sebep olur. Bu parçalanma diskin performansını etkiler, Parçalanma durumunu düzeltmek için disk birleştirme yöntemini (defragmentation) uygulayabilirsiniz.

 

Dosya Kazıma Taksonomisi

Kazıma: Sabun taşından bir heykeli "oyma" gibi, ayrıştırılmamış bloklardan veri ayıklamak için kullanılan genel bir terimdir.

Blok Tabanlı Kazıma: Bir bloğun olası bir çıktı dosyasının bir parçası olup olmadığını belirlemek için girişi bloğa göre analiz eden bir kazıma yöntemidir. Bu yöntemde, her bloğun yalnızca tek bir dosyanın (veya gömülü dosyanın) bir parçası olabileceğini varsayılır.

İstatistiksel Kazıma: Girişin olası bir çıktı dosyasının bir parçası olup olmadığını belirlemek için karakteristik veya istatistik üzerindeki girdiyi analiz eden bir kazıma yöntemidir. (örneğin, entropi analizi).

Başlık-Altbilgi Kazıma: Başlık (dosya başlangıcı) ve alt bilgi (dosya işaretinin sonu) kullanılarak ham veriden dosya kazıma yöntemidir.

Başlık-Maksimum Boyut(dosya boyutu) kazıma: Başlık (dosya başlangıcı) ve maksimum (dosya) boyutunu kullanarak ham veriden dosya kazıma yöntemidir. Bu yaklaşım, birçok dosya biçimi (örneğin, JPEG, MP3) işe yaramaktadır.

Başlık-Gömülü Uzunlukta  Kazıma: Başlık ve dosya formatında gömülü bir dosya uzunluğu (boyut) kullanarak ham veriden dosya kazıma yöntemidir.

Dosya yapısı temelli kazıma: Dosya türlerinin iç yapısı hakkında belirli bir bilgi seviyesini kullanarak ham veri kazıma yöntemidir. Metz ve Mora yaklaşımı "Derin Kalıp" olarak adlandırırken Garfinkel, DFRWS2006(carving challenge) Dosya kazıma etkinlik başvurusunda bu yaklaşımı "Semantik Oyma" olarak adlandırdı.

Semantik Oyma: Dosyanın içeriğinin dilsel analizine dayalı dosyaları oyma yöntemi. Örneğin, Bir semantik oyma, İngilizce yazılmış uzun bir HTML dosyasının ortasında altı blokluk fransızcanın, İngilizce dil HTML dosyasından değil, daha önce ayrılmış bir dosyadan geriye kalan bir parça olduğu sonucuna varabilir.

Onay ile kazıma: Kazınan dosyaların bir dosya türüne özgü doğrulayıcı kullanılarak doğrulanmış olduğu ham veriden dosya kazıma yöntemidir.

Parça bularak kazıma: Orijinal dosya veya nesneyi oluşturmak için iki veya daha fazla parçanın yeniden birleştirildiği kazıma yöntemidir. Garfinkel daha önce bu yaklaşımı "Bölünme Kazıma" olarak adlandırdı.

Yeniden paketleme kazıma: Çıkarılmış veriyi, standart aletlerle görüntülenebilmesi için yeni üstbilgi, altbilgi veya diğer bilgiler ekleyerek değiştiren kazıma yöntemidir. Örneğin, Garfinkel'in ZIP Carver bir ZIP dosyasının ayrı bileşenlerini arar ve bunları yeni bir merkezi dizinde ile yeniden paketler, böylece standart bir unzip yardımcı programı ile açılabilirler hale gelirler.

Parçalanmış Dosya Kurtarma

Simson Garfinkel, outlookun %58'ine, jpeg'lerin %17'sine ve MS-Word dosyalarının %16'sının parçalanmış olduğunu ve bu nedenle, normal veri kazıma yöntemlerini kullanan bir kullanıcıya bozuk ya da eksik görünmektedir. Parçalanmış dosyaları otomatik olarak işleyebilen dosya kopyalama programlarının ilk seti sonunda geldi. A. Pal, N. Memon. T. Sencar ve K. Shanmugasundaram parçalanmış dosyaları kurtarabilecek SmartCarving adlı bir teknik geliştirdiler. Şimdi buradaki isimler kafaları karıştırır diye tanıtayım hemen Simson NIST'te standartlar üzerine çalışmış bir kıdemli danışman geriye kalan diğer arkadaşlar ise bu konu üzerinde çalışan araştırmacılar.

Foremost

Foremost, bir dosyanın üst bilgisi, alt bilgisi ve veri yapısına göre konsol tabanlı dosya kurtarma aracıdır.

apt search foremost

arayalım alakalı herhangi bir paketi varsa foremost ile beraber çıkacaktır.

Foremost'u yükleyelim;

> sudo apt-get install foremost

foremost ile çalışmaya başlamadan önce hemen senaryomuzu oluşturalım. Öncelikle kullanacak olduğumuz diski wipe edelim yanlış çıktı ve sonuçlar ile karşılaşmamak için. Daha sonra içerisine farklı dosya tipleri kopyalayıp işlem bittikten sonra bu dosyaları silelim. Evet basit bir örnek şeklinde oluşturduk. Yukarıda bir uyarı yapmıştık buna uyarak diskimizin imajını alalım. Bunun için ben dd aracını kullanacağım.

dd if=imajı alınacak cihaz

of=imaj yeri ve ismi

Bu adımdan sonra foremostu kullanarak tarama işlemi başlatmamız yeterli tabi parametrelerini bilmemiz gerekli (man foremost).

foremost -i imaj dosyası , -o çıktının yeri , -t dosya tipi , -c konfigürasyon dosyası , -s atlanacak bloklar

Evet dosya kazıma işlemi tamamlandı aklınızda neden garip şekiller dans ediyor ekranda sorusunun cevabı farklı tipteki sıkıştırma dosyalarının başlangıç imza olarak aynı imzayı kullanmasından kaynaklı bir durum. Dikkat ederseniz dosya tipine zip ve png yazdım oysa biz open document ve png dosyası silmiştik. Dosya imzaları hakkında bilgiye http://www.garykessler.net/library/file_sigs.html adresinden ulaşabilirsiniz.

Audit dosya kaydına baktığımızda 22 dosya kurtarılmış, 3 dosya sildik, 22 dosya kurtardık. Diskimizide wipe etmiştik bu dosyalar nereden geldiği hakkında birazcık fikir sahibiniz yukarıdan sanırım. Bir dosyanın içerisindeki diğer gömülü veriler bunlar arkadaşlar örneğin bir sunumdaki resimler.

Diğer kurtarılan dosyaların uzantıları zip olsa da onları bir ofis uygulaması ile açtığımızda açılacaktır.

Foremost genel dosya tiplerinin çoğunu bilmektedir bu tiplerin neler olduğunu manuel sayfasından öğrenebilirsiniz. Diğer bir durum aradığınız bir dosya tipi mevcut değil ya da sizin kendi uygulamanıza ait bir dosya tipi var özelleştirilmiş imza yapısı diğer dosya tipleri ve formatlarından türetilmemişse ayrıca kendinizde tanımla yaparak bir dosya araması yapabilirsiniz. Bunu nasıl yaparız gelin buna bakalım. CezeriSGA'nın logosunu alalım png formatında olan dosyayı bless hex editör yardımı ile açarak png imzasını silip CSGA adında bir imza ekleyelim. Yine bunu usb aygıta kopyalayıp silme işlemini gerçekleştirelim ve veri kazıma için gerekli olan imaj(cez.img) dosyamızı oluşturalım.

Bu adımdan sonra foremost bu bize ait olan veriyi kazımamız için /etc/foremost.conf dosyasının bir kopyasını alıp bunun üzerine bir ekleme gerçekleştirelim. Aşağıdaki gibi dosyayı kaydetmemiz yeterli olacaktır. Cez dosya uzantısının ismi, büyük küçük harf duyarlılığı var mı hayır ve maksimum boyutu 200000 bayt verip imza da CSGA’nın hex karşılığı.

Artık veri kazıma işlemine başlayabiliriz bunun için vereceğimiz komut şu şekilde olacaktır.

foremost -i cez.img -o cezeri -c fm.conf

İşlem tamamlandıktan sonra oluşan bir adet audit.txt ve kurtarılan dosya cezeri adındaki dizinin cez adlı dizininde oluşturulmuştur bu adımdan sonra yapmamız gereken dosya imzasını kontrol etmek veya hash hesabını yaptırabilirsiniz fakat bu hash hesabında önceki dosya ile kurtarılan dosya arasında farklar olacaktır bunun sebebi yaptığımız kazıma işlemi başlık ve uzunluk bilgisi ile oluşturulmasıydı eğer dosya sonu işaretçisi varsa o imzayı da eklemeniz daha net sonuçlar verecektir.

Sonuç olarak, Dosya kazıma ailesinde kazıma yaparken bilginin kalitesine göre kurtarılacak verinin kalitesi aynı oranda değişkenlik göstermektedir. Foremost uygulaması yukarıda açıklamış olduğumuz aileden başlık bilgisi, alt bilgi ve maksimum uzunluk tahmini ile veri kurtarmayı görmüş olduk. Bu işlemleri sadece bu yazılım ile yapmıyoruz elbette bu tarz işlemlerin genelini kapsayan bir araç seti bulunmakta sleuth kit olarak adlandırılan bu kiti ilerleyen yazılar da anlatmaya çalışacağım.

Kaynakça

http://forensicswiki.org/wiki/File_Carving 
http://foremost.sourceforge.net/
https://web.archive.org/web/20170507113329/
https://en.wikipedia.org/wiki/Defragmentation








Yorum Yapmak İçin Giriş Yapın.