Wednesday, July 28, 2010

Time Issues in Libpcap Traces

Time is an important aspect of Network Security Monitoring. If you don't pay close attention to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time shown in your evidence, and recognize what it means, it's possible you could misinterpret cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 values you see.

My students and I encountered this issue in TCP/IP Weapons School at Black Hat this week. Let's look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first ICMP packet in one of our labs.

I'm going to show cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 output using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Hd tool and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n identify and decode cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 field that depicts time.

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following output, 2d 0c 65 49 occupies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 packet where Libpcap has added a timestamp.

Hd output:

$ hd icmp.sample.pcap
00000000 d4 c3 b2 a1 02 00 04 00 00 00 00 00 00 00 00 00 |................|
00000010 ea 05 00 00 01 00 00 00 2d 0c 65 49 5f bf 0c 00 |........-.eI_...|
00000020 4a 00 00 00 4a 00 00 00 00 0c 29 82 11 33 00 50 |J...J.....)..3.P|
00000030 56 c0 00 01 08 00 45 00 00 3c 02 77 00 00 80 01 |V.....E..<.w....|
00000040 ea f1 c0 a8 e6 01 c0 a8 e6 05 08 00 43 5c 07 00 |............C\..|
00000050 03 00 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e |..abcdefghijklmn|
00000060 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 |opqrstuvwabcdefg|
00000070 68 69 |hi|
00000072

Tpo convert 2d 0c 65 49 to a time, we have to swap cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bytes, so becomes 0x49650c2d, or 1231359021 in decimal. 1231359021 is a Unix timestamp that we can convert with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 -r option found in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeBSD version of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date command.

First let me show cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date on this system so you can see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timezone of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeBSD system, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I'll convert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 seconds into a human readable time.

$ date
Wed Jul 28 00:11:23 EDT 2010

$ date -r 1231359021
Wed Jan 7 15:10:21 EST 2009

So, this ICMP packet has a timestamp of Wed Jan 7 15:10:21 EST 2009. Note that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date command produces a time in EST and not EDT. 15:10:21 EST becomes 16:10:21 EDT. I would have preferred seeing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date output show EDT since that is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time zone on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system in question, but I can understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 output. That seems simple enough, right?

Let's see what Tcpdump says about this packet. First I run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date command to remind us where we are running Tcpdump.

FreeBSD Tcpdump:

$ date
Wed Jul 28 00:11:23 EDT 2010

$ tcpdump -h
tcpdump version 3.9.8
libpcap version 0.9.8

$ tcpdump -n -tttt -r icmp.sample.pcap
2009-01-07 16:10:21.835423 IP 192.168.230.1 > 192.168.230.5:
ICMP echo request, id 1792, seq 768, length 40

As we expected, this packet has a timestamp of 16:10:21 (ignore cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fractions of a second), and since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time zone is EDT it matches what we expect.

Let's see what a tool like Tshark says.

FreeBSD Tshark:

$ tshark -v
TShark 1.0.7
...edited...
Compiled with GLib 1.2.10, with libpcap 0.9.8, with libz 1.2.3, without POSIX
capabilities, without libpcre, without SMI, without ADNS, without Lua, without
GnuTLS, without Gcrypt, with Heimdal Kerberos.
NOTE: this build doesn't support cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "matches" operator for Wireshark filter
syntax.

Running on FreeBSD 7.2-RELEASE-p7, with libpcap version 0.9.8.

Built using gcc 4.2.1 20070719 [FreeBSD].

$ tshark -n -t ad -r icmp.sample.pcap
1 2009-01-07 15:10:21.835423 192.168.230.1 -> 192.168.230.5
ICMP Echo (ping) request

What? Why does it show 15:10:21? That's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 result for EST, not EDT, which is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time zone of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeBSD system.

Let's see if a Linux system in EDT behaves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same way.

$ date
Wed Jul 28 00:44:54 EDT 2010

$ tcpdump -V
tcpdump version 4.0.0
libpcap version 1.0.0

$ tcpdump -n -tttt -r icmp.sample.pcap
2009-01-07 16:10:21.835423 IP 192.168.230.1 > 192.168.230.5:
ICMP echo request, id 1792, seq 768, length 40

$ tshark -v
TShark 1.2.7
...edited...
Compiled with GLib 2.24.0, with libpcap 1.0.0, with libz 1.2.3.3, with POSIX
capabilities (Linux), with libpcre 7.8, with SMI 0.4.8, with c-ares 1.7.0, with
Lua 5.1, with GnuTLS 2.8.5, with Gcrypt 1.4.4, with MIT Kerberos, with GeoIP.

Running on Linux 2.6.32-23-generic, with libpcap version 1.0.0, GnuTLS 2.8.5,
Gcrypt 1.4.4.

Built using gcc 4.4.3.

$ tshark -n -t ad -r icmp.sample.pcap
1 2009-01-07 15:10:21.835423 192.168.230.1 192.168.230.5
ICMP Echo (ping) request

