[Oisf-users] Issues with http rules and midstream processing
Matt
matt at somedamn.com
Thu Jan 24 21:06:24 UTC 2013
Oops, nevermind. I should have looked at the source code first. :) I
found the "async-oneside" flag, and that's fixed it. I am still curious
as to why the tcp rule produces two alerts, though.
Matt
On 1/24/2013 3:38 PM, Matt wrote:
> Due to some peculiarities in my environment, I sometimes only see
> outbound packets. I have "midstream: true" set in my config, but I'm
> having trouble with HTTP rules when the SYN packet is present, but the
> SYN|ACK is missing. Here are two test rules:
>
> alert http any any -> any 80 (msg:"http://lockedoutofheaven.in/ http";
> content:"/4/config.bin"; http_uri; content:"Host:
> lockedoutofheaven.in"; nocase; http_header; classtype:trojan-activity;
> sid:1;)
> alert tcp any any -> any 80 (msg:"http://lockedoutofheaven.in/ tcp";
> content:"/4/config.bin"; offset:4; content:"Host:
> lockedoutofheaven.in"; nocase; distance:10; classtype:trojan-activity;
> sid:2;)
>
> Test case #1: Full 3-way handshake
>
> 0 1 0.000000 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [SYN]
> Seq=0 Win=16384 Len=0 MSS=1460 WS=1 SACK_PERM=1
> 0 2 0.154565 53.177.243.126 -> 85.167.26.187 TCP 80 > 2084 [SYN,
> ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=64
> 0 3 0.164244 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [ACK]
> Seq=1 Ack=1 Win=16384 Len=0
> 0 4 0.164342 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [PSH,
> ACK] Seq=1 Ack=1 Win=16384 Len=270
>
> Three alerts are produced for some reason. The tcp alert hits twice,
> and the http alert hits once.
>
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
> 01/24/2013-10:55:25.079657 [**] [1:1:0] http://lockedoutofheaven.in/
> http [**] [Classification: A Network Trojan was detected] [Priority:
> 1] {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
>
> Test case #2: SYN|ACK missing
>
> 0 1 0.000000 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [SYN]
> Seq=0 Win=16384 Len=0 MSS=1460 WS=1 SACK_PERM=1
> 0 2 0.164244 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [ACK]
> Seq=1 Ack=1 Win=16384 Len=0
> 0 3 0.164342 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [PSH,
> ACK] Seq=1 Ack=1 Win=16384 Len=270
>
> Only one tcp alert is produced:
>
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
>
> Test case #3: Both SYN and SYN|ACK missing
>
> 0 1 0.000000 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [ACK]
> Seq=1 Ack=1 Win=16384 Len=0
> 0 2 0.000098 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [PSH,
> ACK] Seq=1 Ack=1 Win=16384 Len=270
>
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
> 01/24/2013-10:55:25.079657 [**] [1:1:0] http://lockedoutofheaven.in/
> http [**] [Classification: A Network Trojan was detected] [Priority:
> 1] {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
>
> Again, I see two tcp alerts and one http alert.
>
> Test case #4: Only the HTTP GET is present
>
> 0 1 0.000000 85.167.26.187 -> 53.177.243.126 TCP 2084 > 80 [PSH,
> ACK] Seq=1 Ack=1 Win=16384 Len=270
>
> This produces the same output as before. Two tcp alerts and one http:
>
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
> 01/24/2013-10:55:25.079657 [**] [1:2:0] http://lockedoutofheaven.in/
> tcp [**] [Classification: A Network Trojan was detected] [Priority: 1]
> {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
> 01/24/2013-10:55:25.079657 [**] [1:1:0] http://lockedoutofheaven.in/
> http [**] [Classification: A Network Trojan was detected] [Priority:
> 1] {TCP} 85.167.26.187:2084 -> 53.177.243.126:80
>
> So it appears that the stream processor can't recover when it sees a
> SYN, misses the SYN|ACK, and then sees subsequent packets in the
> stream. I've attached anonymized pcaps for each test case.
>
> - Matt
>
>
> _______________________________________________
> Suricata IDS Users mailing list: oisf-users at openinfosecfoundation.org
> Site: http://suricata-ids.org | Support: http://suricata-ids.org/support/
> List: https://lists.openinfosecfoundation.org/mailman/listinfo/oisf-users
> OISF: http://www.openinfosecfoundation.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openinfosecfoundation.org/pipermail/oisf-users/attachments/20130124/bb40df01/attachment-0002.html>
More information about the Oisf-users
mailing list