On Tue, Mar 13, 2012 at 9:13 PM, <a href="mailto:lists@...3397...">lists@...3397...</a> <span dir="ltr"><<a href="mailto:lists@...3397...">lists@...3397...</a>></span> wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks Joel for the reply, let me reply in line:<br>
<div class="im"><br>
On 03/13/12 19:55, Joel Esler wrote:<br>
> That's a pretty old version of PDF marking. It's almost worth it to sig<br>
> that. ;)<br>
<br>
</div>You're right but I know from time to time the old legitimate floats around...<br>
<div class="im"><br>
> It's a negligible difference as far as performance goes  in my testing.<br>
> It's more worth it, IMO, to ensure that the qwe123 is after the PDF content<br>
> match. At least it's in the file. I'll check again.<br>
<br>
</div>So help me understand this one if you don't mind and I appreciate your wisdom.<br>
It's my understanding, with regard to fast_pattern at least (not<br>
fast_pattern:only), that the content match and distance:0 modifiers are still<br>
applied.<br>
<br></blockquote><div>Yes, they do.  I tested it again, and I was right.  The PDF check is faster than the qwe123 check by a factor of about 4.  (If you fast pattern the qwe123 instead of the PDF it takes 4 times as long to evaluate)</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
As I understand the rule evaluation to be with regard to<br>
<div class="im">flowbits:isset,file.pdf; file_data; content:"%PDF-1.6"; content:"qwe123";<br>
distance:0; fast_pattern;<br>
<br>
</div>1) fast_pattern case-insensitive match against the file_data buffer for "qwe123"<br>
2) content match check for "%PDF-1.6" against the file_data buffer.<br>
3) content match check for "qwe123" against the file_data buffer relative to the<br>
previous content match of "%PDF-1.6".<br>
4) flowbit check for state of file.pdf<br></blockquote><div><br></div><div>Actually, #4 should be #2.  Since the rule options are read left to right after the header.  (Header is read last.)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Is this execution path correct?  As I understand it the content modifiers like<br>
within, distance, etc still apply to a content match which has been explicitly<br>
set to fast_pattern (not fast_pattern:only).  <br></blockquote><div><br></div><div>Correct.  fast_pattern is not case insensitive though.  fast_pattern:only, however, is.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<snip><br>
<div class="im"><br>
> I'm also future proofing the rule for future enhancements to the Snort<br>
> engine.  By doing what I did.<br>
<br>
</div>Can you elaborate more on this?<br><br></blockquote><div><br></div><div>Not yet.  As I said in my blog post, 2012 is going to be a big year for Snort.  I'll announce things when we are ready to do so.  I don't like to put things out until we have something solid.  I don't like to over promise and under deliver. </div>
</div><br clear="all"><div><br></div>-- <br><div>Joel Esler</div><div>Senior Research Engineer, VRT</div><div>OpenSource Community Manager</div><div>Sourcefire</div><br><br>