> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/de/hacking-wifi/wpa-wpa2-psk-network-attacks/client-disruption-tests/cts-frame-attack-network-bandwidth-hijacking.md).

# CTS-Frame-Angriff - Übernahme der Netzwerkbandbreite

CTS-Steuerungsframes und ihre Wirkung auf die Verfügbarkeit des Funkmediums analysieren.

Der IEEE-802.11-Standard definiert RTS (*Sendeanforderung*) und CTS (*Sendefreigabe*) als Steuerrahmen, um lange Kollisionen durch versteckte Knoten zu reduzieren.

### RTS- und CTS-Steuerrahmen

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FCxYTFIdw8tv93vmGcIms%2F%7B82B0E335-2263-4B11-9B72-618A4886B3DA%7D.png?alt=media&amp;token=3621485f-3155-4c77-aafa-3e1c99e4f398" alt="" width="375"><figcaption></figcaption></figure>

Ein CTS-Frame enthält einen Dauerwert. Dieser Wert wird in Mikrosekunden angegeben und reicht von `0` zu ändern `32767`.

### Einen CTS-Frame untersuchen

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2F5uQvoWPz5mbQENdJ4Uhl%2F%7BEAF8A9A0-09BB-416E-87C8-EDA22CBE5B5B%7D.png?alt=media&amp;token=6a7328f5-187f-47d4-bd23-5177d4848e90" alt=""><figcaption></figcaption></figure>

Ein ungewöhnlich hoher Dauerwert kann das drahtlose Medium länger als erwartet reservieren. Die Empfängeradresse identifiziert den Access Point, und der FCS dient zur Integritätsprüfung des Frames.

{% hint style="warning" %}
Bevor Sie Steuerrahmen testen, bestätigen Sie die Autorisierung, die Zielgeräte und die Wiederherstellungsschritte. Manipulierte CTS-Frames können die drahtlose Verbindung stören.
{% endhint %}

### Das autorisierte Netzwerk erfassen

Starten Sie Airodump-ng auf dem Zielkanal:

{% code overflow="wrap" %}

```bash
airodump-ng --channel 11 -w CAPTURE --essid ATIC2 wlan0mon
```

{% endcode %}

### CTS-Frames identifizieren

Verwenden Sie TShark, um CTS-Frames aus der Aufzeichnung anzuzeigen:

{% code overflow="wrap" %}

```bash
tshark -r CAPTURE-01.cap -Y "wlan.fc.type_subtype==28" 2>/dev/null
```

{% endcode %}

Die Ausgabe bestätigt, ob die Aufzeichnung CTS (*Sendefreigabe*)-Frames enthält.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2F8LDlVGnPcS4v2T5T3ayk%2F%7BDF019832-768B-43D6-87BE-7A843690595F%7D.png?alt=media&amp;token=9afe24e4-eea7-4011-80b1-e2ce0fcb3fd5" alt=""><figcaption></figcaption></figure>

### Dauerwerte überprüfen

Einzigartige CTS-Dauerwerte auflisten:

{% code overflow="wrap" %}

```bash
tshark -r CAPTURE-01.cap -Y "wlan.fc.type_subtype==28" -Tfields -e wlan.duration 2>/dev/null | sort -u
```

{% endcode %}

Alternativ das Dauerfeld in der JSON-Ausgabe prüfen:

{% code overflow="wrap" %}

