Dosya Sistem Analizinin Önemi

Yayınlayan
Ali Ezdemir
Yayınlanma tarihi
26/2/2022
Okuma süresi
15
Dakika
go back icon
Geri Dön

Dosya Sistem Analizinin Önemi

Dosya sistem analizi, adli incelemelerde kullanılan inceleme programlarının arka planda yürüttüğü işlemler bütünüdür.   Dosyaları bulmak, silinen dosyaları kurtarmak ve gizli verileri bulmak gibi işlemler için bir dosya sistemini analiz etmek gerekir. Bu analizler çoğu zaman adli inceleme programları kullanılarak yapılsa da bazı durumlarda verilerin ham halini incelemek gerekebilir. Dosya sistemi seviyesinde gerçekleştirilebilecek adli analiz yapılabilmesi için ücretsiz hex editörleri veya The Sleuth Kit gibi biraz daha komplike olmayan yazılımlar kullanılabilir. Bu analizlerde dikkat edilmesi gereken hususlar verilerin nasıl okunacağının bilinmesidir. Bu yazımızda dosya sistem analizinde bilmemiz gerekenler ve bu incelemelerin nasıl yapıldığı uygulamalı görsellerle değinilmiştir.

HEX Editörü Nedir?

HEX Editörü, bilgisayar sistemlerindeki hexadecimal(on altılı sayı sistemi) formunda kodlanmış verileri; analiz edilmesine, görüntülemesine ve çalıştırılmasına yardımcı olan programdır. Bir hexadecimal dosya içeriğinde bilgisayarlar tarafından doğrudan kullanılabilen binary kodlar yer alır. HEX editörleri aynı zamanda byte editörü ve binary dosya editörü isimleriyle de bilinirler.

Sıradan bir HEX Editörü üç ana bölümden oluşur. Sol tarafta bit adreslerinin yer aldığı adres bölümü, merkezde hexadecimal görüntüleme ve sağ tarafta ise karakterlerin görüntülendiği alan konumlanır. Örnek bir hex editör çıktısı Resim 1’deki gibidir.

Volume (Birim) Nedir?

Bilgisayarın tanıyabileceği tek bir dosya sistemi kullanılarak erişilebilen bir depolama alanı bir birim olarak adlandırılır. Bu terim işletim sistemleri bağlamında kullanılır. CD’ler, DVD’ler ve sabit sürücünün bazı bölümleri volume olarak kabul edilebilir. İşletim sistemi bir birimi tanıdığında, o volume içindeki verilere erişilebilir. Yani volume bir işletim sisteminin veya uygulamanın depolama için kullanabileceği adreslenebilir sektörlerin toplamıdır. Bir volumdeki sektörler bir fiziksel depolama aygıtında ardışık sektörlerden oluşmak zorunda değildir. Yani birden fazla partitionun birleştirilmesi ile de bir volume oluşturulabilir.

Partition (Bölüm) Nedir?

Bir sabit disk sürücüsü, partition adı verilen çeşitli depolama birimlerine bölünebilir. Sabit disk sürücüsünde oluşturulabilen ana bölümler birincil, genişletilmiş ve mantıksal bölümlerdir. Bir partition bir volumdeki (birimdeki) ardışık sektörlerin toplamıdır. Bir Volume, bir veya birden fazla partitiondan meydana gelir. Eğer bir volume tek bir partitondan oluşuyorsa bu partitionu volume olarak da adlandırmak mümkündür. Bir partition sisteminin amacı, bir volumün düzenini belirlemektir. Bu nedenle, yalnızca gerekli veriler, her partition için başlangıç ve bitiş konumları arasındadır. Örnek görsel Resim 2’de bulunmaktadır.

Resim 2: Volume ve Partition Yapısı
Master Boot Record (MBR)

MBR, disk bölümlerini yönetmek için kullanılan, nispeten eski ancak günümüzde halen pek çok kullanıcı tarafından kullanılan sistemdir. Depolama  alanında organize edilen disk bölümlerine dair bilgiler de bu sistem tarafından tutulur. MBR ayrıca işletim sistemi için disk bölümlerini taramaya yarayan kodu barındırır. Bir MBR diski, en fazla dört adet birincil bölüme sahip olabilir. Daha fazla bölüm yaratmak için dördüncü bölüm genişletilebilir olarak ayarlanabilir. Bu sayede dördüncü bölüm bünyesinde daha fazla alt bölüm oluşturulabilir. Oluşturulan bu bölümler içinde ayrı bir bölüm tablosu oluşturulur. Bu işlem Resim3’deki gibi gerçekleştirilmiştir. MBR diskler, bölümler için 32-bitlik kayıt sistemi kullandığı için her bir disk bölümü için 2TB depolama sınırı vardır.

