Partitions/File Systems/Carving

Reading time: 10 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Partitions

Bir sabit disk veya bir SSD disk, verileri fiziksel olarak ayırma amacıyla farklı bölümler içerebilir.
Diskin minimum birimi sektördür (normalde 512B'den oluşur). Bu nedenle, her bölüm boyutu bu boyutun katı olmalıdır.

MBR (master Boot Record)

Boot kodunun 446B'sinden sonra diskin ilk sektöründe tahsis edilmiştir. Bu sektör, PC'ye bir bölümün ne zaman ve nereden bağlanması gerektiğini belirtmek için gereklidir.
En fazla 4 bölüm (en fazla 1 aktif/bootable olabilir) olmasına izin verir. Ancak, daha fazla bölüme ihtiyacınız varsa genişletilmiş bölümler kullanabilirsiniz. Bu ilk sektörün son baytı boot kayıt imzası 0x55AA'dır. Sadece bir bölüm aktif olarak işaretlenebilir.
MBR, maksimum 2.2TB'ye izin verir.

MBR'nin 440 ile 443 baytları arasında Windows Disk İmzası bulabilirsiniz (Windows kullanılıyorsa). Sabit diskin mantıksal sürücü harfi, Windows Disk İmzasına bağlıdır. Bu imzanın değiştirilmesi, Windows'un başlatılmasını engelleyebilir (araç: Active Disk Editor).

Format

OffsetLengthItem
0 (0x00)446(0x1BE)Boot code
446 (0x1BE)16 (0x10)First Partition
462 (0x1CE)16 (0x10)Second Partition
478 (0x1DE)16 (0x10)Third Partition
494 (0x1EE)16 (0x10)Fourth Partition
510 (0x1FE)2 (0x2)Signature 0x55 0xAA

Partition Record Format

OffsetLengthItem
0 (0x00)1 (0x01)Active flag (0x80 = bootable)
1 (0x01)1 (0x01)Start head
2 (0x02)1 (0x01)Start sector (bits 0-5); upper bits of cylinder (6- 7)
3 (0x03)1 (0x01)Start cylinder lowest 8 bits
4 (0x04)1 (0x01)Partition type code (0x83 = Linux)
5 (0x05)1 (0x01)End head
6 (0x06)1 (0x01)End sector (bits 0-5); upper bits of cylinder (6- 7)
7 (0x07)1 (0x01)End cylinder lowest 8 bits
8 (0x08)4 (0x04)Sectors preceding partition (little endian)
12 (0x0C)4 (0x04)Sectors in partition

Bir MBR'yi Linux'ta bağlamak için önce başlangıç ofsetini almanız gerekir (bunu fdisk ve p komutunu kullanarak yapabilirsiniz)

Ve ardından aşağıdaki kodu kullanın

bash
#Mount MBR in Linux
mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/

LBA (Mantıksal blok adresleme)

Mantıksal blok adresleme (LBA), bilgisayar depolama cihazlarında, genellikle sabit disk sürücüleri gibi ikincil depolama sistemlerinde depolanan veri bloklarının konumunu belirtmek için kullanılan yaygın bir şemadır. LBA, özellikle basit bir doğrusal adresleme şemasına sahiptir; bloklar bir tam sayı indeksi ile konumlandırılır, ilk blok LBA 0, ikinci LBA 1 şeklinde devam eder.

GPT (GUID Bölüm Tablosu)

GUID Bölüm Tablosu, kısaca GPT, MBR (Ana Önyükleme Kaydı) ile karşılaştırıldığında geliştirilmiş yetenekleri nedeniyle tercih edilmektedir. Bölümler için küresel benzersiz tanımlayıcı ile ayırt edici olan GPT, birkaç yönden öne çıkmaktadır:

  • Konum ve Boyut: Hem GPT hem de MBR sektör 0'da başlar. Ancak, GPT 64 bit üzerinde çalışırken, MBR 32 bit kullanır.
  • Bölüm Sınırları: GPT, Windows sistemlerinde 128 bölüme kadar destekler ve 9.4ZB'a kadar veri depolayabilir.
  • Bölüm İsimleri: Bölümlere 36 Unicode karaktere kadar isim verme imkanı sunar.

Veri Dayanıklılığı ve Kurtarma:

  • Yedeklilik: MBR'nin aksine, GPT bölümleme ve önyükleme verilerini tek bir yere hapsetmez. Bu verileri disk boyunca çoğaltarak veri bütünlüğünü ve dayanıklılığını artırır.
  • Döngüsel Yedeklilik Kontrolü (CRC): GPT, veri bütünlüğünü sağlamak için CRC kullanır. Veri bozulmasını aktif olarak izler ve tespit edildiğinde, GPT bozulmuş veriyi başka bir disk konumundan kurtarmaya çalışır.

Koruyucu MBR (LBA0):

  • GPT, koruyucu bir MBR aracılığıyla geriye dönük uyumluluğu sürdürür. Bu özellik, eski MBR tabanlı yardımcı programların yanlışlıkla GPT disklerini üzerine yazmasını önlemek için tasarlanmıştır, böylece GPT formatlı disklerde veri bütünlüğünü korur.

https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID_Partition_Table_Scheme.svg/800px-GUID_Partition_Table_Scheme.svg.png

Hibrit MBR (LBA 0 + GPT)

Wikipedia'dan

EFI yerine BIOS hizmetleri aracılığıyla GPT tabanlı önyükleme destekleyen işletim sistemlerinde, ilk sektör hala önyükleyici kodunun ilk aşamasını depolamak için kullanılabilir, ancak GPT **bölümlerini tanıyacak şekilde **değiştirilmiştir. MBR'deki önyükleyici, 512 baytlık bir sektör boyutu varsaymamalıdır.

Bölüm tablosu başlığı (LBA 1)

Wikipedia'dan

Bölüm tablosu başlığı, diskteki kullanılabilir blokları tanımlar. Ayrıca, bölüm tablosunu oluşturan bölüm girişlerinin sayısını ve boyutunu tanımlar (tablodaki 80 ve 84 ofsetleri).

OfsetUzunlukİçerik
0 (0x00)8 baytİmza ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h veya 0x5452415020494645ULL küçük sonlu makinelerde)
8 (0x08)4 baytUEFI 2.8 için Revizyon 1.0 (00h 00h 01h 00h)
12 (0x0C)4 baytKüçük sonlu (bayt cinsinden, genellikle 5Ch 00h 00h 00h veya 92 bayt) başlık boyutu
16 (0x10)4 baytCRC32 başlığın (ofset +0'dan başlık boyutuna kadar) küçük sonlu, bu alan hesaplama sırasında sıfırlanır
20 (0x14)4 baytAyrılmış; sıfır olmalıdır
24 (0x18)8 baytGeçerli LBA (bu başlık kopyasının konumu)
32 (0x20)8 baytYedek LBA (diğer başlık kopyasının konumu)
40 (0x28)8 baytBölümler için ilk kullanılabilir LBA (birincil bölüm tablosunun son LBA'sı + 1)
48 (0x30)8 baytSon kullanılabilir LBA (ikincil bölüm tablosunun ilk LBA'sı − 1)
56 (0x38)16 baytDisk GUID karışık sonlu
72 (0x48)8 baytBölüm girişlerinin bir dizisinin başlangıç LBA'sı (her zaman birincil kopyada 2)
80 (0x50)4 baytDizideki bölüm girişlerinin sayısı
84 (0x54)4 baytTek bir bölüm girişinin boyutu (genellikle 80h veya 128)
88 (0x58)4 baytBölüm girişleri dizisinin küçük sonlu CRC32'si
92 (0x5C)*Ayrılmış; blokun geri kalanında sıfır olmalıdır (512 baytlık bir sektör boyutu için 420 bayt; ancak daha büyük sektör boyutları ile daha fazla olabilir)

Bölüm girişleri (LBA 2–33)

GUID bölüm giriş formatı
OfsetUzunlukİçerik
0 (0x00)16 baytBölüm türü GUID (karışık sonlu)
16 (0x10)16 baytBenzersiz bölüm GUID (karışık sonlu)
32 (0x20)8 baytİlk LBA (küçük sonlu)
40 (0x28)8 baytSon LBA (dahil, genellikle tek)
48 (0x30)8 baytNitelik bayrakları (örneğin, bit 60 yalnızca okunur)
56 (0x38)72 baytBölüm adı (36 UTF-16LE kod birimi)

Bölüm Türleri

Daha fazla bölüm türü için https://en.wikipedia.org/wiki/GUID_Partition_Table

İnceleme

ArsenalImageMounter ile adli görüntüyü monte ettikten sonra, Windows aracı Active Disk Editor** kullanarak ilk sektörü inceleyebilirsiniz. Aşağıdaki görüntüde sektör 0'da bir MBR tespit edilmiştir ve yorumlanmıştır:

Eğer bir MBR yerine bir GPT tablosu olsaydı, sektör 1'de EFI PART imzası görünmelidir (önceki görüntüde bu alan boştur).

Dosya Sistemleri

Windows dosya sistemleri listesi

  • FAT12/16: MSDOS, WIN95/98/NT/200
  • FAT32: 95/2000/XP/2003/VISTA/7/8/10
  • ExFAT: 2008/2012/2016/VISTA/7/8/10
  • NTFS: XP/2003/2008/2012/VISTA/7/8/10
  • ReFS: 2012/2016

FAT

FAT (Dosya Tahsis Tablosu) dosya sistemi, temel bileşeni olan dosya tahsis tablosu etrafında tasarlanmıştır ve bu tablo hacmin başlangıcında yer alır. Bu sistem, verileri iki kopya tutarak korur ve birinin bozulması durumunda veri bütünlüğünü sağlar. Tablo, kök klasör ile birlikte sabit bir konumda olmalıdır; bu, sistemin başlatma süreci için kritik öneme sahiptir.

Dosya sisteminin temel depolama birimi bir küme, genellikle 512B'dir ve birden fazla sektörden oluşur. FAT, sürümler boyunca evrim geçirmiştir:

  • FAT12, 12 bit küme adreslerini destekler ve 4078 kümeye kadar (4084 UNIX ile) işleyebilir.
  • FAT16, 16 bit adreslere yükseltilmiştir ve böylece 65,517 kümeye kadar destekler.
  • FAT32, 32 bit adreslerle daha da ilerleyerek her hacim için etkileyici bir şekilde 268,435,456 kümeye izin verir.

FAT sürümleri arasında önemli bir sınırlama, dosya boyutu depolamak için kullanılan 32 bit alan nedeniyle 4GB maksimum dosya boyutudur.

FAT12 ve FAT16 için kök dizininin temel bileşenleri şunlardır:

  • Dosya/Klasör Adı (en fazla 8 karakter)
  • Nitelikler
  • Oluşturma, Değiştirme ve Son Erişim Tarihleri
  • FAT Tablosu Adresi (dosyanın başlangıç kümesini gösterir)
  • Dosya Boyutu

EXT

Ext2, günlük tutmayan bölümler (çok fazla değişmeyen bölümler) için en yaygın dosya sistemidir, örneğin önyükleme bölümü. Ext3/4 ise günlük tutan sistemlerdir ve genellikle diğer bölümler için kullanılır.

Meta Veriler

Bazı dosyalar meta veriler içerir. Bu bilgiler, dosyanın içeriği hakkında olup, bazen bir analist için ilginç olabilir; çünkü dosya türüne bağlı olarak şunları içerebilir:

  • Başlık
  • Kullanılan MS Office Versiyonu
  • Yazar
  • Oluşturma ve son değiştirme tarihleri
  • Kameranın modeli
  • GPS koordinatları
  • Görüntü bilgileri

Bir dosyanın meta verilerini almak için exiftool ve Metadiver gibi araçları kullanabilirsiniz.

Silinmiş Dosyaların Kurtarılması

Günlük Kayıtlı Silinmiş Dosyalar

Daha önce görüldüğü gibi, dosya "silindikten" sonra hala kaydedilen birkaç yer vardır. Bunun nedeni, genellikle bir dosyanın dosya sisteminden silinmesinin sadece silindi olarak işaretlenmesidir, ancak veriye dokunulmaz. Bu nedenle, dosyaların kayıtlarını (MFT gibi) incelemek ve silinmiş dosyaları bulmak mümkündür.

Ayrıca, işletim sistemi genellikle dosya sistemi değişiklikleri ve yedeklemeleri hakkında çok fazla bilgi kaydeder, bu nedenle dosyayı veya mümkün olduğunca fazla bilgiyi kurtarmak için bunları kullanmaya çalışmak mümkündür.

File/Data Carving & Recovery Tools

Dosya Oymacılığı

Dosya oymacılığı, veri yığınında dosyaları bulmaya çalışan bir tekniktir. Bu tür araçların çalıştığı 3 ana yol vardır: Dosya türü başlıkları ve alt başlıklarına dayalı, dosya türü yapılarına dayalı ve içerik kendisine dayalı.

Bu tekniğin parçalanmış dosyaları geri almak için çalışmadığını unutmayın. Eğer bir dosya bitişik sektörlerde depolanmamışsa, bu teknik onu veya en azından bir kısmını bulamayacaktır.

Aradığınız dosya türlerini belirterek dosya oymacılığı için kullanabileceğiniz birkaç araç vardır.

File/Data Carving & Recovery Tools

Veri Akışı Carving

Veri Akışı Oymacılığı, Dosya Oymacılığına benzer, ancak tam dosyalar aramak yerine, ilginç bilgi parçalarını arar.
Örneğin, günlük kaydedilmiş URL'leri içeren bir tam dosya aramak yerine, bu teknik URL'leri arayacaktır.

File/Data Carving & Recovery Tools

Güvenli Silme

Açıkça, dosyaları ve bunlarla ilgili günlüklerin bir kısmını "güvenli" bir şekilde silmenin yolları vardır. Örneğin, bir dosyanın içeriğini birkaç kez gereksiz verilerle üst üste yazmak ve ardından dosya ile ilgili $MFT ve $LOGFILE'dan günlükleri kaldırmak ve Hacim Gölge Kopyalarını kaldırmak mümkündür.
Bu işlemi gerçekleştirirken, dosyanın varlığının hala diğer parçalarda kaydedilmiş olabileceğini fark edebilirsiniz ve bu doğrudur; adli uzmanların işi bunları bulmaktır.

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin