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.
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
Kill Chain Phase
- CIS 8
- CIS 12
- CIS 13
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`
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.
List of fields required to use this analytic.
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 -
- Download the
artifacts .tar.gzfile from the link -
- Download the
detect_suspicious_processnames_using_pretrained_model_in_dsdl.ipynbJupyter notebook from the link -
- Login to the Jupyter Lab assigned for
detect_suspicious_processnames_using_pretrained_model_in_dsdlcontainer. This container should be listed on Containers page for DSDL app.\
- Follow the steps below inside Jupyter Notebook:\
- Upload the
app/model/data/detect_suspicious_processnames_using_pretrained_model_in_dsdl/path using the upload option in the Jupyter Notebook.\
- Untar the artifact
tar -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/.\
detect_suspicious_processnames_using_pretrained_model_in_dsdl.ipynbinto the Jupyter Notebooks folder using the upload option in Jupyter Notebook.\
- Save the notebook using the save option in Jupyter Notebook.\
Known False Positives
False positives may be present if a suspicious processname is similar to a benign processname.
Associated Analytic Story
|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.
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