Detect suspicious processnames using a pretrained model in DSDL
THIS IS A EXPERIMENTAL DETECTION
This detection has been marked experimental by the Splunk Threat Research team. This means we have not been able to test, simulate, or build datasets for this detection. Use at your own risk. This analytic is NOT supported.
Description
The following analytic uses a pre-trained Deep Learning model to predict whether a processname is suspicious or not. Malwares and malicious programs such as ransomware often use tactics, techniques, and procedures (TTPs) such as copying malicious files to the local machine to propagate themselves across the network. A key indicator of compromise is that after a successful execution of the malware, it copies itself as an executable file with a randomly generated filename and places this file in one of the directories. Such techniques are seen in several malwares such as TrickBot. We develop machine learning model that uses a Recurrent Neural Network (RNN) to distinguish between malicious and benign processnames. The model is trained independently and is then made available for download. We use a character level RNN to classify malicious vs. benign processnames. The higher is_malicious_prob, the more likely is the processname to be suspicious (between [0,1]). The threshold for flagging a processname as suspicious is set as 0.5.
- Type: Anomaly
- Product: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
- Datamodel: Endpoint
- Last Updated: 2023-01-23
- Author: Abhinav Mishra, Kumar Sharad and Namratha Sreekanta, Splunk
- ID: a15f8977-ad7d-4669-92ef-b59b97219bf5
Annotations
Kill Chain Phase
- Exploitation
NIST
- PR.DS
- PR.PT
- DE.AE
- DE.CM
CIS20
- CIS 8
- CIS 12
- CIS 13
CVE
Search
1
2
3
4
5
6
7
8
9
10
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes by Processes.process_name Processes.parent_process_name Processes.process Processes.user Processes.dest
| `drop_dm_object_name(Processes)`
| rename process_name as text
| fields text, parent_process_name, process, user, dest
| apply detect_suspicious_processnames_using_pretrained_model_in_dsdl
| rename predicted_label as is_suspicious_score
| rename text as process_name
| where is_suspicious_score > 0.5
| `detect_suspicious_processnames_using_pretrained_model_in_dsdl_filter`
Macros
The SPL above uses the following Macros:
detect_suspicious_processnames_using_a_pretrained_model_in_dsdl_filter is a empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.
Required fields
List of fields required to use this analytic.
- _time
- Processes.process
- Processes.parent_process_name
- Processes.process_name
- Processes.parent_process
- Processes.user
- Processes.dest
How To Implement
Steps to deploy detect suspicious processnames model into Splunk App DSDL. This detection depends on the Splunk app for Data Science and Deep Learning which can be found here - https://splunkbase.splunk.com/app/4607/
and the Endpoint datamodel. The detection uses a pre-trained deep learning model that needs to be deployed in the DSDL app. Follow the steps for deployment here - https://github.com/splunk/security_content/wiki/How-to-deploy-pre-trained-Deep-Learning-models-for-ESCU
.\
- Download the
artifacts .tar.gz
file from the link -https://seal.splunkresearch.com/detect_suspicious_processnames_using_pretrained_model_in_dsdl.tar.gz
.\ - Download the
detect_suspicious_processnames_using_pretrained_model_in_dsdl.ipynb
Jupyter notebook from the link -https://github.com/splunk/security_content/notebooks
.\ - Login to the Jupyter Lab assigned for
detect_suspicious_processnames_using_pretrained_model_in_dsdl
container. This container should be listed on Containers page for DSDL app.\ - Follow the steps below inside Jupyter Notebook:\
- Upload the
detect_suspicious_processnames_using_pretrained_model_in_dsdl.tar.gz
file intoapp/model/data/detect_suspicious_processnames_using_pretrained_model_in_dsdl/
path using the upload option in the Jupyter Notebook.\ - Untar the artifact
detect_suspicious_processnames_using_pretrained_model_in_dsdl.tar.gz
usingtar -xf app/model/data/detect_suspicious_processnames_using_pretrained_model_in_dsdl.tar.gz -C app/model/data/detect_suspicious_processnames_using_pretrained_model_in_dsdl/
.\ - Upload
detect_suspicious_processnames_using_pretrained_model_in_dsdl.ipynb
into the Jupyter Notebooks folder using the upload option in Jupyter Notebook.\ - Save the notebook using the save option in Jupyter Notebook.\
- Upload
detect_suspicious_processnames_using_pretrained_model_in_dsdl.json
intonotebooks/data
folder.Known False Positives
False positives may be present if a suspicious processname is similar to a benign processname.
Associated Analytic Story
RBA
Risk Score | Impact | Confidence | Message |
---|---|---|---|
45.0 | 50 | 90 | The process $process$ is running from an unusual place by $user$ on $dest$ with a processname that appears to be randomly generated. |
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.
Reference
- https://www.cisa.gov/uscert/ncas/alerts/aa20-302a
- https://www.splunk.com/en_us/blog/security/random-words-on-entropy-and-dns.html
Test Dataset
Replay any dataset to Splunk Enterprise by using our replay.py
tool or the UI.
Alternatively you can replay a dataset into a Splunk Attack Range
source | version: 1