:warning: 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.

Try in Splunk Security Cloud

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

ATT&CK

ATT&CK

ID Technique Tactic
T1059 Command and Scripting Interpreter Execution
Kill Chain Phase
  • Exploitation
NIST
  • PR.DS
  • PR.PT
  • DE.AE
  • DE.CM
CIS20
  • CIS 8
  • CIS 12
  • CIS 13
CVE
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:

:information_source: 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 into app/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 using 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/.\
  • 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 into notebooks/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.

:information_source: 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

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