hacktricks/forensics/basic-forensic-methodology/partitions-file-systems-carving
2024-09-04 13:40:55 +00:00
..
file-data-carving-recovery-tools.md Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:40:55 +00:00
file-data-carving-tools.md Translated ['1911-pentesting-fox.md', '6881-udp-pentesting-bittorrent.md 2024-07-18 20:11:44 +00:00
README.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:28:47 +00:00

Partitions/File Systems/Carving

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Partitions

Ένας σκληρός δίσκος ή ένα SSD μπορεί να περιέχει διαφορετικές κατατμήσεις με στόχο τη φυσική διαχωρισμό των δεδομένων.
Η ελάχιστη μονάδα ενός δίσκου είναι ο τομέας (κανονικά αποτελείται από 512B). Έτσι, το μέγεθος κάθε κατατμήσεως πρέπει να είναι πολλαπλάσιο αυτού του μεγέθους.

MBR (master Boot Record)

Είναι κατανεμημένο στον πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον υπολογιστή τι και από πού θα πρέπει να προσαρτηθεί μια κατανομή.
Επιτρέπει έως 4 κατατμήσεις (το πολύ μόνο 1 μπορεί να είναι ενεργή/εκκινήσιμη). Ωστόσο, αν χρειάζεστε περισσότερες κατατμήσεις μπορείτε να χρησιμοποιήσετε εκτεταμένες κατατμήσεις. Ο τελευταίος byte αυτού του πρώτου τομέα είναι η υπογραφή του boot record 0x55AA. Μόνο μία κατανομή μπορεί να χαρακτηριστεί ως ενεργή.
Το MBR επιτρέπει μέγιστο 2.2TB.

Από τα bytes 440 έως 443 του MBR μπορείτε να βρείτε την Υπογραφή Δίσκου Windows (αν χρησιμοποιείται Windows). Το λογικό γράμμα δίσκου του σκληρού δίσκου εξαρτάται από την Υπογραφή Δίσκου Windows. Η αλλαγή αυτής της υπογραφής θα μπορούσε να αποτρέψει την εκκίνηση των Windows (εργαλείο: Active Disk Editor).

Format

Offset Length Item
0 (0x00) 446(0x1BE) Κώδικας εκκίνησης
446 (0x1BE) 16 (0x10) Πρώτη Κατανομή
462 (0x1CE) 16 (0x10) Δεύτερη Κατανομή
478 (0x1DE) 16 (0x10) Τρίτη Κατανομή
494 (0x1EE) 16 (0x10) Τέταρτη Κατανομή
510 (0x1FE) 2 (0x2) Υπογραφή 0x55 0xAA

Format Καταγραφής Κατανομής

Offset Length Item
0 (0x00) 1 (0x01) Σημαία ενεργότητας (0x80 = εκκινήσιμη)
1 (0x01) 1 (0x01) Αρχική κεφαλή
2 (0x02) 1 (0x01) Αρχικός τομέας (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7)
3 (0x03) 1 (0x01) Αρχικός κύλινδρος χαμηλότερα 8 bits
4 (0x04) 1 (0x01) Κωδικός τύπου κατανομής (0x83 = Linux)
5 (0x05) 1 (0x01) Τελική κεφαλή
6 (0x06) 1 (0x01) Τελικός τομέας (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7)
7 (0x07) 1 (0x01) Τελικός κύλινδρος χαμηλότερα 8 bits
8 (0x08) 4 (0x04) Τομείς που προηγούνται της κατανομής (little endian)
12 (0x0C) 4 (0x04) Τομείς στην κατανομή

Για να προσαρτήσετε ένα MBR σε Linux πρέπει πρώτα να αποκτήσετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το fdisk και την εντολή p)

Και στη συνέχεια χρησιμοποιήστε τον παρακάτω κώδικα

#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 (Λογική διεύθυνση μπλοκ)

Λογική διεύθυνση μπλοκ (LBA) είναι ένα κοινό σχέδιο που χρησιμοποιείται για τον καθορισμό της τοποθεσίας των μπλοκ δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστή, γενικά σε δευτερεύοντα συστήματα αποθήκευσης όπως οι σκληροί δίσκοι. Το LBA είναι ένα ιδιαίτερα απλό γραμμικό σχέδιο διεύθυνσης; τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.

