Common Intrusion Detection Framework By Ganesh Godavari
Review CIDF architectecture Producer consumer
Scenario1: malicious user Malicious user logs in deletes the passwd file how does the GIDO look like between E- box to A-box ?
GIDO InSequence (Login (Location (Time '14:57:36 24 Feb 1998') ) (Initiator (HostName ‘doctor.evil.com') ) (Account (UserName 'minime') (RealName ‘minie me') (HostName ‘austin.powers.mov') (ReferAs 0x ) ) (Delete (World Unix) (Location (HostName ‘austin.powers.mov') (Time '14:58:12 24 Feb 1998') ) (Initiator (ReferTo 0x ) ) (Source (AbsoluteFileName '/etc/passwd') ) (Login (World Unix) (Outcome (CIDFReturnCode Failed) (Comment '/etc/passwd missing') ) (Location (Time '15:02:48 24 Feb 1998') ) (Initiator (HostName 'small.world.com') ) (Account (UserName ‘austin') (RealName ‘austin powers') (HostName ‘small.world.com') ) continued
Snort nmap alert CIDF E-box raised the following error How does the GIDO look like from E-box to R-box? [**] [1:469:1] ICMP PING NMAP [**] [Classification: Attempted Information Leak] [Priority: 2] 10/15-03:10: > ICMP TTL:56 TOS:0x0 ID:25681 IpLen:20 DgmLen:28 Type:8 Code:0 ID:56447 Seq:0 ECHO [Xref =>
GIDO ( ByMeansOf ( Attack ( Initiator ( IPV4Address ) ) ( Observer ( ProcessName snortIDS ) ) ( Target ( IPV4Address ) ) ( AttackSpecifics ( Certainty 100 ) ( Severity 100 ) ( AttackID ) ) ( Outcome ( CIDFReturnCode 2 ) ) (Do (BlockMessage ( Message ( IPV4Protocol 4 ) ( SourceIPV4Address ) ( DestinationIPV4Address ) ) ( When ( BeginTime Wed Jun 15 03:10: MDT ) ( EndTime thu Jun 16 03:10: MDT ) ) continued
Snort based E-box Ad filter ( Filter ( Fragment ( ByMeansOf ( Attack ( when (Time "!+::*")) ( AttackSpecifics ( Attack-ID "!-::{{0x }}", "!+::{*}") ( AtackNickname "!-::{*}")) ( Initiator "!+::{*}") (IPV4Address "!+::{*}") ( HostName "?-::{*}") ( TCPSourcePort "!-::{*}")) ( Target ( IPV4Address "!+::{{ , }, { , }, /8}) ( HostName "?-::{*}") ( TCPDestinationPort "!-::{*}")) ( Observer ( ProcessName "!-::{{'snort'}}") ( HostName "!-::{{'hercales'}}"))) ( SendMessage ( when (Time "!-::*")) ( Initiator (IPV4Address "!+::{*}") ( HostName "?-::{*}") ( TCPSourcePort "!-::{*}")) ( Target ( IPV4Address "!-::{*}) ( HostName "?-::{*}") ( TCPDestinationPort "!-::{*}")) ( Observer ( ProcessName "!-::{{'snort'}}") ( HostName "!-::{{'hercales'}}")) ( Message ( TransportProtocol "?+::{{'tcp'}}") ( IPV4SetviceType "?+::{*}") ( IPV4Identifier "?+::{*}") ( IPV4TTL "?+::{*}") ( TCPSequenceNumber "?+::{*}") ( TCPAckNumber "?+::{*}") ( TCPWindow "?+::{*}") ( TCPFlags "?+::{*}") ( TCPMSS "?+::{*}";))))) continued !: field always available ?: field might or might not be available -: field is not negotiable +: field is negotiable
A-box Template proposal ( Filter ( Fragment ( Attack ( When ( Time "!-::*")) ( AttackSpecifics ( Attack-ID "!-::{{0x }}", "!+::{0x ,0x }") ( AtackNickname "!-::{*}")) ( Initiator ( IPV4Address "!+::{*}") ( TCPSourcePort "!-::{*}")) ( Target ( IPV4Address "!+::{{ , , }) ( TCPDestinationPort "!-::{*}")) ( Observer ( ProcessName "?+::{*}") ( HostName "?+::{*}") ( IPv4Address "?+::{*}")))) ( Permit, ''ByMeansOf', 'And', ''HelpedCause')) Permit allows the filter matching code to search for GIDO from the root. So here we are looking for fragment like “ByMeansOf”, “And”, “HelpedCause”
Candidate proposal A-box to E-box ( Filter ( Fragment ( Attack ( When ( Time "!-::*")) ( AttackSpecifics ( Attack-ID "!-::{{0x }}", "!+::{0x ,0x }") ( AtackNickname "!-::{*}")) ( Initiator ( IPV4Address "!+::{*}") ( TCPSourcePort "!-::{*}")) ( Target ( IPV4Address "!+::{{ , }, /8}) ( TCPDestinationPort "!-::{*}")) ( Observer ( ProcessName "!+::{{'snort'}}") ( HostName "!-::{'heracles'}}"))))))
Possible GIDO from A-box to ( ByMeansOf ( Attack ( when ( time "10/04-16:21:48")) ( AttackSpecifics ( Attack-ID 0x , 0x ) ( AttackNickname "NMAP TCP Ping")) ( Initiator ( IPV4Address ) ( TCPSourcePort 52716)) ( Target ( IPV4Address ) ( TCPDestinationPort 39241)) ( Observer (ProcessName 'snort') (HostName 'heracles')))
CIDF – good & bad Good Very extensible S-expression form Easily readable S-expression form Bad Work stopped in ’99 Not actually implemented anywhere Difficult to parse Not as efficient as other reporting formats ?