Nida Canpolat tarafından yazılmıştır.
Hexadecimal kodlar verileri temsil etmek için 16 farklı sembol kullanan bir sayı sistemidir. Bu kodlar sayesinde uzantısı değişmiş olan dosyaların orijinal uzantılarına ulaşılabiliriz. Örneğin Şekil 1’de uzantısı değiştirilmiş bozuk bir dosya mevcuttur. Dosyanın açılması için orijinal uzantısının bulunması gerekmektedir. Bunun için ilk olarak dosya herhangi bir hex editör uygulamasında açılmalıdır.
Oynanmış dosyanın hexadecimal kodları Şekil 2’de görüldüğü gibidir. Hexadecimal kodların ilk birkaç baytı (uzunluğu değişebilir) dosya uzantısı hakkında bilgi verir. Dosyanın uzantısı değiştirilmiş olsa bile bu bilgiler aynı kalır. Açılmayan dosyayı herhangi bir hex editörde açtıktan sonra inceleme işlemine geçebiliriz. İlk birkaç karakterin hangi dosyayı ifade ettiğini bulmak için bir internet sitesinden yararlanabiliriz. (https://www.garykessler.net/library/file_sigs.html)
Siteden anlaşılacağı gibi 42 4D uzantısı bir BMP dosyasına aittir. Yani dosyamız bir fotoğraf dosyasıdır.
Steganografi, dosyaların içine çeşitli mesajlar gizlenmesinde kullanılan bir daldır. Görünüşte gizlenmiş olan mesaj fark edilemez. Bu kısımda hexadecimal değerlerden bunu tespit etmeye ve gizlenmiş dosyayı çıkarmaya çalışacağız. Öncelikle bir PDF dosyasının içine bir JPG dosyası gizleyerek steganografi işlemi gerçekleştirilmelidir. Bilgisayarda var olan ‘CMD’ uygulaması ile bir dosyayı farklı bir dosya içine gizlenebilir. Bu işlem şekil 5’te gösterildiği gibidir.
Sonuç olarak Şekil 6’da sol tarafta orijinal PDF dosyası yer alırken, sağ tarafta steganografi işlemi uygulanan PDF dosyası yer almaktadır. Görünüşte ikisi arasında bir fark görünmemektedir.
Steganografi işlemi uygulanmış olan dosya hex editörde incelenme aşamasına geçilir. İlk olarak burada ana dosyanın içine gizlenen dosyayı bulmak için, gizlendiğinden şüphelenilen uzantılar aranmalıdır. Bu işlem için her hex editörde olan ‘bul’ fonksiyonu kullanılır. İçinde gizlemiş olduğumuz JPG dosyasını bulmak için ilk olarak JPG uzantısının hex değeri (FF D8) bulunmalıdır. Ardından bu uzantı hexadecimal değerler içinde bulunur. Bulunan değerden itibaren en son karaktere kadar olan kısım kopyalandıktan sonra boş bir sekme daha açılıp kopyalanan hexadecimal değerler yapıştırılır.
Dosyayı farklı kaydet seçeneğini kullanarak isimlendirip, tespit ettiğimiz uzantı ile kayıt işlemi yapıldıktan sonra gizlenmiş dosya çıkarılmış olur. Gizlenmiş dosya Şekil 8’de verildiği gibidir.
Bir bilgisayardan ya da USB bellekten herhangi bir veri silinse bile, dosya tamamen silinmez. Silinen dosyanın kalıntılarından dosya tekrar geri getirilebilir. Bu işlemi yapan hâlihazırda birçok uygulama mevcuttur. Bu kısımda uygulamaların içyapısında bunu nasıl yaptığına bakacağız. Bu uygulama aynı zamanda dosya kurtarma işleminin manuel halidir.
İlk olarak bir USB bellek içine farklı türdeki test verileri atılır. Ardından dosyalar tamamen silinir.
Dosyalar tamamen silinmiş bile olsa USB belleğin bir yerlerinde tutulur. Eğer belleğe format atıldıysa ya da kalıcı silme yöntemleri uygulandıysa veriler 0’lar ile kapatılır ve kurtarılması mümkün olmaz. Ancak bazen formatlansa bile verilerin kalıntılarından kurtarma işlemi yapılabilir. Bunu görmek için bir hex editörde USB bellek açılır.
Şekil 17’de görüldüğü gibi bazı USB tamamen boş olsa bile veriler tutulmaya devam eder. Ardından test verilerinden (Şekil 16) kurtarmak istenilen dosya ve ya dosyalar belirlenir. Bu örnekte bir MP4 dosyası kurtarılmaya çalışılacaktır.
İlk olarak aranan dosyanın imzası bulunur. Bu örnekte MP4 dosyası aranmaktadır ve bir MP4 dosyası her zaman 66 74 79 70 değerleri ile başlar. Başlangıç değeri bulunduktan sonra bir de dosyanın hangi değerlerle bittiğini bulmak da önemlidir. Bir MP4 dosyası her zaman 30 75 değerleri ile biter.
Elde ettiğimiz bu bilgilerden yola çıkarak başlangıç adresi USB bellek içinde aratılır (Şekil 18).
Başlangıç uzantısının bulunduğu ofset numarası bir yere not edilir. Ardından dosyanın bittiği değer aratılır. MP4 için bu değer 30 75 idi. Arama işleminden sonra bitiş değerinin bulunduğu ofset bir yere not edilir. Ve blok seç işlevi kullanılarak başlangıç ve bitiş ofsetleri girilir.
Arada kalan hexadecimal kodlar kopyalanır ve boş bir dosyaya yapıştırılır. Yeni dosyaya hiçbir işlem yapmadan kaydedilir. Ancak kaydetme işlemi yapılırken dosyanın uzantısı ile kaydetmek gerekmektedir.
Bulduğumuz ofsetler arasındaki değerler .mp4 uzantısı ile kaydedildiğinde kaydettiğimiz konuma Şekil 21’de olduğu gibi video dosyası gelmiş olacaktır. Böylelikle hexadecimal kodlar yardımı ile kazıma işlemi tamamlanmış olur.
Glitch, kelime olarak bozukluk, kırılma ve hata anlamına gelmektedir. Bilgisayar terimi olarak ise, yazılım yanlışı demektir. Bu yanlış fotoğraflarda, videolarda veya ses dosyalarında meydana gelebilir. Glitch ile meydana gelen bozuklukların onarımı zordur. Yani dikkatli bir biçimde yapılmış olan Glitch çalışmalarında dosyayı kurtarmak her zaman mümkün olmayabilir.
Glitch uygulamasının yapılabilmesi için farklı yöntemler olsa da, bu kısımda hexadecimal kodlardan yararlanarak Glitch yapılacaktır. İlk olarak ses, video veya fotoğraf dosya türlerinden biri seçilir. Bu uygulama bir fotoğraf üzerinde yapılacaktır.
Glitch işlemine başlamadan önce fotoğrafın bir kopyası alınmalıdır. Çünkü Glitch uygulanan bir dosyanın kurtarılma olasılığı yüksek değildir.
Kopyalanma işleminin ardından bir hex editör ile fotoğraf açılır.
Şekil 23’te orijinal fotoğrafın hexadecimal kodları mevcuttur. Glitch işlemi bu kodların arasında iki kısım hariç herhangi bir yere yapılabilir. Bu kısımlar başlangıç karakterleri ve bitiş karakterleridir. Bu kısımlara yapılamamasının sebebi, dosyanın imza bilgilerinin bu kısımlarda olmasıdır. Bu karakterlere Glitch yapılması sonucu dosya tamamen bozulacaktır.
Bir diğer önemli kısım ise Glitch işlemi dosyanın kendine ait karakterleri üzerinde yapılamamasıdır. Dosyanın karakterlerinin değişmesi durumunda, dosya yapısı da değişeceği için fotoğraf açılmayacaktır.
Bunun için ek olarak bayt eklenmelidir. Eklenmek istenen baytların konumu deneme yanılma yolu ile belirlenebilir. Ancak başlangıç ve bitiş karakterlerinde olamaz.
Deneme yanılma yolu ile seçmiş olduğum baytların arasında istenilen boyutta rastgele karakterler girilir. Bu durum şekil 24’te görüldüğü gibidir. Değerle anlamlı ya da anlamsız yapıları içerebilir.
Karakterler yerleştirildikten sonra dosya kaydedilir. Ardından çıkan sonuç şekil 25’te olduğu gibidir. Sonuç olarak fotoğraf açılıyor ancak bozulmalardan dolayı içeriği anlaşılmayacak bir biçimdedir. Ve bu durumun düzeltilmesi oldukça zor bir işlemdir.
MTF, dizinler ve dosyalar hakkında bilgi içeren veri tablolama biçimidir ve NTFS dosya sisteminin temelini oluşturur. Bu da her bir dosyanın MFT tablosunda girdisinin olacağı anlamına gelir. MFT tablosu kendi içinde kısımlara ayrılır ve her bir kısımda farklı bilgiler barındırır. Barındırılan bu bilgilerden delil etmek mümkündür. Örneğin NTFS, özel bilgiler için MFT kullanır ve tablonun ilk 16 kaydını saklı tutar.
MFT her bir dosyanın boyutu, saat ve tarih damgaları, izinleri ve veri içeriği gibi bir dosyayla ilgili tüm bilgileri çoğunlukla yapısında barındırır. Bazı büyük verileri ise MFT dışında ancak MTF ile ilişkili bir biçimde tutar ve MFT dosyaları birleştirilebilir.
Bir MFT yapısında, dosya ve dizin meta verileri 1024 baytlık bir alan olan MFT girişinde depolanır. MFT’deki ilk 16 giriş, kendi sistem dosyalarına aittir. MFT tablosunda çoğu zaman dosya isimleri korunamaz. Bunun nedeni MFT’nin girişindeki dosya adının üzerine veri yazılmasıdır.
Her bir MFT girişinin boyutu 1024 bayttır, girişin ilk 42 baytı, 12 elemanlı olan başlık yapısıdır. Geriye kalan 982 bayt ise başlık içindeki değerlere ve girişin içerdiği çeşitli özelliklere bağlıdır. Ardından tahsis giriş kısmının tahsis edilip edilmediğine dair bilgi veren bayrak değeri görülür.
Şekil 26’da MFT tablosunun genel olarak giriş bilgilerine yer verilmiştir. Şimdi ise MFT tablosunun genel yapısına ve elde edilebilecek bilgilerine göz atacağız.
Şekil 27’de MFT tablosunun genel kısımlarına yer verilmiştir. Farklı renklerle işaretlenmiş olan yapılar farklı bilgiler barınındır. Hepsinin amacı farklıdır. Sırasıyla açıklayacak olursak; sarı renkle işaretlenen kısım dosyanın tanımlayıcı kısımdır. Dosya uzantısının imzası ve flag gibi yapıları barındırır. Bu kısım şekil 26’da daha detaylı bir şekilde anlatılmıştır. Bir sonraki kısım mavi renkli kısımdır. Bu kısım $STANDART_INFORMATION olarak bilinir. Yani dosyalarla ilgili standart bilgilerin yer aldığı kısımdır. Genel bilgilere bu kısım ile ulaşılır. Bu kısmı yeşil renkli kısım takip eder. Yeşil renkli kısım ise $FILE_NAME olarak bilinir. Yani dosya isimleri burada tutulur. Ancak dosya isimlerinin üzerine farklı bilgiler yazılabileceği için dosya isimleri her zaman tutulamayabilir ama bilgileri tutulur. Bu bölümün ardından turuncu renkle işaretlenen kısım gelir. Bu kısım $SECURITY_DESCRIPTOR olarak bilinir. Yani güvenlik tanımlayıcılarının bulunduğu kısımdır. Ardından mor renkli kısım bulunur. Bu kısım $DATA kısmı olarak bilinir. Asıl verilerin bulunduğu kısımdır. Bu kısmın boyutu içinde bulundurduğu dosyalara ve onların barındırdığı veriye göre değişiklik gösterir. Son olarak da kırmızı işaretli kısımları yapısında bulundurur. Bu kısımlar dosyanın sonlandırıldığı yerdir. File Terminator olarak bilinirler.
Sonuç olarak tanımı yapılmış olan her bir alandan, ihtiyaç dâhilinde istenilen bilgilerin kazıması yapabilir.
1- Hexadecimal kodlar ile imza analizinin yapılması
Hexadecimal kodlar verileri temsil etmek için 16 farklı sembol kullanan bir sayı sistemidir. Bu kodlar sayesinde uzantısı değişmiş olan dosyaların orijinal uzantılarına ulaşılabiliriz. Örneğin Şekil 1’de uzantısı değiştirilmiş bozuk bir dosya mevcuttur. Dosyanın açılması için orijinal uzantısının bulunması gerekmektedir. Bunun için ilk olarak dosya herhangi bir hex editör uygulamasında açılmalıdır.
Oynanmış dosyanın hexadecimal kodları Şekil 2’de görüldüğü gibidir. Hexadecimal kodların ilk birkaç baytı (uzunluğu değişebilir) dosya uzantısı hakkında bilgi verir. Dosyanın uzantısı değiştirilmiş olsa bile bu bilgiler aynı kalır. Açılmayan dosyayı herhangi bir hex editörde açtıktan sonra inceleme işlemine geçebiliriz. İlk birkaç karakterin hangi dosyayı ifade ettiğini bulmak için bir internet sitesinden yararlanabiliriz. (https://www.garykessler.net/library/file_sigs.html)
Siteden anlaşılacağı gibi 42 4D uzantısı bir BMP dosyasına aittir. Yani dosyamız bir fotoğraf dosyasıdır.
Hexadecimal kodlar ile steganografi dosyalarının tespiti
Steganografi, dosyaların içine çeşitli mesajlar gizlenmesinde kullanılan bir daldır. Görünüşte gizlenmiş olan mesaj fark edilemez. Bu kısımda hexadecimal değerlerden bunu tespit etmeye ve gizlenmiş dosyayı çıkarmaya çalışacağız. Öncelikle bir PDF dosyasının içine bir JPG dosyası gizleyerek steganografi işlemi gerçekleştirilmelidir. Bilgisayarda var olan ‘CMD’ uygulaması ile bir dosyayı farklı bir dosya içine gizlenebilir. Bu işlem şekil 5’te gösterildiği gibidir.
Sonuç olarak Şekil 6’da sol tarafta orijinal PDF dosyası yer alırken, sağ tarafta steganografi işlemi uygulanan PDF dosyası yer almaktadır. Görünüşte ikisi arasında bir fark görünmemektedir.
Steganografi işlemi uygulanmış olan dosya hex editörde incelenme aşamasına geçilir. İlk olarak burada ana dosyanın içine gizlenen dosyayı bulmak için, gizlendiğinden şüphelenilen uzantılar aranmalıdır. Bu işlem için her hex editörde olan ‘bul’ fonksiyonu kullanılır. İçinde gizlemiş olduğumuz JPG dosyasını bulmak için ilk olarak JPG uzantısının hex değeri (FF D8) bulunmalıdır. Ardından bu uzantı hexadecimal değerler içinde bulunur. Bulunan değerden itibaren en son karaktere kadar olan kısım kopyalandıktan sonra boş bir sekme daha açılıp kopyalanan hexadecimal değerler yapıştırılır.
Dosyayı farklı kaydet seçeneğini kullanarak isimlendirip, tespit ettiğimiz uzantı ile kayıt işlemi yapıldıktan sonra gizlenmiş dosya çıkarılmış olur. Gizlenmiş dosya Şekil 8’de verildiği gibidir.
2- Hexadecimal kodlar ile silinen dosyaların kurtarılması
Bir bilgisayardan ya da USB bellekten herhangi bir veri silinse bile, dosya tamamen silinmez. Silinen dosyanın kalıntılarından dosya tekrar geri getirilebilir. Bu işlemi yapan hâlihazırda birçok uygulama mevcuttur. Bu kısımda uygulamaların içyapısında bunu nasıl yaptığına bakacağız. Bu uygulama aynı zamanda dosya kurtarma işleminin manuel halidir.
İlk olarak bir USB bellek içine farklı türdeki test verileri atılır. Ardından dosyalar tamamen silinir.
Dosyalar tamamen silinmiş bile olsa USB belleğin bir yerlerinde tutulur. Eğer belleğe format atıldıysa ya da kalıcı silme yöntemleri uygulandıysa veriler 0’lar ile kapatılır ve kurtarılması mümkün olmaz. Ancak bazen formatlansa bile verilerin kalıntılarından kurtarma işlemi yapılabilir. Bunu görmek için bir hex editörde USB bellek açılır.
Şekil 17’de görüldüğü gibi bazı USB tamamen boş olsa bile veriler tutulmaya devam eder. Ardından test verilerinden (Şekil 16) kurtarmak istenilen dosya ve ya dosyalar belirlenir. Bu örnekte bir MP4 dosyası kurtarılmaya çalışılacaktır.
İlk olarak aranan dosyanın imzası bulunur. Bu örnekte MP4 dosyası aranmaktadır ve bir MP4 dosyası her zaman 66 74 79 70 değerleri ile başlar. Başlangıç değeri bulunduktan sonra bir de dosyanın hangi değerlerle bittiğini bulmak da önemlidir. Bir MP4 dosyası her zaman 30 75 değerleri ile biter.
Elde ettiğimiz bu bilgilerden yola çıkarak başlangıç adresi USB bellek içinde aratılır (Şekil 18).
Başlangıç uzantısının bulunduğu ofset numarası bir yere not edilir. Ardından dosyanın bittiği değer aratılır. MP4 için bu değer 30 75 idi. Arama işleminden sonra bitiş değerinin bulunduğu ofset bir yere not edilir. Ve blok seç işlevi kullanılarak başlangıç ve bitiş ofsetleri girilir.
Arada kalan hexadecimal kodlar kopyalanır ve boş bir dosyaya yapıştırılır. Yeni dosyaya hiçbir işlem yapmadan kaydedilir. Ancak kaydetme işlemi yapılırken dosyanın uzantısı ile kaydetmek gerekmektedir.
Bulduğumuz ofsetler arasındaki değerler .mp4 uzantısı ile kaydedildiğinde kaydettiğimiz konuma Şekil 21’de olduğu gibi video dosyası gelmiş olacaktır. Böylelikle hexadecimal kodlar yardımı ile kazıma işlemi tamamlanmış olur.
3- Hexadecimal kodlar ile Glitch uygulaması
Glitch, kelime olarak bozukluk, kırılma ve hata anlamına gelmektedir. Bilgisayar terimi olarak ise, yazılım yanlışı demektir. Bu yanlış fotoğraflarda, videolarda veya ses dosyalarında meydana gelebilir. Glitch ile meydana gelen bozuklukların onarımı zordur. Yani dikkatli bir biçimde yapılmış olan Glitch çalışmalarında dosyayı kurtarmak her zaman mümkün olmayabilir.
Glitch uygulamasının yapılabilmesi için farklı yöntemler olsa da, bu kısımda hexadecimal kodlardan yararlanarak Glitch yapılacaktır. İlk olarak ses, video veya fotoğraf dosya türlerinden biri seçilir. Bu uygulama bir fotoğraf üzerinde yapılacaktır.
Glitch işlemine başlamadan önce fotoğrafın bir kopyası alınmalıdır. Çünkü Glitch uygulanan bir dosyanın kurtarılma olasılığı yüksek değildir.
Kopyalanma işleminin ardından bir hex editör ile fotoğraf açılır.
Şekil 23’te orijinal fotoğrafın hexadecimal kodları mevcuttur. Glitch işlemi bu kodların arasında iki kısım hariç herhangi bir yere yapılabilir. Bu kısımlar başlangıç karakterleri ve bitiş karakterleridir. Bu kısımlara yapılamamasının sebebi, dosyanın imza bilgilerinin bu kısımlarda olmasıdır. Bu karakterlere Glitch yapılması sonucu dosya tamamen bozulacaktır.
Bir diğer önemli kısım ise Glitch işlemi dosyanın kendine ait karakterleri üzerinde yapılamamasıdır. Dosyanın karakterlerinin değişmesi durumunda, dosya yapısı da değişeceği için fotoğraf açılmayacaktır.
Bunun için ek olarak bayt eklenmelidir. Eklenmek istenen baytların konumu deneme yanılma yolu ile belirlenebilir. Ancak başlangıç ve bitiş karakterlerinde olamaz.
Deneme yanılma yolu ile seçmiş olduğum baytların arasında istenilen boyutta rastgele karakterler girilir. Bu durum şekil 24’te görüldüğü gibidir. Değerle anlamlı ya da anlamsız yapıları içerebilir.
Karakterler yerleştirildikten sonra dosya kaydedilir. Ardından çıkan sonuç şekil 25’te olduğu gibidir. Sonuç olarak fotoğraf açılıyor ancak bozulmalardan dolayı içeriği anlaşılmayacak bir biçimdedir. Ve bu durumun düzeltilmesi oldukça zor bir işlemdir.
4- Hex editör ile MFT analizi yapmak
MTF, dizinler ve dosyalar hakkında bilgi içeren veri tablolama biçimidir ve NTFS dosya sisteminin temelini oluşturur. Bu da her bir dosyanın MFT tablosunda girdisinin olacağı anlamına gelir. MFT tablosu kendi içinde kısımlara ayrılır ve her bir kısımda farklı bilgiler barındırır. Barındırılan bu bilgilerden delil etmek mümkündür. Örneğin NTFS, özel bilgiler için MFT kullanır ve tablonun ilk 16 kaydını saklı tutar.
MFT her bir dosyanın boyutu, saat ve tarih damgaları, izinleri ve veri içeriği gibi bir dosyayla ilgili tüm bilgileri çoğunlukla yapısında barındırır. Bazı büyük verileri ise MFT dışında ancak MTF ile ilişkili bir biçimde tutar ve MFT dosyaları birleştirilebilir.
Bir MFT yapısında, dosya ve dizin meta verileri 1024 baytlık bir alan olan MFT girişinde depolanır. MFT’deki ilk 16 giriş, kendi sistem dosyalarına aittir. MFT tablosunda çoğu zaman dosya isimleri korunamaz. Bunun nedeni MFT’nin girişindeki dosya adının üzerine veri yazılmasıdır.
Her bir MFT girişinin boyutu 1024 bayttır, girişin ilk 42 baytı, 12 elemanlı olan başlık yapısıdır. Geriye kalan 982 bayt ise başlık içindeki değerlere ve girişin içerdiği çeşitli özelliklere bağlıdır. Ardından tahsis giriş kısmının tahsis edilip edilmediğine dair bilgi veren bayrak değeri görülür.
Şekil 26’da MFT tablosunun genel olarak giriş bilgilerine yer verilmiştir. Şimdi ise MFT tablosunun genel yapısına ve elde edilebilecek bilgilerine göz atacağız.
Şekil 27’de MFT tablosunun genel kısımlarına yer verilmiştir. Farklı renklerle işaretlenmiş olan yapılar farklı bilgiler barınındır. Hepsinin amacı farklıdır. Sırasıyla açıklayacak olursak; sarı renkle işaretlenen kısım dosyanın tanımlayıcı kısımdır. Dosya uzantısının imzası ve flag gibi yapıları barındırır. Bu kısım şekil 26’da daha detaylı bir şekilde anlatılmıştır. Bir sonraki kısım mavi renkli kısımdır. Bu kısım $STANDART_INFORMATION olarak bilinir. Yani dosyalarla ilgili standart bilgilerin yer aldığı kısımdır. Genel bilgilere bu kısım ile ulaşılır. Bu kısmı yeşil renkli kısım takip eder. Yeşil renkli kısım ise $FILE_NAME olarak bilinir. Yani dosya isimleri burada tutulur. Ancak dosya isimlerinin üzerine farklı bilgiler yazılabileceği için dosya isimleri her zaman tutulamayabilir ama bilgileri tutulur. Bu bölümün ardından turuncu renkle işaretlenen kısım gelir. Bu kısım $SECURITY_DESCRIPTOR olarak bilinir. Yani güvenlik tanımlayıcılarının bulunduğu kısımdır. Ardından mor renkli kısım bulunur. Bu kısım $DATA kısmı olarak bilinir. Asıl verilerin bulunduğu kısımdır. Bu kısmın boyutu içinde bulundurduğu dosyalara ve onların barındırdığı veriye göre değişiklik gösterir. Son olarak da kırmızı işaretli kısımları yapısında bulundurur. Bu kısımlar dosyanın sonlandırıldığı yerdir. File Terminator olarak bilinirler.
Sonuç olarak tanımı yapılmış olan her bir alandan, ihtiyaç dâhilinde istenilen bilgilerin kazıması yapabilir.
Moderatör tarafında düzenlendi: