Snort mailing list archives

Re: Alerts of "(http\_inspect) NON-RFC DEFINED CHAR"]


From: "Daniel J. Roelker" <droelker () sourcefire com>
Date: 01 Mar 2004 12:55:36 -0500

Hi Kris,

Thanks for pointing out some of the things you've been seeing.  Here's
what's happening and hopefully this will answer many people's questions:

<for all users>

1) Issues with getting alerts while doing ordinary web browsing.

The majority of issues here have to do with refining the http_inspect
profiles.  We've done more profile tweaking in Snort 2.1.1 and this
should help a lot of the false positives that user's have been
reporting.  We want user feedback so we can continue to tweak the
profiles, but we need this feedback on recent versions (2.1.1 right
now).  People are still reporting known issues with 2.1.0, and this
doesn't really help because we already know about it and have fixed it
based on user's feedback.  So download 2.1.1 and give us feedback on
that.

</for all users>

2) Your particular issue . . . :)

What you're reporting is how we do HTTP inspection and URL discovery. 
http_inspect works by inspecting both packets and rebuilt streams. 
Because we inspect packets, we can't assume anything about the protocol
and in order to not be evaded we inspect each packet for anything that
could be a URL, and also look for any HTTP pipeline requests.  Since we
do things this way, what looks like a URL to http_inspect, may in fact
not be, since we have to inspect packets in a stateless manner.  This
can cause false positives, like you saw in your examples.

If you look at the packets, you'll see that there is indeed a TAB in the
first packet (or rebuilt packet) that indicates a start of the URL,
followed by a newline.  This indicates that the data in between may be a
URL, and so we inspect it to make sure we're not evaded.  The second
packet alert means that there was no \r\n delimiter and just a \n. 
Which is very likely because of the javascript.  So again this is a case
of a misidentified URL.

We can't change the way we do stateless inspection because then it is
possible to evade the IDS.

The chance of false positives doesn't go away until we only analyze TCP
application streams in a streaming sense.  This is something we're
actively working on, so there is hope ;)

In answer to your question, there is no buffer mangling occurring, just
stateless inspection.  My advice is that if these two alerts are causing
you problems, then I would configure http_inspect to not alert on these
things.  There are a lot of other user's that don't have problems with
these alerts, but since everyone's network is different, you have to
tune appropriately.

Thanks for the feedback, and feel free to email me with any other
questions/comments you might have about http_inspect.

Dan

On Mon, 2004-03-01 at 10:47, Jeremy Hewlett wrote:
From: Kristofer T. Karas <ktk () enterprise bidmc harvard edu>
To: Jeremy Hewlett <jh () sourcefire com>
Cc: snort-users () lists sourceforge net
Subject: Re: [Snort-users] Alerts of "(http\_inspect) NON-RFC DEFINED CHAR"
Date: 27 Feb 2004 15:29:47 -0500

I've noticed some other odd behavior with the http_inspect preprocessor 
that might explain the huge onslaught of complaints from it against 
ordinary web browsing.  It seems as though it is looking not at the 
start of the data buffers for a given HTTP transaction, but rather 
somewhere in the middle of a random assemblage of packets (in 
particular, in the payload and not the data).

