Skip to content
This repository has been archived by the owner on Jan 14, 2025. It is now read-only.

Latest commit

 

History

History
209 lines (175 loc) · 10.7 KB

README.md

File metadata and controls

209 lines (175 loc) · 10.7 KB

ELSA (Security Onion)

Publisher: Phantom
Connector Version: 1.0.15
Product Vendor: Security Onion
Product Name: ELSA
Product Version Supported (regex): ".*"
Minimum Product Version: 3.0.251

This app integrates with the ELSA service included in the Security Onion security distribution

Security Onion is a popular Linux distribution pre-loaded with numerous Network Security Monitoring tools such as Snort, Bro, and Suricata. Security Onion uses ELSA (Enterprise Log Search and Archive) to store all the IDS alerts from Snort, Bro and Suricata. This app collects the events and event details from ELSA into Phantom containers and artifacts.

First, create an ELSA asset in Phantom and supply the Device URL, the User name and the Apikey. The User name and ApiKey are found in the /etc/elsa_web.conf file on the Security Onion machine. You will need to have root privileges to access this file. See the below screenshot for an example of the /etc/elsa_web.conf file that you are looking for.

You will also need to the set the "event type" you want to pull in from ELSA. Currently, three basic queries are supported as shown below.

The other values can be left in the default state for now.

Select a label for the containers that this asset will create. Either pick from the existing list, or select New Entry and type a new label. In this screenshot we are using Event :

Once the asset is saved, run Test Connectivity and make sure it passes. The Test Connectivity action attempts to validate the User name and the ApiKey that the user has provided by connecting to the configured Device URL. The connection is tested by running a basic query and checking that the HTTP response is valid.

Containers created

The app will create a single container for each event that it ingests with a single artifact called Event Artifact.

Event Artifact

The details regarding the event that are acquired from the API call to ELSA will be collected and the data that are related to the type of event are all stored into the CEF fields and are added to the artifact. There are some default CEF field mappings in the app for Snort and BRO_CONN and BRO_HTTP event types. The fields that are present in the artifact greatly depend upon the type of the event that was created. Different events will have different types of values in the artifacts.

Run Query

Finally, there is a "run query" action that enables the user to run a query in ELSA either as a manual action or as a chained action in a playbook in order to gather more data. This action allows the user to fill in the details for the exact query string to run. This can be as simple as an IP address or use the ELSA query language to get back more specific information. For information, click here for some tips on what to use for query strings in ELSA. The action also takes a JSON formatted "cef_map" parameter that allows the user to properly map the fields they expect to the proper CEF field so the output results can be used to further chain actions in a playbook. The following is an example "cef_map" parameter:

            {"program": "deviceEventCategory", "dstport": "destinationPort", "dstip": "destinationAddress", "srcip": "sourceAddress", "srcport": "sourcePort", "site": "destinationDnsName", "uri": "requestURL", "bytesout": "bytesOut"}

The other parameters are fairly self-explanatory.

Configuration Variables

The below configuration variables are required for this Connector to operate. These variables are specified when configuring a ELSA asset in SOAR.

VARIABLE REQUIRED TYPE DESCRIPTION
base_url required string Device URL, e.g. https://security-onion.local OR https://192.168.100.100
verify_server_cert required boolean Verify server certificate
username required string User name corresponding to the api key (found in /etc/elsa_web.conf file on Security Onion machine)
apikey required password Apikey for username (found in /etc/elsa_web.conf file on Security Onion machine)
query_type required string Type/class of events to pull in from ELSA.
max_containers required numeric Maximum events for scheduled polling
first_run_max_events required numeric Maximum events to poll first time
poll_hours optional numeric Ingest events in last N hours (POLL NOW and First Run)
query_timeout optional numeric Max Time to wait for query to finish (seconds)
timezone required timezone Timezone configured on device

Supported Actions

test connectivity - Validate the asset configuration for connectivity
on poll - Callback action for the on_poll ingest functionality
run query - Run a query against ELSA

action: 'test connectivity'

Validate the asset configuration for connectivity

Type: test
Read only: True

Action Parameters

No parameters are required for this action

Action Output

No Output

action: 'on poll'

Callback action for the on_poll ingest functionality

Type: ingest
Read only: True

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
container_id optional Container IDs to limit the ingestion to. string
start_time optional Start of time range, in epoch time (milliseconds) numeric
end_time optional End of time range, in epoch time (milliseconds) numeric
container_count optional Maximum number of container records to query for. numeric
artifact_count optional Maximum number of artifact records to query for. numeric

Action Output

No Output

action: 'run query'

Run a query against ELSA

Type: investigate
Read only: True

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
query_string required Exact query string to run into ELSA. See https://goo.gl/zEIoYO for query help. string
output_cef_map optional json dictionary for mapping expected query output to cef values. string
start_time optional Start of time range, in YYYY-MM-DD HH:MM:SS format. Example: 2017-01-23 19:12:39 string
end_time optional End of time range, in YYYY-MM-DD HH:MM:SS format. Example: 2017-01-23 19:12:39 string
limit optional Number of results to limit the query to. numeric
orderby_dir optional Direction to sort results. string

Action Output

DATA PATH TYPE CONTAINS
action_result.data.*.cef.*.method string
action_result.data.*.cef.*.useragent string
action_result.data.*.cef.*.requestURL string
action_result.data.*.cef.*.sourcePort string port
action_result.data.*.cef.*.statuscode string
action_result.data.*.cef.*.sourceAddress string ip
action_result.data.*.cef.*.destinationPort string port
action_result.data.*.cef.*.destinationAddress string ip
action_result.data.*.cef.*.destinationDnsName string domain
action_result.data.*.cef.*.proto string
action_result.data.*.cef.*.sigmsg string
action_result.data.*.cef.*.sigsid string
action_result.data.*.cef.*.sigpriority string
action_result.data.*.cef.*.sigclassification string
action_result.data.*.cef.*.mimetype string
action_result.data.*.cef.*.contentlength string
action_result.data.*.cef.*.pktsin string
action_result.data.*.cef.*.bytesin string
action_result.data.*.cef.*.pktsout string
action_result.data.*.cef.*.service string
action_result.data.*.cef.*.bytesOut string
action_result.data.*.cef.*.connduration string
action_result.data.*.cef.*.respcountrycode string
action_result.data.*.cef.*.md5 string
action_result.data.*.cef.*.sha1 string
action_result.data.*.cef.*.source string
action_result.data.*.cef.*.rxhosts string
action_result.data.*.cef.*.txhosts string
action_result.data.*.cef.*.seenbytes string
action_result.data.*.cef.*.totalbytes string
action_result.status string
action_result.message string
action_result.summary.query_id string
action_result.summary.total_records numeric
action_result.summary.records_returned numeric
action_result.parameter.limit string
action_result.parameter.end_time string
action_result.parameter.start_time string
action_result.parameter.orderby_dir string
action_result.parameter.query_string string
summary.total_objects numeric
summary.total_objects_successful numeric
action_result.data.*.cef.*.deviceEventCategory string
action_result.data.*.cef.*.class string
action_result.data.*.cef.*.host string ip
action_result.data.*.cef.*.referer string url
action_result.data.*.cef.*.versionminor2 string
action_result.data.*.cef.*.softwaretype string
action_result.data.*.cef.*.name string
action_result.data.*.cef.*.versionmajor string
action_result.data.*.cef.*.version string
action_result.data.*.cef.*.versionminor3 string
action_result.parameter.output_cef_map string