<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi,<BR>
 <BR>
The code looked correct to me too, but didn't work the way i hoped for.<BR>
What I was trying to achieve is to get a stream reassembly for ftp like it's done for http and other protocol.<BR>
Every 4 al more full mtu packets I saw that snort reassembled some packet content together to a big packet of 17k bytes.<BR>
It doesn't do this for ftp, stream reassembly doesn't seem to work there.<BR>
I thought it was due to my inability to get identity open data channel going as everytime when snort starts it said it was not active, even though i had<BR>
ignore_data_chan no in my ftp config as you can see below.<BR>
With this argument, identify open data channel still wouldn't be on and i instrumented the code to see.<BR>
Even with this argument if (!strcasecmp("yes", pcToken)) doesn't trigger and doesn't match.<BR>
In the current code with ignore_data_chan is set to no, ServerConf->data_chan is set to 0.<BR>
 <BR>
Also, is stream reassembly happening with ftp-data packets like with http etc?<BR>
I never see packets of 17k being formed and inspected by snort like it does with http.<BR>
Thanks,<BR>
 <BR>
Reinoud.<BR>
 <BR>
 <BR>
# FTP / Telnet normalization and anomaly detection.  For more information, see README.ftptelnet<BR>preprocessor ftp_telnet: global inspection_type stateful encrypted_traffic no check_encrypted<BR>preprocessor ftp_telnet_protocol: telnet \<BR>    ayt_attack_thresh 20 \<BR>    normalize ports { 23 } \<BR>    detect_anomalies<BR>preprocessor ftp_telnet_protocol: ftp server default \<BR>    def_max_param_len 100 \<BR>    ports { 21 2100 3535 } \<BR>    telnet_cmds yes \<BR>    ignore_telnet_erase_cmds yes \<BR>    ignore_data_chan no \<BR>    ftp_cmds { ABOR ACCT ADAT ALLO APPE AUTH CCC CDUP } \<BR>    ftp_cmds { CEL CLNT CMD CONF CWD DELE ENC EPRT } \<BR>    ftp_cmds { EPSV ESTA ESTP FEAT HELP LANG LIST LPRT } \<BR>    ftp_cmds { LPSV MACB MAIL M DTM MIC MKD MLSD MLST } \<BR>    ftp_cmds { MODE NLST NOOP OPTS PASS PASV PBSZ PORT } \<BR>    ftp_cmds { PROT PWD QUIT REIN REST RETR RMD RNFR } \<BR>    ftp_cmds { RNTO SDUP SITE SIZE SMNT STAT STOR STOU } \<BR>    ftp_cmds { STRU SYST TEST TYPE USER XCUP XCRC XCWD } \<BR>    ftp_cmds { XMAS XMD5 XMKD XPWD XRCP XRMD XRSQ XSEM } \<BR>    ftp_cmds { XSEN XSHA1 XSHA256 } \<BR>    alt_max_param_len 0 { ABOR CCC CDUP ESTA FEAT LPSV NOOP PASV PWD QUIT REIN STOU SYST XCUP XPWD } \<BR>    alt_max_param_len 200 { ALLO APPE CMD HELP NLST RETR RNFR STOR STOU XMKD } \<BR>    alt_max_param_len 256 { CWD RNTO } \<BR>    alt_max_param_len 400 { PORT } \<BR>    alt_max_param_len 512 { SIZE } \<BR>    chk_str_fmt { ACCT ADAT ALLO APPE AUTH CEL CLNT CMD } \<BR>    chk_str_fmt { CONF CWD DELE ENC EPRT EPSV ESTP HELP } \<BR>    chk_str_fmt { LANG LIST LPRT MACB MAIL MDTM MIC MKD } \<BR>    chk_str_fmt { MLSD MLST MODE NLST OPTS PASS PBSZ PORT } \<BR>    chk_str_fmt { PROT REST RETR RMD RNFR RNTO SDUP SITE } \<BR>    chk_str_fmt { SIZE SMNT STAT STOR STRU TEST TYPE USER } \<BR>    chk_str_fmt { XCRC XCWD XMAS XMD5 XMKD XRCP XRMD XRSQ } \<BR>    chk_str_fmt { XSEM XSEN XSHA1 XSHA256 } \<BR>    cmd_validity ALLO < int [ char R int ] > \<BR>    cmd_validity EPSV < [ { char 12 | char A char L char L } ] > \<BR>    cmd_validity MACB < string > \<BR>    cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \<BR>    cmd_validity MODE < char ASBCZ > \<BR>    cmd_validity PORT < host_port > \<BR>    cmd_validity PROT < char CSEP > \<BR>    cmd_validity STRU < char FRPO [ string ] > \<BR>    cmd_validity TYPE < { char AE [ char NTC ] | char I | char L [ number ] } ><BR>preprocessor ftp_telnet_protocol: ftp client default \<BR><BR> <BR>
<DIV>
<HR id=stopSpelling>
Date: Thu, 12 Sep 2013 11:09:33 -0400<BR>Subject: Re: [Snort-devel] Bug in src/dynamic-preprocessors/ftptelnet/snort_ftptelnet.c<BR>From: <A href="mailto:rcombs@...402...">rcombs@...402...</A><BR>To: sockstat@...445...<BR>CC: snort-devel@lists.sourceforge.net<BR><BR>
<DIV dir=ltr>
<DIV>
<DIV>
<DIV>Hi.  That code looks correct w/o patching.  strncasecmp(a,b) returns zero if a matches b.<BR><BR></DIV>I'm not clear on the issue that you are having.  What is your ftp configuration and what are you trying to do?<BR><BR></DIV>
<DIV>Let me know and we'll try to get it figured out.<BR></DIV>
<DIV><BR></DIV>Thanks<BR></DIV>Russ<BR><BR></DIV>
<DIV class=ecxgmail_extra><BR><BR>
<DIV class=ecxgmail_quote>On Thu, Sep 12, 2013 at 3:30 AM, Reinoud Koornstra <SPAN dir=ltr><<A href="mailto:sockstat@...445..." target=_blank>sockstat@...445...</A>></SPAN> wrote:<BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; PADDING-LEFT: 1ex" class=ecxgmail_quote>
<DIV>
<DIV dir=ltr>Hi Everyone,<BR> <BR>I've been struggeling with trying to get trying to active this option Identify open data channels.<BR>Even with the parameter ignore_data_chan no, it wouldn't activate.<BR>After some instrumentation I found that we were turning it off because of a comparison that didn't go right.<BR>Even with ignore_data_chan set to no, we'd still come in the else if which wasn't correct.<BR>Here's a fix to the problem:<BR> <BR>---- src/dynamic-preprocessors/ftptelnet/snort_ftptelnet.c.orig 2013-09-12 00:17:29.301433818 -0700<BR>+++ src/dynamic-preprocessors/ftptelnet/snort_ftptelnet.c 2013-09-12 00:21:54.441437865 -0700<BR>@@ -1403,11 +1403,11 @@<BR>                                          confOption);<BR>         return FTPP_FATAL_ERR;<BR>     }<BR>-    if (!strcasecmp("yes", pcToken))<BR>+    if (strncmp("yes", pcToken, 3) != 0)<BR>     {<BR>         ServerConf->data_chan = 1;<BR>     }<BR>-    else if (!strcasecmp("no", pcToken))<BR>+    else if (strncmp("no", pcToken, 2) != 0)<BR>     {<BR>         if (ServerConf->data_chan == 1)<BR>         {<BR> <BR>Thanks,<SPAN class=ecxHOEnZb><FONT color=#888888><BR> <BR>Reinoud.<BR></FONT></SPAN></DIV></DIV><BR>------------------------------------------------------------------------------<BR>How ServiceNow helps IT people transform IT departments:<BR>1. Consolidate legacy IT systems to a single system of record for IT<BR>2. Standardize and globalize service processes across IT<BR>3. Implement zero-touch automation to replace manual, redundant tasks<BR><A href="http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk" target=_blank>http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk</A><BR>_______________________________________________<BR>Snort-devel mailing list<BR><A href="mailto:Snort-devel@lists.sourceforge.net">Snort-devel@lists.sourceforge.net</A><BR><A href="https://lists.sourceforge.net/lists/listinfo/snort-devel" target=_blank>https://lists.sourceforge.net/lists/listinfo/snort-devel</A><BR>Archive:<BR><A href="http://sourceforge.net/mailarchive/forum.php?forum_name=snort-devel" target=_blank>http://sourceforge.net/mailarchive/forum.php?forum_name=snort-devel</A><BR><BR>Please visit <A href="http://blog.snort.org/" target=_blank>http://blog.snort.org</A> for the latest news about Snort!<BR></BLOCKQUOTE></DIV><BR></DIV></DIV>                                    </div></body>
</html>