Skip to content
5 changes: 3 additions & 2 deletions detections/endpoint/download_files_using_telegram.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Download Files Using Telegram
id: 58194e28-ae5e-11eb-8912-acde48001122
version: 12
version: 13
creation_date: '2021-05-07'
modification_date: '2026-05-13'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: TTP
Expand Down Expand Up @@ -47,6 +47,7 @@ analytic_story:
- XMRig
- Water Gamayun
- 0bj3ctivity Stealer
- Braodo Stealer
Comment thread
tccontre marked this conversation as resolved.
asset_type: Endpoint
mitre_attack_id:
- T1105
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Executables Or Script Creation In Suspicious Path
id: a7e3f0f0-ae42-11eb-b245-acde48001122
version: 31
version: 32
creation_date: '2021-05-07'
modification_date: '2026-08-14'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand Down Expand Up @@ -141,6 +141,7 @@ analytic_story:
- Phantom Stealer
- Starland RAT Campaign
- Vidar Stealer
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1036
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Executables Or Script Creation In Temp Path
id: e0422b71-2c05-4f32-8754-01fb415f49c9
version: 27
version: 28
creation_date: '2021-05-07'
modification_date: '2026-08-14'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand Down Expand Up @@ -134,6 +134,7 @@ analytic_story:
- Salat Stealer
- Phantom Stealer
- Vidar Stealer
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1036
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Non Firefox Process Access Firefox Profile Dir
id: e6fc13b0-1609-11ec-b533-acde48001122
version: 21
version: 22
creation_date: '2021-09-15'
modification_date: '2026-08-14'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand Down Expand Up @@ -54,6 +54,7 @@ analytic_story:
- Salat Stealer
- Phantom Stealer
- Vidar Stealer
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1555.003
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: PowerShell Download from Code Hosting Service
id: 3ffbd4d4-84a7-453e-9e06-8e9cd0350366
version: 1
creation_date: '2026-10-06'
modification_date: '2026-10-13'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
description: |-
This analytic detects PowerShell Script Block Logging (Event ID 4104) events that use common download methods to retrieve files directly from raw-content URLs on GitHub, GitLab, or Codeberg.
These code hosting services can be abused to stage payloads, but administrators and developers also download files from them.
A match identifies a download attempt; it does not establish that the file was successfully retrieved or executed. Review the full script block, destination path, process ancestry, and related endpoint activity.
data_source:
- Powershell Script Block Logging 4104
search: |-
`powershell` EventCode=4104 ScriptBlockText IN ("*.DownloadFile(*", "*.DownloadData(*", "*.DownloadString(*", "*Invoke-WebRequest*", "*Invoke-RestMethod*", "*Start-BitsTransfer*", "*iwr *", "*irm *", "*curl *", "*wget *")
| where match(
ScriptBlockText,
"(?ix)
(?:
\.Download(?:File|Data|String)\s*\(\s*['\"]?
|
(?:Invoke-WebRequest|Invoke-RestMethod|iwr|irm)
(?:\s+(?:-Uri\s+)?|\b[^;\r\n]{0,200}?\s-Uri\s+)['\"]?
|
Start-BitsTransfer\b[^;\r\n]{0,200}?-Source\s+['\"]?
|
(?:curl|wget)\s+(?:-Uri\s+)?['\"]?
)
https?://
(?:
raw\.githubusercontent\.com/[^/\s'\"]+/[^/\s'\"]+/[^/\s'\"]+(?:/[^/\s'\"]+)*
|
(?:github|gitlab)\.com/[^/\s'\"]+/[^/\s'\"]+/(?:-/)?raw/(?:refs/(?:heads|tags)/)?[^/\s'\"]+(?:/[^/\s'\"]+)*
|
codeberg\.org/[^/\s'\"]+/[^/\s'\"]+/raw/(?:branch/)?[^/\s'\"]+(?:/[^/\s'\"]+)*
)
\.(?:bat|cmd|ps1|js|vbs|vbe|py|zip|7z|rar|tar|gz|exe|dll|msi)
(?:[?#][^\s'\"]*)?
(?=['\"\s),;]|$)"
)
| fillnull
| stats count min(_time) as firstTime max(_time) as lastTime
by dest signature signature_id user_id vendor_product EventID Guid Opcode Name Path ProcessID ScriptBlockId ScriptBlockText
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `powershell_download_from_code_hosting_service_filter`
how_to_implement: |-
To implement this analytic, enable PowerShell Script Block Logging and ingest Event ID 4104 events with the `ScriptBlockText` field extracted.
Confirm that the `powershell` macro scopes the search to the correct PowerShell Operational logs in your environment.
known_false_positives: |-
Administrators, developers, and software deployment tools may download legitimate files from GitHub, GitLab, and Codeberg.
Review repository ownership, the downloaded file, destination path, signer where applicable, process ancestry, and subsequent execution before taking action.
references:
- https://www.splunk.com/en_us/blog/security/cracking-braodo-stealer-analyzing-python-malware-and-its-obfuscated-loader.html
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_logging_windows?view=powershell-7.6
drilldown_searches:
- name: View the detection results for - "$dest$"
search: '%original_detection_search% | search dest = "$dest$"'
earliest_offset: $info_min_time$
latest_offset: $info_max_time$
- name: View risk events for the last 7 days for - "$dest$"
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$") | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
earliest_offset: 7d
latest_offset: "0"
intermediate_findings:
entities:
- field: dest
type: system
score: 20
message: A PowerShell script on [$dest$] invoked a download method with a raw code-hosting URL in ScriptBlockText with ScriptBlockId [$ScriptBlockId$].
threat_objects: []
analytic_story:
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1059.001
- T1105
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1059.001/powershell_github/powershell_githu_download.log
source: XmlWinEventLog:Microsoft-Windows-PowerShell/Operational
sourcetype: XmlWinEventLog
test_type: unit
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Windows Boot or Logon Autostart Execution In Startup Folder
id: 99d157cb-923f-4a00-aee9-1f385412146f
version: 17
version: 18
creation_date: '2023-01-16'
modification_date: '2026-07-20'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand Down Expand Up @@ -51,6 +51,7 @@ analytic_story:
- BlankGrabber Stealer
- Phantom Stealer
- Starland RAT Campaign
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1547.001
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Windows Disable or Stop Browser Process
id: 220d34b7-b6c7-45fe-8dbb-c35cdd9fe6d5
version: 15
version: 16
creation_date: '2024-10-18'
modification_date: '2026-08-14'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: TTP
Expand Down
11 changes: 8 additions & 3 deletions detections/endpoint/windows_dns_query_request_to_tinyurl.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Windows DNS Query Request To TinyUrl
id: b1ea79da-719c-437c-acaf-5c93f838f425
version: 5
version: 6
creation_date: '2021-11-18'
modification_date: '2026-05-13'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand All @@ -22,7 +22,11 @@ search: |
"*\\ProgramData\\*",
"*\\Temp\\*",
"*\\Users\\Public\\*",
"*\\Windows\\Tasks\\*"
"*\\Windows\\Tasks\\*",
"*\\powershell.exe",
Comment thread
nasbench marked this conversation as resolved.
"*\\pwsh.exe",
"*\\cmd.exe",
"*\\python.exe",
)
| stats count min(_time) as firstTime max(_time) as lastTime
by answer answer_count dvc process_exec process_guid process_name query query_count
Expand Down Expand Up @@ -58,6 +62,7 @@ threat_objects:
type: process_name
analytic_story:
- Malicious Inno Setup Loader
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1105
Expand Down
5 changes: 3 additions & 2 deletions detections/endpoint/windows_password_managers_discovery.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Windows Password Managers Discovery
id: a3b3bc96-1c4f-4eba-8218-027cac739a48
version: 13
version: 14
creation_date: '2022-12-06'
modification_date: '2026-05-13'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand Down Expand Up @@ -55,6 +55,7 @@ analytic_story:
- Prestige Ransomware
- Scattered Spider
- Scattered Lapsus$ Hunters
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1555.005
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: Windows Process Outbound Connection To Social Media Domain
id: d6dc231e-8595-499b-889e-cf6a055df4d4
version: 1
creation_date: '2026-10-06'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
description: |-
This analytic detects outbound network connections from a Python process running from suspicious or non-standard directories to social media related domains.
It leverages Sysmon Event ID 3 to surface this anomalous behavior.
Legitimate Python applications rarely originate from paths such as "C:\Users\Public\", Windows font or debug folders, or the Recycle Bin, making direct outbound calls to social media infrastructure from these locations a strong indicator of compromise.
For example the Braodo Stealer, a Python-based credential-harvesting malware, abuses authenticated browser sessions to query the Meta Graph API and enumerate the victim's Facebook and Meta advertising infrastructure.
data_source:
- Sysmon EventID 3
search: |-
`sysmon`
EventCode=3
Image IN (
"*:\\$Recycle.Bin\\*",
"*:\\PerfLogs\\*",
"*:\\Users\\Administrator\\Music\\*",
"*:\\Users\\Public\\*",
"*:\\Windows\\Cursors\\*",
"*:\\Windows\\debug\\*",
"*:\\Windows\\fonts\\*",
"*:\\Windows\\INF\\*",
"*:\\Windows\\Media\\*",
"*:\\Windows\\Prefetch\\*",
"*\\Windows\\repair\\*"
)

process_name IN (
"py.exe",
"pypy.exe",
"python.exe",
"python2*.exe",
"python3*.exe",
"pythonw.exe"
)

dest IN (
"*.facebook.com",
"*.facebook.net",
"*.facebook.org",
"*.fb.com",
"*.fbcd.net",
"*.fbsbx.com",
"*.fbstatic-a.akamaihd.net",
"*.tfbw.net"
)
direction = outbound

| rename Image as process_path

| stats count min(_time) as firstTime
max(_time) as lastTime

by action app dest dest_ip dest_port direction dvc protocol protocol_version
process_path process_name process_guid process_id
src src_ip src_port transport user vendor_product

| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_process_outbound_connection_to_social_media_domain_filter`
how_to_implement: |-
To successfully implement this search, you need to be ingesting logs with the process name and sysmon eventcode = 3 connection events from your endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA.
known_false_positives: |-
No false positives have been identified at this time.
references:
- https://www.splunk.com/en_us/blog/security/cracking-braodo-stealer-analyzing-python-malware-and-its-obfuscated-loader.html
drilldown_searches:
- name: View the detection results for - "$src$"
search: '%original_detection_search% | search src = "$src$"'
earliest_offset: $info_min_time$
latest_offset: $info_max_time$
- name: View risk events for the last 7 days for - "$src$"
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$src$") | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
earliest_offset: 7d
latest_offset: "0"
intermediate_findings:
entities:
- field: dest
type: system
score: 20
message: A python process located in [$process_path$] with the name [$process_name$] and GUID [$process_guid$] and ID [$process_id$] was observed accessing a social media domain [$dest$]
threat_objects:
- field: process_path
type: file_path
analytic_story:
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1586.001
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1586.001/python_fb/python_facebook.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: XmlWinEventLog
test_type: unit
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Windows DNS Query Request by Telegram Bot API
id: 86f66f44-94d9-412d-a71d-5d8ed0fef72e
version: 12
version: 13
creation_date: '2021-08-03'
modification_date: '2026-07-20'
modification_date: '2026-10-06'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
Expand Down Expand Up @@ -47,6 +47,7 @@ analytic_story:
- VIP Keylogger
- Phantom Stealer
- Starland RAT Campaign
- Braodo Stealer
asset_type: Endpoint
mitre_attack_id:
- T1071.004
Expand Down
Loading
Loading