Last Updated: 2009-04-18 19:07:40 UTC
by Johannes Ullrich (Version: 1)
Yesterday, I posted the packet below as my twitter feed to see how the packet skills are among my followers (my twitter feed is also replicated to Facebook).
Anyway. Here the "solution". I came across this packet while playing with scapy6 being bored on a plane. I was doing some manual fuzzing among VMWare systems I had setup (of course, wifi/bluetooth was turned off :-) ).
This packet is "valid" in the sense that I believe it to be RFC compliant, even though it doesn't actually make "sense". I never managed to send the packet as the VMware Linux system would give me a kernel panic whenever I tried. It is a pretty simple IPv6 packet, with IPv6 header and a Hop-by-Hop header. There is no payload and no higher level protocol header. The Hop-by-Hop header has one option: A Jumbo packet. Jumbo packets are used to send packets that are larger then 64k, but then again, there is nothing to prevent you from sending an empty packet with the option. So as a little joke, I thought it may be nice to see what various systems do if you tell them there is a huge empty packet coming. Of course, it never left... but well,
RFC2675 actually covers issues like that. In this case, the first host/router receiving the packet, if it understands jumbograms, should send a ICMPv6 parameter problem error with a code of 0 .
I am waiting for a plane right now and maybe I will get to it later. (Airtran Flights JAX-ATL-SFO... in case you want to re-book).
60 00 00 00 00 00 00 40 FE 80 00 00 00 00 00 00 02 0C 29 FF FE 0C 44 6D FE 80 00 00 00 00 00 00 02 23 12 FF FE 53 F5 4F 3B 00 C2 04 00 00 00 00 6: IP Version 6 0 0: Trafic Class 0 0 00 00: Flow label 0 00 00: Payload length 0 (this is normal for Jumbo packets.) 00: Next header 0 (Hop-By-Hop) 40: Hop Limit 64 (Default) Next we got the two link local IP addresses: FE80::020C:29FF:FE0C:446D FE80::0223:12FF:FE53:F54f So the IPv6 header is "normal" . Next the Hop-by-Hop header: 3B: There is nothing after this header (Next header: No more headers) 00: complete length of this header is 8 bytes C2: We got a Jumbogram option here 04: total length of the option value, 4 bytes 00 00 00 00: The option value... So this is a jumbo gram header setting the packet size to 0. Extra credit question I added later was make of the systems involved... The address uses the standard EUI64 encoding. The MAC addresses are 00:0C:29:0C:44:6D 00:23:12:53:F5:4F (don't forget to flip bit #7..) accoridng ot the OUT database http://standards.ieee.org/regauth/oui/oui.txt, the systems are: 00:0C:29 -> VMWare 00:23:12 -> Apple Anyway. thought it was fun to tweet a packet. Maybe we will get an IP tunnel over twitter going one of these days. It is just hard with an MTU of 170 Bytes.
Johannes B. Ullrich, Ph.D.
SANS Technology Institute Twitter: twitter.com/johullrich