Skip to content

Commit dcc0850

Browse files
authored
Merge pull request #3679 from splunk/promptlock
promptlock
2 parents 57afb6b + 52b42c0 commit dcc0850

7 files changed

+112
-82
lines changed

detections/endpoint/cisco_nvm___curl_execution_with_insecure_flags.yml

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Cisco NVM - Curl Execution With Insecure Flags
22
id: cc695238-3117-4e60-aa83-4beac2a42c69
3-
version: 2
4-
date: '2025-09-09'
3+
version: 3
4+
date: '2025-09-10'
55
author: Nasreddine Bencherchali, Splunk
66
status: production
77
type: Anomaly
@@ -13,7 +13,7 @@ description: |
1313
This behavior may indicate an attempt to bypass certificate validation to connect to potentially untrusted or malicious endpoints,
1414
a common tactic in red team operations, malware staging, or data exfiltration over HTTPS.
1515
data_source:
16-
- Cisco Network Visibility Module Flow Data
16+
- Cisco Network Visibility Module Flow Data
1717
search: |
1818
`cisco_network_visibility_module_flowdata`
1919
process_name = "curl.exe"
@@ -56,39 +56,41 @@ known_false_positives: |
5656
Usage of these flags to reach public IPs or uncommon destinations should be reviewed.
5757
Tuning may be required for domains with known certificate issues.
5858
references:
59-
- https://thedfirreport.com/2025/05/19/another-confluence-bites-the-dust-falling-to-elpaco-team-ransomware/
59+
- https://thedfirreport.com/2025/05/19/another-confluence-bites-the-dust-falling-to-elpaco-team-ransomware/
6060
drilldown_searches:
61-
- name: View the detection results for - "$src$"
62-
search: '%original_detection_search% | search src = "$src$"'
63-
earliest_offset: $info_min_time$
64-
latest_offset: $info_max_time$
65-
- name: View risk events for the last 7 days for - "$src$"
66-
search:
67-
'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$src$") starthoursago=168 | stats count min(_time)
68-
as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message)
69-
as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all)
70-
as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics"
71-
by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
72-
earliest_offset: $info_min_time$
73-
latest_offset: $info_max_time$
61+
- name: View the detection results for - "$src$"
62+
search: '%original_detection_search% | search src = "$src$"'
63+
earliest_offset: $info_min_time$
64+
latest_offset: $info_max_time$
65+
- name: View risk events for the last 7 days for - "$src$"
66+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$src$")
67+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
68+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
69+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
70+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
71+
| `security_content_ctime(lastTime)`'
72+
earliest_offset: $info_min_time$
73+
latest_offset: $info_max_time$
7474
rba:
75-
message: The host $src$ executed curl with insecure flags and communicated with $dest$ / $dest_hostname$ over port $dest_port$
75+
message: The host $src$ executed curl with insecure flags and communicated
76+
with $dest$ / $dest_hostname$ over port $dest_port$
7677
risk_objects:
77-
- field: src
78-
type: system
79-
score: 30
78+
- field: src
79+
type: system
80+
score: 30
8081
threat_objects:
81-
- field: process_name
82-
type: process_name
82+
- field: process_name
83+
type: process_name
8384
tags:
8485
analytic_story:
85-
- Cisco Network Visibility Module Analytics
86+
- Cisco Network Visibility Module Analytics
87+
- PromptLock
8688
asset_type: Endpoint
8789
mitre_attack_id:
88-
- T1197
90+
- T1197
8991
product:
90-
- Splunk Enterprise
91-
- Splunk Enterprise Security
92+
- Splunk Enterprise
93+
- Splunk Enterprise Security
9294
security_domain: endpoint
9395
tests:
9496
- name: True Positive Test - Cisco NVM

detections/endpoint/executables_or_script_creation_in_suspicious_path.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ tags:
114114
- Interlock Ransomware
115115
- Interlock Rat
116116
- NailaoLocker Ransomware
117+
- PromptLock
117118
- GhostRedirector IIS Module and Rungan Backdoor
118119
asset_type: Endpoint
119120
mitre_attack_id:

