Data Model
The Data Model, strongly inspired by CybOX, is an organization of the objects that may be monitored from a host-based or network-based perspective. Each object on can be identified by two dimensions: its actions and fields. When paired together, the three-tuple of (object, action, field) acts like a coordinate, and describe what properties and state changes of the object can be captured by a sensor.
Summary
| Object | Actions | Fields |
|---|---|---|
| authentication | errorfailuresuccess |
ad_domainapp_nameauth_serviceauth_targetdecision_reasonfqdnhostnamemethodresponse_timetarget_ad_domaintarget_uidtarget_usertarget_user_roletarget_user_typeuiduseruser_agentuser_roleuser_type |
| driver | loadunload |
base_addressfqdnhostnameimage_pathmd5_hashmodule_namepidsha1_hashsha256_hashsignature_validsigner |
blockdeletedeliverquarantineredirect |
action_reasonattachment_mime_typeattachment_nameattachment_sizedatedest_addressdest_ipdest_portfrommessage_bodymessage_linksmessage_typereturn_addressserver_relaysmtp_uidsrc_addresssrc_domainsrc_ipsrc_portsubjectto |
|
| file | acl_modifycreatedeletemodifyreadtimestompwrite |
companycontentcreation_timeextensionfile_namefile_pathfqdngidgrouphostnameimage_pathlink_targetmd5_hashmime_typemodeownerowner_uidpidppidprevious_creation_timesha1_hashsha256_hashsignature_validsigneruiduser |
| flow | endmessagestart |
application_protocolcontentdest_fqdndest_hostnamedest_ipdest_portend_timeexefqdnhostnameimage_pathin_bytesnetwork_directionout_bytespacket_countpidppidproto_infosrc_fqdnsrc_hostnamesrc_ipsrc_portstart_timetcp_flagstransport_protocoluiduser |
| http | getpostputtunnel |
hostnamehttp_versionrequest_body_bytesrequest_body_contentrequest_referrerrequester_ip_addressresponse_body_bytesresponse_body_contentresponse_status_codeurl_domainurl_fullurl_remainderurl_schemeuser_agent_deviceuser_agent_fulluser_agent_nameuser_agent_version |
| module | loadunload |
base_addressfqdnhostnameimage_pathmd5_hashmodule_namemodule_pathpidsha1_hashsha256_hashsignature_validsignertid |
| process | accesscreateterminate |
access_levelcall_tracecommand_linecurrent_working_directoryenv_varsexefqdnguidhostnameimage_pathintegrity_levelmd5_hashparent_command_lineparent_exeparent_guidparent_image_pathpidppidsha1_hashsha256_hashsidsignature_validsignertarget_addresstarget_guidtarget_nametarget_piduiduser |
| registry | addkey_editremovevalue_edit |
datafqdnhivehostnameimage_pathkeynew_contentpidtypeuservalue |
| service | createdeletepausestartstop |
command_lineexefqdnhostnameimage_pathnamepidppiduiduser |
| socket | bindcloselisten |
familyimage_pathlocal_addresslocal_pathlocal_portpidprotocolremote_addressremote_portsuccess |
| thread | createremote_createsuspendterminate |
hostnamesrc_pidsrc_tidstack_basestack_limitstart_addressstart_functionstart_modulestart_module_nametgt_pidtgt_tiduiduseruser_stack_baseuser_stack_limit |
| user_session | lockloginlogoutreconnectunlock |
dest_ipdest_porthostnamelogin_idlogin_successfullogin_typesrc_ipsrc_portuiduser |
What is the data model?
Objects
In the Data Model an object is much like an object in computer science. These are the items that data actually represent, such as hosts, files, connections, etc. Objects are the nouns of the Data Model vocabulary.
Actions
An action refers to a state change or event that happens on an object, such as an object’s creation, destruction, or modification. These are the verbs that describe that an object can do, and what can happen to an object. However, there are cases where sensors do not monitor actions in objects but merely scan for and check the presence of an object. Each action is represented in a coverage matrix (the 2D table). The actions are on the y-axis.
Fields
A field refers to the observable properties of an object. These properties may contain flags, identifiers, data elements, or even references to other objects. In terms of vocabulary, fields are like the adjectives. They describe properties about an object. A sensor monitors fields in the context of an object, and outputs these in some form of structured data. Once the data is ingested into a SIEM, the logs can be queried by forcing restrictions or patterns upon one or more objects, such as in an analytic. On the coverage matrix fields are on the x-axis.
Coverage
In order to gauge the usefulness of a sensor with respect to analytics, its output must be mapped into the Data Model. For each object that a sensor measures, it captures state. Some sensors periodically scan for objects, instead of monitoring for state changes. In these cases, state may be inferred by looking for changes in the properties of an object.
A summary of data model coverage is here.