GPT (Πίνακας Κατατμήσεων GUID)

Ο Πίνακας Κατατμήσεων GUID, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Διακριτικός για τον παγκοσμίως μοναδικό αναγνωριστή για τις κατατμήσεις, το GPT ξεχωρίζει με αρκετούς τρόπους:

  • Τοποθεσία και Μέγεθος: Και οι GPT και MBR ξεκινούν από τομέα 0. Ωστόσο, το GPT λειτουργεί σε 64bit, σε αντίθεση με τα 32bit του MBR.
  • Όρια Κατατμήσεων: Το GPT υποστηρίζει έως 128 κατατμήσεις σε συστήματα Windows και φιλοξενεί έως 9.4ZB δεδομένων.
  • Ονόματα Κατατμήσεων: Προσφέρει τη δυνατότητα ονομασίας κατατμήσεων με έως 36 χαρακτήρες Unicode.

Ανθεκτικότητα Δεδομένων και Ανάκτηση:

  • Πλεονασμός: Σε αντίθεση με το MBR, το GPT δεν περιορίζει την κατανομή και τα δεδομένα εκκίνησης σε μία μόνο θέση. Αντιγράφει αυτά τα δεδομένα σε όλο το δίσκο, ενισχύοντας την ακεραιότητα και την ανθεκτικότητα των δεδομένων.
  • Έλεγχος Κυκλικής Πλεονασματικότητας (CRC): Το GPT χρησιμοποιεί CRC για να διασφαλίσει την ακεραιότητα των δεδομένων. Παρακολουθεί ενεργά για διαφθορά δεδομένων και, όταν ανιχνεύεται, το GPT προσπαθεί να ανακτήσει τα κατεστραμμένα δεδομένα από άλλη τοποθεσία του δίσκου.

Προστατευτικό MBR (LBA0):

  • Το GPT διατηρεί την οπισθοδρομική συμβατότητα μέσω ενός προστατευτικού MBR. Αυτή η δυνατότητα βρίσκεται στον κληρονομημένο χώρο MBR αλλά έχει σχεδιαστεί για να αποτρέπει τις παλαιότερες βοηθητικές εφαρμογές που βασίζονται σε MBR από το να αντικαταστήσουν κατά λάθος τους δίσκους GPT, διασφαλίζοντας έτσι την ακεραιότητα των δεδομένων στους δίσκους μορφοποιημένους σε GPT.

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

Υβριδικό MBR (LBA 0 + GPT)

Από τη Wikipedia

Σε λειτουργικά συστήματα που υποστηρίζουν εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του κώδικα του bootloader, αλλά τροποποιημένος για να αναγνωρίζει τις κατατμήσεις GPT. Ο bootloader στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.

Κεφαλίδα πίνακα κατατμήσεων (LBA 1)

Από τη Wikipedia

Η κεφαλίδα του πίνακα κατατμήσεων ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρίσεων κατατμήσεων που αποτελούν τον πίνακα κατατμήσεων (offsets 80 και 84 στον πίνακα).

