Translated ['todo/hardware-hacking/uart.md'] to gr

This commit is contained in:
Translator 2024-04-11 06:58:32 +00:00
parent a7cd918846
commit e4380cf3d6
2 changed files with 37 additions and 22 deletions

View file

@ -712,6 +712,9 @@
* [Integer Overflow](binary-exploitation/integer-overflow.md)
* [Format Strings](binary-exploitation/format-strings/README.md)
* [Format Strings Template](binary-exploitation/format-strings/format-strings-template.md)
* [Heap](binary-exploitation/heap/README.md)
* [Use After Free](binary-exploitation/heap/use-after-free.md)
* [Heap Overflow](binary-exploitation/heap/heap-overflow.md)
* [Common Binary Exploitation Protections & Bypasses](binary-exploitation/common-binary-protections-and-bypasses/README.md)
* [ASLR](binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md)
* [Ret2plt](binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2plt.md)

View file

@ -9,25 +9,25 @@
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφημα**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
## Βασικές Πληροφορίες
Το UART είναι ένα σειριακό πρωτόκολλο, που σημαίνει ότι μεταφέρει δεδομένα μεταξύ συστατικών ένα bit τη φορά. Αντίθετα, τα παράλληλα πρωτόκολλα επικοινωνίας μεταφέρουν δεδομένα ταυτόχρονα μέσω πολλαπλών καναλιών. Συνήθη σειριακά πρωτόκολλα περιλαμβάνουν τα RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express και USB.
Το UART είναι ένας σειριακός πρωτόκολλο, που σημαίνει ότι μεταφέρει δεδομένα μεταξύ συστατικών ένα bit τη φορά. Αντίθετα, τα παράλληλα πρωτόκολλα επικοινωνίας μεταφέρουν δεδομένα ταυτόχρονα μέσω πολλαπλών καναλιών. Συνήθη σειριακά πρωτόκολλα περιλαμβάνουν τα RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express και USB.
Γενικά, η γραμμή διατηρείται ψηλά (σε λογική τιμή 1) ενώ το UART βρίσκεται σε κατάσταση αδράνειας. Στη συνέχεια, για να σηματοδοτήσει την έναρξη μεταφοράς δεδομένων, ο αποστολέας στέλνει ένα bit εκκίνησης στον παραλήπτη, κατά το οποίο η σήμανση διατηρείται χαμηλά (σε λογική τιμή 0). Στη συνέχεια, ο αποστολέας στέλνει πέντε έως οκτώ bits δεδομένων που περιέχουν το πραγματικό μήνυμα, ακολουθούμενα από ένα προαιρετικό bit ελέγχου περιττότητας και ένα ή δύο bits σταματημένου (με λογική τιμή 1), ανάλογα με τη διαμόρφωση. Το bit ελέγχου περιττότητας, που χρησιμοποιείται για έλεγχο σφαλμάτων, σπάνια βλέπεται στην πράξη. Τα bits σταματημένου (ή bits) σημαίνουν το τέλος της μετάδοσης.
Γενικά, η γραμμή διατηρείται ψηλά (σε λογική τιμή 1) ενώ το UART βρίσκεται σε κατάσταση αδράνειας. Στη συνέχεια, για να σηματοδοτήσει την έναρξη μεταφοράς δεδομένων, ο αποστολέας στέλνει ένα bit εκκίνησης στον παραλήπτη, κατά το οποίο η σήμανση διατηρείται χαμηλά (σε λογική τιμή 0). Στη συνέχεια, ο αποστολέας στέλνει πέντε έως οκτώ bits δεδομένων που περιέχουν το πραγματικό μήνυμα, ακολουθούμενα από ένα προαιρετικό bit ελέγχου περιττότητας και ένα ή δύο bits σταματημένου (με λογική τιμή 1), ανάλογα με τη διαμόρφωση. Το bit ελέγχου περιττότητας, που χρησιμοποιείται για έλεγχο σφαλμάτων, σπάνια βλέπεται στην πράξη. Το bit (ή τα bits) σταματημένου σημαίνουν το τέλος της μετάδοσης.
Αποκαλούμε την πιο συνηθισμένη διαμόρφωση 8N1: οκτώ bits δεδομένων, χωρίς περιττότητα και ένα bit σταματημένου. Για παράδειγμα, αν θέλαμε να στείλουμε τον χαρακτήρα C, ή το 0x43 σε ASCII, σε μια διαμόρφωση UART 8N1, θα στέλναμε τα ακόλουθα bits: 0 (το bit εκκίνησης); 0, 1, 0, 0, 0, 0, 1, 1 (η τιμή του 0x43 σε δυαδική μορφή), και 0 (το bit σταματημένου).
Αποκαλούμε την πιο συνηθισμένη διαμόρφωση 8N1: οκτώ bits δεδομένων, χωρίς bit ελέγχου περιττότητας και ένα bit σταματημένου. Για παράδειγμα, αν θέλαμε να στείλουμε τον χαρακτήρα C, ή το 0x43 σε ASCII, σε μια διαμόρφωση UART 8N1, θα στέλναμε τα ακόλουθα bits: 0 (το bit εκκίνησης); 0, 1, 0, 0, 0, 0, 1, 1 (η τιμή του 0x43 σε δυαδική μορφή), και 0 (το bit σταματημένου).
![](<../../.gitbook/assets/image (761).png>)
Εργαλεία υλικού για επικοινωνία με το UART:
* Προσαρμογέας USB-to-serial
* Προσαρμογείς με τα chips CP2102 ή PL2303
* Προσαρμογέας με τα chips CP2102 ή PL2303
* Πολυεργαλείο όπως: Bus Pirate, το Adafruit FT232H, το Shikra, ή το Attify Badge
### Αναγνώριση Θυρών UART
@ -37,17 +37,17 @@
Με ένα **πολύμετρο** και τη συσκευή απενεργοποιημένη:
* Για να αναγνωρίσετε την **GND** ακίδα χρησιμοποιήστε τη λειτουργία **Συνέχειας Δοκιμής**, τοποθετήστε την πίσω ακίδα στη γη και δοκιμάστε με την κόκκινη μέχρι να ακούσετε ήχο από το πολύμετρο. Μπορεί να βρείτε πολλές ακίδες GND στο PCB, οπότε είτε έχετε βρει είτε όχι αυτή που ανήκει στο UART.
* Για να αναγνωρίσετε τη θύρα **VCC**, ρυθμίστε τη λειτουργία **DC τάσης** και ρυθμίστε την έως 20 V τάση. Μαύρη μύτη στη γη και κόκκινη μύτη στην ακίδα. Ενεργοποιήστε τη συσκευή. Αν το πολύμετρο μετρά μια σταθερή τάση είτε 3.3 V είτε 5 V, έχετε βρει την ακίδα Vcc. Αν λάβετε άλλες τάσεις, δοκιμάστε με άλλες θύρες.
* Για να αναγνωρίσετε τη θύρα **TX**, **λειτουργία DC τάσης** έως 20 V τάση, μαύρη μύτη στη γη, και κόκκινη μύτη στην ακίδα, και ενεργοποιήστε τη συσκευή. Αν βρείτε ότι η τάση διακυμαίνεται για λίγα δευτερόλεπτα και στη συνέχεια σταθεροποιείται στην τιμή της Vcc, πιθανότατα έχετε βρει τη θύρα TX. Αυτό συμβαίνει επειδή κατά την ενεργοποίηση, στέλνει κάποια δεδομένα εντοπισμού σφαλμάτων.
* Για να αναγνωρίσετε τη θύρα **VCC**, ρυθμίστε τη λειτουργία **DC τάσης** και ρυθμίστε την σε έως 20 V τάση. Μαύρη μεταλλική ακίδα στη γη και κόκκινη ακίδα στην ακίδα. Ενεργοποιήστε τη συσκευή. Αν το πολύμετρο μετρά μια σταθερή τάση είτε 3,3 V είτε 5 V, έχετε βρει την ακίδα Vcc. Αν λάβετε άλλες τάσεις, δοκιμάστε με άλλες θύρες.
* Για να αναγνωρίσετε τη θύρα **TX**, **λειτουργία DC τάσης** έως 20 V τάση, μαύρη ακίδα στη γη, κόκκινη ακίδα στην ακίδα, και ενεργοποιήστε τη συσκευή. Αν βρείτε ότι η τάση διακυμαίνεται για λίγα δευτερόλεπτα και στη συνέχεια σταθεροποιείται στην τιμή της Vcc, πιθανότατα έχετε βρει τη θύρα TX. Αυτό συμβαίνει επειδή κατά την ενεργοποίηση, στέλνει κάποια δεδομένα εντοπισμού σφαλμάτων.
* Η θύρα **RX** θα είναι η πλησιέστερη στις άλλες 3, έχει τη χαμηλότερη διακύμανση τάσης και τη χαμηλότερη συνολική τιμή από όλες τις ακίδες UART.
Μπορείτε να μπερδέψετε τις θύρες TX και RX και τίποτα δεν θα συμβεί, αλλά αν μπερδέψετε την GND και τη θύρα VCC μπορεί να καταστρέψετε το κύκλωμα.
Μπορείτε να μπερδέψετε τις θύρες TX και RX και τίποτα δεν θα συμβεί, αλλά αν μπερδέψετε την GND και τη θύρα VCC ενδέχεται να καταστρέψετε το κύκλωμα.
Σε ορισμένες συσκευές-στόχους, η θύρα UART είναι απενεργοποιημένη από τον κατασκευαστή με την απενεργοποίηση της RX ή της TX ή ακόμα και και των δύο. Σε αυτήν την περίπτωση, μπορεί να είναι χρήσιμο να εντοπίσετε τις συνδέσεις στο πλακέτα και να βρείτε κάποιο σημείο διακοπής. Ένα ισχυρό υπόδειγμα για την επιβεβαίωση της μη ανίχνευσης του UART και τη διάλυση του κυκλώματος είναι να ελέγξετε την εγγύηση της συσκευής. Αν η συσκευή έχει αποσταλεί με κάποια εγγύηση, ο κατασκευαστής αφήνει κάποιες διεπαφές εντοπισμού σφαλμάτων (σε αυτήν την περίπτωση, UART) και συνεπώς, πρέπει να έχει αποσυνδέσει το UART και θα το συνδέσει ξανά κατά την αποσφαλμάτωση. Αυτές οι ακίδες διακοπής μπορούν να συνδεθούν με κόλληση ή καλώδια jumper.
Σε ορισμένες συσκευές-στόχους, η θύρα UART είναι απενεργοποιημένη από τον κατασκευαστή με την απενεργοποίηση της RX ή της TX ή ακόμη και και των δύο. Σε αυτήν την περίπτωση, μπορεί να είναι χρήσιμο να εντοπίσετε τις συνδέσεις στο πλακέτα κυκλώματος και να βρείτε κάποιο σημείο διακοπής. Ένα ισχυρό υπόδειγμα για την επιβεβαίωση της μη ανίχνευσης του UART και τη διάλυση του κυκλώματος είναι να ελέγξετε την εγγύηση της συσκευής. Αν η συσκευή έχει αποσταλεί με κάποια εγγύηση, ο κατασκευαστής αφήνει κάποιες διεπαφές εντοπισμού σφαλμάτων (σε αυτήν την περίπτωση, UART) και συνεπώς, πρέπει να έχει αποσυνδέσει το UART και θα το συνδέσει ξανά κατά την αποσφαλμάτωση. Αυτές οι ακίδες διακοπής μπορούν να συνδεθούν με κόλληση ή μεταλλικά καλώδια.
### Αναγνώριση του Baud Rate του UART
Ο ευκολότερος τρόπος για να αναγνωρίσετε το σωστό baud rate είναι να κοιτάξετε την **έξοδο της ακίδας TX και να προσπαθήσ
Ο ευκολότερος τρόπος για να αναγνωρίσετε το σωστό baud rate είναι να κοιτά
```
ls /dev/
```
@ -67,9 +67,9 @@ minicom -s
Σε περίπτωση που οι προσαρμογείς UART Serial σε USB δεν είναι διαθέσιμοι, το Arduino UNO R3 μπορεί να χρησιμοποιηθεί με ένα γρήγορο χάκινγκ. Δεδομένου ότι το Arduino UNO R3 είναι συνήθως διαθέσιμο παντού, αυτό μπορεί να εξοικονομήσει πολύ χρόνο.
Το Arduino UNO R3 διαθέτει έναν προσαρμογέα USB σε σειριακή ενσωματωμένο στην πλακέτα. Για να λάβετε σύνδεση UART, απλώς αποσυνδέστε το Atmel 328p μικροελεγκτή από την πλακέτα. Αυτό το χάκι λειτουργεί σε παραλλαγές του Arduino UNO R3 που δεν έχουν το Atmel 328p κολλημένο στην πλακέτα (χρησιμοποιείται η SMD έκδοση). Συνδέστε τον ακροδέκτη RX του Arduino (Ψηφιακός Ακροδέκτης 0) στον ακροδέκτη TX της διεπαφής UART και τον ακροδέκτη TX του Arduino (Ψηφιακός Ακροδέκτης 1) στον ακροδέκτη RX της διεπαφής UART.
Το Arduino UNO R3 διαθέτει έναν προσαρμογέα USB σε σειριακή θύρα που είναι ενσωματωμένος στην πλακέτα. Για να λάβετε σύνδεση UART, απλώς αποσυνδέστε το μικροελεγκτή Atmel 328p από την πλακέτα. Αυτό το χάκι λειτουργεί σε παραλλαγές του Arduino UNO R3 που δεν έχουν το Atmel 328p κολλημένο στην πλακέτα (χρησιμοποιείται η SMD έκδοση). Συνδέστε τον ακροδέκτη RX του Arduino (Ψηφιακός Ακροδέκτης 0) στον ακροδέκτη TX της διεπαφής UART και τον ακροδέκτη TX του Arduino (Ψηφιακός Ακροδέκτης 1) στον ακροδέκτη RX της διεπαφής UART.
Τέλος, συνιστάται να χρησιμοποιήσετε το Arduino IDE για να αποκτήσετε πρόσβαση στην Σειριακή Κονσόλα. Στην ενότητα `εργαλεία` στο μενού, επιλέξτε την επιλογή `Σειριακή Κονσόλα` και ορίστε το ρυθμό baud όπως απαιτείται από τη διεπαφή UART.
Τέλος, συνιστάται να χρησιμοποιήσετε το Arduino IDE για να λάβετε την Σειριακή Κονσόλα. Στην ενότητα `εργαλεία` στο μενού, επιλέξτε την επιλογή `Σειριακή Κονσόλα` και ορίστε το ρυθμό baud σύμφωνα με τη διεπαφή UART.
## Bus Pirate
@ -145,16 +145,28 @@ Escritura inicial completada:
AAA Hi Dreg! AAA
waiting a few secs to repeat....
```
<details>
## Ανάκτηση Firmware με την Κονσόλα UART
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
Η Κονσόλα UART παρέχει έναν εξαιρετικό τρόπο για να εργαστείτε με το υπόκειμενο firmware σε περιβάλλον εκτέλεσης. Ωστόσο, όταν η πρόσβαση στην Κονσόλα UART είναι μόνο για ανάγνωση, μπορεί να εισάγει πολλούς περιορισμούς. Σε πολλές ενσωματωμένες συσκευές, το firmware αποθηκεύεται σε EEPROMs και εκτελείται σε επεξεργαστές που έχουν μνήμη αποθήκευσης. Επομένως, το firmware παραμένει μόνο για ανάγνωση, αφού το αρχικό firmware κατά την κατασκευή βρίσκεται μέσα στην ίδια την EEPROM και οποιαδήποτε νέα αρχεία θα χαθούν λόγω της αποθηκευτικής μνήμης. Επομένως, η ανάκτηση του firmware είναι μια πολύτιμη προσπάθεια κατά την εργασία με ενσωματωμένα firmware.
Άλλοι τρόποι υποστήριξης του HackTricks:
Υπάρχουν πολλοί τρόποι για να γίνει αυτό και η ενότητα SPI καλύπτει μεθόδους για την εξαγωγή του firmware απευθείας από την EEPROM με διάφορες συσκευές. Ωστόσο, συνιστάται να δοκιμάσετε πρώτα την ανάκτηση του firmware με την Κονσόλα UART, αφού η ανάκτηση του firmware με φυσικές συσκευές και εξωτερικές αλληλεπιδράσεις μπορεί να είναι επικίνδυνη.
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
Η ανάκτηση του firmware από την Κονσόλα UART απαιτεί πρώτα την πρόσβαση στους bootloaders. Πολλοί δημοφιλείς προμηθευτές χρησιμοποιούν το <b>uboot</b> (Universal Bootloader) ως τον bootloader τους για τη φόρτωση του Linux. Επομένως, η πρόσβαση στο <b>uboot</b> είναι απαραίτητη.
</details>
Για να έχετε πρόσβαση στον <b>boot</b> bootloader, συνδέστε τη θύρα UART στον υπολογιστή και χρησιμοποιήστε οποιοδήποτε εργαλείο Serial Console και κρατήστε την τροφοδοσία της συσκευής αποσυνδεδεμένη. Μόλις είναι έτοιμη η εγκατάσταση, πατήστε το πλήκτρο Enter και κρατήστε το. Τέλος, συνδέστε την τροφοδοσία της συσκευής και αφήστε τη να εκκινήσει.
Κάνοντας αυτό, θα διακόψετε το <b>uboot</b> από το να φορτώσει και θα παρέχει ένα μενού. Συνιστάται να κατανοήσετε τις εντολές του <b>uboot</b> και να χρησιμοποιήσετε το μενού βοήθειας για να τις καταχωρίσετε. Αυτό μπορεί να είναι η εντολή `help`. Δεδομένου ότι διαφορετικοί προμηθευτές χρησιμοποιούν διαφορετικές ρυθμίσεις, είναι απαραίτητο να κατανοήσετε καθέναν ξεχωριστά.
Συνήθως, η εντολή για την ανάκτηση του firmware είναι:
```
md
```
Το "MD" σημαίνει "απορρόφηση μνήμης". Αυτό θα απορροφήσει τη μνήμη (περιεχόμενο EEPROM) στην οθόνη. Συνιστάται να καταγράψετε την έξοδο της σειριακής κονσόλας πριν ξεκινήσετε τη διαδικασία για να καταγράψετε την απορρόφηση μνήμης.
Τέλος, απλά αφαιρέστε όλα τα περιττά δεδομένα από το αρχείο καταγραφής και αποθηκεύστε το αρχείο ως `filename.rom` και χρησιμοποιήστε το binwalk για να εξάγετε τα περιεχόμενα:
```
binwalk -e <filename.rom>
```
Αυτό θα εμφανίσει τα πιθανά περιεχόμενα από το EEPROM σύμφωνα με τις υπογραφές που βρέθηκαν στο αρχείο hex.
Παρόλο που είναι απαραίτητο να σημειωθεί ότι δεν είναι πάντα το σενάριο ότι το <b>uboot</b> είναι ξεκλείδωτο ακόμα κι αν χρησιμοποιείται. Αν το πλήκτρο Enter δεν κάνει τίποτα, ελέγξτε για διαφορετικά πλήκτρα όπως το Space Key, κλπ. Αν ο φορτιστής είναι κλειδωμένος και δεν διακόπτεται, αυτή η μέθοδος δεν θα λειτουργήσει. Για να ελέγξετε αν το <b>uboot</b> είναι ο φορτιστής για τη συσκευή, ελέγξτε την έξοδο στην κονσόλα UART κατά την εκκίνηση της συσκευής. Μπορεί να αναφέρει το <b>uboot</b> κατά την εκκίνηση.