Menu Close

Computer Forensik (Praktikum 2)

Im zweiten Praktikum beschäftigen wir uns mit der Analyse von Datenträgern, Partitionstabellen und Partitionen selbst. Weiterhin üben wir das Wiederherstellen von Dateien aus nicht-allozierten Speicherbereichen.

Skript-AnfangPraktikum 2 – Seite 1
Skript-EndePraktikum 2 – Seite 1

Datenträgeranalyse

Analyse des Datenträgers

Bestimmen Sie die Blockgröße des Datenträgers.

Mit Hilfe der Werkzeuge mmls und fdisk können relevante Informationen zu der Festplattenpartitionierung und folglich auch der Block- bzw. Sektorgröße ermittelt werden. Zunächst wird eine Analyse mit fdisk durchgeführt.

# fdisk arbeitskopie.dd 

Command (m for help): p

Disk arbeitskopie.dd: 6476 MB, 6476090368 bytes\n255 heads, 63 sectors/track, 787 cylinders, total 12648614 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdbe43afc

	      Device   Boot    Start         End      Blocks   Id  System
arbeitskopie.dd1   *        2048    10231807     5114880    7  HPFS/NTFS/exFAT
arbeitskopie.dd2        10231808    10272767       20480    6  FAT16
arbeitskopie.dd3        10293248    12646399     1176576    f  W95 Ext'd (LBA)
arbeitskopie.dd5        10295296    12138495      921600    7  HPFS/NTFS/exFAT

Die Analyse zeigt uns, ob eine Partition bootfähig ist, an welcher Stelle eine Partition beginnt und endet sowie welches Dateisystem darauf zu finden ist. Die Analyse mit mmls liefert deutlich mehr Informationen dazu. Hier werden nicht-allokierte Bereiche und erweiterte Partitionen angezeigt. Anhand des Slot-Feldes kann man erkennen, in welcher Partitionstabelle eine Partition aufgeführt ist.

# mmls arbeitskopie.dd 
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

     Slot    Start        End          Length       Description\n00:  Meta    0000000000   0000000000   0000000001   Primary Table (#0)\n01:  -----   0000000000   0000002047   0000002048   Unallocated\n02:  00:00   0000002048   0010231807   0010229760   NTFS (0x07)\n03:  00:01   0010231808   0010272767   0000040960   DOS FAT16 (0x06)\n04:  -----   0010272768   0010295295   0000022528   Unallocated\n05:  Meta    0010293248   0012646399   0002353152   Win95 Extended (0x0f)\n06:  Meta    0010293248   0010293248   0000000001   Extended Table (#1)\n07:  01:00   0010295296   0012138495   0001843200   NTFS (0x07)\n08:  -----   0012138496   0012648613   0000510118   Unallocated

Anhand dieser Informationen lässt sich mit hoher Wahrscheinlichkeit sagen, dass vier Partitionen auf dem Festplattenabbild vorhanden sind.

Analyse der Partitionstabelle

Schreiben Sie mittels dd den MBR in die Datei mbr.dd und vermerken Sie dessen Hashwert.

Der Master Boot Record (MBR) einer Festplatte befindet stets an der Stelle des ersten Sektors und enthält eine Partitionstabelle, welche die Aufteilung des Datenträgers beschreibt. Indem wir mit dem Offset 0 beginnen und nur einen einzigen Block kopieren, fertigen wir eine exakte bit-genaue Kopie des MBR an, die wir für eine genauere Untersuchung verwenden können. Der Hashwert dient als Nachweis, dass wir die Daten nicht verändert haben bei diesem Prozess.

# dd if=arbeitskopie.dd of=mbr.dd count=1 bs=512\n1+0 records in\n1+0 records out\n512 bytes (512 B) copied, 3.2746e-05 s, 15.6 MB/s

# sha256sum mbr.dd 
b08385aaaf8db1bdc571d7190a728b02ec99990b571c614c8f3920dfedc39e74  mbr.dd

Beschreiben Sie die Aufteilung des Datenträgers in Partitionen.

Mit der zuvor extrahierten Kopie des MBR arbeiten wir nun weiter. Wir lassen uns zunächst die Inhalte der Kopie xxd in hexadezimaler Darstellung anzeigen.

# xxd mbr.dd \n0000000: 33c0 8ed0 bc00 7cfb 5007 501f fcbe 1b7c  3.....|.P.P....|\n0000010: bf1b 0650 57b9 e501 f3a4 cbbd be07 b104  ...PW...........\n0000020: 386e 007c 0975 1383 c510 e2f4 cd18 8bf5  8n.|.u..........\n0000030: 83c6 1049 7419 382c 74f6 a0b5 07b4 078b  ...It.8,t.......\n0000040: f0ac 3c00 74fc bb07 00b4 0ecd 10eb f288  ..<.t...........\n0000050: 4e10 e846 0073 2afe 4610 807e 040b 740b  N..F.s*.F..~..t.\n0000060: 807e 040c 7405 a0b6 0775 d280 4602 0683  .~..t....u..F...\n0000070: 4608 0683 560a 00e8 2100 7305 a0b6 07eb  F...V...!.s.....\n0000080: bc81 3efe 7d55 aa74 0b80 7e10 0074 c8a0  ..>.}U.t..~..t..\n0000090: b707 eba9 8bfc 1e57 8bf5 cbbf 0500 8a56  .......W.......V\n00000a0: 00b4 08cd 1372 238a c124 3f98 8ade 8afc  .....r#..$?.....\n00000b0: 43f7 e38b d186 d6b1 06d2 ee42 f7e2 3956  C..........B..9V\n00000c0: 0a77 2372 0539 4608 731c b801 02bb 007c  .w#r.9F.s......|\n00000d0: 8b4e 028b 5600 cd13 7351 4f74 4e32 e48a  .N..V...sQOtN2..\n00000e0: 5600 cd13 ebe4 8a56 0060 bbaa 55b4 41cd  V......V.`..U.A.\n00000f0: 1372 3681 fb55 aa75 30f6 c101 742b 6160  .r6..U.u0...t+a`\n0000100: 6a00 6a00 ff76 0aff 7608 6a00 6800 7c6a  j.j..v..v.j.h.|j\n0000110: 016a 10b4 428b f4cd 1361 6173 0e4f 740b  .j..B....aas.Ot.\n0000120: 32e4 8a56 00cd 13eb d661 f9c3 496e 7661  2..V.....a..Inva\n0000130: 6c69 6420 7061 7274 6974 696f 6e20 7461  lid partition ta\n0000140: 626c 6500 4572 726f 7220 6c6f 6164 696e  ble.Error loadin\n0000150: 6720 6f70 6572 6174 696e 6720 7379 7374  g operating syst\n0000160: 656d 004d 6973 7369 6e67 206f 7065 7261  em.Missing opera\n0000170: 7469 6e67 2073 7973 7465 6d00 0000 0000  ting system.....\n0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00001b0: 0000 0000 002c 4463 fc3a e4db 0000 8020  .....,Dc.:..... \n00001c0: 2100 07e5 a97c 0008 0000 0018 9c00 00e5  !....|..........\n00001d0: aa7c 0672 b37f 0020 9c00 00a0 0000 00b8  .|.r... ........\n00001e0: b980 0ffe ff12 0010 9d00 00e8 2300 0000  ............#...\n00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.

Mit dieser Darstellung lässt sich jedoch noch nicht viel anfangen. Per Konvention liegt in dem Bereich zwischen 0x01BE und 0x1FD die 64 Byte große Partitionstabelle. Extrahiert man diese Informationen und ordnet sie in Gruppen an, so ergibt sich folgende Partitionierung der Festplatte.

#Hex-Informationen
18020 2100 07e5 a97c 0008 0000 0018 9c00
200e5 aa7c 0672 b37f 0020 9c00 00a0 0000
300b8 b980 0ffe ff12 0010 9d00 00e8 2300
40000 0000 0000 0000 0000 0000 0000 0000

In der Partitionstabelle des MBR sind drei Partitionen vermerkt. Vergleicht man dies mit der Auswertung durch das Tool mmls, so lässt sich spätestens an dieser Stelle folgern, dass die Partition am Startblock 0010295296 durch eine erweiterte Partition mit eigener Partitionstabelle realisiert wurde. Da es sich bei erweiterten Partitionen um verkettete Listen handelt, muss die Partitionstabelle am Anfang der dritten Partition liegen. Dies wird in mmls anschaulich gezeigt. Dort wird eine erweiterte Tabelle an Block 0010293248 angezeigt.

Bestimmen Sie anhand der mbr.dd unter anderem für alle Partitionen den CHS Eintrag, den Typ der Partition, den Startsektor, die Anzahl der Sektoren in der Partition und ob diese bootfähig ist.

Als Voraussetzung für diesen Schritt muss die Übersetzung der hexadezimalen Darstellung der CHS-Adressierung in die reguläre Form erklärt werden.

Die folgende Tabelle bildet die zweite Wissensgrundlage und beschreibt, wie die Partitionstypen anhand ihrer Kennnummern identifiziert werden können.

Typbyte (hex)Bezeichnung
0x00Leer/unbenutzt
0x01FAT12
0x04FAT16 ≤ 32
0x05erweiterte Partition
0x06FAT16 > 32
0x07NTFS, HPFS oder exFAT
0x0BFAT32
0x0CFAT32 mit BIOS-Extensions
0x0EFAT16 > 32
0x0FErweiterte Partition mit BIOS-Extensions
0x12OEM-Partition
0x27Windows RE versteckte Partition
0x42Dynamischer Datenträger
0x82Linux Swap / Solaris 2.6 X86 bis Solaris 9 X86
0x83Linux Native
0x8ELinux LVM
0xA5FreeBSD
0xA6OpenBSD
0xA9NetBSD
0xEELegacy MBR mit folgendem EFI-Header
0xEFEFI-Dateisystem

Nun übertragen wir die hexadezimalen Daten aus der Partitionstabelle nach den genannten Schemata ein und analyisieren diese.

#Bootbarkeit (0x00)CHS-Start (0x01)Dateisystem (0x04)CHS-Ende (0x05)LBA-Adressierung (0x08)Sektoren (0x0C)
08020 21 0007e5 a9 7c00 08 00 0000 18 9c 00
0Bootfähig0,32,33NTFS636,229,41204810229760
100e5 aa 7c0672 b3 7f00 20 9c 0000 a0 00 00
1Nicht bootfähig636,229,42FAT16 > 32 MiB639,114,511023180840960
200b8 b9 800ffe ff 1200 10 9d 0000 e8 23 00
2Nicht bootfähig640,184,57Erweiterte Partition mit BIOS-Extensions895,254,63102932482353152

Bestimmen Sie diese Informationen zusätzlich fur die sekundären Partitionen.

Wir gehen wie gehabt vor und extrahieren den 512 Byte großen Block, der die Partitionsinformationen enthalten soll. Für diesen wird der Hashwert erzeugt.

# sha256sum mbr2.dd \n02e3892dca9ee74f4a2b9491696a1b4a2a0651a2408a636ad35bc70f77d97362  mbr2.dd
  
# dd if=arbeitskopie.dd of=mbr2.dd skip=0010293248 count=1  bs=512\n1+0 records in\n1+0 records out\n512 bytes (512 B) copied, 0.000205835 s, 2.5 MB/s

Wie bei der vorherigen Aufgabe betrachten wir die hexadezimale Darstellung, um Informationen zu sammeln.

# xxd mbr2.dd \n0000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00001b0: 0000 0000 0000 0000 0000 0000 0000 00d9  ................\n00001c0: 9a80 0795 a2f3 0008 0000 0020 1c00 0000  ........... ....\n00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................\n00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.

In diesem Bereich sind die Boot Record Signature (0x55aa) und eine Partition (00d9 9a80 0795 a2f3 0008 0000 0020 1c00) zu finden. Wie zuvor werden die Informationen analysiert und notiert.

Bootbarkeit (0x00)CHS-Start (0x01)Dateisystem (0x04)CHS-Ende (0x05)LBA-Adressierung (0x08)Sektoren (0x0C)
00d9 9a 800795 a2 f300 08 00 0000 20 1c 00
Nicht bootfähig640,217,25NTFS755,14,3320481843200

Geben Sie die LBA der nicht-allozierten Speicherbereiche an. Wie viele nicht-allozierte Speicherbereiche finden Sie?

Es gibt drei nicht-allozierte Speicherbereiche mit den LBA 0000000000, 0010293248 und 0012138496.

     Slot    Start        End          Length       Description\n01:  -----   0000000000   0000002047   0000002048   Unallocated\n04:  -----   0010272768   0010295295   0000022528   Unallocated\n08:  -----   0012138496   0012648613   0000510118   Unallocated

Analyse der Partitionen

Schreiben Sie mittels dd die erste und die zweite Primäre Partition nach partition_1.dd bzw. partition_2.dd.

# dd if=arbeitskopie.dd of=partition_1.dd skip=2048 count=0010229760 bs=512\n10229760+0 records in\n10229760+0 records out\n5237637120 bytes (5.2 GB) copied, 207.949 s, 25.2 MB/s

# dd if=arbeitskopie.dd of=partition_2.dd skip=10231808 count=40960  bs=512\n40960+0 records in\n40960+0 records out\n20971520 bytes (21 MB) copied, 0.256054 s, 81.9 MB/s

Vermerken Sie deren Hashwerte.

# sha256sum partition_1.dd partition_2.dd 
cc224419f690065a653efa9cb58dbf546b72e7db752fe71229bfb4d11dd8e685  partition_1.dd
af1b66fdf5ae27c07da0fb9915c4d7f6f6be2941484136698e73fa75cc6aab86  partition_2.dd

Welche Dateisysteme sollten Sie laut Partitionstabelle dort vorfinden?

Laut Partitionstabelle sollte die erste Partition NTFS und die zweite Partition FAT16 verwenden.

Stimmen die Angaben?

Mit dem Werkzeug fsstat können konkrete Informationen über ein Dateisystem ausgelesen und angezeigt werden. Es eignet sich also bestens, um diese Frage zu beantworten.

# fsstat partition_1.dd 
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: NTFS
Volume Serial Number: 5C0E509B0E50704E
OEM Name: NTFS    
Volume Name: Volume1
Version: Windows XP

# fsstat partition_2.dd 
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: FAT16

OEM Name: mkdosfs
Volume ID: 0x3ccb36b8
Volume Label (Boot Sector):            
Volume Label (Root Directory):
File System Type Label: FAT16

Vergleicht man diese Informationen nun, so scheinen die Angaben im MBR bzw. der Partitionstabelle korrekt zu sein.

Analyse des nicht-allozierten Bereichs

Suchen Sie im dritten nicht-allozierten Speicherbereich nach versteckten Informationen. Geben Sie gefundene Informationen an.

Zunächst extrahieren wir den nicht-allozierten Speicherbereich und generieren eine Prüfsumme, um die Nachvollziehbarkeit und Integrität zu gewährleisten.

# dd if=arbeitskopie.dd of=u.dd skip=0012138496 count=0000510118 bs=512\n510118+0 records in\n510118+0 records out\n261180416 bytes (261 MB) copied, 3.80292 s, 68.7 MB/s

# sha256sum u.dd \n5ceace853194138924c6fffad721d051d4f7735de261a60666af75d60702418f  u.dd

Mit dem Werkzeug scalpel lassen sich gelöschte Dateien auf einem Laufwerk wiederherstellen. Es ist somit ebenfalls geeignet die Daten im nicht-allozierten Bereich zu rekonstruieren. Diese Klasse von Programmen wird auch file carver genannt.

# scalpel -o out u.dd

Scalpel version 1.60 audit file
Started at Thu Apr 30 09:03:15 2015
Command line:
scalpel -o out u.dd 

Output directory: /root/Downloads/P1/u/out
Configuration file: /etc/scalpel/scalpel.conf

Opening target "H="

The following files were carved:
File                Start		Chop		Length		Extracted From\n00000004.png       120455		NO          1111330		u.dd\n00000001.jpg       212540		NO            44428		u.dd\n00000000.jpg       100354		NO            13484		u.dd\n00000002.jpg     51381248		NO            13484		u.dd\n00000005.png     61672449		NO          1111330		u.dd\n00000003.jpg    108820480		NO            44428		u.dd\n00000016.pdf    204800000		NO          1115386		u.dd
...

An dieser Stelle werden alle Einträge, die nicht erfolgreich extrahiert werden können, nicht aufgeführt. Es verbleiben somit 7 Dateien, die sich regulär von den Anwendungen öffnen lassen. Laut Praktikumsbetreuer gibt es einen Fehler in scalpel bezüglich des png-Headers, wodurch einige Dateien nicht korrekt identifiziert oder extrahiert werden.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.

Index