Skip to content

Commit a224fc3

Browse files
committed
Fix broken regex alternation in detections
1 parent 4493a82 commit a224fc3

6 files changed

Lines changed: 24 additions & 197 deletions

detections/application/m365_copilot_impersonation_jailbreak_attack.yml

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: M365 Copilot Impersonation Jailbreak Attack
22
id: cc26aba8-7f4a-4078-b91a-052d6a53cb13
3-
version: 5
3+
version: 6
44
creation_date: '2025-10-13'
5-
modification_date: '2026-05-13'
5+
modification_date: '2026-06-04'
66
author: Rod Soto
77
status: experimental
88
type: TTP
@@ -13,15 +13,7 @@ search: |-
1313
`m365_exported_ediscovery_prompt_logs`
1414
| search Subject_Title="*Pretend you are*" OR Subject_Title="*act as*" OR Subject_Title="*you are now*" OR Subject_Title="*amoral*" OR Subject_Title="*being*" OR Subject_Title="*roleplay as*" OR Subject_Title="*imagine you are*" OR Subject_Title="*behave like*"
1515
| eval user = Sender
16-
| eval impersonation_type=case(match(Subject_Title, "(?i)pretend you are.*AI"), "AI_Impersonation", match(Subject_Title, "(?i)(act as
17-
| roleplay as).*AI"), "AI_Roleplay", match(Subject_Title, "(?i)amoral.*AI"), "Amoral_AI", match(Subject_Title, "(?i)transcendent being"), "Fictional_Entity", match(Subject_Title, "(?i)(act as
18-
| pretend you are).*(entities
19-
| multiple)"), "Multi_Entity", match(Subject_Title, "(?i)(imagine you are
20-
| behave like).*AI"), "AI_Behavioral_Change", match(Subject_Title, "(?i)you are now.*AI"), "AI_Identity_Override", match(Subject_Title, "(?i)(evil
21-
| malicious
22-
| harmful).*AI"), "Malicious_AI_Persona", match(Subject_Title, "(?i)(unrestricted
23-
| unlimited
24-
| uncensored).*AI"), "Unrestricted_AI_Persona", 1=1, "Generic_Roleplay")
16+
| eval impersonation_type=case(match(Subject_Title, "(?i)pretend you are.*AI"), "AI_Impersonation", match(Subject_Title, "(?i)(act as|roleplay as).*AI"), "AI_Roleplay", match(Subject_Title, "(?i)amoral.*AI"), "Amoral_AI", match(Subject_Title, "(?i)transcendent being"), "Fictional_Entity", match(Subject_Title, "(?i)(act as|pretend you are).*(entities|multiple)"), "Multi_Entity", match(Subject_Title, "(?i)(imagine you are|behave like).*AI"), "AI_Behavioral_Change", match(Subject_Title, "(?i)you are now.*AI"), "AI_Identity_Override", match(Subject_Title, "(?i)(evil|malicious|harmful).*AI"), "Malicious_AI_Persona", match(Subject_Title, "(?i)(unrestricted|unlimited|uncensored).*AI"), "Unrestricted_AI_Persona", 1=1, "Generic_Roleplay")
2517
| table _time, user, Subject_Title, impersonation_type, Workload
2618
| sort -_time
2719
| `m365_copilot_impersonation_jailbreak_attack_filter`

detections/endpoint/linux_proxy_socks_curl.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: Linux Proxy Socks Curl
22
id: bd596c22-ad1e-44fc-b242-817253ce8b08
3-
version: 13
3+
version: 14
44
creation_date: '2022-07-29'
5-
modification_date: '2026-05-13'
5+
modification_date: '2026-06-04'
66
author: Michael Haag, Splunk, 0xC0FFEEEE, Github Community
77
status: production
88
type: TTP
@@ -22,8 +22,7 @@ search: |-
2222
| `drop_dm_object_name(Processes)`
2323
| `security_content_ctime(firstTime)`
2424
| `security_content_ctime(lastTime)`
25-
| where match(process, "-x\s") OR match(process, "(?i)socks\d\w?:\/\/
26-
| --(pre)?proxy")
25+
| where match(process, "-x\s") OR match(process, "(?i)(socks\d\w?:\/\/|--(pre)?proxy)")
2726
| `linux_proxy_socks_curl_filter`
2827
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
2928
known_false_positives: False positives may be present based on proxy usage internally. Filter as needed.

detections/endpoint/powershell_4104_hunting.yml

Lines changed: 9 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: PowerShell 4104 Hunting
22
id: d6f2b006-0041-11ec-8885-acde48001122
3-
version: 25
3+
version: 26
44
creation_date: '2021-08-19'
5-
modification_date: '2026-05-13'
5+
modification_date: '2026-06-04'
66
author: Michael Haag, Splunk
77
status: production
88
type: Hunting
@@ -12,180 +12,22 @@ data_source:
1212
search: |-
1313
`powershell` EventCode=4104
1414
| eval DoIt = if(match(ScriptBlockText,"(?i)(\$doit)"), "4", 0)
15-
| eval enccom=if(match(ScriptBlockText,"[A-Za-z0-9+\/]{44,}([A-Za-z0-9+\/]{4}
16-
| [A-Za-z0-9+\/]{3}=
17-
| [A-Za-z0-9+\/]{2}==)") OR match(ScriptBlockText, "(?i)[-]e(nc*o*d*e*d*c*o*m*m*a*n*d*)*\s+[^-]"),4,0)
18-
| eval suspcmdlet=if(match(ScriptBlockText, "(?i)Add-Exfiltration
19-
| Add-Persistence
20-
| Add-RegBackdoor
21-
| Add-ScrnSaveBackdoor
22-
| Check-VM
23-
| Do-Exfiltration
24-
| Enabled-DuplicateToken
25-
| Exploit-Jboss
26-
| Find-Fruit
27-
| Find-GPOLocation
28-
| Find-TrustedDocuments
29-
| Get-ApplicationHost
30-
| Get-ChromeDump
31-
| Get-ClipboardContents
32-
| Get-FoxDump
33-
| Get-GPPPassword
34-
| Get-IndexedItem
35-
| Get-Keystrokes
36-
| LSASecret
37-
| Get-PassHash
38-
| Get-RegAlwaysInstallElevated
39-
| Get-RegAutoLogon
40-
| Get-RickAstley
41-
| Get-Screenshot
42-
| Get-SecurityPackages
43-
| Get-ServiceFilePermission
44-
| Get-ServicePermission
45-
| Get-ServiceUnquoted
46-
| Get-SiteListPassword
47-
| Get-System
48-
| Get-TimedScreenshot
49-
| Get-UnattendedInstallFile
50-
| Get-Unconstrained
51-
| Get-VaultCredential
52-
| Get-VulnAutoRun
53-
| Get-VulnSchTask
54-
| Gupt-Backdoor
55-
| HTTP-Login
56-
| Install-SSP
57-
| Install-ServiceBinary
58-
| Invoke-ACLScanner
59-
| Invoke-ADSBackdoor
60-
| Invoke-ARPScan
61-
| Invoke-AllChecks
62-
| Invoke-BackdoorLNK
63-
| Invoke-BypassUAC
64-
| Invoke-CredentialInjection
65-
| Invoke-DCSync
66-
| Invoke-DllInjection
67-
| Invoke-DowngradeAccount
68-
| Invoke-EgressCheck
69-
| Invoke-Inveigh
70-
| Invoke-InveighRelay
71-
| Invoke-Mimikittenz
72-
| Invoke-NetRipper
73-
| Invoke-NinjaCopy
74-
| Invoke-PSInject
75-
| Invoke-Paranoia
76-
| Invoke-PortScan
77-
| Invoke-PoshRat
78-
| Invoke-PostExfil
79-
| Invoke-PowerDump
80-
| Invoke-PowerShellTCP
81-
| Invoke-PsExec
82-
| Invoke-PsUaCme
83-
| Invoke-ReflectivePEInjection
84-
| Invoke-ReverseDNSLookup
85-
| Invoke-RunAs
86-
| Invoke-SMBScanner
87-
| Invoke-SSHCommand
88-
| Invoke-Service
89-
| Invoke-Shellcode
90-
| Invoke-Tater
91-
| Invoke-ThunderStruck
92-
| Invoke-Token
93-
| Invoke-UserHunter
94-
| Invoke-VoiceTroll
95-
| Invoke-WScriptBypassUAC
96-
| Invoke-WinEnum
97-
| MailRaider
98-
| New-HoneyHash
99-
| Out-Minidump
100-
| Port-Scan
101-
| PowerBreach
102-
| PowerUp
103-
| PowerView
104-
| Remove-Update
105-
| Set-MacAttribute
106-
| Set-Wallpaper
107-
| Show-TargetScreen
108-
| Start-CaptureServer
109-
| VolumeShadowCopyTools
110-
| NEEEEWWW
111-
| (Computer
112-
| User)Property
113-
| CachedRDPConnection
114-
| get-net\S+
115-
| invoke-\S+hunter
116-
| Install-Service
117-
| get-\S+(credent
118-
| password)
119-
| remoteps
120-
| Kerberos.*(policy
121-
| ticket)
122-
| netfirewall
123-
| Uninstall-Windows
124-
| Verb\s+Runas
125-
| AmsiBypass
126-
| nishang
127-
| Invoke-Interceptor
128-
| EXEonRemote
129-
| NetworkRelay
130-
| PowerShelludp
131-
| PowerShellIcmp
132-
| CreateShortcut
133-
| copy-vss
134-
| invoke-dll
135-
| invoke-mass
136-
| out-shortcut
137-
| Invoke-ShellCommand"),1,0)
15+
| eval enccom=if(match(ScriptBlockText,"[A-Za-z0-9+\/]{44,}([A-Za-z0-9+\/]{4}|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)") OR match(ScriptBlockText, "(?i)[-]e(nc*o*d*e*d*c*o*m*m*a*n*d*)*\s+[^-]"),4,0)
16+
| eval suspcmdlet=if(match(ScriptBlockText, "(?i)Add-Exfiltration|Add-Persistence|Add-RegBackdoor|Add-ScrnSaveBackdoor|Check-VM|Do-Exfiltration|Enabled-DuplicateToken|Exploit-Jboss|Find-Fruit|Find-GPOLocation|Find-TrustedDocuments|Get-ApplicationHost|Get-ChromeDump|Get-ClipboardContents|Get-FoxDump|Get-GPPPassword|Get-IndexedItem|Get-Keystrokes|LSASecret|Get-PassHash|Get-RegAlwaysInstallElevated|Get-RegAutoLogon|Get-RickAstley|Get-Screenshot|Get-SecurityPackages|Get-ServiceFilePermission|Get-ServicePermission|Get-ServiceUnquoted|Get-SiteListPassword|Get-System|Get-TimedScreenshot|Get-UnattendedInstallFile|Get-Unconstrained|Get-VaultCredential|Get-VulnAutoRun|Get-VulnSchTask|Gupt-Backdoor|HTTP-Login|Install-SSP|Install-ServiceBinary|Invoke-ACLScanner|Invoke-ADSBackdoor|Invoke-ARPScan|Invoke-AllChecks|Invoke-BackdoorLNK|Invoke-BypassUAC|Invoke-CredentialInjection|Invoke-DCSync|Invoke-DllInjection|Invoke-DowngradeAccount|Invoke-EgressCheck|Invoke-Inveigh|Invoke-InveighRelay|Invoke-Mimikittenz|Invoke-NetRipper|Invoke-NinjaCopy|Invoke-PSInject|Invoke-Paranoia|Invoke-PortScan|Invoke-PoshRat|Invoke-PostExfil|Invoke-PowerDump|Invoke-PowerShellTCP|Invoke-PsExec|Invoke-PsUaCme|Invoke-ReflectivePEInjection|Invoke-ReverseDNSLookup|Invoke-RunAs|Invoke-SMBScanner|Invoke-SSHCommand|Invoke-Service|Invoke-Shellcode|Invoke-Tater|Invoke-ThunderStruck|Invoke-Token|Invoke-UserHunter|Invoke-VoiceTroll|Invoke-WScriptBypassUAC|Invoke-WinEnum|MailRaider|New-HoneyHash|Out-Minidump|Port-Scan|PowerBreach|PowerUp|PowerView|Remove-Update|Set-MacAttribute|Set-Wallpaper|Show-TargetScreen|Start-CaptureServer|VolumeShadowCopyTools|NEEEEWWW|(Computer|User)Property|CachedRDPConnection|get-net\S+|invoke-\S+hunter|Install-Service|get-\S+(credent|password)|remoteps|Kerberos.*(policy|ticket)|netfirewall|Uninstall-Windows|Verb\s+Runas|AmsiBypass|nishang|Invoke-Interceptor|EXEonRemote|NetworkRelay|PowerShelludp|PowerShellIcmp|CreateShortcut|copy-vss|invoke-dll|invoke-mass|out-shortcut|Invoke-ShellCommand"),1,0)
13817
| eval base64 = if(match(lower(ScriptBlockText),"frombase64"), "4", 0)
13918
| eval empire=if(match(lower(ScriptBlockText),"system.net.webclient") AND match(lower(ScriptBlockText), "frombase64string") ,5,0)
14019
| eval mimikatz=if(match(lower(ScriptBlockText),"mimikatz") OR match(lower(ScriptBlockText), "-dumpcr") OR match(lower(ScriptBlockText), "SEKURLSA::Pth") OR match(lower(ScriptBlockText), "kerberos::ptt") OR match(lower(ScriptBlockText), "kerberos::golden") ,5,0)
141-
| eval iex=if(match(ScriptBlockText, "(?i)iex
142-
| invoke-expression"),2,0)
143-
| eval webclient=if(match(lower(ScriptBlockText),"http") OR match(lower(ScriptBlockText),"web(client
144-
| request)") OR match(lower(ScriptBlockText),"socket") OR match(lower(ScriptBlockText),"download(file
145-
| string)") OR match(lower(ScriptBlockText),"bitstransfer") OR match(lower(ScriptBlockText),"internetexplorer.application") OR match(lower(ScriptBlockText),"xmlhttp"),5,0)
20+
| eval iex=if(match(ScriptBlockText, "(?i)iex|invoke-expression"),2,0)
21+
| eval webclient=if(match(lower(ScriptBlockText),"http") OR match(lower(ScriptBlockText),"web(client|request)") OR match(lower(ScriptBlockText),"socket") OR match(lower(ScriptBlockText),"download(file|string)") OR match(lower(ScriptBlockText),"bitstransfer") OR match(lower(ScriptBlockText),"internetexplorer.application") OR match(lower(ScriptBlockText),"xmlhttp"),5,0)
14622
| eval get = if(match(lower(ScriptBlockText),"get-"), "1", 0)
14723
| eval rundll32 = if(match(lower(ScriptBlockText),"rundll32"), "4", 0)
148-
| eval suspkeywrd=if(match(ScriptBlockText, "(?i)(bitstransfer
149-
| mimik
150-
| metasp
151-
| AssemblyBuilderAccess
152-
| Reflection\.Assembly
153-
| shellcode
154-
| injection
155-
| cnvert
156-
| shell\.application
157-
| start-process
158-
| Rc4ByteStream
159-
| System\.Security\.Cryptography
160-
| lsass\.exe
161-
| localadmin
162-
| LastLoggedOn
163-
| hijack
164-
| BackupPrivilege
165-
| ngrok
166-
| comsvcs
167-
| backdoor
168-
| brute.?force
169-
| Port.?Scan
170-
| Exfiltration
171-
| exploit
172-
| DisableRealtimeMonitoring
173-
| beacon)"),1,0)
24+
| eval suspkeywrd=if(match(ScriptBlockText, "(?i)(bitstransfer|mimik|metasp|AssemblyBuilderAccess|Reflection\.Assembly|shellcode|injection|cnvert|shell\.application|start-process|Rc4ByteStream|System\.Security\.Cryptography|lsass\.exe|localadmin|LastLoggedOn|hijack|BackupPrivilege|ngrok|comsvcs|backdoor|brute.?force|Port.?Scan|Exfiltration|exploit|DisableRealtimeMonitoring|beacon)"),1,0)
17425
| eval syswow64 = if(match(lower(ScriptBlockText),"syswow64"), "3", 0)
17526
| eval httplocal = if(match(lower(ScriptBlockText),"http://127.0.0.1"), "4", 0)
17627
| eval reflection = if(match(lower(ScriptBlockText),"reflection"), "1", 0)
177-
| eval invokewmi=if(match(lower(ScriptBlockText), "(?i)(wmiobject
178-
| WMIMethod
179-
| RemoteWMI
180-
| PowerShellWmi
181-
| wmicommand)"),5,0)
28+
| eval invokewmi=if(match(lower(ScriptBlockText), "(?i)(wmiobject|WMIMethod|RemoteWMI|PowerShellWmi|wmicommand)"),5,0)
18229
| eval downgrade=if(match(ScriptBlockText, "(?i)([-]ve*r*s*i*o*n*\s+2)") OR match(lower(ScriptBlockText),"powershell -version"),3,0)
183-
| eval compressed=if(match(ScriptBlockText, "(?i)GZipStream
184-
| ::Decompress
185-
| IO.Compression
186-
| write-zip
187-
| (expand
188-
| compress)-Archive"),5,0)
30+
| eval compressed=if(match(ScriptBlockText, "(?i)GZipStream|::Decompress|IO.Compression|write-zip|(expand|compress)-Archive"),5,0)
18931
| eval invokecmd = if(match(lower(ScriptBlockText),"invoke-command"), "4", 0)
19032
| addtotals fieldname=Score DoIt, enccom, suspcmdlet, suspkeywrd, compressed, downgrade, mimikatz, iex, empire, rundll32, webclient, syswow64, httplocal, reflection, invokewmi, invokecmd, base64, get
19133
| stats values(Score)

detections/endpoint/powershell___connect_to_internet_with_hidden_window.yml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: PowerShell - Connect To Internet With Hidden Window
22
id: ee18ed37-0802-4268-9435-b3b91aaa18db
3-
version: 16
3+
version: 17
44
creation_date: '2020-04-29'
5-
modification_date: '2026-05-13'
5+
modification_date: '2026-06-04'
66
author: David Dorsey, Michael Haag Splunk
77
status: production
88
type: Hunting
@@ -24,11 +24,7 @@ search: |-
2424
| `drop_dm_object_name(Processes)`
2525
| `security_content_ctime(firstTime)`
2626
| `security_content_ctime(lastTime)`
27-
| where match(process,"(?i)[\-
28-
| \/
29-
| –
30-
| —
31-
| ―]w(in*d*o*w*s*t*y*l*e*)*\s+[^-]")
27+
| where match(process,"(?i)[\-\/–—―]w(in*d*o*w*s*t*y*l*e*)*\s+[^-]")
3228
| `powershell___connect_to_internet_with_hidden_window_filter`
3329
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
3430
known_false_positives: Legitimate process can have this combination of command-line options, but it's not common.

detections/endpoint/regsvr32_silent_and_install_param_dll_loading.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: Regsvr32 Silent and Install Param Dll Loading
22
id: f421c250-24e7-11ec-bc43-acde48001122
3-
version: 14
3+
version: 15
44
creation_date: '2021-10-04'
5-
modification_date: '2026-05-13'
5+
modification_date: '2026-06-04'
66
author: Teoderick Contreras, Splunk
77
status: production
88
type: Anomaly
@@ -26,8 +26,7 @@ search: |-
2626
| `drop_dm_object_name(Processes)`
2727
| `security_content_ctime(firstTime)`
2828
| `security_content_ctime(lastTime)`
29-
| where match(process,"(?i)[\-
30-
| \/][Ss]{1}")
29+
| where match(process,"(?i)[\-\/][Ss]{1}")
3130
| `regsvr32_silent_and_install_param_dll_loading_filter`
3231
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
3332
known_false_positives: |

detections/endpoint/regsvr32_with_known_silent_switch_cmdline.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: Regsvr32 with Known Silent Switch Cmdline
22
id: c9ef7dc4-eeaf-11eb-b2b6-acde48001122
3-
version: 14
3+
version: 15
44
creation_date: '2021-07-29'
5-
modification_date: '2026-05-13'
5+
modification_date: '2026-06-04'
66
author: Teoderick Contreras, Splunk
77
status: production
88
type: Anomaly
@@ -24,8 +24,7 @@ search: |-
2424
| `drop_dm_object_name(Processes)`
2525
| `security_content_ctime(firstTime)`
2626
| `security_content_ctime(lastTime)`
27-
| where match(process,"(?i)[\-
28-
| \/][Ss]{1}")
27+
| where match(process,"(?i)[\-\/][Ss]{1}")
2928
| `regsvr32_with_known_silent_switch_cmdline_filter`
3029
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
3130
known_false_positives: minimal. but network operator can use this application to load dll.

0 commit comments

Comments
 (0)