mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
Translated ['todo/hardware-hacking/spi.md'] to de
This commit is contained in:
parent
8cb6d9efa4
commit
abed90b39f
5 changed files with 47 additions and 14 deletions
BIN
.gitbook/assets/board_image_ch341a.jpg
Normal file
BIN
.gitbook/assets/board_image_ch341a.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 MiB |
BIN
.gitbook/assets/connect_wires_ch341a.jpg
Normal file
BIN
.gitbook/assets/connect_wires_ch341a.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 MiB |
BIN
.gitbook/assets/connected_status_ch341a.jpg
Normal file
BIN
.gitbook/assets/connected_status_ch341a.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 MiB |
BIN
.gitbook/assets/eeprom_plugged_ch341a.jpg
Normal file
BIN
.gitbook/assets/eeprom_plugged_ch341a.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 MiB |
|
@ -1,37 +1,70 @@
|
||||||
|
# SPI
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||||
|
|
||||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## Grundlegende Informationen
|
||||||
|
|
||||||
# Grundlegende Informationen
|
SPI (Serial Peripheral Interface) ist ein synchrones serielle Kommunikationsprotokoll, das in eingebetteten Systemen für die Kommunikation auf kurze Distanz zwischen integrierten Schaltungen (ICs) verwendet wird. Das SPI-Kommunikationsprotokoll nutzt die Master-Slave-Architektur, die durch das Takt- und Chip-Select-Signal orchestriert wird. Eine Master-Slave-Architektur besteht aus einem Master (in der Regel ein Mikroprozessor), der externe Peripheriegeräte wie EEPROMs, Sensoren, Steuergeräte usw. verwaltet, die als Slaves betrachtet werden.
|
||||||
|
|
||||||
SPI (Serial Peripheral Interface) ist ein synchrones serielle Kommunikationsprotokoll, das in eingebetteten Systemen für die Kommunikation auf kurze Distanz zwischen ICs (Integrierte Schaltungen) verwendet wird. Das SPI-Kommunikationsprotokoll nutzt die Master-Slave-Architektur, die durch das Clock- und Chip-Select-Signal orchestriert wird. Eine Master-Slave-Architektur besteht aus einem Master (in der Regel ein Mikroprozessor), der externe Peripheriegeräte wie EEPROMs, Sensoren, Steuergeräte usw. verwaltet, die als Slaves betrachtet werden.
|
Mehrere Slaves können an einen Master angeschlossen werden, aber Slaves können nicht miteinander kommunizieren. Slaves werden von zwei Pins, Takt und Chip-Select, verwaltet. Da SPI ein synchrones Kommunikationsprotokoll ist, folgen die Eingangs- und Ausgangspins den Taktsignalen. Der Chip-Select wird vom Master verwendet, um einen Slave auszuwählen und mit ihm zu interagieren. Wenn der Chip-Select hoch ist, ist das Slave-Gerät nicht ausgewählt, während es niedrig ist, wurde der Chip ausgewählt und der Master würde mit dem Slave interagieren.
|
||||||
|
|
||||||
Mehrere Slaves können an einen Master angeschlossen werden, aber Slaves können nicht miteinander kommunizieren. Slaves werden von zwei Pins, Clock und Chip Select, verwaltet. Da SPI ein synchrone Kommunikationsprotokoll ist, folgen die Eingangs- und Ausgangspins den Clock-Signalen. Der Chip Select wird vom Master verwendet, um einen Slave auszuwählen und mit ihm zu interagieren. Wenn der Chip Select hoch ist, ist das Slave-Gerät nicht ausgewählt, während es niedrig ist, wurde der Chip ausgewählt und der Master würde mit dem Slave interagieren.
|
MOSI (Master Out, Slave In) und MISO (Master In, Slave Out) sind für das Senden und Empfangen von Daten verantwortlich. Daten werden über den MOSI-Pin an das Slave-Gerät gesendet, während der Chip-Select niedrig gehalten wird. Die Eingangsdaten enthalten Anweisungen, Speicheradressen oder Daten gemäß dem Datenblatt des Slave-Geräteherstellers. Bei gültigen Eingaben ist der MISO-Pin für die Übertragung von Daten an den Master verantwortlich. Die Ausgangsdaten werden genau im nächsten Taktzyklus nach dem Ende der Eingabe gesendet. Die MISO-Pins übertragen Daten, bis die Daten vollständig übertragen sind oder der Master den Chip-Select-Pin hoch setzt (in diesem Fall würde der Slave aufhören zu senden und der Master würde nach diesem Taktzyklus nicht mehr zuhören).
|
||||||
|
|
||||||
MOSI (Master Out, Slave In) und MISO (Master In, Slave Out) sind für das Senden und Empfangen von Daten verantwortlich. Daten werden über den MOSI-Pin an das Slave-Gerät gesendet, während der Chip Select niedrig gehalten wird. Die Eingangsdaten enthalten Anweisungen, Speicheradressen oder Daten gemäß dem Datenblatt des Slave-Geräteherstellers. Bei gültiger Eingabe ist der MISO-Pin für die Übertragung von Daten an den Master verantwortlich. Die Ausgangsdaten werden genau im nächsten Taktzyklus nach dem Ende der Eingabe gesendet. Die MISO-Pins übertragen Daten, bis die Daten vollständig übertragen sind oder der Master den Chip-Select-Pin hoch setzt (in diesem Fall würde der Slave aufhören zu senden und der Master würde nach diesem Taktzyklus nicht mehr zuhören).
|
## Firmware von EEPROMs auslesen
|
||||||
|
|
||||||
# Flash dumpen
|
Das Auslesen von Firmware kann nützlich sein, um die Firmware zu analysieren und Schwachstellen darin zu finden. Oftmals ist die Firmware nicht im Internet verfügbar oder aufgrund von Faktoren wie Modellnummer, Version usw. irrelevant. Daher kann es hilfreich sein, die Firmware direkt vom physischen Gerät zu extrahieren, um spezifisch bei der Suche nach Bedrohungen zu sein.
|
||||||
|
|
||||||
## Bus Pirate + flashrom
|
Das Abrufen der seriellen Konsole kann hilfreich sein, aber oft ist es so, dass die Dateien schreibgeschützt sind. Dies schränkt die Analyse aus verschiedenen Gründen ein. Zum Beispiel wären Tools, die zum Senden und Empfangen von Paketen erforderlich sind, nicht in der Firmware vorhanden. Daher ist es nicht machbar, die Binärdateien zum Reverse Engineering zu extrahieren. Daher kann es sehr hilfreich sein, die gesamte Firmware auf dem System zu dumpen und die Binärdateien zur Analyse zu extrahieren.
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (201).png>)
|
Auch beim Red Teaming und beim physischen Zugriff auf Geräte kann das Dumpen der Firmware dabei helfen, Dateien zu modifizieren oder bösartige Dateien einzuspeisen und sie dann in den Speicher zurückzuschreiben, was hilfreich sein könnte, um eine Hintertür in das Gerät einzubauen. Daher gibt es zahlreiche Möglichkeiten, die mit dem Dumpen von Firmware freigeschaltet werden können.
|
||||||
|
|
||||||
|
### CH341A EEPROM-Programmierer und -Leser
|
||||||
|
|
||||||
|
Dieses Gerät ist ein kostengünstiges Werkzeug zum Dumpen von Firmware von EEPROMs und auch zum Zurückflashen mit Firmware-Dateien. Dies war eine beliebte Wahl für die Arbeit mit Computer-BIOS-Chips (die nur EEPROMs sind). Dieses Gerät wird über USB angeschlossen und benötigt minimale Werkzeuge, um loszulegen. Außerdem erledigt es die Aufgabe normalerweise schnell, sodass es auch beim physischen Gerätezugriff hilfreich sein kann.
|
||||||
|
|
||||||
|
<img src="../../.gitbook/assets/board_image_ch341a.jpg" alt="drawing" width="400" align="center"/>
|
||||||
|
|
||||||
|
Verbinden Sie den EEPROM-Speicher mit dem CH341a-Programmierer und stecken Sie das Gerät in den Computer. Wenn das Gerät nicht erkannt wird, versuchen Sie, Treiber in den Computer zu installieren. Stellen Sie außerdem sicher, dass das EEPROM in der richtigen Ausrichtung angeschlossen ist (normalerweise den VCC-Pin in umgekehrter Ausrichtung zum USB-Anschluss platzieren), da die Software andernfalls den Chip nicht erkennen kann. Sehen Sie bei Bedarf das Diagramm:
|
||||||
|
|
||||||
|
<img src="../../.gitbook/assets/connect_wires_ch341a.jpg" alt="drawing" width="350"/>
|
||||||
|
|
||||||
|
<img src="../../.gitbook/assets/eeprom_plugged_ch341a.jpg" alt="drawing" width="350"/>
|
||||||
|
|
||||||
|
Verwenden Sie schließlich Software wie flashrom, G-Flash (GUI) usw., um die Firmware zu dumpen. G-Flash ist ein minimales GUI-Tool, das schnell arbeitet und das EEPROM automatisch erkennt. Dies kann hilfreich sein, wenn die Firmware schnell extrahiert werden muss, ohne viel mit der Dokumentation herumzuspielen.
|
||||||
|
|
||||||
|
<img src="../../.gitbook/assets/connected_status_ch341a.jpg" alt="drawing" width="350"/>
|
||||||
|
|
||||||
|
Nach dem Dumpen der Firmware kann die Analyse anhand der Binärdateien durchgeführt werden. Tools wie strings, hexdump, xxd, binwalk usw. können verwendet werden, um viele Informationen über die Firmware sowie das gesamte Dateisystem zu extrahieren.
|
||||||
|
|
||||||
|
Um den Inhalt aus der Firmware zu extrahieren, kann binwalk verwendet werden. Binwalk analysiert nach Hex-Signaturen und identifiziert die Dateien in der Binärdatei und ist in der Lage, sie zu extrahieren.
|
||||||
|
```
|
||||||
|
binwalk -e <filename>
|
||||||
|
```
|
||||||
|
Die <filename> kann je nach den verwendeten Tools und Konfigurationen .bin oder .rom sein.
|
||||||
|
|
||||||
|
{% hint style="danger" %} Beachten Sie, dass die Extraktion der Firmware ein sensibler Prozess ist und viel Geduld erfordert. Jede unsachgemäße Handhabung kann die Firmware potenziell beschädigen oder sogar vollständig löschen und das Gerät unbrauchbar machen. Es wird empfohlen, das spezifische Gerät zu studieren, bevor Sie versuchen, die Firmware zu extrahieren. {% endhint %}
|
||||||
|
|
||||||
|
### Bus Pirate + flashrom
|
||||||
|
|
||||||
|
![](<../../.gitbook/assets/image (907).png>)
|
||||||
|
|
||||||
Beachten Sie, dass auch wenn das PINOUT des Bus Pirate Pins für **MOSI** und **MISO** zum Anschließen an SPI angibt, einige SPIs Pins als DI und DO anzeigen können. **MOSI -> DI, MISO -> DO**
|
Beachten Sie, dass auch wenn das PINOUT des Bus Pirate Pins für **MOSI** und **MISO** zum Anschließen an SPI angibt, einige SPIs Pins als DI und DO anzeigen können. **MOSI -> DI, MISO -> DO**
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (648) (1) (1).png>)
|
![](<../../.gitbook/assets/image (357).png>)
|
||||||
|
|
||||||
In Windows oder Linux können Sie das Programm [**`flashrom`**](https://www.flashrom.org/Flashrom) verwenden, um den Inhalt des Flash-Speichers auszulesen, indem Sie etwas Ähnliches ausführen:
|
In Windows oder Linux können Sie das Programm [**`flashrom`**](https://www.flashrom.org/Flashrom) verwenden, um den Inhalt des Flash-Speichers mit etwas Ähnlichem wie folgt zu dumpen:
|
||||||
```bash
|
```bash
|
||||||
# In this command we are indicating:
|
# In this command we are indicating:
|
||||||
# -VV Verbose
|
# -VV Verbose
|
||||||
|
@ -47,9 +80,9 @@ flashrom -VV -c "W25Q64.V" -p buspirate_spi:dev=COM3 -r flash_content.img
|
||||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||||
|
|
||||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
Loading…
Reference in a new issue