Resim 3: MBR Yapısı
GUID Partition Table Table (GPT) Nedir?

UEFI standardına sahip olan bu sistem, diskin bölümlerini düzenleyen en güncel sistemdir.  Yani UEFI tabanlı bir sisteminiz varsa MBR yerine GPT kullanılması gerekmektedir. MBR’nin aksine, GPT’de teorik olarak sınırsız bölüm oluşturulabilir.

GPT, depolama alanı olarak da MBR’den bir adım öndedir. MBR’de bulunan her bir bölüm için 2TB sınırı, GPT’de 9.44ZB gibi boyutlara ulaşabilmektedir. Elbette bu değer sadece teorik olarak mümkün. Zira Windows işletim sistemlerinde her bir bölümün maksimum kapasitesi 256TB olarak sabitlenmiştir.

Resim 4’de yer alan diyagramdan görebileceğiniz gibi, GPT diskler başta ve sonda olmak üzere iki GPT Header’a sahiptir. GPT’yi MBR’den daha kullanışlı yapan en önemli detaylardan biri ise bu diziliştir. GPT diskler, yedek header’ı sonda depoladığı için ana header zarar gördüğünde diskin kurtarılması çok daha kolay olur. GPT diskler ayrıca sorunları tespit etmek için CRC32 sağlama kullanır.

Diagramda dikkat çeken başka bir detay olan Protective MBR ise, BIOS tabanlı sistemlerin bu alanda bulunan bootloader ile GPT diskleri boot etmesine yarar. Ayrıca Protective MBR, GPT’ye karşı tanımsız olan disk araçlarının diske zarar vermesini engeller.

Resim 4: GPT Yapısı
Little Endian ve Big Endian Nedir?

Alfabelerde olduğu gibi sağdan sola ya da soldan sağa doğru yazım şeklini işlemciler de byte’ları saklarken önemli byte’ın solda veya sağda olmasına göre sınıflandırılır. Buna endianness da denir. Bu yapı Büyük Sonlu (Big-Endian) ve Küçük Sonlu (Little-Endian) olmak üzere ikiye ayrılır.

Little-Endian (Küçük Sonlu)

i386 ve devamı olan işlemciler Little-Endian kullanır.

Elimizde 0x34E2561A 4 Byte’lık Integer verimiz olsun. Veri diske kaydedilirken sağdan itibaren başlanarak 0x1A 0x56 0xE2 0x34 olarak saklanır. Yani veriler diske yazılırken tersen yazılır ve okuma işlemi gerçekleştirileceği zamanda yine tersten okunur.

Big-Endian (Büyük Sonlu)

Sun Sparc, Motorola 68K, PowerPC ve Java Sanal İşlemcisi (Java VM) Big-Endian kullanır.

0x7654139A verisi diske yazılırken soldan itibaren başlanarak 0x76 0x54 0x13 0x9A olarak saklanır. Yani veri yazma ve okuma işlemi sırasında olduğu gibi diskte tutulur.

Arap rakamlarında olduğu gibi (İngilizce veya Türkçede kullandığımız rakamlar) önemli byte’ın solda olduğu sıralamaya Big-endian denir. Önemli byte’ın en sağda olduğu sıralama ise Little-endian olarak adlandırılır.

Bütün işlemciler kendi sıralamasını seçmiştir. i386 ve klonu olan işlemciler Little endian’dır. Sun Sparc, Motorola 68K ve PowerPC big endian kullanır. Java Sanal İşlemcisi (Java VM) de big endian kullanır.

Farklı iki işlemcisi olan makineler birbirileri ile haberleşecekleri zaman (IPC), bu veri dönüşümünü yapmazlar ise haberleşemezler.

Bazı uygulamaların endian türü aşağıda ki gibidir..

  • Adobe Photoshop — Big Endian
  • BMP (Windows and OS/2 Bitmaps) — Little Endian
  • DXF (AutoCad) — Variable
  • GIF — Little Endian
  • IMG (GEM Raster) — Big Endian
  • JPEG — Big Endian
  • FLI (Autodesk Animator) — Little Endian
  • MacPaint — Big Endian
  • PCX (PC Paintbrush) — Little Endian
  • PostScript — Not Applicable (text!)
  • POV (Persistence of Vision ray-tracer) — Not Applicable (text!)
  • QTM (Quicktime Movies) — Little Endian (on a Mac!)
  • Microsoft RIFF (.WAV & .AVI) — Both
  • Microsoft RTF (Rich Text Format) — Little Endian
  • SGI (Silicon Graphics) — Big Endian
  • Sun Raster — Big Endian
  • TGA (Targa) — Little