Again, we see Tcpdump correctly honor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 local time zone (EDT) and display cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timestamp as 16:10:21, whereas Tshark shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timestamp as EST or 15:10:21.

I am really disappointed by this Tshark behavior. Incidentally, you get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same results from any tool in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Wireshark suite, such as Wireshark itself, capinfos, etc.

Does anyone know why Tshark and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 like don't really honor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 local time zone, and instead use Standard Time instead of recognizing Daylight Savings Time?

10 comments:

Unknown said...

Work entirely in GMT. Come up with tools to convert logs to GMT. Move all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timeline entries to GMT.

As an added benefit when (sadly more like if) affected companies and/or groups interoperate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can quickly share timelines and immediately compare cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than have knowledge of local daylight savings time rules, etc.

Argent said...

I'm wondering if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EST/EDT bit is based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timestamp, racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 date which is currently in effect. e.g. if you have a packet capture from 18 July and you look at it in December, I'm guessing you'll see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 opposite behaviour.

Working in GMT avoids any interesting time-zone related problems, (for example, in a capture crossing a DST boundary, time can move backwards or leap forwards) but loses some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 context.

For example, in this case, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 packet arrived at 3:10PM in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 eastern time zone. Using local time zone, it may be easier to correspond with some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r events (e.g. going out for afternoon coffee or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 like). For certain types of attacks, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se sorts of correlations can be quite interesting.

Anyway, I'd argue that tshark, date, etc are doing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct timezone parsing, as EDT does not exist anywhere in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 winter months.

Anonymous said...

I agree with Argent. The timestamp of your sample ICMP packet was created during standard time, not daylight saving time. Tshark is doing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right thing.

Anonymous said...

Like anon, I agree with Argent. If you are doing time correlation across multiple logs, correlating with physical events, I would prefer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual time of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 event racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than one adjusted for current time of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current OS

Gerald Combs said...

If I understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tcpdump sources correctly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "-tttt" flag shifts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time zone offset according to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current time. That is, if you run "tcpdump -n -tttt -r icmp.sample.pcap" on November 6 and November 7 this year you'll get different results. We can certainly add this functionality to Wireshark but I have a feeling it wouldn't be received very well.

Anonymous said...

Thinking about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Clifford Stoll review recently, and watching cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 doc on youtube, Stoll was perplexed why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 activity was right around lunchtime (12 noon). Why would cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hacker choose cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 busiest time, when people might observe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user? Then he realized cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hacker was from Germany and it made sense, because it was evening in Germany.

I'd agree with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments above, I'd want cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 raw date, perhaps that's not a bug, it's a feature. Although it does make me think, because this is a daylight savings issue, that this is an unpatched system possibly, and it's not adjusting? Just a thought - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a Java patch for dst some years back..

Richard Bejtlich said...

All I'm asking for here is a little transparency. My students were very frustrated to see on result in a Wireshark-related tool and anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r in Tcpdump.

Richard Rowlandson said...

First of all I want to say that by no means am I an expert in this topic, and I am still learning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 capabilities of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tools and how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can be applied in various ways during an analysis.

However, I agree with Richard in that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re needs to be a standard way of displaying time across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tools. I attended his class this week and it was a little distracting to have to keep in mind how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time format was displayed by each tool, and consequently, have to accommodate for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 differences. Not only is it distracting to have to accommodate for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 differences, but you also have to know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem exists in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first place. Adding a manual, human component like this into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 equation can lead to conversion errors which, in turn, could cause cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analyst to miss potentially critical information during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analysis.

Aside from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 obvious consistency issue, IMO, I think that having cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tools set to report cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time in GMT by default is a good start and would allow for a standard correlation across time zones. In addition to this, I think that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 incorporation of a switch that would allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analyst to specify a particular time zone offset would be advantageous. This would give more flexibility in how we are able to visualize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data. For example, if you had an analysis that included multiple pcap files from multiple time zones, by default cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would all show in GMT. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analyst would have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 option to convert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time zone corresponding to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 site where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 initial event happened, or look at each pcap in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time zone from where it originated. Everyone has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own way of making sense of this type of data, but personally, having cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to view cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timelines it in different ways would be advantageous.

Anonymous said...

@Gerald Combs - you do understand that in this case TShark properly reported cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual "time" of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 event in EST when TCPDump failed to do that?? TCPDump did not take EST/EDT changes into account and reported cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wrong "time". Richard says that Tcpdump honored cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 local time zone, but that was actually cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wrong thing to do. He said that all tools in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Wireshark suite had cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same results - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct results. So why include this Tcpdump functionality/code into Wireshark?

caf said...

I tend to agree with Argent and Anonymous x 2 - Wireshark showed 15:10:21 because that's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 clock on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wall showed when that packet came in.

If you want consistent times, switch to UTC. Woe bedtide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analyst who is attempting to make sense of a packet log annotated in local time that covers cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hour when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 clocks are actually put back - when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same wallclock time happens twice an hour apart...