Project

General

Profile

Actions

Bug #301

closed

distance/within modifiers

Added by Peter Manev almost 13 years ago. Updated almost 12 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
Affected Versions:
Effort:
Difficulty:
Label:

Description

Hi,

I have noticed something interesting, while testing a pcap with a specific rule.
I apologise for the long post, but I would rather give as much info as possible.

So here is some general info about the problem

The rule is :
alert udp any 6881 -> any 1024: (msg:"ET TROJAN Srizbi registering with controller"; dsize:20; content:"|2d|"; offset:6; content:"|2d|"; distance:6; within:1; content:!"|00|server."; offset:44; classtype:trojan-activity; reference:url,www.secureworks.com/research/threats/ronpaul/; reference:url,doc.emergingthreats.net/2007711; reference:url,www.emergingthreats.net/cgi-bin/cvsweb.cgi/sigs/VIRUS/TROJAN_Srizbi; sid:2007711; rev:9;)

Please find a 1 packet pcap that was used for testing the rule.

Below is a breakdown of the payload of the packet(UDP , 20 bytes of payload):

0 1 2 3 4 5 6-------------------------------------------“offset:6” (bytes count)
0 1 2 3 4 5 6--------- “distance:6” after 1st match (“|2d|”) (bytes count)
1----- “within:1” (bytes count)
21 00 d1 52 32 b3 f3 0a 79 c0 2d 8c 00 04 00 00 c0 56 36 2d - payload (content:"|2d|" at byte #11 and #20)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20--- byte number (for visualisation purposes)

I.
Tested with Suricata version 1.1beta2 (rev c8701cf)

1.First of all that rule should not log an alert (shouldn't probably load at all), because "offset:44" looks for a content after the 44th byte of payload. However "dsize:20" limits the rule to packets that have exactly 20 bytes of payload.

The rule however DOES fire an alert, because I think(I might be mistaken here in my logic) of the following -
"" ...content:!"|00|server."; offset:44;... "" - so it actually looks for anything that does not match "|00|server." after the 44th byte of the payload, but the packet has only 20 bytes of payload , so it matches nothing to nothing that does not match "|00|server." so it does fire an alert.

2. The rule generates an alert with or without "content:!"|00|server."; offset:44;" in it.
3. The rule should not generate an alert once again because of “within:1” - I know that "within" (in this case)means to match the 2nd content string(|2d|) within one byte after the first content match, but we also have "distance:6"(start searching for a match 6 bytes after the previous match) , so that would be the 7th byte (0,1,2,3..7) after the first match which is - |36| (byte #19)- which is not the case judging by the payload, nevertheless the rule still fires. It should generate an alert if within is set to 2 - "within:2" 
4. If I try the rule with “within:2” - it does not generate an alert - which might lead to the conclusion that the "within" modifier starts counting at "0" (0,1,2...)- which should not be the case, "within" must start counting at 1.

II
Tested with Suricata version 1.0.4

1. The rule does NOT generate an alert with or without "content:!"|00|server."; offset:44;" - which is good I think , it is not supposed to.
2. There is another problem though – If I take out "content:!"|00|server."; offset:44;" of the rule, no matter what I set the “within” modifier to be it seems to have no effect on the rule at all – the rule does not generate an alert.
3. If I take out “within:1” and "content:!"|00|server."; offset:44;" out of the rule, then it does generate an alert. Example:

alert udp any 6881 -> any 1024: (msg:"ET TROJAN Srizbi registering with controller"; dsize:20; content:"|2d|"; offset:6; content:"|2d|"; distance:6; classtype:trojan-activity; reference:url,www.secureworks.com/research/threats/ronpaul/; reference:url,doc.emergingthreats.net/2007711; reference:url,www.emergingthreats.net/cgi-bin/cvsweb.cgi/sigs/VIRUS/TROJAN_Srizbi; sid:2007711; rev:9;)

Additional info:

distance,offset – start counting at 0
within,depth – start counting at 1

http://blog.joelesler.net/2010/03/offset-depth-distance-and-within.html - distance and within modifiers explained by Joel Esler.

http://www.snort.org/assets/166/snort_manual.pdf – snort manual (offset,distance and within - 3.5.5, 3.5.6, 3.5.7)


Files

2007711-p1946.pcap (88 Bytes) 2007711-p1946.pcap pcap file (1 packet) Peter Manev, 07/22/2011 04:11 AM
2007711test.rule (499 Bytes) 2007711test.rule rule file Peter Manev, 07/22/2011 04:11 AM
RuleToPayloadBreakdown.png (21.7 KB) RuleToPayloadBreakdown.png rule to payload breakdown Peter Manev, 07/22/2011 05:21 AM
Actions #1

Updated by Peter Manev almost 13 years ago

I have attached a better visualisation of the rule to payload breakdown - hope it clears some uncertainties.

Actions #2

Updated by Anoop Saldanha over 12 years ago

  • Description updated (diff)
  • Assignee set to Anoop Saldanha
Actions #3

Updated by Victor Julien almost 12 years ago

  • Status changed from New to Closed
Actions

Also available in: Atom PDF