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: 2017/01/24 18:49 von 127.0.0.1