Dos bölümlendirme tabloları, her MBR’de ve her genişletilmiş partionun ilk kısmında bulunur. Bu 512 baytlık yapı tüm MBR bölümlendirmelerinde aynıdır.

Bu 512 baytlık yapının ilk 446 baytı işletim sisteminin yüklenmesi için kullanılan “Boot” kodunu içerir. 446-461, 462-477, 478-493, 494-509 baytları arasında da partition tabloları bulunur, bu partition tabloları 16 baytla partition hakkındaki bilgileri tutar. Sektörün son iki baytında ise MBR imza değeri olan “AA55” değeri bulunur.

Resim 5: MBR Veri Yapısı
Partition Tablosunun Yapısı

Partion tablosunun ilk baytında o partitionun boot edilebilirir olup olmadığı tutulur. Bu bayt 80 değerini taşıyorsa o partition boot edilebilir demektir.

1-3 baytları arasında CHS (Cylinder Head Sector)’nin başlangıç adresi tutulur. CHS adresleri daha eski sistemlerde şarttır fakat yeni sistemler için gerekli değildir.

4. bayt partition tipini tutmak için kullanılır.

5-7 baytları arasında CHS’nin bitiş adresi tutulur.

8-11 baytları arasında LBA’nin başlangıç adresi tutulur

12-15 baytlarında da toplam sektör boyutu tutulur.

Resim 6: Partition Tablosunun Yapısı
Partition Türleri


Resim 7: Partition Türleri
HEX Editör Yardımıyla Dosya Sistemi Analizi

Analiz sırasında kullanılan imaj dosyası İntel Core i5 ve Windows 10 işletim sistemine sahip bir imaj üzerinden gerçekleştirilmiştir. Yani okuma yapılırken Little endian göz önünde bulundurularak veriler ters çevrilerek okunmalıdır.

Bu imaj dosyasından hex editörle açıldıktan sonra görüntülenen ilk sektöründen elde edilen çıktısı yandaki gibidir.

Bu çıktıdan disk bölümlendirme bilgilerini okuyabilmek için yukarda verdiğimiz tanımlardan faydalanmamız gerekir.

İncelenen imajın son iki baytının “AA55” imzasına sahip olduğunu fakat Little Endian ile kodlandığı için “55AA” değerini aldığı ve bu değerin MBR imzası olduğu bilinerek incelemeye başlanılabilir.

Resim 8: HEX Editör Yardımıyla Dosya Sistemi Analizi
Resim 9: HEX Editör Yardımıyla Dosya Sistemi Analizi

Bu çıktının daha iyi anlaşılabilmesi için Resim 9’daki gibi renklendirilmiştir.

Yukarıdaki çıktıda kırmızı ile işaretlenen 446 baytlık alan sistemin boot kodunu içermektedir. Bu kod sistem ön yüklenmesinin yapılması için kullanılmaktadır. Sırasıyla “Sarı”, “Yeşil”, “Mavi” ve açık “Turuncu” ile işaretlenen alanlar partition tablolarını göstermektedir. Çıktıda da görüldüğü üzere 3. ve 4. partition tabloları sadece 0 değerinden oluştuğu için bu diskin 2 partitiondan oluştuğunu söylemek mümkündür. “Mor” ile işaretlenen alan ise MBR’nin imza değerini tutmaktadır. Bu çıktıdan sarı ile belirtilen 1. Partition tablosu çekilip aşağıdaki hale dönüştürülmüştür.

