<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Nothing has changed in Snort development communication now that we’re Cisco.  We may have missed it.  Carter has it now.<div class=""><br class=""></div><div class=""><span style="font-family: 'Lucida Grande';" class="">--</span><br class=""><span style="font-family: 'Lucida Grande';" class=""><b class="">Joel Esler</b></span><br class=""><span style="font-family: 'Lucida Grande'; -webkit-text-stroke-color: rgb(0, 0, 0);" class="">Manager, Threat Intelligence Team & Open Source</span><br class=""><span style="font-family: 'Lucida Grande';" class="">Talos Group</span><br class=""><span style="font-family: 'Helvetica Neue';" class=""><a href="http://www.talosintel.com" class="">http://www.talosintel.com</a></span></div><div class=""><font face="Helvetica Neue" class=""><br class=""></font></div><div class=""><font face="Helvetica Neue" class=""><br class=""></font><div class=""><div><blockquote type="cite" class=""><div class="">On Jul 6, 2015, at 4:31 PM, Mike Cox <<a href="mailto:mike.cox52@...2499..." class="">mike.cox52@...2997...499...</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><div class="">Any update/confirmation on this?<br class=""><br class=""></div>I hate to think that the Snort community has become a one way street now that Cisco is calling the shots....  :(<br class=""><br class=""></div>-Mike Cox<br class=""></div><div class="gmail_extra" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""><div class="gmail_quote">On Fri, Jun 26, 2015 at 2:25 PM, Mike Cox<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:mike.cox52@...2499..." target="_blank" class="">mike.cox52@...2499...</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class=""><div class="">Put simply, the network traffic that generates an event has to be flushed and ACKd for the ExtraData (e.g. XFF data) to be logged.  This means that for 'drop' rules, if the packet is inspected individually (no flushing or ACK) or if a stream is flushed before being fully ACKd (i.e. when 'normalize_tcp: ips' is enabled so the sensor is in pre-ACK mode), the ExtraData is not logged.<br class=""><br class=""></div><div class="">I'm convinced that the above is true and I'm suprised no one has brought it up before now.<span class="HOEnZb"><font color="#888888" class=""><br class=""></font></span></div><span class="HOEnZb"><font color="#888888" class=""><div class=""><br class=""></div>-Mike Cox<br class=""></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br class=""><div class="gmail_quote">On Thu, Jun 25, 2015 at 4:25 PM, Mike Cox<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:mike.cox52@...2499..." target="_blank" class="">mike.cox52@...2499...</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class=""><div class=""><div class="">Thanks Carter.  Is my analysis correct on how XFF logging works and the lack of logging in the described scenarios?<br class=""><br class=""></div>Thanks!<span class=""><font color="#888888" class=""><br class=""><br class=""></font></span></div><span class=""><font color="#888888" class="">-Mike Cox<br class=""></font></span></div><div class=""><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Thu, Jun 25, 2015 at 2:08 PM, Carter Waxman (cwaxman)<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:cwaxman@...1067...3461..." target="_blank" class="">cwaxman@...3461...</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word; font-size: 14px; font-family: Calibri, sans-serif;" class=""><div class="">Hi Mike,</div><div class=""><br class=""></div><div class="">Thanks for the detailed analysis. We will be tracking this internally.</div><div class=""><br class=""></div><div class="">-Carter</div><div class=""><br class=""></div><span class=""><div style="font-family: Calibri; font-size: 11pt; text-align: left; border-width: 1pt medium medium; border-style: solid none none; padding: 3pt 0in 0in; border-top-color: rgb(181, 196, 223);" class=""><span style="font-weight: bold;" class="">From:<span class="Apple-converted-space"> </span></span>Mike Cox <<a href="mailto:mike.cox52@...2499..." target="_blank" class="">mike.cox52@...2499...</a>><br class=""><span style="font-weight: bold;" class="">Date:<span class="Apple-converted-space"> </span></span>Thursday, June 25, 2015 at 2:00 PM<br class=""><span style="font-weight: bold;" class="">To:<span class="Apple-converted-space"> </span></span>"<a href="mailto:snort-devel@lists.sourceforge.net" target="_blank" class="">snort-devel@lists.sourceforge.net</a>" <<a href="mailto:snort-devel@...1685...ceforge.net" target="_blank" class="">snort-devel@lists.sourceforge.net</a>><br class=""><span style="font-weight: bold;" class="">Subject:<span class="Apple-converted-space"> </span></span>Re: [Snort-devel] XFF/ExtraData not always logged for drop rules<br class=""></div><div class=""><div class=""><div class=""><br class=""></div><div class=""><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class="">I did some quick tests with Snort<span class="Apple-converted-space"> </span><a href="http://2.9.7.3/Stream6" target="_blank" class="">2.9.7.3/Stream6</a><span class="Apple-converted-space"> </span>and saw the same behavior described above.<br class=""><br class=""></div>Any insights, agreements, or disagreements?<br class=""><br class=""></div>Testing scenario 1 is easy enough.  For scenario 2, I've attached a pcap with a simple HTTP request (with XFF header) and response that both require reasembly.<br class=""><br class=""></div>These rules can be used to test (only enable one at a time):<br class=""><span style="font-family: monospace, monospace;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace, monospace;" class="">drop tcp any any -> any $HTTP_PORTS (msg:"Client request with XFF - reassembly required"; flow:established,to_server; content:"GET"; http_method; content:"requestmatch"; sid:36332;)<br class=""><br class="">drop tcp any $HTTP_PORTS -> any any (msg:"Server response XFF test - reassembly required"; flow:established,to_client; content:"Server"; http_header; file_data; content:"ninja"; sid:26221;)</span><br class=""><br class=""></div><div class="">If 'normalize: tcp' is enabled (flush policy is *-IPS/pre-ACK), the the rules will trigger but the ExtraData with the XFF info is not logged.  If you change the rules to 'alert' or if you disable normalize so the sensor is in post-ACK mode, the ExtraData/XFF info is logged.  You'll want to run in inline mode (the dump DAQ is great for testing!) and of course you need to be configured to output unified2.<br class=""></div><div class=""></div><div class=""><br class=""></div><div class="">Thanks!<br class=""></div><div class=""><br class=""></div>-Mike Cox<br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Jun 24, 2015 at 9:49 AM, Mike Cox<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:mike.cox52@...2499..." target="_blank" class="">mike.cox52@...2499...</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class=""><pre class="">VRT and Snort Devs,<br class=""></pre><pre class=""><br class="">The X-Forwared-For ("XFF") and/or True-Client-IP data is stored in what is called "ExtraData" and written to the unified2 file.  ExtraData is often not written to the unified2 file at the same time as other alert data and can depend on stream flushing as well as alert flushing.

Looking at Stream5, there are a number of cases where the XFF ExtraData is not logged on 'drop' rules even though it is available in the data stream.  From what I can tell, the ExtraData gets written by purge_alerts() which gets called by purge_to_seq() which gets called by purge_flushed_ackd() (sometimes these functions get called when dealing with TIME_WAIT timer stuff but let's ignore those cases for now).  However, purge_flushed_ackd() only purges flushed and acked bytes (as I understand it, bytes that are flushed <i class="">and</i> ackd).

So in these situations, when 'drop' rules trigger, the ExtraData is not written:

1) A single packet triggers the drop rule and it is inspected as a packet and not part of a (reassembled) stream.
  - The Stream5 preprocessor doesn't get involved enough to do the appropriate flushing/purging required to write the ExtraData.

2) A reassembled stream "packet" triggers the drop rule <i class="">and</i> the normalize_tcp preprocessor is enabled (i.e. 'normalize_tcp: ips' which is going to be the Protocol-IPS or Footprint-IPS flush policy depending on PAF).
  - Snort is in pre-ACK mode and so it doesn't wait on the ACK to flush the data to detection.  Since the flushing happens before the ACK is received (and the ACK isn't processed anyway since the stream is blocked by the block rule), the ExtraData never gets written.

I can understand and somewhat accept why the ExtraData isn't written for scenario 1 although this happens when the HTTP Inspect preprocessor is already engaged so it seems feasible to log the ExtraData/XFF.  Can this be done?<br class=""><br class="">For scenario 2, can I make a feature request that the ExtraData gets logged appropriately in this case?  I'm guessing that people who run Snort inline also have normalize and PAF enabled and it makes sense to me that 'drop' rules would still write ExtraData, especially since Stream5 is fully involved.
<br class="">Once drop rules fire, the stream gets blocked (assuming the DAQ supports this) so it makes sense to go ahead and compile/write out the ExtraData since nothing else on that stream is going to get fully processed.<br class="">
I haven't looked much at Stream6 although it looks like most of the code from Stream5 so I'm not sure why the version number change.

Thanks!

-Mike Cox<span class=""><font color="#888888" class=""><br class=""></font></span></pre><pre class="">P.S. setting 'flush_on_alert' for Stream5 doesn't seem to have any affect on these scenarios.<br class=""></pre></div></blockquote></div><br class=""></div></div></div></div></div></span></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">------------------------------------------------------------------------------</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Don't Limit Your Business. Reach for the Cloud.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">GigeNET's Cloud Solutions provide you with the tools and support that</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">you need to offload your IT needs and focus on growing your business.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Configured For All Businesses. Start Your Cloud Today.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://www.gigenetcloud.com/_______________________________________________" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://www.gigenetcloud.com/_______________________________________________</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Snort-devel mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:Snort-devel@lists.sourceforge.net" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Snort-devel@lists.sourceforge.net</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.sourceforge.net/lists/listinfo/snort-devel" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.sourceforge.net/lists/listinfo/snort-devel</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Archive:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://sourceforge.net/mailarchive/forum.php?forum_name=snort-devel" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://sourceforge.net/mailarchive/forum.php?forum_name=snort-devel</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Please visit<span class="Apple-converted-space"> </span></span><a href="http://blog.snort.org/" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://blog.snort.org</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space"> </span>for the latest news about Snort!</span></div></blockquote></div><br class=""></div></div></body></html>