<HTML >
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


<META content="MSHTML 6.00.2900.2802" name=GENERATOR></HEAD><BODY ><DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2>Actualy if you want to be full stream4 
compatible</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2>where_ever_path/snort -z ...... </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2>should get you on track</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2>-elz</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=310300819-07022006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV><FONT face=Arial color=#0000ff 
size=2></FONT><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> snort-devel-admin@...1954...orge.net 
  [mailto:snort-devel-admin@lists.sourceforge.net] <B>On Behalf Of </B>Joel 
  Ebrahimi<BR><B>Sent:</B> 7 février 2006 14:04<BR><B>To:</B> 
  snort-devel@lists.sourceforge.net<BR><B>Subject:</B> [Snort-devel] Snort 
  Detection (Stream4 and Flow)<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2>Hi,</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>I've been trying 
  to research some of the stream4 preprocessor and rule options. 
  Basically I  noticed a number of scan rules were not triggering 
  and I looked into it further. For example here is a simplified NULL scan 
  rule  :</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>alert tcp 
  $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN NULL no seq"; flow:stateless; 
  ack:0; flags:0; reference:arachnids,4; classtype:attempted-recon; 
  )</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>This was not 
  triggering when I was running 'nmap -sN' , even though I could see on the wire 
  it should be. I then removed the enforce_state from the stream4 preprocessor 
  and the rule fired off just like it should. Now my part of my confusion comes 
  from the current docs. Here is what is said about flow: 
  stateless</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><TD align="left"><TT>'stateless</TT></TD> 
  <TD align="left" valign="top" width="360">Trigger regardless of the state of 
  the stream processor (useful for packets that are designed to cause machines 
  to crash)'</SPAN></DIV>
  <DIV><SPAN class=375523418-07022006></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006></TD></SPAN><SPAN 
  class=375523418-07022006><FONT face=Arial size=2>So to me it would seem that 
  even if enforce_state is set in stream4 these rules should trigger. If that is 
  not the case what is the point of even adding flow: stateless to a 
  rule?</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>I traced what 
  was happening through the code (I am not a Snort detection expert so forgive 
  any misconceptions I have). So in the Preprocess function do_detect will 
  be set in this loop to 0 in this case</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>while(idx != 
  NULL)</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2> {<BR>         
  assert(idx->func != 
  NULL);<BR>         idx->func(p, 
  idx->context);<BR>         idx = 
  idx->next;<BR> }</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>when it is 
  evaluating the stream4 preprocessor settings and goes into ReassembleStream4 
  function in spp_stream4.c . In ReassembleStream4 (around line 2100), 
  t</FONT></SPAN><SPAN class=375523418-07022006><FONT face=Arial size=2>his 
  would be what is setting do_detect to 0 here </FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2> if(!InlineMode())<BR> {<BR>             
  if((p->tcph->th_flags & (TH_SYN|TH_RST)) != 
  TH_SYN)<BR>             
  {<BR>                 
  do_detect = 
  0;<BR>                 
  p->preprocessors = 
  0;<BR> <BR>                 
  return;<BR>             
  }<BR>}</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>So really what 
  this means is every single TCP rule will need to have flow with it in order to 
  enforce state and prevent stick/snot attacks and to also be able to detect 
  stateless scan attacks at the same time . Which seems to go against what the 
  original design of stream4 was about, explained here: <A 
  href="http://www.snort.org/docs/faq.html#3.14">http://www.snort.org/docs/faq.html#3.14</A></FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>Like I said I'm no 
  detection expert, but I was also curious if do_detect that can 
  be set to 0 depending on criteria in the loop from the Preprocess 
  function above, can then be set back to 1. If not it would seem like you could 
  gain some valuable cpu cycles by changing</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><SPAN class=375523418-07022006><FONT 
  face=Arial size=2>while(idx != NULL)</FONT></SPAN></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><SPAN class=375523418-07022006><FONT 
  face=Arial size=2></FONT></SPAN></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><SPAN class=375523418-07022006><FONT 
  face=Arial size=2>to </FONT></SPAN></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><SPAN class=375523418-07022006><FONT 
  face=Arial size=2></FONT></SPAN></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><SPAN class=375523418-07022006><SPAN 
  class=375523418-07022006><FONT face=Arial size=2>while(idx != NULL && 
  do_detect != 0)</FONT></SPAN></SPAN></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2>Thanks,</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>// 
  Joel</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2>Joel 
  Ebrahimi</FONT></SPAN></DIV>
  <DIV><SPAN class=375523418-07022006><FONT face=Arial size=2><A 
  href="mailto:jebrahimi@...2857...">jebrahimi@...2857...</A></FONT></SPAN></DIV><BR>
  <P><FONT size=2>--<BR>No virus found in this outgoing message.<BR>Checked by 
  AVG Free Edition.<BR>Version: 7.1.375 / Virus Database: 267.15.2/252 - Release 
  Date: 2/6/2006<BR></FONT></P></BLOCKQUOTE></DIV>
<DIV style="font-family:Courier New; font-size:9pt">AVERTISSEMENT CONCERNANT LA CONFIDENTIALITÉ <br><br>Le présent message est à l'usage exclusif du ou des destinataires mentionnés ci-dessus. Son contenu est confidentiel et peut être assujetti au secret professionnel. Si vous avez reçu le présent message par erreur, veuillez nous en aviser immédiatement et le détruire en vous abstenant d'en faire une copie, d'en divulguer le contenu ou d'y donner suite.<br><br>CONFIDENTIALITY NOTICE<br><br>This communication is intended for the exclusive use of the addressee identified above. Its content is confidential and may contain privileged information. If you have received this communication by error, please notify the sender and delete the message without copying or disclosing it.<br><br></DIV></BODY></HTML>