detections/endpoint/executables_or_script_creation_in_temp_path.yml

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
11
name: Executables Or Script Creation In Temp Path
22
id: e0422b71-2c05-4f32-8754-01fb415f49c9
3-
version: 15
4-
date: '2025-08-07'
3+
version: 16
4+
date: '2025-09-10'
55
author: Teoderick Contreras, Splunk
66
status: production
77
type: Anomaly
8-
description: The following analytic identifies the creation of executables or scripts
9-
in suspicious file paths on Windows systems. It leverages the Endpoint.Filesystem
10-
data model to detect files with specific extensions (e.g., .exe, .dll, .ps1) created
11-
in uncommon directories (e.g., \windows\fonts\, \users\public\). This activity is
12-
significant as adversaries often use these paths to evade detection and maintain
13-
persistence. If confirmed malicious, this behavior could allow attackers to execute
14-
unauthorized code, escalate privileges, or persist within the environment, posing
15-
a significant security threat.
8+
description: The following analytic identifies the creation of executables or
9+
scripts in suspicious file paths on Windows systems. It leverages the
10+
Endpoint.Filesystem data model to detect files with specific extensions (e.g.,
11+
.exe, .dll, .ps1) created in uncommon directories (e.g., \windows\fonts\,
12+
\users\public\). This activity is significant as adversaries often use these
13+
paths to evade detection and maintain persistence. If confirmed malicious,
14+
this behavior could allow attackers to execute unauthorized code, escalate
15+
privileges, or persist within the environment, posing a significant security
16+
threat.
1617
data_source:
1718
- Sysmon EventID 11
1819
search: '| tstats `security_content_summariesonly` values(Filesystem.file_path) as
1920
file_path count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Filesystem
2021
where Filesystem.file_name IN ("*.exe", "*.dll", "*.sys", "*.com", "*.vbs", "*.vbe",
21-
"*.js", "*.ps1", "*.bat", "*.cmd", "*.pif", "*.msc") AND Filesystem.file_path IN ("*\\AppData\\Local\\Temp\\*",
22-
"*:\\Windows\\Temp\\*", "*:\\Temp*") by Filesystem.action Filesystem.dest Filesystem.file_access_time
23-
Filesystem.file_create_time Filesystem.file_hash Filesystem.file_modify_time Filesystem.file_name
24-
Filesystem.file_path Filesystem.file_acl Filesystem.file_size Filesystem.process_guid
25-
Filesystem.process_id Filesystem.user Filesystem.vendor_product | `drop_dm_object_name(Filesystem)`
26-
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `executables_or_script_creation_in_temp_path_filter`'
27-
how_to_implement: To successfully implement this search you need to be ingesting information
28-
on process that include the name of the Filesystem responsible for the changes from
29-
your endpoints into the `Endpoint` datamodel in the `Filesystem` node.
30-
known_false_positives: Administrators may allow creation of script or exe in the paths
31-
specified. Filter as needed.
22+
"*.js", "*.ps1", "*.bat", "*.cmd", "*.pif", "*.msc") AND Filesystem.file_path IN
23+
("*\\AppData\\Local\\Temp\\*", "*:\\Windows\\Temp\\*", "*:\\Temp*") by Filesystem.action
24+
Filesystem.dest Filesystem.file_access_time Filesystem.file_create_time Filesystem.file_hash
25+
Filesystem.file_modify_time Filesystem.file_name Filesystem.file_path Filesystem.file_acl
26+
Filesystem.file_size Filesystem.process_guid Filesystem.process_id Filesystem.user
27+
Filesystem.vendor_product | `drop_dm_object_name(Filesystem)` | `security_content_ctime(firstTime)`
28+
| `security_content_ctime(lastTime)` | `executables_or_script_creation_in_temp_path_filter`'
29+
how_to_implement: To successfully implement this search you need to be ingesting
30+
information on process that include the name of the Filesystem responsible for
31+
the changes from your endpoints into the `Endpoint` datamodel in the
32+
`Filesystem` node.
33+
known_false_positives: Administrators may allow creation of script or exe in the
34+
paths specified. Filter as needed.
3235
references:
3336
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
3437
- https://www.microsoft.com/security/blog/2022/01/15/destructive-malware-targeting-ukrainian-organizations/
@@ -49,8 +52,9 @@ drilldown_searches:
4952
earliest_offset: $info_min_time$
5053
latest_offset: $info_max_time$
5154
rba:
52-
message: Potentially suspicious executable or script with file name $file_name$,
53-
$file_path$ and process_id $process_id$ was created in temporary folder by $user$
55+
message: Potentially suspicious executable or script with file name
56+
$file_name$, $file_path$ and process_id $process_id$ was created in
57+
temporary folder by $user$
5458
risk_objects:
5559
- field: user
5660
type: user
@@ -102,6 +106,7 @@ tags:
102106
- Amadey
103107
- IcedID
104108
- Interlock Rat
109+
- PromptLock
105110
asset_type: Endpoint
106111
mitre_attack_id:
107112
- T1036
@@ -113,6 +118,7 @@ tags:
113118
tests:
114119
- name: True Positive Test
115120
attack_data:
116-
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/xmrig_miner/windows-sysmon.log
121+
- data:
122+
https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/xmrig_miner/windows-sysmon.log
117123
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
118124
sourcetype: XmlWinEventLog

