ne:scapy_fragment_v6-packets
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| ne:scapy_fragment_v6-packets [2017/01/24 18:49] – Externe Bearbeitung 127.0.0.1 | ne:scapy_fragment_v6-packets [2017/06/28 15:44] (aktuell) – [IPv6-Pakete fragmentieren] admin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== IPv6-Pakete fragmentieren ====== | ====== IPv6-Pakete fragmentieren ====== | ||
| + | |||
| + | **Scapy:** Die fragment6(packet, | ||
| + | bereits einen Fragmentation-Header besitzt, ansonsten wird nicht fragmentiert. | ||
| + | |||
| + | :!: Linux akzeptiert nur Fragmente deren Payload-Länge ein Vielfaches von 8 ist | ||
| + | (Offset wird als Vielfaches von 8 Byte angegeben), ansonsten gibt es eine ICMP-Parameter-Problem Meldung :!: | ||
| + | |||
| + | |||
| + | ===== Versuch 1: Überschreiben von Paketfragmenten mit neueren Informationen ===== | ||
| + | |||
| + | <code python> | ||
| + | dest=" | ||
| + | |||
| + | p23 = IPv6(dst=dest)/ | ||
| + | p80 = IPv6(dst=dest)/ | ||
| + | |||
| + | send(p23) | ||
| + | send(p80) | ||
| + | </ | ||
| + | |||
| + | Allerdings schlägt die Reassembly auf dem Zielsystem trotzdem fehl (Time Exceeded). | ||
| + | Da beide Pakete den Offset 0 tragen und auf das p80 Paket auch eine passende Antwort vom Zielsystem generiert wird, | ||
| + | ist davon auszugehen, dass Fragmente mit ' | ||
| + | |||
| + | |||
| + | ===== Versuch 2: Alternative incl. Destination Header ===== | ||
| + | |||
| + | Es wird ein Destination Header hinzugefügt, | ||
| + | werden kann und trotzdem der Transport-Header überschrieben werden könnte. | ||
| + | |||
| + | Das Reassembly funktioniert jetzt, allerdings nicht wie erwartet: Linux mit Kernel 2.6.35 scheint für diesen | ||
| + | Angriff nicht empfindlich zu sein, das erste empfangene Fragment bleibt erhalten und wird nicht überschrieben. | ||
| + | |||
| + | /* Kein Upper-Layer Header im 1. Fragment -> Reassembly: WWW (Port 80)*/ | ||
| + | <code python> | ||
| + | p23 = IPv6(dst=dest)/ | ||
| + | p22 = IPv6(dst=dest)/ | ||
| + | </ | ||
| + | |||
| + | /* Kein Upper-Layer Header im 1. Fragment -> Reassembly: WWW (Port 80)*/ | ||
| + | /* Verschiedener Upper-Layer Header im 1. Fragment | ||
| + | <code python> | ||
| + | p23 = IPv6(dst=dest)/ | ||
| + | </ | ||
| + | |||
| + | /* Next Header im nächsten Fragment muss ' | ||
| + | <code python> | ||
| + | p80 = IPv6(dst=dest)/ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| <code python> | <code python> | ||
| Zeile 12: | Zeile 63: | ||
| oder schneller: | oder schneller: | ||
| <code python>>>> | <code python>>>> | ||
| - | |||
| ===== Ein böses Script ===== | ===== Ein böses Script ===== | ||
| <code python> | <code python> | ||
ne/scapy_fragment_v6-packets.1485283742.txt.gz · Zuletzt geändert: von 127.0.0.1
