.. | ||
file-data-carving-recovery-tools.md | ||
file-data-carving-tools.md | ||
README.md |
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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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.
Υβριδικό MBR (LBA 0 + GPT)
Σε λειτουργικά συστήματα που υποστηρίζουν εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του κώδικα του bootloader, αλλά τροποποιημένος για να αναγνωρίζει τις κατατμήσεις GPT. Ο bootloader στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.
Κεφαλίδα πίνακα κατατμήσεων (LBA 1)
Η κεφαλίδα του πίνακα κατατμήσεων ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρίσεων κατατμήσεων που αποτελούν τον πίνακα κατατμήσεων (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 2–33)
Μορφή καταχώρισης 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.
Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμα καταγεγραμμένη, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογίας είναι να τις βρει.
Αναφορές
- https://en.wikipedia.org/wiki/GUID_Partition_Table
- http://ntfs.com/ntfs-permissions.htm
- https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html
- https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service
- iHackLabs Πιστοποιημένος Ψηφιακός Εγκληματολόγος Windows
{% 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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.