When an Event is categorized properly inside the CIM, it means that we can extract deep context around the Event and construct Entity groupings based on this information.
An example of this context and the value might be: We capture Events that have multiple different type fields which could be email or app for example. Each of these Events could have a common operation value such as user-logon and a common field auth_username which contains the value john.doe.
Based on this information, we can then track and correlate the behavior of the user john.doe across all systems and have a much more powerful viewpoint into behavior. john.doe logging into multiple systems they have never logged into before or failed logon attempts across a range of systems are much stronger signals of malicious activity than individual events alone.
Fields in bold are compulsory. Filling in as many other fields as possible will ensure that the system can fully process context and perform effective correlations.
Fields that start with a type value indicate fields related to that entity type. For example, type = "http" would ideally have multiple fields such as http_status_code and http_uri submitted with the Event, otherwise, detections associated with the type = "http" will not be able to successfully match with full context.
typeoperationoutcomesuccess or failurevendorproducttechnology_groupcloud, endpoint, database, vpntype and technology_group context elements, we can target activities that happen to a file entity (type field) in a cloud file-sharing application (technology_group field).environment"Production", "Staging" or "Test"schema_version1.0timestamp2024-05-20T06:14:33.039601540Zsource_source_name - The name of the log source eg. “windows_logs” or application123_logssource_host - The server or host that is sending the logs. eg. host1.internalsource_type - The type of service that is sending this data. eg syslog or gcp-audit-logsource_severity - Severity level of the Event eg. info or "errorsource_department - The department associated with the event source.source_business_unit - The business unit associated with the event source.source_location - The location of the event source.source_criticality - The criticality of the event source.http_http_status_code - The HTTP status code of the event.http_uri - The full URI of the request (includes path and query string).http_domain - The domain name.http_host - The server name where the source data has come from.http_method - The HTTP Method used.http_protocol - The HTTP Protocol used.http_useragent - The browser user agent.http_request_time - Request timing.http_body_bytes_senthttp_request_lengthhttp_bytes_senthttp_server_namehttp_refererhttp_x_forwarded_forip_ip_src_address - The address the activity came from, as the payload states it. When the payload names no other party, the address of the machine that produced the event. See Source, handler and destinationip_src_portip_dst_address - The address the activity was directed at. Stated in the payload by firewalls, flow exporters and resolvers; for a login or connection recorded on the machine it was directed at, the collector fills in that machine’s own addressip_dst_portip_proxy_addressip_client_address - The IP address of the system that connected to the device/application (not necessarily the browser or original source of the request)
ip_src_address is provided and is valid the following IP Address location information will be added to the Event
ip_geo_autonomous_system_number - 12345ip_geo_autonomous_system_organization - NetworkOperatorip_geo_city_name - Sydneyip_geo_continent_code - OCip_geo_country_code - AUip_geo_country_name - Australiaip_geo_latitude: -33.8715ip_geo_longitude: 151.2006ip_geo_postal_code - 2000ip_geo_region_code - NSWip_geo_region_name - New South Walesip_geo_timezone - Australia/Sydneyip_src_address - 1.2.3.4network_network_protocol - TCP, UDP, ICMP, IPV6-ICMPnetwork_direction - outbound or inbound, from the perspective of the host or device that recorded the Eventnetwork_src_macnetwork_dst_macnetwork_bytes - total bytes for the flow, both directionsnetwork_input_bytes - bytes received by the recording hostnetwork_output_bytes - bytes sent by the recording hostnetwork_input_packets - packets received by the recording hostnetwork_output_packets - packets sent by the recording hostip_src_port / ip_dst_port
network_icmp_type - e.g. 8 for echo request, 0 for echo replynetwork_icmp_codedns_dns_domain - the name being queried, lower-cased, without the trailing dotdns_type - the query type, e.g. A, AAAA, CNAME, TXT, HTTPS. Unrecognised types are recorded as TYPE<n> rather than dropped, because unusual query types are a signal in themselvesdns_answers - comma-separated addresses returned in the answer sectiondns_rcode - the response code by name, e.g. NOERROR, NXDOMAIN, SERVFAILdns_flags - comma-separated DNS header flags that are set, e.g. QR,RD,RA. Unusual combinations carry signal: a query without RD, or a truncated (TC) response forcing a TCP retryip_src_address and ip_src_port for the client, and ip_dst_address for the resolver, so that the same lookup observed on a resolver and on a host produces comparable recordshost_host_name - The name of the machine that recorded the event. On an endpoint this is the machine the activity happened on; a firewall, domain controller or identity provider records activity between other partieshost_os - The OS of the serverhost_os_version - The OS version of the serverdata_data_risk_scoredata_sensitive_informationevent_event_descriptionevent_resultevent_command - the full command line of a process, arguments includedevent_comm - the short process name, where the source reports it separatelyevent_record_type - the source’s own record type, where it has oneevent_directory - the working directory an action was taken fromevent_duration_ms - how long the activity lastedevent_count represents exactly one observation.
event_count - the number of underlying observations summarisedevent_first_seen - timestamp of the first observation in the summaryevent_last_seen - timestamp of the last observation in the summaryevent_window_sec - the length of the summarisation windowapp_app_event - A message from an application in relation to an event that has happenedapp_name - Name of the applicationapp_version - Version of the application or agent that produced the Eventauth_auth_username - the username of the login attempt (User name that is being escalated to or just user name performing the action if no additional detail)auth_domain - the domain of the login attemptauth_response - the response (success or fail) of the loginauth_uri - the uri involved in the login attemptauth_message - any error or status message associated with the eventauth_application - The application involved in the login: eg. ssh, Secure60, win:local, signin.amazonaws.comuser_user_name - The actual string or identifier that a user is logging in with (Eg “john.doe”)user_text - The text string that desribes the user (Eg “John Doe”)user_role - The role of the useruser_id - The Used ID of the useruser_target - The focus of a change operationprivilege_privilege_method - The activity that is being performedprivilege_group - Group being changed or operated onsecurity_security_context - Security aspects related to this event. (Eg “Persistance Mechanism” for the creation of a cron job)error_error_message - The actual error message from the servererror_severity - the severity level of the error (eg WARN)error_code - Any error related identifying status codeerror_id - Any unique ID that specifically identifies this individual event erroragent_agent_versionfile_file_name - The name of the filefile_path - The path on the filesystem of the filefile_ext - The file extensionemailemail_sasl_method - SASL methodemail_sasl_username - SASL useremail_sender - Email of senderemail_recipient - Email of recpientemail_recipient_count - Count of recipientemail_encryption_protocolemail_encryption_cipheremail_encryption_keysizeprocess_process_name - Name and parameters of processprocess_image - Full path of the executable that ranprocess_idprocess_pathprocess_parent_image - Full path of the parent executableprocess_image is the binary; event_command is
the whole command line including its arguments. Most process detections need BOTH on
the same event, so a source that reports only one of them will not match them. On
Linux this means collecting process execution in a form that keeps the executable and
its arguments together; on Windows it means Sysmon, or command line auditing enabled
in Group Policy.alert_alert_severity - “low”, “medium” or “high”alert_severity_id - A number associated with severityalert_typealert_priorityalert_descriptionalert_idalert_linkalert_categorymessage_message_text - A message from a system that hasnt been parsed into other fieldssyslog_syslog_severitysyslog_facilitysyslog_ip_src_address - The transport peer the collector received the message from: the sending host, or the relay in front of itsyslog_origin_address - The address of the originating host when a relay names it in the RFC 5424 origin element. See the Syslog Relays guideAn administrator connects over a VPN to a server and logs in with SSH. The event that arrives carries the VPN address in ip_src_address, and that is correct: it is where the connection came from. The question the event has to answer next is which machine was logged into. Its name is in host_name; its address needs a field of its own, or a rule that resolves hosts by IP address can never see the login.
Every event involves up to three parties: the source that initiated the activity, the handler that recorded it, and the destination the activity was directed at. On most events they are the same machine. On the events that matter for detection they split, and the field a value lands in states which party it belongs to.
A value comes from one of two places. The payload is the line the program wrote. The envelope is what syslog, a relay or an agent wrapped around it on the way to the collector. An address read from the payload is the source. The machine’s own address is only ever known from the envelope.
Payload values: user_name j.smith, ip_src_address 203.0.113.45. Envelope values: host_name app-server-02, syslog_origin_address 198.51.100.24, syslog_ip_src_address 198.51.100.5, and ip_dst_address 198.51.100.24, because the payload names a remote source and no destination, so the recording machine is the destination.
| Party | Field | Holds | When no other party is named |
|---|---|---|---|
| Source | ip_src_address |
The address the activity came from, as the payload states it. | The machine’s own address, from the envelope. |
| Source | user_name |
The acting identity. For a login, the account that logged in. | — |
| Handler | host_name |
The machine that recorded the event. On an endpoint it is also the destination; on a firewall, domain controller or identity provider it is an observer. | — |
| Handler | syslog_ip_src_address, syslog_origin_address |
How the event travelled: the transport peer, and the origin a relay named. Provenance only. | — |
| Destination | ip_dst_address |
The address the activity was directed at. Firewalls, flow exporters and resolvers state it in the payload. When the payload names a remote source and no destination, the collector fills it with the recording machine’s own address from the envelope: that machine is the only other party. | Empty. Nothing was directed anywhere. |
| Destination | host_name |
Doubles as the destination name whenever the handler is the destination. | — |
Which party a value belongs to follows from the shape of the event. Every value is either read from the payload or taken from the envelope.
Two fallbacks mirror each other. When the payload names no source, the recording machine is the source. When the payload names a remote source and no destination, the recording machine is the destination. Both take the address from the envelope, and a parser that states either value in the payload always wins. Events that arrive without an envelope, such as cloud audit feeds, get neither fallback.
isEntity() and isEntityGroup() match a host wherever it appears, as source, handler or destination: they resolve host_name, ip_src_address and ip_dst_address through the entity’s registered identifiers, so a host registered by IP address matches whichever column that address lands in. See Query Syntax for the functions and Entity Analytics for how identifiers are registered.
We reserve any field name starting with underscore _ as an internal Secure60 fieldname. Some usage of this includes:
_project_id - Project ID of the record_timestamp - the time the item was created_id - unique ID of the event_processed_time: The time when Secure60 ingest processed the event (added to every event)
These are the field names every integration maps onto. The guides below show the mapping in practice: