Partitions/File Systems/Carving
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ένας σκληρός δίσκος ή μια SSD δίσκος μπορεί να περιέχει διαφορετικές κατατμήσεις με στόχο τη φυσική διαχωρισμό των δεδομένων. Η ελάχιστη μονάδα ενός δίσκου είναι ο τομέας (κανονικά αποτελείται από 512B). Έτσι, το μέγεθος κάθε κατατμήσεως πρέπει να είναι πολλαπλάσιο αυτού του μεγέθους.
Είναι κατανεμημένο στον πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον υπολογιστή τι και από πού θα πρέπει να προσαρτηθεί μια κατανομή. Επιτρέπει έως 4 κατατμήσεις (το πολύ μόνο 1 μπορεί να είναι ενεργή/εκκινήσιμη). Ωστόσο, αν χρειάζεστε περισσότερες κατατμήσεις μπορείτε να χρησιμοποιήσετε εκτεταμένες κατατμήσεις. Ο τελευταίος byte αυτού του πρώτου τομέα είναι η υπογραφή του boot record 0x55AA. Μόνο μία κατανομή μπορεί να χαρακτηριστεί ως ενεργή. Το MBR επιτρέπει μέγιστο 2.2TB.
Από τα bytes 440 έως 443 του MBR μπορείτε να βρείτε την Υπογραφή Δίσκου Windows (αν χρησιμοποιείται Windows). Το λογικό γράμμα δίσκου του σκληρού δίσκου εξαρτάται από την Υπογραφή Δίσκου Windows. Η αλλαγή αυτής της υπογραφής θα μπορούσε να αποτρέψει την εκκίνηση των Windows (εργαλείο: Active Disk Editor).
Format
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 Καταγραφής Κατανομής
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
)
Και στη συνέχεια χρησιμοποιήστε τον παρακάτω κώδικα
LBA (Λογική διεύθυνση μπλοκ)
Λογική διεύθυνση μπλοκ (LBA) είναι ένα κοινό σχέδιο που χρησιμοποιείται για τον καθορισμό της τοποθεσίας των μπλοκ δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, γενικά σε δευτερεύοντα συστήματα αποθήκευσης όπως οι σκληροί δίσκοι. Το LBA είναι ένα ιδιαίτερα απλό γραμμικό σχέδιο διεύθυνσης; τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
Ο Πίνακας Κατατμήσεων 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, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του κώδικα εκκίνησης, αλλά τροποποιημένος για να αναγνωρίζει τις κατατμήσεις GPT. Ο εκκινητής στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.
Κεφαλίδα πίνακα κατατμήσεων (LBA 1)
Η κεφαλίδα του πίνακα κατατμήσεων ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρήσεων κατατμήσεων που αποτελούν τον πίνακα κατατμήσεων (offsets 80 και 84 στον πίνακα).
0 (0x00)
8 bytes
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)
Offset
Length
Περιεχόμενα
16 (0x10)
16 bytes
Μοναδικός GUID κατατμήσεων (μικτό endian)
40 (0x28)
8 bytes
Τελευταίο LBA (συμπεριλαμβανομένο, συνήθως περιττό)
48 (0x30)
8 bytes
Σημαίες χαρακτηριστικών (π.χ. το bit 60 δηλώνει μόνο για ανάγνωση)
Τύποι Κατατμήσεων
Περισσότεροι τύποι κατατμήσεων στο https://en.wikipedia.org/wiki/GUID_Partition_Table
Αφού τοποθετήσετε την εικόνα εγκληματολογικής ανάλυσης με το ArsenalImageMounter, μπορείτε να επιθεωρήσετε τον πρώτο τομέα χρησιμοποιώντας το εργαλείο Windows Active Disk Editor. Στην παρακάτω εικόνα ανιχνεύθηκε ένα MBR στον τομέα 0 και ερμηνεύθηκε:
Αν ήταν ένας πίνακας GPT αντί για MBR, θα έπρεπε να εμφανίζεται η υπογραφή EFI PART στον τομέα 1 (ο οποίος στην προηγούμενη εικόνα είναι κενός).
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 (Πίνακας Κατανομής Αρχείων) σύστημα αρχείων έχει σχεδιαστεί γύρω από τον πυρήνα του, τον πίνακα κατανομής αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας δύο αντίγραφα του πίνακα, διασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν το ένα είναι κατεστραμμένο. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκεται σε μια σταθερή τοποθεσία, κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα cluster, συνήθως 512B, που περιλαμβάνει πολλούς τομείς. Το FAT έχει εξελιχθεί μέσω εκδόσεων:
FAT12, υποστηρίζοντας 12-bit διευθύνσεις clusters και χειρίζεται έως 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 του αρχείου)
Μέγεθος Αρχείου
Ext2 είναι το πιο κοινό σύστημα αρχείων για μη καταγραφόμενες κατατμήσεις (κατατμήσεις που δεν αλλάζουν πολύ) όπως η κατανομή εκκίνησης. Ext3/4 είναι καταγραφόμενες και χρησιμοποιούνται συνήθως για τις υπόλοιπες κατατμήσεις.
Ορισμένα αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου που μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή, καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να έχει πληροφορίες όπως:
Τίτλος
Έκδοση MS Office που χρησιμοποιήθηκε
Συγγραφέας
Ημερομηνίες δημιουργίας και τελευταίας τροποποίησης
Μοντέλο της κάμερας
Συντεταγμένες GPS
Πληροφορίες εικόνας
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το exiftool και το Metadiver για να αποκτήσετε τα μεταδεδομένα ενός αρχείου.
Όπως έχει παρατηρηθεί προηγουμένως, υπάρχουν πολλές θέσεις όπου το αρχείο είναι ακόμα αποθηκευμένο μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σημειώνει ως διαγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έτσι, είναι δυνατό να επιθεωρήσετε τα μητρώα των αρχείων (όπως το MFT) και να βρείτε τα διαγραμμένα αρχεία.
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές του συστήματος αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατό να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή όσο το δυνατόν περισσότερες πληροφορίες.
File/Data Carving & Recovery ToolsΚατασκευή αρχείων είναι μια τεχνική που προσπαθεί να βρει αρχεία μέσα σε έναν όγκο δεδομένων. Υπάρχουν 3 κύριοι τρόποι με τους οποίους λειτουργούν εργαλεία όπως αυτό: Βασισμένα σε κεφαλίδες και ουρές τύπων αρχείων, βασισμένα σε δομές τύπων αρχείων και βασισμένα στο περιεχόμενο του ίδιου του αρχείου.
Σημειώστε ότι αυτή η τεχνική δεν λειτουργεί για την ανάκτηση κατακερματισμένων αρχείων. Αν ένα αρχείο δεν αποθηκεύεται σε συνεχόμενους τομείς, τότε αυτή η τεχνική δεν θα είναι σε θέση να το βρει ή τουλάχιστον μέρος του.
Υπάρχουν αρκετά εργαλεία που μπορείτε να χρησιμοποιήσετε για την κατασκευή αρχείων υποδεικνύοντας τους τύπους αρχείων που θέλετε να αναζητήσετε.
File/Data Carving & Recovery ToolsΗ κατασκευή ροής δεδομένων είναι παρόμοια με την κατασκευή αρχείων αλλά αντί να αναζητά πλήρη αρχεία, αναζητά ενδιαφέροντα κομμάτια πληροφοριών. Για παράδειγμα, αντί να αναζητά ένα πλήρες αρχείο που περιέχει καταγεγραμμένα URLs, αυτή η τεχνική θα αναζητήσει URLs.
File/Data Carving & Recovery ToolsΠροφανώς, υπάρχουν τρόποι για να "διαγράψετε με ασφάλεια" αρχεία και μέρη των καταγραφών τους. Για παράδειγμα, είναι δυνατό να επικαλύψετε το περιεχόμενο ενός αρχείου με τυχαία δεδομένα πολλές φορές, και στη συνέχεια να αφαιρέσετε τις καταγραφές από το $MFT και το $LOGFILE σχετικά με το αρχείο, και να αφαιρέσετε τα Αντίγραφα Σκιάς Όγκου. Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμα καταγεγραμμένη, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογικής ανάλυσης είναι να τις βρει.
iHackLabs Πιστοποιημένος Ψηφιακός Εγκληματολόγος Windows
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)