Does Argus support RST state in UDP flow?

Carter Bullard carter at qosient.com
Fri Aug 23 11:02:21 EDT 2013


Hey Sebas,
UDP timed out is tested in two ways.  The first is a simple UDP transactional
failure...i.e. no response.  The second is that the duration of the UDP
transaction is greater than the timeout.

   ra -r argus.file - udp and dst pkts 0
   ra -r argus.file - udp and src pkts 1 and dst pkts 1 and dur gt whatever.the.timeout.is.in.seconds

The lack of a response is really an availability failure, which can be
caused by a reachability, connectivity or availability fault.   Reachability
failure is packet didn't get to the dst, connectivity failure is a two-way
reachability failure, packet didn't get there or didn't make it back, and
an availability failure is both of these, or a condition where the
application isn't available, or isn't responsive.  argus can discriminate between
all of these conditions.

You can test both timeout conditions at the same time.  

   ra -r argus.file - udp and (dst pkts 0 or \
      ( src pkts 1 and dst pkts 1 and dur gt whatever.the.timeout.is.in.seconds))

(remember you may have to escape the ' ( ' and ' ) ' to get it to work
from your shell:

   ra -r argus.file udp and \( dst pkts....  \)

Where a transaction with no response generates a duration of zero, but this
is not a reliable test, even when you're argus is configured to produce nanosecond
timestamps.  Many situations can have the request and response marked
with the same timestamp, so don't use this test " dur 0 ".

For many UDP protocols, argus uses a 6-tuple flow model, where it
adds the transaction sequence number to the flow key.  The most important
example is DNS.  We for a flow for all packets whose 5-tuple flow attributes
match, as well as the DNS sequence number.  

Remember argus is a proof of concept project implemented with examples,
so if you're particular UDP transactional protocol has a sequence number,
like SIP for example, and we'd like to create a 6-tuple flow model for it,
just ask, and we can generally do that.

Carter


On Aug 23, 2013, at 10:39 AM, el draco <eldraco at gmail.com> wrote:

> Hi Rahimeh.
> 
> Ok, so:
> UDP with reset, could be find as I tell you in the last email.
> UDP timeout (filtered port) is difficult, because UDP does not enforce
> you to answer. So, you can not tell the difference between filtered
> port (timeout) and open port (timeout). That's why nmap says
> open|filtered when you scaned a udp port like that. You can be sure
> that the port is open if you see some packets back. But that is not
> always the case. (nmap tries to talk the exact protocol to enforce an
> answer)
> UDP that responds erros. This depends on what you consider an error
> and is not something you can expect to be on a flow. Argus may help
> here if you
> store the payload of the connection. But i think it will be a manual job.
> 
> I'm not sure how argus creates UDP flows, maybe Carter can tell you or
> it is in the code.
> I think it is getting the 5-tupple
> srchost-srcport-dsthost-dstport-proto . But I'm not developing it.
> 
> cheers
> sebas
> 
> On Fri, Aug 23, 2013 at 11:53 AM, Rahimeh Khodadadi
> <rahimeh.khodadadi at gmail.com> wrote:
>> Hi Sebas,
>> 
>> Thanks for your helps and quick reply.
>> I have a pcap file that want to extract  UDP connection which are reset
>> (like : UDP sent, but got ICMP unreachables or UDP sent, but timed out or a
>> DNS server responds errors to a queried domain)
>> 
>> But  as far as I see argus couldn't extract such an information, is not it?
>> 
>> another question is how argus make a flow from UDP packets?
>> 
>> Thanks,
>> Rahimeh
>> 
>> 
>> On Fri, Aug 23, 2013 at 1:29 PM, el draco <eldraco at gmail.com> wrote:
>>> 
>>> Hi Rahimeh.
>>> What do you mean with rest? do you mean reset?
>>> UDP is stateless and transaction-oriented so there are no flag bits
>>> like the reset bit in TCP.
>>> 
>>> When you send a UDP packet to close port, you will get an ICMP
>>> port-unreacheable packet back.
>>> In argus (unidirectional and bidirectional), that connection is seen
>>> like this if you use ra:
>>> 
>>> ra -s +flgs -n -Z b -S localhost - "host x.x.x.x"
>>> 
>>> StartTime       Dur     Proto   SrcAddr Sport   Dir     DstAddr Dport
>>> State   sTos    dTos    TotPkts TotBytes        Flgs
>>> 2013/08/23 10:55:01.759273    0.000158      udp   y.y.y.y 1528  ->
>>> x.x.x.x 234  INT  0 1 42 eU
>>> 2013/08/23 10:55:01.759431    2.053794   icmp x.x.x.x  0x0303  ->
>>> y.y.y.y 0xea00  URP  192 3 210 e
>>> 
>>> The state for argus is INT or initial. See man ra
>>> The icmp packet state is URP or Unreachable port.
>>> 
>>> However, argus gives you extra information if you print the 'flgs'
>>> field. This field is 'eU' for the UDP flow, meaning :
>>> e       -  Ethernet encapsulated flow
>>> U      -  ICMP Unreachable event mapped to this flow
>>> 
>>> The problem is that if you have multiple connections like this I do no
>>> t know how to find which UDP flow is related to which ICMP port.
>>> 
>>> Hope this helps.
>>> sebas
>>> 
>>> 
>>> On Fri, Aug 23, 2013 at 8:37 AM, Rahimeh Khodadadi
>>> <rahimeh.khodadadi at gmail.com> wrote:
>>>> Hi,
>>>> 
>>>> I want to know which udp flows are rest, but I couldn't see them in
>>>> argus
>>>> file,
>>>> Is it possible to see RST udp flow in argus?
>>>> 
>>>> 
>>>> Thanks,
>> 
>> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 7322 bytes
Desc: not available
URL: <https://pairlist1.pair.net/pipermail/argus/attachments/20130823/edecbe27/attachment.bin>


More information about the argus mailing list