[Bro-Dev] [JIRA] (BIT-1488) ICMP analyser incorrectly handles ICMP connections

Oman Security Officer (JIRA) jira at bro-tracker.atlassian.net
Sat Oct 3 07:49:00 PDT 2015


Oman Security Officer created BIT-1488:
------------------------------------------

             Summary: ICMP analyser incorrectly handles ICMP connections
                 Key: BIT-1488
                 URL: https://bro-tracker.atlassian.net/browse/BIT-1488
             Project: Bro Issue Tracker
          Issue Type: New Feature
          Components: Bro
    Affects Versions: 2.4
         Environment: Security Onion 12.4 (Linux 3.13.0-63-generic #104~precise1-Ubuntu SMP x86_64 GNU/Linux) installed On VMware Workstation (10.0.3 build-1895310) running on Windows 8.1 Enterprise
            Reporter: Oman Security Officer
         Attachments: results.txt, test_icmp.bro

I have been testing BRO scripts on DARPA 1998 dataset (Week 3 - Wednesday) TCPDUMP [https://www.ll.mit.edu/ideval/data/1998/training/week3/wednesday/tcpdump.gz]. This file contains a lot of ICMP packets. I was testing ICMP events in BRO to understand their role. 
* event *icmp_echo_request*(c: connection, icmp: icmp_conn, id: count, seq: count, payload: string)
* event *icmp_echo_reply*(c: connection, icmp: icmp_conn, id: count, seq: count, payload: string)

It seems that, the ICMP analyser does not handle the ICMP connections in the right way. I have noticed that, when I use those 2 events the "*c: connection*" variable does not return the right results. 

For example, the mentioned DARPA file contains the following ICMP traces between hosts 202.72.1.77 and 172.16.112.50. the exchanged packet are summarized in the following table:

No.	Time	Source	Destination	Protocol	Length	Info			
{color:#f6c342}28076	898088609.998513	202.72.1.77	172.16.112.50	ICMP	60	Echo (ping) request	id=0xf305	seq=0/0	ttl=63
28077	898088610.000822	172.16.112.50	202.72.1.77	ICMP	60	Echo (ping) reply	id=0xf305	seq=0/0	ttl=254
28150	898088612.998292	202.72.1.77	172.16.112.50	ICMP	60	Echo (ping) request	id=0xf305	seq=256/1	ttl=63
28151	898088612.998641	172.16.112.50	202.72.1.77	ICMP	60	Echo (ping) reply	id=0xf305	seq=256/1	ttl=254
28669	898088644.998259	202.72.1.77	172.16.112.50	ICMP	60	Echo (ping) request	id=0xf405	seq=0/0	ttl=63
28670	898088644.998652	172.16.112.50	202.72.1.77	ICMP	60	Echo (ping) reply	id=0xf405	seq=0/0	ttl=254
28682	898088647.998159	202.72.1.77	172.16.112.50	ICMP	60	Echo (ping) request	id=0xf405	seq=256/1	ttl=63
28683	898088647.998566	172.16.112.50	202.72.1.77	ICMP	60	Echo (ping) reply	id=0xf405	seq=256/1	ttl=254{color}
{color:#f79232}30478	898088768.759437	202.72.1.77	172.16.112.50	ICMP	60	Echo (ping) request	id=0xf176	seq=0/0	ttl=63
30479	898088768.760917	172.16.112.50	202.72.1.77	ICMP	60	Echo (ping) reply	id=0xf176	seq=0/0	ttl=254
31016	898088797.366418	202.72.1.77	172.16.112.50	ICMP	60	Echo (ping) request	id=0xf276	seq=0/0	ttl=63
31017	898088797.366861	172.16.112.50	202.72.1.77	ICMP	60	Echo (ping) reply	id=0xf276	seq=0/0	ttl=254{color}

It can be seen that, there are 6 ICMP connections by exchanging 12 packets (6 Echo Requests and 6 Echo Replays). Whereas, Bro will handle them as 2 connections only making the final results inaccurate. 

I have found that, BRO will treat all requests and replays between timestamps 898088609.998513 and 898088647.998566 as *{color:#f6c342}one connection{color}* and between timestamps 898088768.759437 and 898088797.366861 as *{color:#f79232}another connection{color}*.

The results of calling events *icmp_echo_request* and *icmp_echo_reply* on that file between the named hosts (202.72.1.77 and 172.16.112.50) can bee found in the attached file (results.txt) as well as the script file (test_icmp.bro).

The following commands were called to obtain the results
> wget -c https://www.ll.mit.edu/ideval/data/1998/training/week3/wednesday/tcpdump.gz
> gzip -d < tcpdump.gz > week3_Wednesday.tcpdump
> bro -r week3_Wednesday.tcpdump test_icmp.bro > results.txt



--
This message was sent by Atlassian JIRA
(v7.0.0-OD-07-011#70107)


More information about the bro-dev mailing list