```bash
tshark -r CAPTURE-01.cap -Y "wlan.fc.type_subtype==28" -Tjson 2>/dev/null | grep 'wlan.duration'
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FJFZw1RMT6zdKcIz7WBig%2F%7BA9746E6B-E7EA-4A42-A192-9F2B7E14BE2C%7D.png?alt=media&amp;token=b48e652f-a728-4e22-af66-ca8a7e34ffb4" alt=""><figcaption></figcaption></figure>

### Die Auswirkungen validieren

Verwenden Sie einen dedizierten Access Point und Testclient. Erfassen Sie eine Ausgangsbasis, bevor Sie Test-Frames einführen.

1. Messen Sie den normalen Durchsatz, die Latenz und den Paketverlust.
2. Verwenden Sie die BSSID des Access Points als Empfängeradresse.
3. Vergleichen Sie die Messwerte nach dem begrenzten Test.

Eine Dauer von `30000` entspricht 30 Millisekunden. Das Dauerfeld verwendet Mikrosekunden, nicht Millisekunden.

### Die Ergebnisse interpretieren

Wiederholte CTS-Frames mit hohen Dauerwerten können dazu führen, dass nahegelegene Stationen die Übertragung zurückstellen. Dadurch verringert sich die verfügbare Sendezeit, und der Netzwerkdurchsatz kann sinken.

Vergleichen Sie die erfassten Dauerwerte mit der Ausgangsbasis. Notieren Sie, ob die Clients verbunden bleiben und ob sich die Leistung nach Ende des Tests wieder erholt.

### Defensive Erkenntnisse dokumentieren

Melden Sie den betroffenen Kanal, den Access Point, die Testdauer und die beobachteten Auswirkungen auf die Clients. Fügen Sie die Ausgangs- und Wiederherstellungsmessungen hinzu.

Überwachen Sie das Auftreten wiederholter CTS-Frames mit ungewöhnlichen Dauerwerten. Halten Sie die Firmware des Access Points aktuell und untersuchen Sie unerwartete Auslastung der Sendezeit.

### CTS-Frames mit Wireshark untersuchen

Öffnen Sie die Aufzeichnung direkt in Wireshark:

{% code overflow="wrap" %}

```bash
wireshark CAPTURE-01.cap > /dev/null 2>&1 & disown
```

{% endcode %}

Wenden Sie den folgenden Anzeigefilter an:

{% code overflow="wrap" %}

```bash
wlan.fc.type_subtype==28
```

{% endcode %}

Die IEEE-802.11-Details zeigen ebenfalls den Dauerwert (110 Mikrosekunden)

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FGLJQbWkmcb7GubibzeSm%2F%7B23210DB6-6743-41F1-8332-DF822D6D9D56%7D.png?alt=media&amp;token=5e640d25-5059-4d01-9164-2d54096af7d5" alt=""><figcaption></figcaption></figure>

### Einen ausgewählten CTS-Frame exportieren

Wählen Sie einen CTS-Frame aus und verwenden Sie **Datei → Angegebene Pakete exportieren**. Wählen Sie **Nur ausgewähltes Paket** um nur diesen Frame zu exportieren.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FnYuPSmnjnpKvaARwIr6L%2F%7B2BE715F8-7661-466E-B708-4A066CF1F918%7D.png?alt=media&amp;token=8b7b9e00-8c98-434e-973b-7429a86d6544" alt=""><figcaption></figcaption></figure>

### Den exportierten Frame mit GHex untersuchen

Öffnen Sie die exportierte Aufzeichnung mit GHex:

{% code overflow="wrap" %}

```bash
ghex ctsframe.pcap > /dev/null 2>&1 &  
```

{% endcode %}

Die exportierte Datei enthält möglicherweise nicht den erwarteten Frame. Erfassen Sie in diesem Fall direkt über die Monitor-Mode-Schnittstelle und überprüfen Sie den Frame in Wireshark.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fd08nszJEOKhDmoAnXf1W%2F%7B0534BE4D-5D1E-469F-970B-C27922720AEB%7D.png?alt=media&amp;token=2117cfad-2e41-4360-aba2-ba896b7477f9" alt=""><figcaption></figcaption></figure>

### Direkt mit Wireshark erfassen

Erfassen Sie direkt, wenn die exportierte Datei nicht den erwarteten CTS-Frame enthält.

Öffnen Sie Wireshark, wählen Sie die `wlan0mon` Schnittstelle aus und wenden Sie den CTS-Anzeigefilter an:

{% code overflow="wrap" %}

```bash
wlan.fc.type_subtype==28
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FO2CfilRpIRNAypKoqIwC%2F%7B69AE25D8-57F9-45B4-BDB6-526FF1ABED20%7D.png?alt=media&amp;token=c3391596-c2fe-467a-9908-c9e7121d4939" alt=""><figcaption></figcaption></figure>

