hacktricks/todo/hardware-hacking/README.md

10 KiB
Raw Blame History

Hardware Hacking

{% hint style="success" %} Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

JTAG

Το JTAG επιτρέπει την εκτέλεση ενός boundary scan. Ο boundary scan αναλύει συγκεκριμένα κυκλώματα, συμπεριλαμβανομένων των ενσωματωμένων boundary-scan κυττάρων και καταχωρητών για κάθε ακίδα.

Το πρότυπο JTAG ορίζει συγκεκριμένες εντολές για τη διεξαγωγή boundary scans, συμπεριλαμβανομένων των εξής:

  • BYPASS σας επιτρέπει να δοκιμάσετε ένα συγκεκριμένο τσιπ χωρίς το κόστος της διέλευσης από άλλα τσιπ.
  • SAMPLE/PRELOAD παίρνει ένα δείγμα των δεδομένων που εισέρχονται και εξέρχονται από τη συσκευή όταν είναι σε κανονική λειτουργία.
  • EXTEST ρυθμίζει και διαβάζει τις καταστάσεις των ακίδων.

Μπορεί επίσης να υποστηρίξει άλλες εντολές όπως:

  • IDCODE για την αναγνώριση μιας συσκευής
  • INTEST για την εσωτερική δοκιμή της συσκευής

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

Η Θύρα Πρόσβασης Δοκιμών

Οι boundary scans περιλαμβάνουν δοκιμές της τετραπλής Θύρας Πρόσβασης Δοκιμών (TAP), μιας γενικής θύρας που παρέχει πρόσβαση στις λειτουργίες υποστήριξης δοκιμών JTAG που είναι ενσωματωμένες σε ένα στοιχείο. Το TAP χρησιμοποιεί τα εξής πέντε σήματα:

  • Είσοδος ρολογιού δοκιμών (TCK) Το TCK είναι το ρολόι που καθορίζει πόσο συχνά ο ελεγκτής TAP θα εκτελεί μια ενέργεια (με άλλα λόγια, θα πηδά στην επόμενη κατάσταση στη μηχανή καταστάσεων).
  • Είσοδος επιλογής λειτουργίας δοκιμών (TMS) Το TMS ελέγχει τη μηχανή πεπερασμένων καταστάσεων. Σε κάθε χτύπημα του ρολογιού, ο ελεγκτής TAP JTAG της συσκευής ελέγχει την τάση στην ακίδα TMS. Εάν η τάση είναι κάτω από ένα συγκεκριμένο όριο, το σήμα θεωρείται χαμηλό και ερμηνεύεται ως 0, ενώ αν η τάση είναι πάνω από ένα συγκεκριμένο όριο, το σήμα θεωρείται υψηλό και ερμηνεύεται ως 1.
  • Είσοδος δεδομένων δοκιμών (TDI) Το TDI είναι η ακίδα που στέλνει δεδομένα στο τσιπ μέσω των κυττάρων σάρωσης. Κάθε προμηθευτής είναι υπεύθυνος για τον καθορισμό του πρωτοκόλλου επικοινωνίας μέσω αυτής της ακίδας, καθώς το JTAG δεν το καθορίζει.
  • Έξοδος δεδομένων δοκιμών (TDO) Το TDO είναι η ακίδα που στέλνει δεδομένα από το τσιπ.
  • Είσοδος επαναφοράς δοκιμών (TRST) Η προαιρετική TRST επαναφέρει τη μηχανή πεπερασμένων καταστάσεων σε μια γνωστή καλή κατάσταση. Εναλλακτικά, εάν το TMS κρατηθεί στο 1 για πέντε συνεχόμενους κύκλους ρολογιού, προκαλεί μια επαναφορά, με τον ίδιο τρόπο που θα έκανε η ακίδα TRST, γι' αυτό και η TRST είναι προαιρετική.

Μερικές φορές θα μπορείτε να βρείτε αυτές τις ακίδες σημειωμένες στην PCB. Σε άλλες περιπτώσεις, μπορεί να χρειαστεί να τις βρείτε.

Αναγνώριση ακίδων JTAG

Ο ταχύτερος αλλά πιο ακριβός τρόπος για να ανιχνεύσετε θύρες JTAG είναι χρησιμοποιώντας το JTAGulator, μια συσκευή που έχει δημιουργηθεί ειδικά για αυτόν τον σκοπό (αν και μπορεί να ανιχνεύσει επίσης τις ακίδες UART).

Έχει 24 κανάλια που μπορείτε να συνδέσετε στις ακίδες των πλακετών. Στη συνέχεια, εκτελεί μια επίθεση BF όλων των πιθανών συνδυασμών στέλνοντας εντολές boundary scan IDCODE και BYPASS. Εάν λάβει μια απάντηση, εμφανίζει το κανάλι που αντιστοιχεί σε κάθε σήμα JTAG.

Ένας φθηνότερος αλλά πολύ πιο αργός τρόπος αναγνώρισης των ακίδων JTAG είναι χρησιμοποιώντας το JTAGenum που είναι φορτωμένο σε έναν μικροελεγκτή συμβατό με Arduino.

Χρησιμοποιώντας το JTAGenum, θα πρέπει πρώτα να καθορίσετε τις ακίδες της συσκευής δοκιμής που θα χρησιμοποιήσετε για την αρίθμηση. Θα πρέπει να αναφερθείτε στο διάγραμμα ακίδων της συσκευής και στη συνέχεια να συνδέσετε αυτές τις ακίδες με τα σημεία δοκιμής στη στοχευμένη σας συσκευή.

Ένας τρίτος τρόπος για να αναγνωρίσετε τις ακίδες JTAG είναι να εξετάσετε την PCB για μία από τις ακίδες. Σε ορισμένες περιπτώσεις, οι PCB μπορεί να παρέχουν βολικά τη διεύθυνση Tag-Connect, η οποία είναι μια σαφής ένδειξη ότι η πλακέτα έχει και έναν σύνδεσμο JTAG. Μπορείτε να δείτε πώς φαίνεται αυτή η διεπαφή στο https://www.tag-connect.com/info/. Επιπλέον, η εξέταση των datasheets των chipsets στην PCB μπορεί να αποκαλύψει διαγράμματα ακίδων που δείχνουν σε διεπαφές JTAG.

SDW

Το SWD είναι ένα πρωτόκολλο ειδικό για ARM που έχει σχεδιαστεί για αποσφαλμάτωση.

Η διεπαφή SWD απαιτεί δύο ακίδες: ένα αμφίδρομο σήμα SWDIO, το οποίο είναι ισοδύναμο με τις ακίδες TDI και TDO του JTAG και ένα ρολόι, και SWCLK, το οποίο είναι ισοδύναμο με το TCK στο JTAG. Πολλές συσκευές υποστηρίζουν τη Σειριακή Θύρα ή τη Θύρα Δοκιμών JTAG (SWJ-DP), μια συνδυασμένη διεπαφή JTAG και SWD που σας επιτρέπει να συνδέσετε είτε μια συσκευή δοκιμής SWD είτε JTAG στο στόχο.

{% hint style="success" %} Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}