hacktricks/cryptography/electronic-code-book-ecb.md

95 lines
7.5 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben 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)
* 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** 🐦 [**@hacktricks_live**](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.
2022-04-28 16:01:33 +00:00
</details>
2022-05-01 16:32:23 +00:00
# ECB
2024-02-10 15:36:32 +00:00
(ECB) Electronic Code Book - symmetrisches Verschlüsselungsverfahren, bei dem jeder Block des Klartexts durch den Block des Geheimtexts ersetzt wird. Es ist das **einfachste** Verschlüsselungsverfahren. Die Hauptidee besteht darin, den Klartext in **Blöcke von N Bits** (abhängig von der Größe des Eingabedatenblocks, des Verschlüsselungsalgorithmus) aufzuteilen und dann jeden Block des Klartexts mit dem einzigen Schlüssel zu verschlüsseln (entschlüsseln).
2022-05-01 16:32:23 +00:00
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png)
2024-02-10 15:36:32 +00:00
Die Verwendung von ECB hat mehrere Sicherheitsimplikationen:
2024-02-10 15:36:32 +00:00
* **Blöcke aus verschlüsselter Nachricht können entfernt werden**
* **Blöcke aus verschlüsselter Nachricht können verschoben werden**
2024-02-10 15:36:32 +00:00
# Erkennung der Schwachstelle
2024-02-10 15:36:32 +00:00
Stellen Sie sich vor, Sie melden sich mehrmals bei einer Anwendung an und erhalten **immer denselben Cookie**. Dies liegt daran, dass der Cookie der Anwendung **`<Benutzername>|<Passwort>`** ist.\
Dann generieren Sie zwei neue Benutzer, beide mit dem **gleichen langen Passwort** und **fast** dem **gleichen** **Benutzernamen**.\
Sie stellen fest, dass die **Blöcke von 8B**, in denen die **Informationen beider Benutzer** gleich sind, **gleich** sind. Sie vermuten, dass dies daran liegen könnte, dass **ECB verwendet wird**.
2024-02-10 15:36:32 +00:00
Wie im folgenden Beispiel. Beachten Sie, wie diese **2 decodierten Cookies** mehrmals den Block **`\x23U\xE45K\xCB\x21\xC8`** enthalten.
```
2021-09-22 15:32:15 +00:00
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
2021-09-22 15:32:15 +00:00
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
```
2024-02-10 15:36:32 +00:00
Dies liegt daran, dass der **Benutzername und das Passwort dieser Cookies mehrmals den Buchstaben "a"** enthalten haben (zum Beispiel). Die **unterschiedlichen Blöcke** sind Blöcke, die **mindestens ein unterschiedliches Zeichen** enthalten (vielleicht das Trennzeichen "|" oder einen notwendigen Unterschied im Benutzernamen).
2024-02-10 15:36:32 +00:00
Nun muss der Angreifer nur noch herausfinden, ob das Format `<Benutzername><Trennzeichen><Passwort>` oder `<Passwort><Trennzeichen><Benutzername>` ist. Dazu kann er einfach **mehrere Benutzernamen** mit **ähnlichen und langen Benutzernamen und Passwörtern generieren**, bis er das Format und die Länge des Trennzeichens findet:
2024-02-10 15:36:32 +00:00
| Länge des Benutzernamens: | Länge des Passworts: | Länge von Benutzername+Passwort: | Länge des Cookies (nach dem Decodieren): |
| ------------------------ | -------------------- | --------------------------------- | --------------------------------------- |
| 2 | 2 | 4 | 8 |
| 3 | 3 | 6 | 8 |
| 3 | 4 | 7 | 8 |
| 4 | 4 | 8 | 16 |
| 7 | 7 | 14 | 16 |
2024-02-10 15:36:32 +00:00
# Ausnutzung der Schwachstelle
2024-02-10 15:36:32 +00:00
## Entfernen ganzer Blöcke
2024-02-10 15:36:32 +00:00
Nachdem das Format des Cookies bekannt ist (`<Benutzername>|<Passwort>`), um den Benutzernamen `admin` zu imitieren, erstellen Sie einen neuen Benutzer namens `aaaaaaaaadmin`, erhalten Sie den Cookie und decodieren Sie ihn:
```
2021-09-22 15:32:15 +00:00
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
```
2024-02-10 15:36:32 +00:00
Wir können das zuvor erstellte Muster `\x23U\xE45K\xCB\x21\xC8` mit dem Benutzernamen sehen, der nur `a` enthielt.\
Dann können Sie den ersten Block von 8B entfernen und Sie erhalten einen gültigen Cookie für den Benutzernamen `admin`:
```
2021-09-22 15:32:15 +00:00
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
```
2024-02-10 15:36:32 +00:00
## Verschieben von Blöcken
2024-02-10 15:36:32 +00:00
In vielen Datenbanken ist es gleich, nach `WHERE username='admin';` oder nach `WHERE username='admin ';` zu suchen _(Beachten Sie die zusätzlichen Leerzeichen)_
2024-02-10 15:36:32 +00:00
Eine weitere Möglichkeit, den Benutzer `admin` zu imitieren, besteht darin:
2024-02-10 15:36:32 +00:00
* Generieren Sie einen Benutzernamen, der `len(<username>) + len(<delimiter>) % len(block)` entspricht. Mit einer Blockgröße von `8B` können Sie einen Benutzernamen namens `username ` generieren, wobei das Trennzeichen `|` den Chunk `<username><delimiter>` erzeugt, der 2 Blöcke von 8Bs erzeugt.
* Generieren Sie dann ein Passwort, das eine genaue Anzahl von Blöcken enthält, die den Benutzernamen, den wir imitieren möchten, und Leerzeichen enthalten, z. B.: `admin `
2022-05-01 16:32:23 +00:00
2024-02-10 15:36:32 +00:00
Das Cookie dieses Benutzers besteht aus 3 Blöcken: den ersten 2 Blöcken des Benutzernamens + Trennzeichen und dem dritten Block des Passworts (das den Benutzernamen fälscht): `username |admin `
2024-02-10 15:36:32 +00:00
**Ersetzen Sie dann einfach den ersten Block durch den letzten und Sie werden den Benutzer `admin` imitieren: `admin |username`**
2024-02-10 15:36:32 +00:00
## Referenzen
2022-05-01 16:32:23 +00:00
* [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\))
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben 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)
* 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** 🐦 [**@hacktricks_live**](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.
2022-04-28 16:01:33 +00:00
</details>