Prelude IDMEF Path¶
In Prelude, an IDMEF Path is a pointer to a specific value in an IDMEF message.
Using this pointer, you can update or retrieve the value pointed by that path.
Any class specified in the IDMEF RFC can be converted to a Prelude IDMEF path.
Mapping an IDMEF class to a Prelude IDMEF Path¶
When mapping an IDMEF XML class to Prelude, you should obey the following rules:- Prelude IDMEF Path are lower case.
- Subsequent member of a path should be separated using "*.*"
- Where IDMEF XML class use upper case for word separation, Prelude use a dash "*_*".
- In case a path member is a list, you can use a specific index to access the path, for example: alert.source*(0)*.node.name
Indexed member¶
When accessing listed object (example: alert.source, alert.additional_data), the index can be specified as a number, which should be a currently existing index, or, in the context of assigning an object, the first unassigned index of the list (example, if source(0) and source(1) currently exist, you might use index 0, 1, or 2 to assign data, but not 3).
Note that you might also use negatives indexes to access listed objects: -1, -2, -n...
-1 will always point to the end of the list, -2 to the object next to last, etc.
Additionally, in the context of an assignement, you might use the >> append or << prepend operator:
alert.source(>>).interface = eth1 alert.source(-1).node.name = myNode
The above example append a source object to the current 'alert.source' list, which interface value is eth1. It then set the node.name attribute for this added source object to myNode.
Example:¶
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE IDMEF-Message PUBLIC "-//IETF//DTD RFC XXXX IDMEF v1.0//EN" "idmef-message.dtd"> <IDMEF-Message version="1.0" xmlns="urn:iana:xml:ns:idmef"> <Alert messageid="abc123456789"> <Analyzer analyzerid="hq-dmz-analyzer01"> <Node category="dns"> <location>Headquarters DMZ Network</location> <name>analyzer01.example.com</name> </Node> </Analyzer> <CreateTime ntpstamp="0xbc723b45.0xef449129"> 2000-03-09T10:01:25.93464-05:00 </CreateTime> <Source ident="a1b2c3d4"> <Node ident="a1b2c3d4-001" category="dns"> <name>badguy.example.net</name> <Address ident="a1b2c3d4-002" category="ipv4-net-mask"> <address>192.0.2.50</address> <netmask>255.255.255.255</netmask> </Address> </Node> </Source> <Target ident="d1c2b3a4"> <Node ident="d1c2b3a4-001" category="dns"> <Address category="ipv4-addr-hex"> <address>0xde796f70</address> </Address> </Node> </Target> <Classification text="Teardrop detected"> <Reference origin="bugtraqid"> <name>124</name> <url>http://www.securityfocus.com/bid/124</url> </Reference> </Classification> </Alert> </IDMEF-Message>
alert.messageid=abc123456789 alert.analyzer(0).analyzerid=hq-dmz-analyzer01 alert.analyzer(0).node.category=dns alert.analyzer(0).node.location=Headquarters DMZ Network alert.analyzer(0).node.name=analyzer01.example.com alert.create_time=0xbc723b45.0xef449129 alert.source(0).ident=a1b2c3d4 alert.source(0).node.ident=a1b2c3d4-001 alert.source(0).node.category=dns alert.source(0).node.name=badguy.example.net alert.source(0).node.address(0).ident=a1b2c3d4-002 alert.source(0).node.address(0).category=ipv4-net-mask alert.source(0).node.address(0).address=192.0.2.50 alert.source(0).node.address(0).netmask=255.255.255.255 alert.target(0).ident=d1c2b3a4 alert.target(0).node.ident=d1c2b3a4-001 alert.target(0).node.category=dns alert.target(0).node.address(0).category=ipv4-addr-hex alert.target(0).node.address(0).address=0xde796f70 alert.classification.text=Teardrop detected alert.classification.reference(0).origin=bugtraqid alert.classification.reference(0).name=124 alert.classification.reference(0).url=http://www.securityfocus.com/bid/124