Beispielsweise zeigt der erste Frame eine Dauer von 132 Mikrosekunden. Bestätigen Sie, dass seine Zieladresse mit dem autorisierten Test-Access Point übereinstimmt.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FEJP2YnPa6MYGxqGheuGF%2F%7B0E68F015-660F-4787-9FDD-253A19173820%7D.png?alt=media&amp;token=37726b42-e0d6-4f1a-9351-4a310288adbe" alt=""><figcaption></figcaption></figure>

Exportieren Sie den ausgewählten Frame als `ctsframe.pcap`.

Öffnen Sie die Datei und suchen Sie den Dauerwert. Die Bytes nach der 12-stelligen MAC-Adresse sind `84 00`.

{% code overflow="wrap" %}

```bash
ghex ctsframe.pcap > /dev/null 2>&1 &
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FohBOZtHFDaO22nCfRXoY%2F%7B1C5725CF-AAD4-4583-8351-9F97B600C784%7D.png?alt=media&amp;token=4d34fb7d-8bfe-42ff-829b-cfda168055af" alt=""><figcaption></figcaption></figure>

Die Umrechnung von `0x0084` in eine Dezimalzahl ergibt denselben Wert, der im Paket angezeigt wird: 132.

{% code overflow="wrap" %}

```
python 

0x0084
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FaDHfG66b1LsR2lipdO4M%2F%7B92A2A5B4-9573-4147-89C7-36FB890F5E2F%7D.png?alt=media&amp;token=41cfc760-760f-4063-8107-11840b72f916" alt=""><figcaption></figcaption></figure>

30000 in Hexadezimal umrechnen:

{% code overflow="wrap" %}

```python
python

hex(30000)
```

{% endcode %}

Das Ergebnis ist:

* 0x7530

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FNlcsACV20cVlu3EgZzAC%2F%7B4B610428-0F06-4222-862A-2510B08995F4%7D.png?alt=media&amp;token=8235a42b-3fc6-4990-a670-14cf23c56ac3" alt=""><figcaption></figcaption></figure>

Ersetzen Sie für diesen begrenzten Test `84 00` durch `30 75`. Die Bytes verwenden Little-Endian-Byte-Reihenfolge.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FsdSUTauJ0CLQSChtCqT2%2F%7B6B478B0A-AAD7-4C45-800C-9BEFB89265AD%7D.png?alt=media&amp;token=61e943eb-8180-4a91-a02f-0fcdc62dcb7c" alt=""><figcaption></figcaption></figure>

Öffnen Sie die Aufzeichnung erneut, um die Änderung zu überprüfen:

{% code overflow="wrap" %}

```bash
wireshark ctsframe.pcap  > /dev/null 2>&1 & disown
```

{% endcode %}

Wireshark zeigt nun eine Dauer von 30.000 Mikrosekunden an.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FChz4XHGAXrJAVAbHfg28%2F%7BCF7AAF3A-4C86-46A0-B655-83081F129D76%7D.png?alt=media&amp;token=ed8dcfd7-908b-49c7-891f-ad6bde8c2d61" alt=""><figcaption></figcaption></figure>

Bevor Sie den folgenden Befehl verwenden, bestätigen Sie das Zielgerät, den Kanal, die Dauer und das Wiederherstellungsfenster. Er sendet den Test-Frame wiederholt, um die Auswirkungen auf das Netzwerk zu messen.

{% code overflow="wrap" %}

```bash
tcpreplay --intf1=wlan0mon --topspeed --loop=2000 ctsframe.pcap 2>/dev/null 
```

{% endcode %}

Der Befehl durchläuft 2.000 Pakete. Jedes Paket kündigt eine Dauer von 30.000 Mikrosekunden an, was die verfügbare Sendezeit aufbrauchen kann.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FhBcWVuoooxHl2RU7zFL0%2F%7B16E5A880-97BA-4D46-B71C-A6BCF5159476%7D.png?alt=media&amp;token=b267aad2-2db8-45f3-8927-12ff7d7afe9d" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/de/hacking-wifi/wpa-wpa2-psk-network-attacks/client-disruption-tests/cts-frame-attack-network-bandwidth-hijacking.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
