Currently if an IPv6 tunnel such as those provided by Helium's tunnelbroker is used we get some misleading results
1447859665.899986000 192.168.3.64 216.66.80.26 57319 993 0xc030,0xc02c,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,0x0088,0x0087,0xc032,0xc02e,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,0x0084,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,0xc02f,0xc02b,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,0x009a,0x0099,0x0045,0x0044,0xc031,0xc02d,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,0x0096,0x0041,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDH_RSA_WITH_RC4_128_SHA,TLS_ECDH_ECDSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_MD5,0x00ff
IP
216.66.80.26 is the Helium endpoint.
The destination port (993) is correct, however the actual destination was
2a00:1450:400c:c02::6d which is a Google operated mailserver
ben@milleniumfalcon:/tmp$ host 2a00:1450:400c:c02::6d
d.6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.c.0.c.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa domain name pointer wn-in-x6d.1e100.net.
From a single PCAP the current analysis implies that the helium endpoint is running a bunch of services that it isn't
216.66.80.26 443
216.66.80.26 80
216.66.80.26 993
The script needs to identify packets where IPv6 has been tunnelled over IPv4 and act accordingly
Activity
2015-11-24 17:08:29
Running a second to only include encapsulated traffic (with the ip dest/src fields changed) would be fairly simple too.
I don't particularly like the idea of having to run every single check twice though, might be better to add a seperate set of fields into the CSV to record IPv6 src/dest. It'd also make encapsulated traffic immediately obvious at a glance
Something like
Though normally I'd chuck new fields on the end of the CSV, as it's dest/src IP it really does need adding towards the beginning. Will mean updating field numbering elsewhere in the script though.
So, within the webtraffic csv our fields would change from those defined in PAS-8 to
IPv4 encapsulated IPv6 traffic can be indentified by there being source and dest addresses in both the IPv4 and IPv6 columns
Will give it a little more thought before actually making the changes, but it looks like it should work OK
2015-11-24 17:09:30
2015-11-25 14:56:41
Commit 17a6375 introduces the new fields for IPv6 and updates field numbers wherever used in the script.
Taking the example used when raising the issue, we now get the following result (PAS-5 changed the way ciphersuites are recorded).
Will need to update the documentation file to reflect this change
2015-11-25 14:57:45
Webhook User-Agent
View Commit
2015-11-25 14:57:46
Webhook User-Agent
View Commit
2015-11-25 15:13:49
Native IPv4
- Fields 2 and 3 will be populated
- Field's 4 and 5 will be empty
Native IPv6
- Fields 4 and 5 will be populated
- Field's 2 and 3 will be empty
Tunnelled IPv6
- Field's 2 and 3 will be populated
- Fields 4 and 5 will also be populated
So even where both native and tunnelled IPv6 are in use (not sure why you would, but someone out there has probably found a reason) it should be possible to easily discern between the two.
2015-11-25 15:14:36
2015-11-25 15:15:41
Webhook User-Agent
View Commit
2015-11-25 18:07:08
2015-11-25 18:07:08
2015-11-25 18:07:08
2015-11-25 18:07:13
2015-11-27 13:15:27
2015-11-27 13:15:27
2015-11-27 13:15:27
2015-11-27 13:15:50
2015-11-27 13:15:50
2015-11-27 13:15:56