mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
78 lines
10 KiB
Markdown
78 lines
10 KiB
Markdown
# Hardware Hacking
|
||
|
||
{% hint style="success" %}
|
||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% 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**](https://github.com/cyphunk/JTAGenum/) που είναι φορτωμένο σε έναν μικροελεγκτή συμβατό με Arduino.
|
||
|
||
Χρησιμοποιώντας το **JTAGenum**, θα πρέπει πρώτα να **καθορίσετε τις ακίδες της συσκευής δοκιμής** που θα χρησιμοποιήσετε για την αρίθμηση. Θα πρέπει να αναφερθείτε στο διάγραμμα ακίδων της συσκευής και στη συνέχεια να συνδέσετε αυτές τις ακίδες με τα σημεία δοκιμής στη στοχευμένη σας συσκευή.
|
||
|
||
Ένας **τρίτος τρόπος** για να αναγνωρίσετε τις ακίδες JTAG είναι να **εξετάσετε την PCB** για μία από τις ακίδες. Σε ορισμένες περιπτώσεις, οι PCB μπορεί να παρέχουν βολικά τη **διεύθυνση Tag-Connect**, η οποία είναι μια σαφής ένδειξη ότι η πλακέτα έχει και έναν σύνδεσμο JTAG. Μπορείτε να δείτε πώς φαίνεται αυτή η διεπαφή στο [https://www.tag-connect.com/info/](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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|