[Oisf-users] Suricata treating two flows as one?

Victor Julien lists at inliniac.net
Thu Nov 13 19:33:40 UTC 2014


On 11/13/2014 08:17 PM, Duane Howard wrote:
> This makes, sense, but if the content I'm looking for occurs twice in
> that 'session' should I not get a second alert? Is there something that
> says 'only alert once every so often'?
> I've got an empty threshold.config so I'm unsure of anything that might
> be built in to cause this...

Depends on the rule, but a typical HTTP sig wouldn't fire twice as we're
not tracking the 2nd session. We're not tracking it because the TCP
engine rejects the packets for the reasons below.

Cheers,
Victor

> ./d
> 
> On Thu, Nov 13, 2014 at 11:10 AM, Victor Julien <lists at inliniac.net
> <mailto:lists at inliniac.net>> wrote:
> 
>     On 11/13/2014 07:29 PM, Duane Howard wrote:
>     > In a test pcap, I have two distinct sessions (neither is closed) that
>     > look something like:
>     >
>     > SYN, SYN-ACK, ACK, HTTP-GET
>     > SYN, SYN-ACK, ACK, HTTP-GET
>     >
>     > They do both have the same 5-tuple so they'd look like the same session
>     > if there wasn't a new 3-way handshake. (imo the second three-way
>     > handshake should kill the first session and start a new one).
> 
>     Until the flow engine times out a TCP sesssion, we consider SYN packets
>     on such sessions erroneous. The time out is controlled by:
> 
>     flow-timeouts:
>       tcp:
>         new: 60
>         established: 3600 # <- this
>         closed: 120
> 
>     Only if the TCP state has moved to CLOSED, which is after a
>     successful/valid FIN handshake or RST, new SYN's are accepted. In this
>     case we do reuse the flow structure itself, but reset the TCP session.
>     This will lead to an increment of the tcp.reuse counter in your
>     stats.log.
> 
>     > Snort will alert twice (once per flow) but Suricata will only alert once
>     > and the recorded time seems to be the time of the packet at the final
>     > ACK for the second flow. Where snort's alert times map directly to the
>     > packet times of the GET request that my rule is looking for.
>     >
>     > I'm still new to Suricata, is there some flow/sessionization setup
>     > configuration I'm missing that would cause this behavior? I'm on 2.0.4
>     > built from source. Also, why would the alert time in the fast.log map to
>     > a packet *after* the suspect content?
> 
>     In IDS mode we inspect the HTTP session based on stream reassembly,
>     which runs on ACK'd data. So only after the ACK do we inspect most of
>     the rules.
> 
>     There is some separate logic for when the flow ends (times out) w/o that
>     ACK.
> 
>     --
>     ---------------------------------------------
>     Victor Julien
>     http://www.inliniac.net/
>     PGP: http://www.inliniac.net/victorjulien.asc
>     ---------------------------------------------
> 
>     _______________________________________________
>     Suricata IDS Users mailing list:
>     oisf-users at openinfosecfoundation.org
>     <mailto: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
>     Training now available: http://suricata-ids.org/training/
> 
> 


-- 
---------------------------------------------
Victor Julien
http://www.inliniac.net/
PGP: http://www.inliniac.net/victorjulien.asc
---------------------------------------------




More information about the Oisf-users mailing list