-
Notifications
You must be signed in to change notification settings - Fork 430
APT 37 and The No Good Rustonotto #3686
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
e4979b4
APT 37 and The No Good Rustonotto
MHaggis 10f15a5
Create windows_expand_cabinet_file_extraction.yml
MHaggis 2ba936d
Apply suggestion from @nasbench
MHaggis 9b2977e
Update detections/endpoint/windows_expand_cabinet_file_extraction.yml
patel-bhavin 789f3d8
Update detections/endpoint/windows_expand_cabinet_file_extraction.yml
patel-bhavin 29a1dde
Update detections/endpoint/windows_expand_cabinet_file_extraction.yml
patel-bhavin cb07b5c
Merge branch 'develop' into APT37
patel-bhavin 36e2017
updating conflicts
patel-bhavin File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Create windows_expand_cabinet_file_extraction.yml
- Loading branch information
commit 10f15a508b54b1f01b516eb291cf5720128651e3
There are no files selected for viewing
85 changes: 85 additions & 0 deletions
85
detections/endpoint/windows_expand_cabinet_file_extraction.yml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| name: Windows Expand Cabinet File Extraction | ||
| id: 4e3e3b8c-6d3a-4b47-9f5a-9e3e0a0a6f2f | ||
| version: 1 | ||
| date: '2025-09-18' | ||
| author: Michael Haag, Splunk | ||
| status: production | ||
| type: TTP | ||
| description: | | ||
| Detects usage of expand.exe to extract Microsoft Cabinet (CAB) archives, with | ||
| emphasis on extractions into `C:\\ProgramData` or similar staging locations. In | ||
| recent APT37 activity, a CAB payload (e.g., wonder.cab) was expanded into | ||
| ProgramData prior to persistence and execution. This behavior is a strong signal | ||
| for ingress tool transfer and staging of payloads. | ||
| data_source: | ||
| - Sysmon EventID 1 | ||
| - Windows Event Log Security 4688 | ||
| - CrowdStrike ProcessRollup2 | ||
| search: | | ||
| | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime | ||
| from datamodel=Endpoint.Processes | ||
| where Processes.process_name="expand.exe" | ||
| (Processes.process="* -F:* *" OR Processes.process="* /F:* *") | ||
patel-bhavin marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| (Processes.process="*.cab*" OR Processes.process="*\\ProgramData\\*") | ||
patel-bhavin marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.original_file_name Processes.parent_process_exec Processes.parent_process_guid Processes.parent_process_id Processes.parent_process_path Processes.process_exec Processes.process_guid Processes.process_hash Processes.process_id Processes.process_integrity_level Processes.process_path Processes.user_id Processes.vendor_product | ||
| | `drop_dm_object_name(Processes)` | ||
| | `security_content_ctime(firstTime)` | ||
| | `security_content_ctime(lastTime)` | ||
| | `windows_expand_cabinet_file_extraction_filter` | ||
| how_to_implement: | | ||
| This analytic relies on process creation telemetry mapped to the Endpoint.Processes | ||
| datamodel (e.g., Sysmon EID 1 or EDR). Ensure full command-line logging is enabled | ||
| to capture expand.exe arguments, including `/F:*` or `-F:*` and destination paths. | ||
| known_false_positives: | | ||
| Legitimate software deployment or administrators may use expand.exe for local | ||
| file extraction. Filter by approved deployment tools, signed parent processes, | ||
| and sanctioned paths. | ||
| references: | ||
| - https://www.zscaler.com/blogs/security-research/apt37-targets-windows-rust-backdoor-and-python-loader | ||
| drilldown_searches: | ||
| - name: View the detection results for - "$user$" and "$dest$" | ||
| search: '%original_detection_search% | search user = "$user$" dest = "$dest$"' | ||
| earliest_offset: $info_min_time$ | ||
| latest_offset: $info_max_time$ | ||
| - name: View risk events for the last 7 days for - "$user$" and "$dest$" | ||
| search: | | ||
| | from datamodel Risk.All_Risk | search normalized_risk_object IN ("$user$","$dest$") starthoursago=168 | ||
| | 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: $info_min_time$ | ||
| latest_offset: $info_max_time$ | ||
| rba: | ||
| message: expand.exe extracted cabinet contents on $dest$ executed by $user$. | ||
| risk_objects: | ||
| - field: dest | ||
| type: system | ||
| score: 30 | ||
| - field: user | ||
| type: system | ||
| score: 30 | ||
| threat_objects: | ||
| - field: process_name | ||
| type: process_name | ||
| tags: | ||
| analytic_story: | ||
| - APT37 Rustonotto and FadeStealer | ||
| asset_type: Endpoint | ||
| mitre_attack_id: | ||
| - T1105 | ||
| product: | ||
| - Splunk Enterprise | ||
| - Splunk Enterprise Security | ||
| - Splunk Cloud | ||
| security_domain: endpoint | ||
| tests: | ||
| - name: True Positive Test | ||
| attack_data: | ||
| - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1140/atomic_red_team/expand_windows-sysmon.log | ||
| source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational | ||
| sourcetype: XmlWinEventLog | ||
|
|
||
|
|
||
MHaggis marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.