<br><br><div class="gmail_quote">On Tue, Aug 20, 2013 at 3:43 AM, Bram <span dir="ltr"><<a href="mailto:bram-fabeg@...3414..." target="_blank">bram-fabeg@...3414...</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
<br>
Was this message taken into consideration? (I received no reply on it?)<br></blockquote><div><br></div><div>I just now got and responded to the original.  Haven't seen it before. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Even if the code is left unchanged it seems appropriate to mention this in the documentation of the '129-14' rule.. (speaking of which: it seems documentation for '129:14' is missing?)<br>
<br>
<br>
Best regards,<br>
<br>
Bram<div class="HOEnZb"><div class="h5"><br>
<br>
Quoting Bram <<a href="mailto:bram-fabeg@...3414..." target="_blank">bram-fabeg@...3414...</a>>:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
<br>
The TCP implementation on *BSD (and by extension on Darwin) appears to  contain a bug:<br>
When the TCP session is idle then it sends a 'TCP Keep-Alive' packet  to determine if the connection still exists.<br>
This is expected.<br>
<br>
However: the 'TCP Keep-Alive' packet does not have the timestamp options set..<br>
This causes snort to generate the alert 'STREAM5_NO_TIMESTAMP'.<br>
<br>
While the event is correct it is a bit undesirable since this makes it  difficult to see unexplained anomalies/actual 'problems.<br>
<br>
Attached is a patch which detects the 'TCP KeepAlive' packets send by  BSD/Darwin and prevents the alert from being generated.<br>
I'm not sure if the 'TCP KeepAlive' packet should be ignored by  default.. perhaps it's better to add a config options for it?<br>
<br>
Also: when *BSD/Darwin sends an ack on a 'TCP Keep-Alive' packet then  it does appear to include the timestamp.<br>
<br>
(This was detected due to a PPTP client being connected from a Mac -  tcp idle -> keep alives send)<br>
<br>
<br>
Attached are four dumps:<br>
* keepalive.pcap: connection between NetBSD and Linux (NetBSD sending  Keep-Alive)<br>
* keepalive2.pcap: connection between NetBSD and NetBSD<br>
* keepalive4.pcap: connection between Linux and NetBSD host (Linux  sending Keep-Alive)<br>
* no_timestamp.pcap: tcp session created using raw sockets<br>
<br>
<br>
<br>
Configuration file used:<br>
       config checksum_mode: all<br>
       dynamicpreprocessor directory /usr/lib/snort_<u></u>dynamicpreprocessor/<br>
       preprocessor stream5_global: track_tcp yes, \<br>
          track_udp no, \<br>
          track_icmp no, \<br>
          max_tcp 262144, \<br>
          max_udp 131072<br>
       preprocessor stream5_tcp: policy windows, detect_anomalies<br>
<br>
       alert ( msg: "STREAM5_NO_TIMESTAMP"; sid: 14; gid: 129; rev: 1;  metadata: rule-type preproc ; )<br>
<br>
       output alert_fast: stdout<br>
<br>
Output:<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/keepalive.pcap 2>&1 | grep '129:'<br>
       07/22-14:16:03.787282  [**] [129:14:1] TCP Timestamp is missing [**]  [Priority: 0] {TCP} <a href="http://192.168.173.51:52185" target="_blank">192.168.173.51:52185</a> -> <a href="http://192.168.173.50:6666" target="_blank">192.168.173.50:6666</a><br>

       07/22-14:16:13.787173  [**] [129:14:1] TCP Timestamp is missing [**]  [Priority: 0] {TCP} <a href="http://192.168.173.51:52185" target="_blank">192.168.173.51:52185</a> -> <a href="http://192.168.173.50:6666" target="_blank">192.168.173.50:6666</a><br>

<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/keepalive2.pcap 2>&1 | grep '129:'<br>
       07/22-14:18:45.965624  [**] [129:14:1] TCP Timestamp is missing [**]  [Priority: 0] {TCP} <a href="http://192.168.173.51:52179" target="_blank">192.168.173.51:52179</a> -> <a href="http://192.168.173.51:6666" target="_blank">192.168.173.51:6666</a><br>

       07/22-14:18:55.965523  [**] [129:14:1] TCP Timestamp is missing [**]  [Priority: 0] {TCP} <a href="http://192.168.173.51:52179" target="_blank">192.168.173.51:52179</a> -> <a href="http://192.168.173.51:6666" target="_blank">192.168.173.51:6666</a><br>

<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/keepalive3.pcap 2>&1 | grep '129:'<br>
<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/no_timestamp.pcap 2>&1 | grep '129:'<br>
       08/01-16:33:02.253871  [**] [129:14:1] TCP Timestamp is missing [**]  [Priority: 0] {TCP} <a href="http://192.168.173.1:6000" target="_blank">192.168.173.1:6000</a> -> <a href="http://192.168.173.153:33705" target="_blank">192.168.173.153:33705</a><br>

<br>
<br>
<br>
Output with patched version:<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/keepalive.pcap 2>&1 | grep '129:'<br>
<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/keepalive2.pcap 2>&1 | grep '129:'<br>
<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/keepalive3.pcap 2>&1 | grep '129:'<br>
<br>
       $ snort -v -l /var/log -c /etc/ips/snort.conf --daq-dir /lib/daq/ -r  /tmp/no_timestamp.pcap 2>&1 | grep '129:'<br>
       08/01-16:33:02.253871  [**] [129:14:1] TCP Timestamp is missing [**]  [Priority: 0] {TCP} <a href="http://192.168.173.1:6000" target="_blank">192.168.173.1:6000</a> -> <a href="http://192.168.173.153:33705" target="_blank">192.168.173.153:33705</a><br>

<br>
<br>
=> No alert on TCP Keep-Alive from BSD/Darwin.<br>
<br>
<br>
<br>
Best regards,<br>
<br>
Bram<br>
<br>
</blockquote>
<br>
<br>
<br>
------------------------------<u></u>------------------------------<u></u>----<br>
This message was sent using IMP, the Internet Messaging Program.<br>
<br>
</div></div></blockquote></div><br>