Rule
alert ip $EXTERNAL_NET $SHELLCODE_PORTS -> $HOME_NET any (msg:"GPL SHELLCODE x86 inc ebx NOOP"; content:"CCCCCCCCCCCCCCCCCCCCCCCC"; classtype:shellcode-detect; sid:2101390; rev:8;)
I'm seeing external IP address sources with source port 80 being flagged with this alert going towards internal RFC1918 address.
snort.conf
ipvar HOME_NET [192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]
ipvar EXTERNAL_NET any
Further down
# List of ports you want to look for SHELLCODE on.
portvar SHELLCODE_PORTS !80
Thanks,
Scott F.
Well, it was traffic coming from a remote IP on port 80 to an internal client, so yes. My limited understanding of snort rules and the snort.conf leads me to believe that the rule shouldn't fire under these conditions due to the exclusion of port 80 from SHELLCODE_PORTS.
Do I need to modify the rule to use flow and track the state instead of it relying on only looking for content?
The traffic it alerted on were Linux servers reaching out to package servers, or updating their package lists. I'm curious how others handle this rule because it generates alerts that I have to filter through. The traffic is not malicious in this case.
Thanks,
Scott F.
Doug
Attached is a sanitized transcript. I realized after reading the transcript that it's showing my internal 10.10.10.10 reaching out. I did this by issuing a "sudo yum update" without actually going through with package update on one of the systems in our network. I should note that the actual alert in Sguil shows the remote side with port 80 as the source though.
I have considered the threshold.conf method, but unfortunately the repos are a pool of IP addresses so it would be difficult to add all of them, at least I think that's the case. Creating an internal package server would be desirable, but it's not something I can push for at this time.
I did some research and it seems the rule is fairly broad. I found a page where someone explained with example on how to modify the rule to only alert on traffic matching the content from an outside initiated connection.
This is what I considered adding to my local.rules while disabling the original.
alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"GPL SHELLCODE x86 inc ebx NOOP"; flow:to_server,established; content:"CCCCCCCCCCCCCCCCCCCCCCCC"; classtype:shellcode-detect; sid:9001390; rev:8;)
Thanks,
Scott F.
I have the exact same issue as the original post. SGUIL seems to mix up the External IP and Internal IP for this rule. Once I examine the pcap I can see right away that my Internal IP (NOT the External IP) was the source and my Internal IP was in fact NOT using source port 80.
I am using this rule change you threw out to try in my environment in hopes it will cut down on some false positives.
Thanks for the post Guys