<div dir="ltr"><div>Tom,<br><br></div>Thanks.  It makes sense now.<br><div><div><br>"prevent the seams between message pieces from falling
 in predictable places that might be exploited to hide something from detection."<br><br>Is this a known attack?  If so, could you share more information about it (e.g., url)?<br><br>Thanks again for taking the time to respond.<br><br>Regards,<br>-HS<br><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 11, 2014 at 4:16 PM, Tom Peters (thopeter) <span dir="ltr"><<a href="mailto:thopeter@...1066....3461..." target="_blank">thopeter@...3461...</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:16px;font-family:'Times New Roman',sans-serif">
<div>Hi,</div><span class="">
<div><br>
</div>
<div><b>Are you saying that Snort assembles MTU-size tcpdump-captured packets to construct a large HTTP message body, and then re-chops it into a slightly varying number of "Packet"s which are then injected into SnortHttpInspect(Packet *p)?</b></div>
<div><br>
</div>
</span><div>Yes, that is the general idea. TCP reassembly converts the IP packets into a stream of data. An entire large HTTP message body cannot be reconstructed because it would occupy too much memory and be unwieldy to process. Every 16384-ish octets the data stream
 is cut and the resulting block is converted into a pseudo-packet and forwarded to HttpInspect for processing. The "-ish" is the random increment.</div>
<div><br>
</div>
<div>Tom</div>
<div><br>
</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt"><span class="">
<span style="font-weight:bold">From: </span>Hyunseok <<a href="mailto:hyunseok@...1117..." target="_blank">hyunseok@...1117...</a>><br>
<span style="font-weight:bold">Reply-To: </span>"<a href="mailto:hyunseok@...1117..." target="_blank">hyunseok@...1117...</a>" <<a href="mailto:hyunseok@...1117..." target="_blank">hyunseok@...1117...</a>><br>
</span><span style="font-weight:bold">Date: </span>Thursday, September 11, 2014 2:47 PM<br>
<span style="font-weight:bold">To: </span>Thomas Peters <<a href="mailto:thopeter@...3461..." target="_blank">thopeter@...3461...</a>><br>
<span style="font-weight:bold">Cc: </span>"<a href="mailto:snort-devel@lists.sourceforge.net" target="_blank">snort-devel@...362....net</a>" <<a href="mailto:snort-devel@lists.sourceforge.net" target="_blank">snort-devel@lists.sourceforge.net</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [Snort-devel] Randomness in Snort engine<br>
</div><div><div class="h5">
<div><br>
</div>
<div>
<div>
<div dir="ltr">
<div>
<div>
<div>
<div>Thanks for your reply.<br>
<br>
</div>
<div>It's true that the "total packets processed" that I showed earlier indeed pkt-count stats under "HTTP Inspect" section.<br>
<span></span><br>
</div>
However, I am not sure if I fully understand the symptom.<br>
<br>
</div>
I see that the packet counter is incremented in SnortHttpInspect(HTTPINSPECT_GLOBAL_CONF *GlobalConf, Packet *p).<br>
<br>
</div>
Are you saying that Snort assembles MTU-size tcpdump-captured packets to construct a large HTTP message body, and then re-chops it into a slightly varying number of "Packet"s which are then injected into SnortHttpInspect(Packet *p)?<br>
<br>
</div>
Sorry, I am new to Snort.<br>
<div>
<div>
<div><br>
</div>
Regards,<br>
-HS<br>
<div><br>
</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Sep 11, 2014 at 2:14 PM, Tom Peters (thopeter) <span dir="ltr">
<<a href="mailto:thopeter@...3461..." target="_blank">thopeter@...3408...61...</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:16px;font-family:'Times New Roman',sans-serif">
<div>Hi,</div>
<div><br>
</div>
<div>A possible explanation for your results.</div>
<div><br>
</div>
<div>Snort divides up very large protocol messages (e.g. HTTP message body) into pieces for processing. There is a small random increment added to the piece size that may vary between runs. It's purpose is to prevent the seams between message pieces from falling
 in predictable places that might be exploited to hide something from detection.</div>
<div><br>
</div>
<div>Over a very long run this jitter in the packet boundaries might add up to a slightly different number of packets.</div>
<div><br>
</div>
<div>Tom</div>
<div><br>
</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;border-width:1pt medium medium;border-style:solid none none;border-color:rgb(181,196,223) -moz-use-text-color -moz-use-text-color;padding:3pt 0in 0in">
<span style="font-weight:bold">From: </span>Hyunseok <<a href="mailto:hyunseok@...1117..." target="_blank">hyunseok@...1117...</a>><br>
<span style="font-weight:bold">Reply-To: </span>"<a href="mailto:hyunseok@...1117..." target="_blank">hyunseok@...1117...</a>" <<a href="mailto:hyunseok@...1117..." target="_blank">hyunseok@...1117...</a>><br>
<span style="font-weight:bold">Date: </span>Thursday, September 11, 2014 12:33 PM<br>
<span style="font-weight:bold">To: </span>"<a href="mailto:snort-devel@lists.sourceforge.net" target="_blank">snort-devel@...362....net</a>" <<a href="mailto:snort-devel@lists.sourceforge.net" target="_blank">snort-devel@lists.sourceforge.net</a>><br>
<span style="font-weight:bold">Subject: </span>[Snort-devel] Randomness in Snort engine<br>
</div>
<div>
<div>
<div><br>
</div>
<div>
<div>
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>Hi,<br>
<br>
</div>
I have one question about Snort.<br>
<br>
</div>
I was running Snort in offline mode by feeding a tcpdump packet trace to it.<br>
<br>
</div>
I expected that Snort analysis result would be identical when I re-run Snort multiple times with the same packet trace.<br>
<br>
</div>
However, I noticed that the the total packets processed is slightly different across different runs, which affects other analysis results.<br>
<br>
result.0:    Total packets processed:              230718    <br>
result.1:    Total packets processed:              230720    <br>
result.2:    Total packets processed:              230722<br>
</div>
<div>result.3:    Total packets processed:              230721<br>
</div>
<div><br>
</div>
Do you guys have any idea where this slight randomness comes from in Snort?<br>
<br>
</div>
I'm using the default snort configuration with default rule sets.<br>
<div>
<div>
<div><br>
</div>
<div>This question might be user-oriented, but I thought developers may have a better idea on the root cause.<br>
<br>
</div>
<div>Thanks,<br>
</div>
<div>-HS<br>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</span></div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</div></div></span>
</div>

</blockquote></div><br></div>