Offset Length Contents
0 (0x00) 8 bytes Υπογραφή ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ή 0x5452415020494645ULL σε μηχανές little-endian)
8 (0x08) 4 bytes Αναθεώρηση 1.0 (00h 00h 01h 00h) για UEFI 2.8
12 (0x0C) 4 bytes Μέγεθος κεφαλίδας σε little endian (σε bytes, συνήθως 5Ch 00h 00h 00h ή 92 bytes)
16 (0x10) 4 bytes CRC32 της κεφαλίδας (offset +0 έως το μέγεθος κεφαλίδας) σε little endian, με αυτό το πεδίο μηδενισμένο κατά τη διάρκεια του υπολογισμού
20 (0x14) 4 bytes Κρατημένο; πρέπει να είναι μηδέν
24 (0x18) 8 bytes Τρέχον LBA (τοποθεσία αυτού του αντιγράφου κεφαλίδας)
32 (0x20) 8 bytes Αντίγραφο LBA (τοποθεσία του άλλου αντιγράφου κεφαλίδας)
40 (0x28) 8 bytes Πρώτο χρησιμοποιήσιμο LBA για κατατμήσεις (τελευταίο LBA κύριου πίνακα κατατμήσεων + 1)
48 (0x30) 8 bytes Τελευταίο χρησιμοποιήσιμο LBA (πρώτο LBA δευτερεύοντος πίνακα κατατμήσεων 1)
56 (0x38) 16 bytes GUID δίσκου σε μικτό endian
72 (0x48) 8 bytes Αρχικό LBA ενός πίνακα καταχωρίσεων κατατμήσεων (πάντα 2 στην κύρια αντιγραφή)
80 (0x50) 4 bytes Αριθμός καταχωρίσεων κατατμήσεων στον πίνακα
84 (0x54) 4 bytes Μέγεθος μιας μόνο καταχώρισης κατατμήσεων (συνήθως 80h ή 128)
88 (0x58) 4 bytes CRC32 του πίνακα καταχωρίσεων κατατμήσεων σε little endian
92 (0x5C) * Κρατημένο; πρέπει να είναι μηδενικά για το υπόλοιπο του μπλοκ (420 bytes για μέγεθος τομέα 512 bytes; αλλά μπορεί να είναι περισσότερα με μεγαλύτερα μεγέθη τομέα)

Καταχωρίσεις κατατμήσεων (LBA 233)

Μορφή καταχώρισης GUID
Offset Length Contents
0 (0x00) 16 bytes GUID τύπου κατατμήσεων (μικτό endian)
16 (0x10) 16 bytes Μοναδικός GUID κατατμήσεων (μικτό endian)
32 (0x20) 8 bytes Πρώτο LBA (little endian)
40 (0x28) 8 bytes Τελευταίο LBA (συμπεριλαμβανομένο, συνήθως περιττό)
48 (0x30) 8 bytes Σημαίες χαρακτηριστικών (π.χ. το bit 60 δηλώνει μόνο ανάγνωση)
56 (0x38) 72 bytes Όνομα κατατμήσεων (36 UTF-16LE μονάδες κώδικα)

Τύποι Κατατμήσεων

Περισσότεροι τύποι κατατμήσεων στο https://en.wikipedia.org/wiki/GUID_Partition_Table

Επιθεώρηση

Αφού τοποθετήσετε την εικόνα ψηφιακής εγκληματολογίας με το ArsenalImageMounter, μπορείτε να επιθεωρήσετε τον πρώτο τομέα χρησιμοποιώντας το εργαλείο Windows Active Disk Editor. Στην παρακάτω εικόνα ανιχνεύθηκε ένα MBR στον τομέα 0 και ερμηνεύθηκε:

Αν ήταν ένας πίνακας GPT αντί για MBR, θα έπρεπε να εμφανίζεται η υπογραφή EFI PART στον τομέα 1 (ο οποίος στην προηγούμενη εικόνα είναι κενός).

Συστήματα Αρχείων

Λίστα συστημάτων αρχείων Windows

  • 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 (Πίνακας Κατανομής Αρχείων) σύστημα αρχείων έχει σχεδιαστεί γύρω από το βασικό του στοιχείο, τον πίνακα κατανομής αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας δύο αντίγραφα του πίνακα, διασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν το ένα είναι κατεστραμμένο. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκεται σε μια σταθερή τοποθεσία, κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.

Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα cluster, συνήθως 512B, που περιλαμβάνει πολλούς τομείς. Το FAT έχει εξελιχθεί μέσω εκδόσεων:

  • FAT12, υποστηρίζοντας 12-bit διευθύνσεις cluster και χειρίζεται έως 4078 clusters (4084 με UNIX).
  • FAT16, βελτιώνοντας σε 16-bit διευθύνσεις, επιτρέποντας έτσι έως 65,517 clusters.
  • FAT32, προχωρώντας περαιτέρω με 32-bit διευθύνσεις, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά όγκο.

Ένας σημαντικός περιορισμός σε όλες τις εκδόσεις FAT είναι το μέγιστο μέγεθος αρχείου 4GB, που επιβάλλεται από το 32-bit πεδίο που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου.