Resim 10: Partition1’in Tablosu
  • Resim 10’daki görselde “Mor” renk ile işaretlenen 0. baytta 80 değeri bulunduğu için bu partitionun boot edilen partition olduğu tespit edilmiştir.
  • “Koyu pembe” renk ile işaretlenen 1 ile 3. bayt arasından okunan veri ters çevrilerek okunduğunda CHS’nin başlangıç adresinin (Partition Başlangıç Adresi) 002120 olduğu tespit edilmiştir. Yani partition okunurken 00 numaralı silindir, 21 numaralı kafa ve 20 numaralı sektörden okunmaya başlanacaktır.
  • “Mavi” renk ile işaretlenen 4. Bayttan 07 değeri okunduğundan bu partition tipinin NTFS’i temsil ettiği tespit edilmiştir.
  • “Yeşil” renk ile işaretlenen 5 ile 7. bayt arasından okunan veri ters çevrilerek okunduğunda CHS’nin bitiş adresinin (Partition Bitiş Adresi) 3F1EDD olduğu tespit edilmiştir. Yani partition okuması bitirilirken 00 numaralı silindir, 21 numaralı kafa ve 20 numaralı sektörde okunma durdurulacaktır.
  • “Pembe” renk ile işaretlenen 8 ile 11. bayt arasından okunan veri ters çevrilerek okunduğunda LBA’nın başlangıç adresinin 00000800 olduğu tespit edilmiştir. Bu adres hexadecimalden decimale dönüştürüldüğünde partitionun 2048. sektörden başladığı tespit edilmiştir.
  • “Krem” rengi ile işaretlenen 12 ile 15. bayt arasından okunan veri ters çevrilerek okunduğunda toplam sector boyutunun 000FA000 olduğu tespit edilmiştir. Bu veri hexadecimalden decimale dönüştürüldüğünde toplam sector boyutunun 1024000 sektör olduğuu ve her sector 512 bayttan oluştuğu için partitionun boyutunun 1024000*512= 524288000 yani 500 Mb olduğu tespit edilmiştir.

Resim 9’daki ana çıktıdan “Yeşil” renkle işaretlenen 2. Partition tablosu çekilip aşağıdaki hale dönüştürülmüştür.

Resim 11:Partition2’nin Tablosu
  • Resim 11’de “Mor” renk ile işaretlenen 0. baytta 00 değeri bulunduğu için bu partitionun boot edilmeyen bir partition olduğu tespit edilmiştir.
  • “Koyu pembe” renk ile işaretlenen 1 ile 3. bayt arasından okunan veri ters çevrilerek okunduğunda CHS’nin başlangıç adresinin 3F1FDD olduğu tespit edilmiştir.
  • “Mavi” renk ile işaretlenen 4. Bayttan 07 değeri okunduğundan bu partition tipinin NTFS’i temsil ettiği tespit edilmiştir.
  • “Yeşil” renk ile işaretlenen 5 ile 7. bayt arasından okunan veri ters çevrilerek okunduğunda CHS’nin bitiş adresinin FFFFFE olduğu tespit edilmiştir.
  • “Pembe” renk ile işaretlenen 8 ile 11. bayt arasından okunan veri ters çevrilerek okunduğunda LBA’nın başlangıç adresinin 000FA800 olduğu tespit edilmiştir. Bu adres hexadecimalden decimale dönüştürüldüğünde partitionun 1026048. sektörden başladığı tespit edilmiştir.
  • “Krem” rengi ile işaretlenen 12 ile 15. bayt arasından okunan veri ters çevrilerek okunduğunda toplam sector boyutunun 03104800 olduğu tespit edilmiştir. Bu veri hexadecimalden decimale dönüştürüldüğünde toplam sector boyutunun 51398656 sektör olduğuu ve her sector 512 bayttan oluştuğu için partitionun boyutunun 51398656*512= 26316111872 yani 24.50879 Gb olduğu tespit edilmiştir.

3. ve 4. partition tablosu sadece 0’lardan oluştuğu için bu partition tablolarını incelemeye gerek yoktur.

The Sleuth Kit İle Dosya Sistem Analizi

Dosya sistemi seviyesinde adli bilişim incelemelerinin nasıl yapılabileceği ve bu işlemler için kullanılabilecek ücretsiz bir analiz kiti olan The Sleuth Kit ile detaylı olarak inceleme yapılabilir. The Sleuth Kit adli bilişim incelemelerinde kullanılabilecek komut satırı uygulamalarından oluşan bir Tool’dur.

Mmls : İlgili disk imajı içindeki partition tablosu okunur ve hangi bölüme ilişkin istatistiki bilgiler öğrenilmek isteniyorsa –o parametresi ile başlangıç sektörü offset değeri olarak belirtilir.

Fsstat : Dosya sistemi hakkında genel istatistiki bilgiler verir.

Fls    : Detaylarını öğrendiğimiz disk bölümünde hangi dosyaların yer aldığını öğrenmek için “fls” komutu çalıştırılır.