detections/endpoint/windows_curl_upload_to_remote_destination.yml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
name: Windows Curl Upload to Remote Destination
22
id: 42f8f1a2-4228-11ec-aade-acde48001122
3-
version: 10
4-
date: '2025-06-20'
3+
version: 11
4+
date: '2025-09-10'
55
author: Michael Haag, Splunk
66
status: production
77
type: TTP
8-
description:
9-
The following analytic detects the use of Windows Curl.exe to upload
10-
a file to a remote destination. It identifies command-line arguments such as `-T`,
11-
`--upload-file`, `-d`, `--data`, and `-F` in process execution logs. This activity
12-
is significant because adversaries may use Curl to exfiltrate data or upload malicious
13-
payloads. If confirmed malicious, this could lead to data breaches or further compromise
14-
of the system. Analysts should review parallel processes and network logs to determine
15-
if the upload was successful and isolate the endpoint if necessary.
8+
description: The following analytic detects the use of Windows Curl.exe to
9+
upload a file to a remote destination. It identifies command-line arguments
10+
such as `-T`, `--upload-file`, `-d`, `--data`, and `-F` in process execution
11+
logs. This activity is significant because adversaries may use Curl to
12+
exfiltrate data or upload malicious payloads. If confirmed malicious, this
13+
could lead to data breaches or further compromise of the system. Analysts
14+
should review parallel processes and network logs to determine if the upload
15+
was successful and isolate the endpoint if necessary.
1616
data_source:
1717
- Sysmon EventID 1
1818
- Windows Event Log Security 4688
@@ -29,19 +29,18 @@ search:
2929
Processes.process_path Processes.user Processes.user_id Processes.vendor_product
3030
| `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
3131
| `windows_curl_upload_to_remote_destination_filter`'
32-
how_to_implement:
33-
The detection is based on data that originates from Endpoint Detection
34-
and Response (EDR) agents. These agents are designed to provide security-related
35-
telemetry from the endpoints where the agent is installed. To implement this search,
36-
you must ingest logs that contain the process GUID, process name, and parent process.
37-
Additionally, you must ingest complete command-line executions. These logs must
38-
be processed using the appropriate Splunk Technology Add-ons that are specific to
39-
the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint`
40-
data model. Use the Splunk Common Information Model (CIM) to normalize the field
41-
names and speed up the data modeling process.
42-
known_false_positives:
43-
False positives may be limited to source control applications
44-
and may be required to be filtered out.
32+
how_to_implement: The detection is based on data that originates from Endpoint
33+
Detection and Response (EDR) agents. These agents are designed to provide
34+
security-related telemetry from the endpoints where the agent is installed. To
35+
implement this search, you must ingest logs that contain the process GUID,
36+
process name, and parent process. Additionally, you must ingest complete
37+
command-line executions. These logs must be processed using the appropriate
38+
Splunk Technology Add-ons that are specific to the EDR product. The logs must
39+
also be mapped to the `Processes` node of the `Endpoint` data model. Use the
40+
Splunk Common Information Model (CIM) to normalize the field names and speed
41+
up the data modeling process.
42+
known_false_positives: False positives may be limited to source control
43+
applications and may be required to be filtered out.
4544
references:
4645
- https://everything.curl.dev/usingcurl/uploads
4746
- https://techcommunity.microsoft.com/t5/containers/tar-and-curl-come-to-windows/ba-p/382409
@@ -62,9 +61,9 @@ drilldown_searches:
6261
earliest_offset: $info_min_time$
6362
latest_offset: $info_max_time$
6463
rba:
65-
message:
66-
An instance of $parent_process_name$ spawning $process_name$ was identified
67-
on endpoint $dest$ by user $user$ uploading a file to a remote destination.
64+
message: An instance of $parent_process_name$ spawning $process_name$ was
65+
identified on endpoint $dest$ by user $user$ uploading a file to a remote
66+
destination.
6867
risk_objects:
6968
- field: user
7069
type: user
@@ -79,9 +78,10 @@ rba:
7978
type: process_name
8079
tags:
8180
analytic_story:
82-
- Compromised Windows Host
83-
- Ingress Tool Transfer
84-
- Cisco Network Visibility Module Analytics
81+
- Compromised Windows Host
82+
- Ingress Tool Transfer
83+
- Cisco Network Visibility Module Analytics
84+
- PromptLock
8585
asset_type: Endpoint
8686
mitre_attack_id:
8787
- T1105

