Firmware Analysis
Εισαγωγή
Το Firmware είναι το ουσιαστικό λογισμικό που επιτρέπει στις συσκευές να λειτουργούν σωστά διαχειριζόμενο και διευκολύνοντας την επικοινωνία μεταξύ των υλικών συστατικών και του λογισμικού με το οποίο αλληλεπιδρούν οι χρήστες. Αποθηκεύεται σε μόνιμη μνήμη, εξασφαλίζοντας ότι η συσκευή μπορεί να έχει πρόσβαση σε ζωτικές οδηγίες από τη στιγμή που ενεργοποιείται, οδηγώντας στην εκκίνηση του λειτουργικού συστήματος. Η εξέταση και η πιθανή τροποποίηση του firmware είναι ένα κρίσιμο βήμα για την εντοπισμό ευπαθειών ασφαλείας.
Συλλογή Πληροφοριών
Η συλλογή πληροφοριών είναι ένα κρίσιμο αρχικό βήμα για την κατανόηση της δομής μιας συσκευής και των τεχνολογιών που χρησιμοποιεί. Αυτή η διαδικασία περιλαμβάνει τη συλλογή δεδομένων για:
Την αρχιτεκτονική της CPU και το λειτουργικό σύστημα που εκτελεί
Συγκεκριμένες πληροφορίες για τον εκκινητή
Τη διάταξη του υλικού και τις φύλλα τεκμηρίωσης
Μετρήσεις κώδικα και τοποθεσίες πηγαίου κώδικα
Εξωτερικές βιβλιοθήκες και τύπους αδειών
Ιστορικά ενημερώσεων και πιστοποιήσεις ρυθμίσεων
Αρχιτεκτονικά και διαγράμματα ροής
Αξιολογήσεις ασφαλείας και εντοπισμένες ευπάθειες
Για αυτόν τον σκοπό, τα εργαλεία ανοικτής πηγής πληροφορίας (OSINT) είναι ανεκτίμητα, όπως και η ανάλυση οποιωνδήποτε διαθέσιμων συστατικών λογισμικού ανοικτού κώδικα μέσω μηχανικών ελέγχων χειροκίνητων και αυτοματοποιημένων. Εργαλεία όπως το Coverity Scan και το LGTM της Semmle προσφέρουν δωρεάν στατική ανάλυση που μπορεί να αξιοποιηθεί για την εντοπισμό πιθανών προβλημάτων.
Απόκτηση του Firmware
Η απόκτηση του firmware μπορεί να γίνει μέσω διαφόρων μέσων, καθένα με το δικό του επίπεδο πολυπλοκότητας:
Απευθείας από την πηγή (προγραμματιστές, κατασκευαστές)
Κατασκευάζοντάς το ακολουθώντας τις παρεχόμενες οδηγίες
Λήψη από επίσημους ιστότοπους υποστήριξης
Χρήση ερωτημάτων Google dork για την εύρεση φιλοξενούμενων αρχείων firmware
Πρόσβαση στην αποθήκευση στο cloud απευθείας, με εργαλεία όπως το S3Scanner
Παρεμβολή σε ενημερώσεις μέσω τεχνικών man-in-the-middle
Εξαγωγή από τη συσκευή μέσω συνδέσεων όπως UART, JTAG, ή PICit
Καταγραφή αιτημάτων ενημέρωσης εντός της επικοινωνίας της συσκευής
Αναγνώριση και χρήση σκληροκωδικοποιημένων σημείων ενημέρωσης
Ανάκτηση από τον εκκινητή ή το δίκτυο
Αφαίρεση και ανάγνωση του επιτραπέζιου τσιπ, όταν τίποτα άλλο αποτύχει, χρησιμοποιώντας κατάλληλα εργαλεία υλικού
Εάν δε βρείτε πολλά με αυτά τα εργαλεία, ελέγξτε την εντροπία της εικόνας με την εντολή binwalk -E <bin>
. Αν η εντροπία είναι χαμηλή, τότε πιθανότατα δεν είναι κρυπτογραφημένη. Αν η εντροπία είναι υψηλή, είναι πιθανό να είναι κρυπτογραφημένη (ή συμπιεσμένη με κάποιον τρόπο).
Επιπλέον, μπορείτε να χρησιμοποιήσετε αυτά τα εργαλεία για να εξάγετε αρχεία που έχουν ενσωματωθεί μέσα στο firmware:
File/Data Carving & Recovery ToolsΉ το binvis.io (κώδικας) για να επιθεωρήσετε το αρχείο.
Απόκτηση του Συστήματος Αρχείων
Με τα προηγούμενα εργαλεία όπως binwalk -ev <bin>
θα πρέπει να έχετε καταφέρει να εξάγετε το σύστημα αρχείων.
Το Binwalk συνήθως το εξάγει μέσα σε ένα φάκελο με το όνομα του τύπου του συστήματος αρχείων, το οποίο συνήθως είναι ένα από τα παρακάτω: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
Χειροκίνητη Εξαγωγή Συστήματος Αρχείων
Μερικές φορές, το binwalk δεν έχει το μαγικό byte του συστήματος αρχείων στις υπογραφές του. Σε αυτές τις περιπτώσεις, χρησιμοποιήστε το binwalk για να βρείτε τη θέση του συστήματος αρχείων και να αναγνωρίσετε το συμπιεσμένο σύστημα αρχείων από το δυαδικό αρχείο και εξάγετε χειροκίνητα το σύστημα αρχείων σύμφωνα με τον τύπο του χρησιμοποιώντας τα παρακάτω βήματα.
Εκτελέστε την ακόλουθη εντολή dd για να ανακτήσετε το σύστημα αρχείων Squashfs.
Εναλλακτικά, μπορεί να εκτελεστεί και η παρακάτω εντολή.
$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs
Για το squashfs (που χρησιμοποιείται στο παραπάνω παράδειγμα)
$ unsquashfs dir.squashfs
Τα αρχεία θα βρίσκονται στον κατάλογο "squashfs-root
" μετά.
Αρχεία αρχείων CPIO
$ cpio -ivd --no-absolute-filenames -F <bin>
Για συστήματα αρχείων jffs2
$ jefferson rootfsfile.jffs2
Για συστήματα αρχείων ubifs με NAND flash
$ ubireader_extract_images -u UBI -s <start_offset> <bin>
$ ubidump.py <bin>
Ανάλυση Firmware
Αφού αποκτηθεί το firmware, είναι ουσιώδες να αναλυθεί για την κατανόηση της δομής του και των πιθανών ευπαθειών του. Αυτή η διαδικασία περιλαμβάνει τη χρήση διαφόρων εργαλείων για την ανάλυση και εξαγωγή αξιόλογων δεδομένων από την εικόνα του firmware.
Εργαλεία Αρχικής Ανάλυσης
Παρέχεται ένα σύνολο εντολών για την αρχική επιθεώρηση του δυαδικού αρχείου (αναφέρεται ως <bin>
). Αυτές οι εντολές βοηθούν στην αναγνώριση τύπων αρχείων, την εξαγωγή συμβολοσειρών, την ανάλυση δυαδικών δεδομένων και την κατανόηση των λεπτομερειών των διαμερισμάτων και του συστήματος αρχείων:
Για να αξιολογήσετε την κατάσταση της κρυπτογράφησης της εικόνας, ο έλεγχος γίνεται με την εντολή binwalk -E <bin>
. Η χαμηλή εντροπία υποδηλώνει έλλειψη κρυπτογράφησης, ενώ η υψηλή εντροπία υποδηλώνει πιθανή κρυπτογράφηση ή συμπίεση.
Για την εξαγωγή ενσωματωμένων αρχείων, συνιστώνται εργαλεία και πόροι όπως το έγγραφο file-data-carving-recovery-tools και το binvis.io για τον έλεγχο αρχείων.
Εξαγωγή του Συστήματος Αρχείων
Χρησιμοποιώντας την εντολή binwalk -ev <bin>
, μπορεί κανείς συνήθως να εξάγει το σύστημα αρχείων, συχνά σε έναν κατάλογο που ονομάζεται μετά τον τύπο του συστήματος αρχείων (π.χ., squashfs, ubifs). Ωστόσο, όταν το binwalk αποτυγχάνει να αναγνωρίσει τον τύπο του συστήματος αρχείων λόγω λείπουντος μαγικού byte, είναι απαραίτητη η χειροκίνητη εξαγωγή. Αυτό περιλαμβάνει τη χρήση του binwalk
για τον εντοπισμό της μετατόπισης του συστήματος αρχείων, ακολουθούμενο από την εντολή dd
για την ανάγλυψη του συστήματος αρχείων:
Ανάλυση Συστήματος Αρχείων
Με το σύστημα αρχείων εξαγμένο, ξεκινά η αναζήτηση ευπαθειών ασφάλειας. Προσέχετε τους ανασφαλείς δαίμονες δικτύου, σκληρούς κωδικούς πρόσβασης, σημεία API, λειτουργίες ενημέρωσης διακομιστή, μη μεταγλωττισμένο κώδικα, scripts εκκίνησης και μεταγλωττισμένα δυαδικά για ανάλυση εκτός σύνδεσης.
Κύριες τοποθεσίες και στοιχεία προς έλεγχο περιλαμβάνουν:
etc/shadow και etc/passwd για διαπιστευτήρια χρηστών
Πιστοποιητικά SSL και κλειδιά στο etc/ssl
Αρχεία ρυθμίσεων και scripts για πιθανές ευπάθειες
Ενσωματωμένα δυαδικά για περαιτέρω ανάλυση
Κοινοί διακομιστές ιστοσελίδων και δυαδικά συσκευών IoT
Πολλά εργαλεία βοηθούν στον εντοπισμό ευαίσθητων πληροφοριών και ευπαθειών εντός του συστήματος αρχείων:
LinPEAS και Firmwalker για αναζήτηση ευαίσθητων πληροφοριών
Το Εργαλείο Ανάλυσης και Σύγκρισης Firmware (FACT) για σφαιρική ανάλυση firmware
FwAnalyzer, ByteSweep, ByteSweep-go και EMBA για στατική και δυναμική ανάλυση
Έλεγχοι Ασφάλειας σε Μεταγλωττισμένα Δυαδικά
Τόσο ο πηγαίος κώδικας όσο και τα μεταγλωττισμένα δυαδικά που βρίσκονται στο σύστημα αρχείων πρέπει να εξεταστούν προσεκτικά για ευπαθείς ευπαθείς. Εργαλεία όπως το checksec.sh για δυαδικά Unix και το PESecurity για δυαδικά Windows βοηθούν στον εντοπισμό μη προστατευμένων δυαδικών που θα μπορούσαν να εκμεταλλευτούνται.
Εξομοίωση Firmware για Δυναμική Ανάλυση
Η διαδικασία εξομοίωσης firmware επιτρέπει τη δυναμική ανάλυση είτε της λειτουργίας μιας συσκευής είτε ενός μεμονωμένου προγράμματος. Αυτή η προσέγγιση μπορεί να αντιμετωπίσει προκλήσεις με εξαρτήσεις υλικού ή αρχιτεκτονικής, αλλά η μεταφορά του ριζικού συστήματος αρχείων ή συγκεκριμένων δυαδικών σε μια συσκευή με την ίδια αρχιτεκτονική και endianness, όπως ένα Raspberry Pi, ή σε μια προεγκατεστημένη εικονική μηχανή, μπορεί να διευκολύνει περαιτέρω δοκιμές.
Εξομοίωση Μεμονωμένων Δυαδικών
Για την εξέταση μεμονωμένων προγραμμάτων, είναι κρίσιμο να αναγνωριστεί η endianness και η αρχιτεκτονική CPU του προγράμματος.
Παράδειγμα με Αρχιτεκτονική MIPS
Για να εξομοιώσετε ένα δυαδικό αρχιτεκτονικής MIPS, μπορείτε να χρησιμοποιήσετε την εντολή:
Και για να εγκαταστήσετε τα απαραίτητα εργαλεία προσομοίωσης:
Εξομοίωση Αρχιτεκτονικής ARM
Για δυαδικά αρχιτεκτονικής ARM, η διαδικασία είναι παρόμοια, με τον εξομοιωτή qemu-arm
να χρησιμοποιείται για την εξομοίωση.
Πλήρης Εξομοίωση Συστήματος
Εργαλεία όπως το Firmadyne, το Firmware Analysis Toolkit, και άλλα, διευκολύνουν την πλήρη εξομοίωση firmware, αυτοματοποιώντας τη διαδικασία και βοηθώντας στη δυναμική ανάλυση.
Δυναμική Ανάλυση στην Πράξη
Σε αυτό το στάδιο, χρησιμοποιείται είτε ένα πραγματικό είτε εξομοιωμένο περιβάλλον συσκευής για ανάλυση. Είναι ουσιώδες να διατηρείτε πρόσβαση στο κέλυφος του λειτουργικού συστήματος και το σύστημα αρχείων. Η εξομοίωση ενδέχεται να μην αντικατοπτρίζει τέλεια τις αλληλεπιδράσεις με το υλικό, επομένως ενδέχεται να απαιτούνται περιοδικές επανεκκινήσεις της εξομοίωσης. Η ανάλυση θα πρέπει να επανεξετάζει το σύστημα αρχείων, να εκμεταλλεύεται τις αποκαλυφθείσες ιστοσελίδες και υπηρεσίες δικτύου, και να εξετάζει τις ευπάθειες του bootloader. Οι δοκιμές ακεραιότητας του firmware είναι κρίσιμες για την αναγνώριση πιθανών ευπαθειών πίσω πόρτας.
Τεχνικές Ανάλυσης Χρόνου Εκτέλεσης
Η ανάλυση χρόνου εκτέλεσης περιλαμβάνει την αλληλεπίδραση με ένα διεργασία ή δυαδικό στο περιβάλλον λειτουργίας του, χρησιμοποιώντας εργαλεία όπως το gdb-multiarch, το Frida, και το Ghidra για τον καθορισμό σημείων ανακοπής και την αναγνώριση ευπαθειών μέσω της τεχνικής του fuzzing και άλλων τεχνικών.
Εκμετάλλευση Δυαδικών και Απόδειξης-Προς-Τούτο
Η ανάπτυξη μιας απόδειξης-προς-τούτο για εντοπισμένες ευπαθείες απαιτεί μια βαθιά κατανόηση της στόχευσης αρχιτεκτονικής και την προγραμματισμό σε γλώσσες χαμηλού επιπέδου. Οι προστασίες χρόνου εκτέλεσης δυαδικών συστημάτων ενσωματωμένων συστημάτων είναι σπάνιες, αλλά όταν υπάρχουν, τεχνικές όπως το Return Oriented Programming (ROP) ενδέχεται να είναι απαραίτητες.
Προετοιμασμένα Λειτουργικά Συστήματα για Ανάλυση Firmware
Λειτουργικά συστήματα όπως το AttifyOS και το EmbedOS παρέχουν προ-διαμορφωμένα περιβάλλοντα για τον έλεγχο ασφάλειας του firmware, εξοπλισμένα με τα απαραίτητα εργαλεία.
Προετοιμασμένα ΛΣ για Ανάλυση Firmware
AttifyOS: Το AttifyOS είναι μια διανομή που σκοπό έχει να σας βοηθήσει να πραγματοποιήσετε αξιολόγηση ασφάλειας και δοκιμές διείσδυσης συσκευών Internet of Things (IoT). Σας εξοικονομεί πολύτιμο χρόνο παρέχοντας ένα προ-διαμορφωμένο περιβάλλον με όλα τα απαραίτητα εργαλεία φορτωμένα.
EmbedOS: Λειτουργικό σύστημα δοκιμών ασφάλειας ενσωματωμένο στο Ubuntu 18.04 προφορτωμένο με εργαλεία ελέγχου ασφαλείας firmware.
Ευπαθή Firmware για Πρακτική
Για να πρακτικά ανακαλύψετε ευπαθείες σε firmware, χρησιμοποιήστε τα παρακάτω ευπαθή έργα firmware ως αφετηρία.
OWASP IoTGoat
The Damn Vulnerable Router Firmware Project
Damn Vulnerable ARM Router (DVAR)
ARM-X
Azeria Labs VM 2.0
Damn Vulnerable IoT Device (DVID)
Αναφορές
Εκπαίδευση και Πιστοποίηση
Last updated