Ffind : Kurtarılacak dosyanın, başka hangi dosyaları gösterdiği bilgisine ulaşabiliriz.

istat   : Silinmiş dosyalarla ile ilgili detaylı bilgilere ulaşılır.

İcat   : Silinen dosyaların kurtarılabilmesi sağlanır.

File   : Kurtarılan dosyanın, dosya tipi olarak nasıl göründüğünü öğreniriz.

mmls.exe ile diskin partition yapısını öğreniyoruz.

Resim 12: mmls.exe Ekran Çıktısı

Şimdi sırasıyla aşağıdaki adımları izleyerek silinmiş dosyaları kurtaralım:

3 numaralı bölüm hakkında detaylı bilgiyi öğrenmek için Resim 13’de gösterildiği gibi fsstat uygulamasını çalıştırıyoruz ve ilgili dosya sisteminin NTFS olduğunu öğreniyoruz.

Resim 13: fsstat Ekran Çıktısı

Bir önceki adımda detaylarını öğrendiğimiz disk bölümünde hangi dosyaların yer aldığını öğrenmek için “fls” komutunu çalıştırıyoruz.

Resim 14: fls Ekran Çıktısı

fls uygulamasını Resim 15’deki parametreler ile çalıştırarak ilgili disk bölümü içinde yer alan sadece silinmiş dosyaların listesini elde ediyoruz. Silinmiş dosyalar fazla olabileceği için komut çıktısı cikti.txt dosyasına yazdırılmıştır.

Resim 15: Komut

Örnek olarak kurtaracağımız dosya aşağıdaki çıktıda yer alan ve inode numarası 1018 olan manzara.jpg isimli dosya. Fakat aşağıdaki çıktıyı biraz daha dikkatli incelediğimizde 0 ve 1018 numaralı inode’un iki dosya ismi kaydına denk geldiğini görüyoruz.

Resim 16: cikti.txt İçeriği

Aşağıdaki gibi ffind uygumalası ile 1018 numaralı inode’un hangi dosyaları gösterdiği bilgisine ulaşabiliriz.

C:UsersÆZDMRDesktopsleuthkit-4.6.0-win32sleuthkit-4.6.0-win32in>ffind -o 1026048 ProjeProje.E01 1018

Users/XXXXXX/Desktop/manzara.jpg

Her iki dosyanın da silinmiş olduğunu görüyoruz. Bu inode üzerinden istat ile detaylı bilgilere ulaştığımızda karşımıza çıkan bilgiler ise Resim 17’deki ekran görüntüsünde yer almaktadır.

Resim 17: istat Ekran Çıktısı

Aynı şekilde ilgili dosyaya ilişkin direck block bilgilerine ulaşabiliyoruz. Bu durum bizim silinen dosyaları kurtarabilme ihtimalimizi güçlendirir. Bu kurtarma işlemini gerçekleştirmek için icat uygulamasına ilgili inode bilgisini verip Resim 18’deki şekilde çalıştırıyoruz.

Resim 18: icat Ekran Çıktısı

Resim 18’deki çıktıdan da görülebileceği üzere silinmiş bir dosyayı başarılı şekilde kurtarabildik.

Kurtarılan dosyanın ekran görüntüsü:

Resim 19: Kurtarılan Silinmiş Dosya
Sonuç

Hex editörleri veya The Sleuth Kit yazılımı sayesinde adli inceleme yazılımlarıyla elde edilebilecek tüm veriler elde edilebilir. Bu incelemelerde önemli olan husus verinin nasıl okunacağını bilmek ve okunan verinin anlamlandırılabilmesidir. Doğru okuma yapılabildiği sürece istenilen tüm bilgiler elde edilebilir yalnız hex editörleri yardımıyla yapılan manuel incelemeler adli inceleme yazılımlarıyla yapılan incelemelere göre daha çok emek, zaman ve bilgi gerektirir. Adli inceleme yazılımları, hex editörleri yardımıyla yapılan işlemleri otomatize gerçekleştirdiği için incelemeler daha kolay ve daha hızlı gerçekleştirilir.

Sonuç olarak kullanabileceğiniz bir adli inceleme yazılımı yoksa ve ya manuel inceleme yapmak isteniyorsa hex editörleri ve The Sleuth Kit yazılımı ile bu incelemeler başarılı bir şekilde gerçekleştirilebilir.

Ali Ezdemir
Ali Ezdemir

Detaylı Bilgi İçin

info@gaissecurity.com