detections/endpoint/windows_process_execution_in_temp_dir.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Windows Process Execution in Temp Dir
22
id: f6fbe929-4187-4ba4-901e-8a34be838443
3-
version: 5
4-
date: '2025-08-20'
3+
version: 6
4+
date: '2025-09-10'
55
author: Teoderick Contreras, Splunk
66
status: production
77
type: Anomaly
@@ -80,6 +80,7 @@ tags:
8080
- Qakbot
8181
- Trickbot
8282
- PathWiper
83+
- PromptLock
8384
asset_type: Endpoint
8485
mitre_attack_id:
8586
- T1543

detections/endpoint/windows_suspicious_process_file_path.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ tags:
122122
- Interlock Ransomware
123123
- Interlock Rat
124124
- NailaoLocker Ransomware
125+
- PromptLock
125126
- GhostRedirector IIS Module and Rungan Backdoor
126127
asset_type: Endpoint
127128
mitre_attack_id:

stories/promptlock.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: PromptLock
2+
id: e86c8a7b-28f3-4aca-b6fa-50f4e8af2d2e
3+
version: 1
4+
date: '2025-09-09'
5+
author: Teoderick Contreras, Splunk
6+
status: production
7+
description: PromptLock is a proof-of-concept ransomware identified by ESET in August 2025, marking the first known instance of malware utilizing generative artificial intelligence (GenAI) for attack execution. Unlike traditional ransomware, PromptLock employs a locally hosted AI language model, specifically OpenAI's gpt-oss:20b, accessed via the Ollama API, to dynamically generate malicious Lua scripts in real time. These scripts are compatible across multiple platforms, including Windows, Linux, and macOS. During an infection, PromptLock autonomously determines which files to target for exfiltration or encryption based on predefined prompts, allowing it to adapt its behavior to the environment. The malware utilizes the SPECK 128-bit encryption algorithm and is written in Golang. While ESET considers PromptLock a proof of concept, its capabilities highlight the potential for AI to significantly enhance the sophistication and adaptability of ransomware attacks.
8+
narrative: In August 2025, ESET researchers uncovered PromptLock, a proof-of-concept ransomware that represents a new frontier in cyber threats. Unlike conventional ransomware, PromptLock leverages generative artificial intelligence to autonomously create malicious scripts tailored to its environment. Using a locally hosted AI language model accessed through the Ollama API, it generates Lua scripts on the fly, enabling it to adapt dynamically to different operating systems, including Windows, macOS, and Linux. The malware can identify and target files for encryption or exfiltration based on contextual prompts, demonstrating a level of adaptability previously unseen in ransomware. Written in Golang and employing SPECK 128-bit encryption, PromptLock exemplifies how AI can enhance both the sophistication and evasiveness of malicious software. While currently a proof of concept, its discovery underscores the emerging risk of AI-driven cyberattacks and highlights the need for vigilant, forward-looking cybersecurity measures.
9+
references:
10+
- https://x.com/ESETresearch/status/1963209716684718315
11+
- https://arxiv.org/pdf/2508.20444
12+
tags:
13+
category:
14+
- Adversary Tactics
15+
product:
16+
- Splunk Enterprise
17+
- Splunk Enterprise Security
18+
- Splunk Cloud
19+
usecase: Advanced Threat Detection

0 commit comments

Comments
 (0)