Κύρια στοιχεία του ριζικού καταλόγου, ιδιαίτερα για FAT12 και FAT16, περιλαμβάνουν:

  • Όνομα Αρχείου/Φακέλου (έως 8 χαρακτήρες)
  • Χαρακτηριστικά
  • Ημερομηνίες Δημιουργίας, Τροποποίησης και Τελευταίας Πρόσβασης
  • Διεύθυνση Πίνακα FAT (που υποδεικνύει το αρχικό cluster του αρχείου)
  • Μέγεθος Αρχείου

EXT

Ext2 είναι το πιο κοινό σύστημα αρχείων για μη καταγραφόμενες κατατμήσεις (κατατμήσεις που δεν αλλάζουν πολύ) όπως η κατανομή εκκίνησης. Ext3/4 είναι καταγραφόμενες και χρησιμοποιούνται συνήθως για τις υπόλοιπες κατατμήσεις.

Μεταδεδομένα

Ορισμένα αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου που μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή, καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να έχει πληροφορίες όπως:

  • Τίτλος
  • Έκδοση MS Office που χρησιμοποιήθηκε
  • Συγγραφέας
  • Ημερομηνίες δημιουργίας και τελευταίας τροποποίησης
  • Μοντέλο της κάμερας
  • Συντεταγμένες GPS
  • Πληροφορίες εικόνας

Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το exiftool και το Metadiver για να αποκτήσετε τα μεταδεδομένα ενός αρχείου.

Ανάκτηση Διαγραμμένων Αρχείων

Καταγεγραμμένα Διαγραμμένα Αρχεία

Όπως έχει παρατηρηθεί προηγουμένως, υπάρχουν πολλές θέσεις όπου το αρχείο είναι ακόμα αποθηκευμένο μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σημειώνει ως διαγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έτσι, είναι δυνατό να επιθεωρήσετε τα μητρώα των αρχείων (όπως το MFT) και να βρείτε τα διαγραμμένα αρχεία.

Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές του συστήματος αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατό να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή όσο το δυνατόν περισσότερες πληροφορίες.

{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}

File Carving

File carving είναι μια τεχνική που προσπαθεί να βρει αρχεία σε έναν όγκο δεδομένων. Υπάρχουν 3 κύριοι τρόποι με τους οποίους λειτουργούν εργαλεία όπως αυτό: Βασισμένα σε κεφαλίδες και ουρές τύπων αρχείων, βασισμένα σε δομές τύπων αρχείων και βασισμένα στο περιεχόμενο αυτό καθαυτό.

Σημειώστε ότι αυτή η τεχνική δεν λειτουργεί για την ανάκτηση κατακερματισμένων αρχείων. Αν ένα αρχείο δεν αποθηκεύεται σε συνεχόμενους τομείς, τότε αυτή η τεχνική δεν θα είναι σε θέση να το βρει ή τουλάχιστον ένα μέρος του.

Υπάρχουν αρκετά εργαλεία που μπορείτε να χρησιμοποιήσετε για το file carving υποδεικνύοντας τους τύπους αρχείων που θέλετε να αναζητήσετε.

{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}

Κατασκευή Ροής Δεδομένων

Η Κατασκευή Ροής Δεδομένων είναι παρόμοια με το File Carving αλλά αντί να αναζητά πλήρη αρχεία, αναζητά ενδιαφέροντα κομμάτια πληροφοριών.
Για παράδειγμα, αντί να αναζητά ένα πλήρες αρχείο που περιέχει καταγεγραμμένα URLs, αυτή η τεχνική θα αναζητήσει URLs.

{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}

Ασφαλής Διαγραφή

Προφανώς, υπάρχουν τρόποι για να "διαγράψετε με ασφάλεια" αρχεία και μέρη των καταγραφών τους. Για παράδειγμα, είναι δυνατό να επικαλύψετε το περιεχόμενο ενός αρχείου με άχρηστα δεδομένα πολλές φορές, και στη συνέχεια να αφαιρέσετε τις καταγραφές από το $MFT και το $LOGFILE σχετικά με το αρχείο, και να αφαιρέσετε τα Volume Shadow Copies.
Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμα καταγεγραμμένη, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογίας είναι να τις βρει.

Αναφορές

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}