For example, here's the unabridged payload that triggered an 
APACHE_WHITESPACE_TAB alert:

      04 55 50 47 50 03 30 2E 35 00 06 00 0B 00 88 05   .UPGP.0.5.......
      57 69 6E 33 32 0E 57 69 6E 4E 54 20 35 2E 30 2E   Win32.WinNT 5.0.
      32 31 39 35 00 00 04 09 00 A0 00 28 66 33 30 35   2195.......(f305
      62 61 37 36 32 62 36 37 64 61 33 64 66 66 36 31   ba762b67da3dff61
      31 33 36 35 61 66 63 65 30 61 33 32 32 66 32 62   1365afce0a322f2b
      33 66 63 65 62 38 32 63 33 62 37 61 65 62 39 34   3fceb82c3b7aeb94
      63 38 66 34 35 38 39 62 61 31 61 33 35 62 36 39   c8f4589ba1a35b69
      30 33 64 63 32 61 63 65 61 30 63 30 39 62 30 38   03dc2acea0c09b08
      32 38 61 63 31 39 65 38 65 36 35 61 30 7C 37 57   28ac19e8e65a0|7W
      32 46 36 00 00 00 48 00 0F 00 0E 02 55 53 0A 30   2F6...H.....US.0
      32 37 36 32 2D 32 32 36 31 00 68 00 0D 0A 37 2E   2762-2261.h..7.
      30 2E 30 2E 31 34 35 32 00 02 00 0D 00 1C 0B 52   0.0.1452......R
      65 61 6C 4A 75 6B 65 62 6F 78 09 31 2E 30 2E 33   ealJukebox.1.0.3
      2E 36 33 36 00 00 00 00 00 00 00 0D 00 2E 0A 52   .636..........R
      65 61 6C 50 6C 61 79 65 72 0A 36 2E 30 2E 31 31   ealPlayer.6.0.11
      2E 38 37 32 04 46 52 45 45 02 65 6E 00 06 52 4E   .872.FREE.en..RN
      31 30 50 44 06 52 4E 39 47 50 44 00 00 02 04 EA   10PD.RN9GPD.....
      00 46 05 61 74 68 64 62 0A 37 2E 30 2E 30 2E 31   .F.athdb.7.0.0.1
      33 36 34 06 55 70 64 61 74 65 0A 37 2E 30 2E 30   364.Update.7.0.0
      2E 32 33 31 31 08 55 70 64 61 74 65 55 49 0A 37   .2311.UpdateUI.7
      2E 30 2E 30 2E 32 33 31 31 03 61 74 68 0A 37 2E   .0.0.2311.ath.7.
      30 2E 30 2E 31 33 36 34 07 52 4E 41 64 6D 69 6E   0.0.1364.RNAdmin
      0A 30 2E 31 2E 30 2E 31 36 32 32 03 4D 53 47 0A   .0.1.0.1622.MSG.
      37 2E 30 2E 30 2E 31 34 35 32 07 72 66 78 69 6E   7.0.0.1452.rfxin
      73 74 0A 37 2E 30 2E 30 2E 32 33 31 31 11 50 6C   st.7.0.0.2311.Pl
      61 79 65 72 55 6E 69 6E 73 74 42 65 67 69 6E 09   ayerUninstBegin.
      36 2E 30 2E 39 2E 34 33 36 07 52 4D 41 43 6F 72   6.0.9.436.RMACor
      65 0A 36 2E 30 2E 39 2E 32 30 30 36 05 50 4E 43   e.6.0.9.2006.PNC
      52 54 07 36 2E 30 2E 30 2E 30 04 76 73 72 63 0A   RT.6.0.0.0.vsrc.
      36 2E 30 2E 37 2E 33 32 38 30 06 50 6C 61 79 65   6.0.7.3280.Playe
      72 0A 36 2E 30 2E 31 31 2E 38 37 32 05 53 6B 69   r.6.0.11.872.Ski
      6E 73 0A 36 2E 30 2E 31 31 2E 38 37 32 04 46 72   ns.6.0.11.872.Fr
      65 65 0A 36 2E 30 2E 31 31 2E 38 37 32 02 52 41   ee.6.0.11.872.RA
      0A 36 2E 30 2E 39 2E 31 35 37 30 02 52 56 0A 36   .6.0.9.1570.RV.6
      2E 30 2E 39 2E 31 36 34 38 05 46 6C 61 73 68 0A   .0.9.1648.Flash.
      36 2E 30 2E 38 2E 33 35 35 37 05 45 6D 62 65 64   6.0.8.3557.Embed
      0A 36 2E 30 2E 38 2E 32 33 36 33 07 52 65 61 6C   .6.0.8.2363.Real
      54 78 74 0A 36 2E 30 2E 37 2E 33 36 34 36 04 69   Txt.6.0.7.3646.i
      6D 67 70 0A 36 2E 30 2E 37 2E 33 39 31 36 03 50   mgp.6.0.7.3916.P
      4E 47 0A 36 2E 30 2E 37 2E 33 36 30 33 02 47 46   NG.6.0.7.3603.GF
      0A 36 2E 30 2E 37 2E 33 37 37 38 04 52 50 69 78   .6.0.7.3778.RPix
      0A 36 2E 30 2E 37 2E 33 37 35 39 04 47 46 4A 50   .6.0.7.3759.GFJP
      0A 36 2E 30 2E 37 2E 33 37 37 38 05 53 65 74 75   .6.0.7.3778.Setu
      70 0A 37 2E 30 2E 30 2E 32 33 31 31 03 73 64 70   p.7.0.0.2311.sdp
      0A 36 2E 30 2E 37 2E 33 37 37 39 06 61 75 73 74   .6.0.7.3779.aust
      72 6D 0A 36 2E 30 2E 39 2E 31 33 39 38 07 72 70   rm.6.0.9.1398.rp
      68 6F 77 74 6F 09 36 2E 30 2E 39 2E 36 32 31 04   howto.6.0.9.621.
      4D 50 47 41 0A 36 2E 30 2E 39 2E 32 38 39 39 05   MPGA.6.0.9.2899.
      4D 50 33 50 4C 0A 36 2E 30 2E 39 2E 32 34 31 30   MP3PL.6.0.9.2410
      06 72 6A 62 76 69 7A 0A 31 2E 30 2E 32 2E 32 33   .rjbviz.1.0.2.23
      36 32 07 73 74 75 62 64 72 6D 0A 36 2E 30 2E 38   62.stubdrm.6.0.8
      2E 33 38 36 38 06 47 45 4D 49 4E 49 0A 30 2E 31   .3868.GEMINI.0.1
      2E 30 2E 31 37 36 30 05 47 45 4D 45 58 0A 30 2E   .0.1760.GEMEX.0.
      31 2E 30 2E 31 37 36 30 09 47 45 4D 58 4D 4C 42   1.0.1760.GEMXMLB
      49 4E 0A 30 2E 31 2E 30 2E 31 37 36 30 08 72 6A   IN.0.1.0.1760.rj
      6D 70 33 70 6C 6E 0A 31 2E 30 2E 32 2E 31 31 33   mp3pln.1.0.2.113
      35 08 72 6A 72 6D 6A 70 6C 6E 0A 31 2E 30 2E 32   5.rjrmjpln.1.0.2
      2E 31 31 33 35 06 77 6D 70 6C 79 72 08 36 2E 30   .1135.wmplyr.6.0
      2E 38 2E 34 33 07 74 6F 6F 6C 62 61 72 08 31 2E   .8.43.toolbar.1.
      31 2E 31 2E 32 35 07 4D 49 4E 48 45 4C 50 0A 36   1.1.25.MINHELP.6
      2E 30 2E 31 31 2E 38 37 32 05 48 4F 57 54 4F 0A   .0.11.872.HOWTO.
      36 2E 30 2E 31 31 2E 38 37 32 04 61 75 64 70 0A   6.0.11.872.audp.
      36 2E 30 2E 37 2E 34 30 36 39 04 76 69 64 70 0A   6.0.7.4069.vidp.
      36 2E 30 2E 39 2E 31 35 35 34 04 56 4D 50 47 0A   6.0.9.1554.VMPG.
      36 2E 30 2E 39 2E 32 36 30 35 06 72 6A 70 6C 75   6.0.9.2605.rjplu
      73 09 31 2E 30 2E 33 2E 39 37 32 07 72 6A 65 70   s.1.0.3.972.rjep
      6C 75 67 09 31 2E 30 2E 32 2E 36 33 36 06 72 6A   lug.1.0.2.636.rj
      70 6C 61 79 0A 31 2E 30 2E 32 2E 31 32 33 36 05   play.1.0.2.1236.
      72 6A 73 65 63 0A 31 2E 30 2E 32 2E 31 31 33 35   rjsec.1.0.2.1135
      07 72 6A 63 64 65 78 74 0A 31 2E 30 2E 32 2E 31   .rjcdext.1.0.2.1
      31 33 36 07 72 6A 63 64 69 6E 66 0A 31 2E 30 2E   136.rjcdinf.1.0.
      32 2E 31 31 33 39 06 72 6A 70 73 65 74 0A 37 2E   2.1139.rjpset.7.
      30 2E 30 2E 32 33 31 31 06 72 6A 66 69 6C 65 0A   0.0.2311.rjfile.
      31 2E 30 2E 32 2E 31 31 33 36 06 72 6A 64 6F 77   1.0.2.1136.rjdow
      6E 0A 31 2E 30 2E 32 2E 31 31 33 36 07 72 6A 63   n.1.0.2.1136.rjc
      64 72 6F 6D 09 31 2E 30 2E 32 2E 33 30 39 06 72   drom.1.0.2.309.r
      6A 69 6E 73 64 09 31 2E 30 2E 33 2E 39 37 32 07   jinsd.1.0.3.972.
      72 6A 70 64 6D 67 72 0A 31 2E 30 2E 32 2E 31 32   rjpdmgr.1.0.2.12
      33 36 06 72 6A 6A 61 76 61 0A 31 2E 30 2E 32 2E   36.rjjava.1.0.2.
      31 31 33 36 08 72 6A 72 6D 78 70 6C 6E 0A 31 2E   1136.rjrmxpln.1.
      30 2E 32 2E 31 31 33 35 06 72 6A 62 72 65 73 0A   0.2.1135.rjbres.
      31 2E 30 2E 32 2E 31 31 34 38 07 72 6A 6D 70 6D   1.0.2.1148.rjmpm
      65 64 09 31 2E 30 2E 33 2E 38 35 31 05 72 6A 64   ed.1.0.3.851.rjd
      6C 67 09 31 2E 30 2E 33 2E 39 34 35 07 72 6A 6D   lg.1.0.3.945.rjm
      70 7A 69 70 09 31 2E 30 2E 33 2E 38 33 36 0C 70   pzip.1.0.3.836.p
      64 62 75 72 6E 70 6C 75 67 69 6E 09 31 2E 30 2E   dburnplugin.1.0.
      30 2E 31 39 34 0C 70 64 62 75 72 6E 65 6E 67 69   0.194.pdburnengi
      6E 65 09 31 2E 30 2E 30 2E 31 39 34 0D 70 64 62   ne.1.0.0.194pdb
      75 72 6E 73 75 70 70 6F 72 74 09 31 2E 30 2E 30   urnsupport.1.0.0
      2E 31 39 34 08 66 66 74 72 61 6E 73 63 09 31 2E   .194.fftransc.1.
      30 2E 30 2E 31 36 32 08 64 74 64 72 70 6C 69 6E   0.0.162.dtdrplin
      09 36 2E 30                                       .6.0


Note that this is not anywhere near the header of an HTTP GET or POST 
request.

Another common idiom I'll see with the payload is to have a "GET ... 
HTTP/1.1" request right in the middle of some other payload.   For 
example, here's the start of the payload for a "NOT RFC HTTP DELIMETER" 
alert, pretty printed.  Note the "GET /images/dot_clear.gif" right smack 
in the middle of some javascript HREF from a previous GET request:

       Fonseca</a> </td>
      <td>RE: manera </td>
      <td>Feb 26</td>
      <td align=right>1KB</td></tr>
      <tr name="xxxxxx () xxxxxxxxx com">
      <td>
      </td>
      <td><img src="http://65.54.172.24/i.F42AB.gif"; class="KK" alt='Read'></td>
      <td></td>
      <td><input type="checkbox" name="MSG1077904931.15" onClick="CCA(this)"></td>
      <td></td>
      <td><a href="javascript:G('/cgi-bin/getmsg?msg=MSG1077904931.15&sGET /images/dot_clear.gif HTTP/1.1
      Host: www.molecularcloning.com
      Accept: image/gif, image/jpeg, image/x-png, image/png, image/xbm, image/xbitmap, image/x-xbitmap, */*
      Accept-Language: en
      Connection: Keep-Alive
      Referer: http://www.molecularcloning.com/
      User-Agent: Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)


I think this packet buffer mangling may be what's responsible for all 
the alerts...

Kris


-- 
Daniel Roelker
Software Developer
Sourcefire, Inc.



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Snort-users mailing list
Snort-users () lists sourceforge net
Go to this URL to change user options or unsubscribe:
https://lists.sourceforge.net/lists/listinfo/snort-users
Snort-users list archive:
http://www.geocrawler.com/redir-sf.php3?list=snort-users


Current thread: