@gendigital/sage 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +13526 -0
- package/dist/index.cjs.map +7 -0
- package/openclaw.plugin.json +14 -0
- package/package.json +40 -0
- package/resources/allowlists/trusted-installer-domains.yaml +55 -0
- package/resources/skills/security-awareness/SKILL.md +59 -0
- package/resources/threats/LICENSE +45 -0
- package/resources/threats/commands.yaml +257 -0
- package/resources/threats/credentials.yaml +75 -0
- package/resources/threats/files.yaml +112 -0
- package/resources/threats/mitre.yaml +810 -0
- package/resources/threats/obfuscation.yaml +86 -0
- package/resources/threats/persistence.yaml +87 -0
- package/resources/threats/self-defense.yaml +55 -0
- package/resources/threats/supply_chain.yaml +15 -0
- package/resources/threats/urls.yaml +63 -0
- package/resources/threats/win-commands.yaml +785 -0
- package/resources/threats/win-credentials.yaml +112 -0
- package/resources/threats/win-files.yaml +124 -0
- package/resources/threats/win-obfuscation.yaml +205 -0
- package/resources/threats/win-persistence.yaml +100 -0
- package/resources/threats/win-supply-chain.yaml +15 -0
|
@@ -0,0 +1,785 @@
|
|
|
1
|
+
# Windows command threat patterns for Sage
|
|
2
|
+
# Author: Gen Digital Inc.
|
|
3
|
+
# License: DRL-1.1 (see threats/LICENSE)
|
|
4
|
+
# Covers: PowerShell download-execute (with aliases), LOLBins, destructive ops, reverse shells, privesc
|
|
5
|
+
|
|
6
|
+
# --- PowerShell Download-Execute ---
|
|
7
|
+
|
|
8
|
+
# Pipe to IEX: irm url | iex, iwr url | iex, curl url | iex, Invoke-WebRequest url | Invoke-Expression
|
|
9
|
+
- id: "CLT-WIN-CMD-001"
|
|
10
|
+
category: tool
|
|
11
|
+
severity: critical
|
|
12
|
+
confidence: 0.95
|
|
13
|
+
action: block
|
|
14
|
+
pattern: "\\b([Ii][Rr][Mm]|[Ii][Ww][Rr]|curl|wget|[Ii]nvoke-[Ww]eb[Rr]equest|[Ii]nvoke-[Rr]est[Mm]ethod)\\b.*\\|\\s*([Ii][Ee][Xx]|[Ii]nvoke-[Ee]xpression)\\b"
|
|
15
|
+
match_on: command
|
|
16
|
+
title: "PowerShell download piped to Invoke-Expression"
|
|
17
|
+
expires_at: null
|
|
18
|
+
revoked: false
|
|
19
|
+
|
|
20
|
+
# IEX wrapping download: iex(irm url), IEX((New-Object Net.WebClient).DownloadString(url))
|
|
21
|
+
- id: "CLT-WIN-CMD-002"
|
|
22
|
+
category: tool
|
|
23
|
+
severity: critical
|
|
24
|
+
confidence: 0.95
|
|
25
|
+
action: block
|
|
26
|
+
pattern: "\\b([Ii][Ee][Xx]|[Ii]nvoke-[Ee]xpression)\\s*\\(?\\s*\\(?\\s*(\\b([Ii][Rr][Mm]|[Ii][Ww][Rr])\\b|[Nn]ew-[Oo]bject|[Ii]nvoke-[Ww]eb[Rr]equest|[Ii]nvoke-[Rr]est[Mm]ethod)"
|
|
27
|
+
match_on: command
|
|
28
|
+
title: "Invoke-Expression wrapping remote download"
|
|
29
|
+
expires_at: null
|
|
30
|
+
revoked: false
|
|
31
|
+
|
|
32
|
+
# Start-Process with executable
|
|
33
|
+
- id: "CLT-WIN-CMD-003"
|
|
34
|
+
category: tool
|
|
35
|
+
severity: high
|
|
36
|
+
confidence: 0.85
|
|
37
|
+
action: require_approval
|
|
38
|
+
pattern: "[Ss]tart-[Pp]rocess.*-[Ff]ile[Pp]ath.*\\.(exe|bat|cmd|ps1)"
|
|
39
|
+
match_on: command
|
|
40
|
+
title: "Start-Process launching executable file"
|
|
41
|
+
expires_at: null
|
|
42
|
+
revoked: false
|
|
43
|
+
|
|
44
|
+
# Download to file then chain-execute: curl -o install.cmd url && install.cmd
|
|
45
|
+
- id: "CLT-WIN-CMD-004"
|
|
46
|
+
category: tool
|
|
47
|
+
severity: critical
|
|
48
|
+
confidence: 0.90
|
|
49
|
+
action: block
|
|
50
|
+
pattern: "\\b(curl|wget|[Ii][Rr][Mm]|[Ii][Ww][Rr]|[Ii]nvoke-[Ww]eb[Rr]equest|[Ii]nvoke-[Rr]est[Mm]ethod)\\b[^|]*(-[Oo]\\w*\\s+|-[Oo]ut[Ff]ile\\s+)\\S+\\.(cmd|bat|ps1|exe|msi).*(&&|;)"
|
|
51
|
+
match_on: command
|
|
52
|
+
title: "Download file then chain-execute"
|
|
53
|
+
expires_at: null
|
|
54
|
+
revoked: false
|
|
55
|
+
|
|
56
|
+
# .NET WebClient download
|
|
57
|
+
- id: "CLT-WIN-CMD-005"
|
|
58
|
+
category: tool
|
|
59
|
+
severity: critical
|
|
60
|
+
confidence: 0.90
|
|
61
|
+
action: block
|
|
62
|
+
pattern: "[Nn]ew-[Oo]bject\\s+[Nn]et\\.[Ww]eb[Cc]lient.*[Dd]ownload(String|File)"
|
|
63
|
+
match_on: command
|
|
64
|
+
title: ".NET WebClient download (DownloadString/DownloadFile)"
|
|
65
|
+
expires_at: null
|
|
66
|
+
revoked: false
|
|
67
|
+
|
|
68
|
+
# Start-BitsTransfer cmdlet
|
|
69
|
+
- id: "CLT-WIN-CMD-006"
|
|
70
|
+
category: tool
|
|
71
|
+
severity: high
|
|
72
|
+
confidence: 0.85
|
|
73
|
+
action: require_approval
|
|
74
|
+
pattern: "[Ss]tart-[Bb]its[Tt]ransfer"
|
|
75
|
+
match_on: command
|
|
76
|
+
title: "PowerShell BITS transfer download"
|
|
77
|
+
expires_at: null
|
|
78
|
+
revoked: false
|
|
79
|
+
|
|
80
|
+
# --- LOLBins (Living Off The Land Binaries) ---
|
|
81
|
+
|
|
82
|
+
# certutil download/decode
|
|
83
|
+
- id: "CLT-WIN-CMD-007"
|
|
84
|
+
category: tool
|
|
85
|
+
severity: critical
|
|
86
|
+
confidence: 0.95
|
|
87
|
+
action: block
|
|
88
|
+
pattern: "[Cc][Ee][Rr][Tt][Uu][Tt][Ii][Ll].*(-urlcache|-split|-decode)"
|
|
89
|
+
match_on: command
|
|
90
|
+
title: "certutil used for download or decode (LOLBin)"
|
|
91
|
+
expires_at: null
|
|
92
|
+
revoked: false
|
|
93
|
+
|
|
94
|
+
# bitsadmin transfer
|
|
95
|
+
- id: "CLT-WIN-CMD-008"
|
|
96
|
+
category: tool
|
|
97
|
+
severity: critical
|
|
98
|
+
confidence: 0.90
|
|
99
|
+
action: block
|
|
100
|
+
pattern: "[Bb][Ii][Tt][Ss][Aa][Dd][Mm][Ii][Nn].*/transfer"
|
|
101
|
+
match_on: command
|
|
102
|
+
title: "bitsadmin file transfer (LOLBin)"
|
|
103
|
+
expires_at: null
|
|
104
|
+
revoked: false
|
|
105
|
+
|
|
106
|
+
# mshta remote HTA execution
|
|
107
|
+
- id: "CLT-WIN-CMD-009"
|
|
108
|
+
category: tool
|
|
109
|
+
severity: critical
|
|
110
|
+
confidence: 0.90
|
|
111
|
+
action: block
|
|
112
|
+
pattern: "[Mm][Ss][Hh][Tt][Aa]\\s+.*https?://"
|
|
113
|
+
match_on: command
|
|
114
|
+
title: "mshta executing remote HTA file (LOLBin)"
|
|
115
|
+
expires_at: null
|
|
116
|
+
revoked: false
|
|
117
|
+
|
|
118
|
+
# regsvr32 scriptlet loading
|
|
119
|
+
- id: "CLT-WIN-CMD-010"
|
|
120
|
+
category: tool
|
|
121
|
+
severity: critical
|
|
122
|
+
confidence: 0.90
|
|
123
|
+
action: block
|
|
124
|
+
pattern: "[Rr][Ee][Gg][Ss][Vv][Rr]32.*/[SsIi].*\\.(dll|sct)"
|
|
125
|
+
match_on: command
|
|
126
|
+
title: "regsvr32 loading DLL/scriptlet (LOLBin)"
|
|
127
|
+
expires_at: null
|
|
128
|
+
revoked: false
|
|
129
|
+
|
|
130
|
+
# rundll32 javascript execution
|
|
131
|
+
- id: "CLT-WIN-CMD-011"
|
|
132
|
+
category: tool
|
|
133
|
+
severity: critical
|
|
134
|
+
confidence: 0.90
|
|
135
|
+
action: block
|
|
136
|
+
pattern: "[Rr][Uu][Nn][Dd][Ll][Ll]32.*javascript:"
|
|
137
|
+
match_on: command
|
|
138
|
+
title: "rundll32 executing JavaScript (LOLBin)"
|
|
139
|
+
expires_at: null
|
|
140
|
+
revoked: false
|
|
141
|
+
|
|
142
|
+
# cmstp INF install (UAC bypass)
|
|
143
|
+
- id: "CLT-WIN-CMD-012"
|
|
144
|
+
category: tool
|
|
145
|
+
severity: high
|
|
146
|
+
confidence: 0.85
|
|
147
|
+
action: block
|
|
148
|
+
pattern: "[Cc][Mm][Ss][Tt][Pp].*/[AaUuSs].*\\.inf"
|
|
149
|
+
match_on: command
|
|
150
|
+
title: "cmstp INF install (UAC bypass LOLBin)"
|
|
151
|
+
expires_at: null
|
|
152
|
+
revoked: false
|
|
153
|
+
|
|
154
|
+
# wmic process create
|
|
155
|
+
- id: "CLT-WIN-CMD-013"
|
|
156
|
+
category: tool
|
|
157
|
+
severity: critical
|
|
158
|
+
confidence: 0.90
|
|
159
|
+
action: block
|
|
160
|
+
pattern: "\\b[Ww][Mm][Ii][Cc]\\b.*\\bprocess\\s+call\\s+create\\b"
|
|
161
|
+
match_on: command
|
|
162
|
+
title: "wmic process call create (LOLBin)"
|
|
163
|
+
expires_at: null
|
|
164
|
+
revoked: false
|
|
165
|
+
|
|
166
|
+
# msiexec remote install
|
|
167
|
+
- id: "CLT-WIN-CMD-014"
|
|
168
|
+
category: tool
|
|
169
|
+
severity: critical
|
|
170
|
+
confidence: 0.90
|
|
171
|
+
action: block
|
|
172
|
+
pattern: "\\b[Mm][Ss][Ii][Ee][Xx][Ee][Cc]\\b.*/[QqIi].*https?://"
|
|
173
|
+
match_on: command
|
|
174
|
+
title: "msiexec remote MSI install (LOLBin)"
|
|
175
|
+
expires_at: null
|
|
176
|
+
revoked: false
|
|
177
|
+
|
|
178
|
+
# forfiles command execution
|
|
179
|
+
- id: "CLT-WIN-CMD-015"
|
|
180
|
+
category: tool
|
|
181
|
+
severity: high
|
|
182
|
+
confidence: 0.85
|
|
183
|
+
action: block
|
|
184
|
+
pattern: "\\b[Ff][Oo][Rr][Ff][Ii][Ll][Ee][Ss]\\b.*/[Cc].*\\b(cmd|powershell)\\b"
|
|
185
|
+
match_on: command
|
|
186
|
+
title: "forfiles dispatching cmd/powershell (LOLBin)"
|
|
187
|
+
expires_at: null
|
|
188
|
+
revoked: false
|
|
189
|
+
|
|
190
|
+
# pcalua execution
|
|
191
|
+
- id: "CLT-WIN-CMD-016"
|
|
192
|
+
category: tool
|
|
193
|
+
severity: high
|
|
194
|
+
confidence: 0.85
|
|
195
|
+
action: block
|
|
196
|
+
pattern: "\\b[Pp][Cc][Aa][Ll][Uu][Aa]\\b.*-a.*\\.(exe|dll)"
|
|
197
|
+
match_on: command
|
|
198
|
+
title: "pcalua executing binary (LOLBin)"
|
|
199
|
+
expires_at: null
|
|
200
|
+
revoked: false
|
|
201
|
+
|
|
202
|
+
# installutil abuse
|
|
203
|
+
- id: "CLT-WIN-CMD-017"
|
|
204
|
+
category: tool
|
|
205
|
+
severity: high
|
|
206
|
+
confidence: 0.85
|
|
207
|
+
action: block
|
|
208
|
+
pattern: "\\b[Ii]nstall[Uu]til\\b.*/[Ll]og[Ff]ile="
|
|
209
|
+
match_on: command
|
|
210
|
+
title: "installutil .NET execution (LOLBin)"
|
|
211
|
+
expires_at: null
|
|
212
|
+
revoked: false
|
|
213
|
+
|
|
214
|
+
# regasm/regsvcs
|
|
215
|
+
- id: "CLT-WIN-CMD-018"
|
|
216
|
+
category: tool
|
|
217
|
+
severity: high
|
|
218
|
+
confidence: 0.85
|
|
219
|
+
action: block
|
|
220
|
+
pattern: "\\b[Rr]eg[Aa]sm\\b.*/[Uu]|\\b[Rr]eg[Ss]vcs\\b"
|
|
221
|
+
match_on: command
|
|
222
|
+
title: "regasm/regsvcs .NET assembly execution (LOLBin)"
|
|
223
|
+
expires_at: null
|
|
224
|
+
revoked: false
|
|
225
|
+
|
|
226
|
+
# --- Destructive Operations ---
|
|
227
|
+
|
|
228
|
+
# format drive
|
|
229
|
+
- id: "CLT-WIN-CMD-019"
|
|
230
|
+
category: tool
|
|
231
|
+
severity: critical
|
|
232
|
+
confidence: 0.95
|
|
233
|
+
action: block
|
|
234
|
+
pattern: "\\b[Ff][Oo][Rr][Mm][Aa][Tt]\\s+[A-Za-z]:"
|
|
235
|
+
match_on: command
|
|
236
|
+
title: "Format drive command"
|
|
237
|
+
expires_at: null
|
|
238
|
+
revoked: false
|
|
239
|
+
|
|
240
|
+
# rd /s /q recursive delete
|
|
241
|
+
- id: "CLT-WIN-CMD-020"
|
|
242
|
+
category: tool
|
|
243
|
+
severity: critical
|
|
244
|
+
confidence: 0.95
|
|
245
|
+
action: block
|
|
246
|
+
pattern: "\\b(rd|rmdir)\\b\\s+/[Ss]\\s+/[Qq]\\s+[A-Za-z]:\\\\"
|
|
247
|
+
match_on: command
|
|
248
|
+
title: "Recursive forced deletion from drive root"
|
|
249
|
+
expires_at: null
|
|
250
|
+
revoked: false
|
|
251
|
+
|
|
252
|
+
# del /f /s /q force delete
|
|
253
|
+
- id: "CLT-WIN-CMD-021"
|
|
254
|
+
category: tool
|
|
255
|
+
severity: critical
|
|
256
|
+
confidence: 0.95
|
|
257
|
+
action: block
|
|
258
|
+
pattern: "\\b[Dd][Ee][Ll]\\b\\s+/[Ff].*\\s+/[Ss].*\\s+[A-Za-z]:\\\\"
|
|
259
|
+
match_on: command
|
|
260
|
+
title: "Force delete all files from drive root"
|
|
261
|
+
expires_at: null
|
|
262
|
+
revoked: false
|
|
263
|
+
|
|
264
|
+
# diskpart
|
|
265
|
+
- id: "CLT-WIN-CMD-022"
|
|
266
|
+
category: tool
|
|
267
|
+
severity: critical
|
|
268
|
+
confidence: 0.95
|
|
269
|
+
action: block
|
|
270
|
+
pattern: "\\bdiskpart\\b"
|
|
271
|
+
match_on: command
|
|
272
|
+
title: "diskpart disk partition manipulation"
|
|
273
|
+
expires_at: null
|
|
274
|
+
revoked: false
|
|
275
|
+
|
|
276
|
+
# --- Reverse Shells ---
|
|
277
|
+
|
|
278
|
+
# PowerShell TCP reverse shell
|
|
279
|
+
- id: "CLT-WIN-CMD-023"
|
|
280
|
+
category: tool
|
|
281
|
+
severity: critical
|
|
282
|
+
confidence: 0.90
|
|
283
|
+
action: block
|
|
284
|
+
pattern: "[Nn]ew-[Oo]bject\\s+[Ss]ystem\\.[Nn]et\\.[Ss]ockets\\.[Tt][Cc][Pp][Cc]lient"
|
|
285
|
+
match_on: command
|
|
286
|
+
title: "PowerShell TCP reverse shell via .NET socket"
|
|
287
|
+
expires_at: null
|
|
288
|
+
revoked: false
|
|
289
|
+
|
|
290
|
+
# PowerShell UDP reverse shell
|
|
291
|
+
- id: "CLT-WIN-CMD-024"
|
|
292
|
+
category: tool
|
|
293
|
+
severity: critical
|
|
294
|
+
confidence: 0.90
|
|
295
|
+
action: block
|
|
296
|
+
pattern: "[Nn]ew-[Oo]bject\\s+[Ss]ystem\\.[Nn]et\\.[Ss]ockets\\.[Uu][Dd][Pp][Cc]lient"
|
|
297
|
+
match_on: command
|
|
298
|
+
title: "PowerShell UDP reverse shell via .NET socket"
|
|
299
|
+
expires_at: null
|
|
300
|
+
revoked: false
|
|
301
|
+
|
|
302
|
+
# --- Privilege Escalation ---
|
|
303
|
+
|
|
304
|
+
# runas
|
|
305
|
+
- id: "CLT-WIN-CMD-025"
|
|
306
|
+
category: tool
|
|
307
|
+
severity: high
|
|
308
|
+
confidence: 0.80
|
|
309
|
+
action: require_approval
|
|
310
|
+
pattern: "\\b[Rr][Uu][Nn][Aa][Ss]\\s+/user:"
|
|
311
|
+
match_on: command
|
|
312
|
+
title: "runas with alternate user credentials"
|
|
313
|
+
expires_at: null
|
|
314
|
+
revoked: false
|
|
315
|
+
|
|
316
|
+
# Set-ExecutionPolicy Bypass/Unrestricted
|
|
317
|
+
- id: "CLT-WIN-CMD-026"
|
|
318
|
+
category: tool
|
|
319
|
+
severity: high
|
|
320
|
+
confidence: 0.80
|
|
321
|
+
action: require_approval
|
|
322
|
+
pattern: "[Ss]et-[Ee]xecution[Pp]olicy\\s+([Bb]ypass|[Uu]nrestricted)"
|
|
323
|
+
match_on: command
|
|
324
|
+
title: "Disabling PowerShell execution policy"
|
|
325
|
+
expires_at: null
|
|
326
|
+
revoked: false
|
|
327
|
+
|
|
328
|
+
# fodhelper UAC bypass
|
|
329
|
+
- id: "CLT-WIN-CMD-027"
|
|
330
|
+
category: tool
|
|
331
|
+
severity: high
|
|
332
|
+
confidence: 0.80
|
|
333
|
+
action: block
|
|
334
|
+
pattern: "\\b[Ff]od[Hh]elper\\b"
|
|
335
|
+
match_on: command
|
|
336
|
+
title: "fodhelper.exe UAC bypass"
|
|
337
|
+
expires_at: null
|
|
338
|
+
revoked: false
|
|
339
|
+
|
|
340
|
+
# --- PowerShell Destructive Operations ---
|
|
341
|
+
|
|
342
|
+
# Remove-Item -Recurse -Force
|
|
343
|
+
- id: "CLT-WIN-CMD-028"
|
|
344
|
+
category: tool
|
|
345
|
+
severity: critical
|
|
346
|
+
confidence: 0.90
|
|
347
|
+
action: block
|
|
348
|
+
pattern: "\\bRemove-Item\\b.*-Recurse.*-Force|\\bRemove-Item\\b.*-Force.*-Recurse"
|
|
349
|
+
match_on: command
|
|
350
|
+
title: "PowerShell recursive forced deletion (Remove-Item -Recurse -Force)"
|
|
351
|
+
expires_at: null
|
|
352
|
+
revoked: false
|
|
353
|
+
|
|
354
|
+
# Clear-RecycleBin -Force
|
|
355
|
+
- id: "CLT-WIN-CMD-029"
|
|
356
|
+
category: tool
|
|
357
|
+
severity: high
|
|
358
|
+
confidence: 0.80
|
|
359
|
+
action: require_approval
|
|
360
|
+
pattern: "\\bClear-RecycleBin\\b.*-Force"
|
|
361
|
+
match_on: command
|
|
362
|
+
title: "PowerShell destructive recycle bin cleanup"
|
|
363
|
+
expires_at: null
|
|
364
|
+
revoked: false
|
|
365
|
+
|
|
366
|
+
# --- Additional Reverse Shells ---
|
|
367
|
+
|
|
368
|
+
# ncat reverse shell
|
|
369
|
+
- id: "CLT-WIN-CMD-030"
|
|
370
|
+
category: tool
|
|
371
|
+
severity: critical
|
|
372
|
+
confidence: 0.90
|
|
373
|
+
action: block
|
|
374
|
+
pattern: "\\bncat\\b.*\\s-e\\s+(cmd|powershell|cmd\\.exe|powershell\\.exe)"
|
|
375
|
+
match_on: command
|
|
376
|
+
title: "Reverse shell via ncat -e cmd/powershell"
|
|
377
|
+
expires_at: null
|
|
378
|
+
revoked: false
|
|
379
|
+
|
|
380
|
+
# --- Shadow Copy / Recovery Destruction (Ransomware Indicators) ---
|
|
381
|
+
|
|
382
|
+
# vssadmin delete shadows
|
|
383
|
+
- id: "CLT-WIN-CMD-031"
|
|
384
|
+
category: tool
|
|
385
|
+
severity: critical
|
|
386
|
+
confidence: 0.95
|
|
387
|
+
action: block
|
|
388
|
+
pattern: "\\bvssadmin\\b.*\\bdelete\\s+shadows\\b"
|
|
389
|
+
case_insensitive: true
|
|
390
|
+
match_on: command
|
|
391
|
+
title: "Shadow copy deletion via vssadmin (ransomware indicator)"
|
|
392
|
+
expires_at: null
|
|
393
|
+
revoked: false
|
|
394
|
+
|
|
395
|
+
# wmic shadowcopy delete
|
|
396
|
+
- id: "CLT-WIN-CMD-032"
|
|
397
|
+
category: tool
|
|
398
|
+
severity: critical
|
|
399
|
+
confidence: 0.95
|
|
400
|
+
action: block
|
|
401
|
+
pattern: "\\bwmic\\b.*\\bshadowcopy\\b.*\\bdelete\\b"
|
|
402
|
+
match_on: command
|
|
403
|
+
title: "Shadow copy deletion via wmic (ransomware indicator)"
|
|
404
|
+
expires_at: null
|
|
405
|
+
revoked: false
|
|
406
|
+
|
|
407
|
+
# bcdedit recovery disable
|
|
408
|
+
- id: "CLT-WIN-CMD-033"
|
|
409
|
+
category: tool
|
|
410
|
+
severity: critical
|
|
411
|
+
confidence: 0.95
|
|
412
|
+
action: block
|
|
413
|
+
pattern: "\\bbcdedit\\b.*/set\\b.*\\b(recoveryenabled\\b.*\\b(No|no|NO|false|0)|bootems\\s+off|advancedoptions\\s+off|optionsedit\\s+off)\\b|\\breg\\b.*\\bdelete\\b.*\\bSYSTEM\\\\.*CurrentControlSet\\\\Control\\\\SafeBoot\\b|\\breg\\b.*\\badd\\b.*\\bSOFTWARE\\\\.*Microsoft\\\\Windows NT\\\\.*CurrentVersion\\\\Winlogon\\b.*/v.*Userinit"
|
|
414
|
+
match_on: command
|
|
415
|
+
title: "Recovery/boot disable via bcdedit, SafeBoot reg delete, or Winlogon Userinit (ransomware indicator)"
|
|
416
|
+
expires_at: null
|
|
417
|
+
revoked: false
|
|
418
|
+
|
|
419
|
+
# PowerShell WMI/CIM shadow copy deletion
|
|
420
|
+
- id: "CLT-WIN-CMD-034"
|
|
421
|
+
category: tool
|
|
422
|
+
severity: critical
|
|
423
|
+
confidence: 0.95
|
|
424
|
+
action: block
|
|
425
|
+
pattern: "\\b(Get-WmiObject|Get-CimInstance)\\b.*\\bWin32_ShadowCopy\\b.*\\b(Remove-WmiObject|Remove-CimInstance|Delete)\\b"
|
|
426
|
+
match_on: command
|
|
427
|
+
title: "PowerShell shadow copy deletion (ransomware indicator)"
|
|
428
|
+
expires_at: null
|
|
429
|
+
revoked: false
|
|
430
|
+
|
|
431
|
+
# --- Defense Evasion / Anti-Forensics ---
|
|
432
|
+
|
|
433
|
+
# wevtutil event log clearing
|
|
434
|
+
- id: "CLT-WIN-CMD-035"
|
|
435
|
+
category: tool
|
|
436
|
+
severity: critical
|
|
437
|
+
confidence: 0.95
|
|
438
|
+
action: block
|
|
439
|
+
pattern: "\\bwevtutil\\b.*\\b(cl|clear-log)\\b"
|
|
440
|
+
match_on: command
|
|
441
|
+
title: "Windows event log clearing via wevtutil (anti-forensics)"
|
|
442
|
+
expires_at: null
|
|
443
|
+
revoked: false
|
|
444
|
+
|
|
445
|
+
# PowerShell event log clearing
|
|
446
|
+
- id: "CLT-WIN-CMD-036"
|
|
447
|
+
category: tool
|
|
448
|
+
severity: critical
|
|
449
|
+
confidence: 0.95
|
|
450
|
+
action: block
|
|
451
|
+
pattern: "\\b(Clear-EventLog|Remove-EventLog)\\b"
|
|
452
|
+
match_on: command
|
|
453
|
+
title: "PowerShell event log clearing (anti-forensics)"
|
|
454
|
+
expires_at: null
|
|
455
|
+
revoked: false
|
|
456
|
+
|
|
457
|
+
# Set-MpPreference Defender disable
|
|
458
|
+
- id: "CLT-WIN-CMD-037"
|
|
459
|
+
category: tool
|
|
460
|
+
severity: critical
|
|
461
|
+
confidence: 0.95
|
|
462
|
+
action: block
|
|
463
|
+
pattern: "\\b(Set|Add)-MpPreference\\b.*(-Disable|-Exclusion)"
|
|
464
|
+
match_on: command
|
|
465
|
+
title: "Windows Defender settings modification via Set/Add-MpPreference"
|
|
466
|
+
expires_at: null
|
|
467
|
+
revoked: false
|
|
468
|
+
|
|
469
|
+
# Security service tampering
|
|
470
|
+
- id: "CLT-WIN-CMD-038"
|
|
471
|
+
category: tool
|
|
472
|
+
severity: critical
|
|
473
|
+
confidence: 0.90
|
|
474
|
+
action: block
|
|
475
|
+
pattern: "\\b(sc\\s+(stop|config)|net\\s+stop|Stop-Service)\\b.*\\b(WinDefend|MpsSvc|wscsvc|SecurityHealthService)\\b"
|
|
476
|
+
match_on: command
|
|
477
|
+
title: "Security service tampering (WinDefend/firewall service stop/disable)"
|
|
478
|
+
expires_at: null
|
|
479
|
+
revoked: false
|
|
480
|
+
|
|
481
|
+
# netsh firewall disable
|
|
482
|
+
- id: "CLT-WIN-CMD-039"
|
|
483
|
+
category: tool
|
|
484
|
+
severity: critical
|
|
485
|
+
confidence: 0.90
|
|
486
|
+
action: block
|
|
487
|
+
pattern: "\\bnetsh\\b.*\\badvfirewall\\b.*\\bstate\\s+off\\b"
|
|
488
|
+
match_on: command
|
|
489
|
+
title: "Windows Firewall disabling via netsh"
|
|
490
|
+
expires_at: null
|
|
491
|
+
revoked: false
|
|
492
|
+
|
|
493
|
+
# --- Data Exfiltration Indicators ---
|
|
494
|
+
|
|
495
|
+
# Password-protected archive creation
|
|
496
|
+
- id: "CLT-WIN-CMD-040"
|
|
497
|
+
category: tool
|
|
498
|
+
severity: high
|
|
499
|
+
confidence: 0.85
|
|
500
|
+
action: require_approval
|
|
501
|
+
pattern: "\\b(rar|winrar)(\\.exe)?\\b.*\\s-h?p|\\b(7z|7za)(\\.exe)?\\b.*\\s-p|\\bzip\\b.*\\s(-P\\s|--password\\b)"
|
|
502
|
+
match_on: command
|
|
503
|
+
title: "Password-protected archive creation (potential data exfiltration)"
|
|
504
|
+
expires_at: null
|
|
505
|
+
revoked: false
|
|
506
|
+
|
|
507
|
+
# Bulk document archiving with wildcards
|
|
508
|
+
- id: "CLT-WIN-CMD-041"
|
|
509
|
+
category: tool
|
|
510
|
+
severity: high
|
|
511
|
+
confidence: 0.85
|
|
512
|
+
action: require_approval
|
|
513
|
+
pattern: "\\b(rar|winrar|7z|7za|zip|tar)(\\.exe)?\\b.*\\*\\.(docx?|xlsx?|pptx?|pdf|csv)\\b"
|
|
514
|
+
match_on: command
|
|
515
|
+
title: "Bulk document archiving with wildcards (data exfiltration indicator)"
|
|
516
|
+
expires_at: null
|
|
517
|
+
revoked: false
|
|
518
|
+
|
|
519
|
+
# --- AutoIt3 Script Execution (malware delivery) ---
|
|
520
|
+
|
|
521
|
+
# AutoIt3 /AutoIt3ExecuteScript flag — prevalent malware delivery mechanism
|
|
522
|
+
- id: "CLT-WIN-CMD-042"
|
|
523
|
+
category: tool
|
|
524
|
+
severity: critical
|
|
525
|
+
confidence: 0.95
|
|
526
|
+
action: block
|
|
527
|
+
pattern: "/AutoIt3ExecuteScript"
|
|
528
|
+
case_insensitive: true
|
|
529
|
+
match_on: command
|
|
530
|
+
title: "AutoIt3 script execution (common malware delivery)"
|
|
531
|
+
expires_at: null
|
|
532
|
+
revoked: false
|
|
533
|
+
|
|
534
|
+
# --- Suspicious Script Execution Locations ---
|
|
535
|
+
|
|
536
|
+
# wscript/cscript executing scripts from C:\Users\Public (world-writable staging)
|
|
537
|
+
- id: "CLT-WIN-CMD-043"
|
|
538
|
+
category: tool
|
|
539
|
+
severity: high
|
|
540
|
+
confidence: 0.85
|
|
541
|
+
action: require_approval
|
|
542
|
+
pattern: "(wscript|cscript)(\\.exe)?\\b.*\\\\Users\\\\Public\\\\"
|
|
543
|
+
case_insensitive: true
|
|
544
|
+
match_on: command
|
|
545
|
+
title: "Script execution from C:\\Users\\Public (suspicious staging location)"
|
|
546
|
+
expires_at: null
|
|
547
|
+
revoked: false
|
|
548
|
+
|
|
549
|
+
# --- Additional LOLBins ---
|
|
550
|
+
|
|
551
|
+
# regsvr32 /i: with remote URL (Squiblydoo — shellcode or scrobj.dll variant)
|
|
552
|
+
- id: "CLT-WIN-CMD-044"
|
|
553
|
+
category: tool
|
|
554
|
+
severity: critical
|
|
555
|
+
confidence: 0.95
|
|
556
|
+
action: block
|
|
557
|
+
pattern: "regsvr32(\\.exe)?\\b.*/[Ii]:[^\\s]*https?://"
|
|
558
|
+
case_insensitive: true
|
|
559
|
+
match_on: command
|
|
560
|
+
title: "regsvr32 /i: with remote URL (Squiblydoo attack)"
|
|
561
|
+
expires_at: null
|
|
562
|
+
revoked: false
|
|
563
|
+
|
|
564
|
+
# cmdl32.exe Connection Manager Profile Installer abuse
|
|
565
|
+
- id: "CLT-WIN-CMD-045"
|
|
566
|
+
category: tool
|
|
567
|
+
severity: high
|
|
568
|
+
confidence: 0.80
|
|
569
|
+
action: require_approval
|
|
570
|
+
pattern: "\\bcmdl32(\\.exe)?\\b"
|
|
571
|
+
case_insensitive: true
|
|
572
|
+
match_on: command
|
|
573
|
+
title: "cmdl32.exe Connection Manager abuse (LOLBin)"
|
|
574
|
+
expires_at: null
|
|
575
|
+
revoked: false
|
|
576
|
+
|
|
577
|
+
# --- Download-Execute Chain (single & separator) ---
|
|
578
|
+
|
|
579
|
+
# curl/wget download to file then start (single & in cmd.exe)
|
|
580
|
+
- id: "CLT-WIN-CMD-046"
|
|
581
|
+
category: tool
|
|
582
|
+
severity: critical
|
|
583
|
+
confidence: 0.90
|
|
584
|
+
action: block
|
|
585
|
+
pattern: "\\b(curl|wget)\\b[^&]*(--(output|o\\b)|-o\\b)[^&]*&\\s*(start\\b|cmd)"
|
|
586
|
+
case_insensitive: true
|
|
587
|
+
match_on: command
|
|
588
|
+
title: "Download file then execute via cmd start (download-execute chain)"
|
|
589
|
+
expires_at: null
|
|
590
|
+
revoked: false
|
|
591
|
+
|
|
592
|
+
# Shadow copy resize + VSS/SystemRestore disable + wbadmin backup deletion (ex CLT-TECH-005)
|
|
593
|
+
- id: "CLT-WIN-CMD-047"
|
|
594
|
+
category: tool
|
|
595
|
+
severity: critical
|
|
596
|
+
confidence: 0.90
|
|
597
|
+
action: block
|
|
598
|
+
pattern: "(vssadmin.*resize.*shadowstorage|net.*stop.*swprv|reg.*add.*HKLM.*SOFTWARE.*Microsoft.*Windows NT.*CurrentVersion.*SystemRestore.*/v.*DisableSR.*/t.*REG_DWORD.*/d.*1.*/f|reg.*add.*HKLM.*SYSTEM.*CurrentControlSet.*services.*VSS.*/v.*Start.*/t.*REG_DWORD.*/d.*4.*/f|wbadmin.*delete.*catalog|wbadmin.*delete.*systemstatebackup)"
|
|
599
|
+
case_insensitive: true
|
|
600
|
+
match_on: command
|
|
601
|
+
title: "Shadow copy/VSS/SystemRestore disable or wbadmin backup deletion"
|
|
602
|
+
expires_at: null
|
|
603
|
+
revoked: false
|
|
604
|
+
|
|
605
|
+
# Legacy firewall disable via netsh opmode (ex CLT-TECH-007, MpsSvc parts covered by CLT-WIN-CMD-038)
|
|
606
|
+
- id: "CLT-WIN-CMD-048"
|
|
607
|
+
category: tool
|
|
608
|
+
severity: high
|
|
609
|
+
confidence: 0.80
|
|
610
|
+
action: require_approval
|
|
611
|
+
pattern: "netsh\\s+firewall\\s+set\\s+opmode\\s+mode[= ]+DISABLE"
|
|
612
|
+
case_insensitive: true
|
|
613
|
+
match_on: command
|
|
614
|
+
title: "Legacy firewall disable via netsh opmode (pre-Vista)"
|
|
615
|
+
expires_at: null
|
|
616
|
+
revoked: false
|
|
617
|
+
|
|
618
|
+
# Firewall exclusion: add allowed program (ex CLT-TECH-008)
|
|
619
|
+
- id: "CLT-WIN-CMD-049"
|
|
620
|
+
category: tool
|
|
621
|
+
severity: high
|
|
622
|
+
confidence: 0.80
|
|
623
|
+
action: require_approval
|
|
624
|
+
pattern: "(netsh\\s+firewall.+add.+allowedprogram.+ENABLE|netsh.+advfirewall.+firewall.+add.+rule.+name.+program|netsh\\s+advfirewall\\s+firewall.+allow.+program.+enable[= ]+yes)"
|
|
625
|
+
case_insensitive: true
|
|
626
|
+
match_on: command
|
|
627
|
+
title: "Excluding program from firewall detection via netsh"
|
|
628
|
+
expires_at: null
|
|
629
|
+
revoked: false
|
|
630
|
+
|
|
631
|
+
# AppLocker bypass via regsvr32 /i:http (ex CLT-TECH-006)
|
|
632
|
+
- id: "CLT-WIN-CMD-050"
|
|
633
|
+
category: tool
|
|
634
|
+
severity: high
|
|
635
|
+
confidence: 0.80
|
|
636
|
+
action: require_approval
|
|
637
|
+
pattern: "regsvr32.+i:\\s*http"
|
|
638
|
+
case_insensitive: true
|
|
639
|
+
match_on: command
|
|
640
|
+
title: "AppLocker bypass via regsvr32 /i:http"
|
|
641
|
+
expires_at: null
|
|
642
|
+
revoked: false
|
|
643
|
+
|
|
644
|
+
# Mavinject DLL injection (ex CLT-TECH-009)
|
|
645
|
+
- id: "CLT-WIN-CMD-051"
|
|
646
|
+
category: tool
|
|
647
|
+
severity: critical
|
|
648
|
+
confidence: 0.90
|
|
649
|
+
action: block
|
|
650
|
+
pattern: "(\\\\|/)Mavinject(64|32)\\.exe"
|
|
651
|
+
case_insensitive: true
|
|
652
|
+
match_on: command
|
|
653
|
+
title: "Mavinject DLL injection (LOLBin)"
|
|
654
|
+
expires_at: null
|
|
655
|
+
revoked: false
|
|
656
|
+
|
|
657
|
+
# PyDev inject_dll injection (ex CLT-TECH-010)
|
|
658
|
+
- id: "CLT-WIN-CMD-052"
|
|
659
|
+
category: tool
|
|
660
|
+
severity: critical
|
|
661
|
+
confidence: 0.90
|
|
662
|
+
action: block
|
|
663
|
+
pattern: "(\\\\|/)inject_dll_(x86|amd64)\\.exe"
|
|
664
|
+
case_insensitive: true
|
|
665
|
+
match_on: command
|
|
666
|
+
title: "PyDev inject_dll injection (LOLBin)"
|
|
667
|
+
expires_at: null
|
|
668
|
+
revoked: false
|
|
669
|
+
|
|
670
|
+
# PowerShdll execution (ex CLT-TECH-028)
|
|
671
|
+
- id: "CLT-WIN-CMD-053"
|
|
672
|
+
category: tool
|
|
673
|
+
severity: high
|
|
674
|
+
confidence: 0.80
|
|
675
|
+
action: require_approval
|
|
676
|
+
pattern: "(rundll32\\.exe PowerShdll\\.dll,main|POWERSHDLL\\.(DLL|EXE))"
|
|
677
|
+
case_insensitive: true
|
|
678
|
+
match_on: command
|
|
679
|
+
title: "PowerShdll execution (LOLBin)"
|
|
680
|
+
expires_at: null
|
|
681
|
+
revoked: false
|
|
682
|
+
|
|
683
|
+
# SyncAppvPublishingServer execution (ex CLT-TECH-030)
|
|
684
|
+
- id: "CLT-WIN-CMD-054"
|
|
685
|
+
category: tool
|
|
686
|
+
severity: high
|
|
687
|
+
confidence: 0.80
|
|
688
|
+
action: require_approval
|
|
689
|
+
pattern: "SyncAppvPublishingServer\\.vbs \".*(iwr|iex)"
|
|
690
|
+
case_insensitive: true
|
|
691
|
+
match_on: command
|
|
692
|
+
title: "Execution via SyncAppvPublishingServer (LOLBin)"
|
|
693
|
+
expires_at: null
|
|
694
|
+
revoked: false
|
|
695
|
+
|
|
696
|
+
# sdclt/CompMgmtLauncher UAC bypass (ex CLT-TECH-033)
|
|
697
|
+
- id: "CLT-WIN-CMD-055"
|
|
698
|
+
category: tool
|
|
699
|
+
severity: critical
|
|
700
|
+
confidence: 0.90
|
|
701
|
+
action: block
|
|
702
|
+
pattern: "(sdclt\\.exe|CompMgmtLauncher\\.exe)"
|
|
703
|
+
case_insensitive: true
|
|
704
|
+
match_on: command
|
|
705
|
+
title: "UAC bypass via sdclt or CompMgmtLauncher"
|
|
706
|
+
expires_at: null
|
|
707
|
+
revoked: false
|
|
708
|
+
|
|
709
|
+
# PowerShell fileless execution via iex $env (ex CLT-TECH-017)
|
|
710
|
+
- id: "CLT-WIN-CMD-056"
|
|
711
|
+
category: tool
|
|
712
|
+
severity: high
|
|
713
|
+
confidence: 0.80
|
|
714
|
+
action: require_approval
|
|
715
|
+
pattern: "powershell.*iex.*\\$env"
|
|
716
|
+
case_insensitive: true
|
|
717
|
+
match_on: command
|
|
718
|
+
title: "PowerShell fileless execution via iex $env"
|
|
719
|
+
expires_at: null
|
|
720
|
+
revoked: false
|
|
721
|
+
|
|
722
|
+
# PowerShell version downgrade (ex CLT-TECH-018)
|
|
723
|
+
- id: "CLT-WIN-CMD-057"
|
|
724
|
+
category: tool
|
|
725
|
+
severity: high
|
|
726
|
+
confidence: 0.80
|
|
727
|
+
action: require_approval
|
|
728
|
+
pattern: "powershell.*-Version"
|
|
729
|
+
case_insensitive: true
|
|
730
|
+
match_on: command
|
|
731
|
+
title: "PowerShell version downgrade attack"
|
|
732
|
+
expires_at: null
|
|
733
|
+
revoked: false
|
|
734
|
+
|
|
735
|
+
# PowerShell download cradle iex+downloadstring (ex CLT-TECH-023)
|
|
736
|
+
- id: "CLT-WIN-CMD-058"
|
|
737
|
+
category: tool
|
|
738
|
+
severity: critical
|
|
739
|
+
confidence: 0.90
|
|
740
|
+
action: block
|
|
741
|
+
pattern: "(powershell.*(iex|invoke-expression).*downloadstring|powershell.*Start-BitsTransfer.*(iex|invoke-expression)|powershell.*xmlhttp.*send.*(iex|invoke-expression))"
|
|
742
|
+
case_insensitive: true
|
|
743
|
+
match_on: command
|
|
744
|
+
title: "PowerShell download cradle (iex+downloadstring)"
|
|
745
|
+
expires_at: null
|
|
746
|
+
revoked: false
|
|
747
|
+
|
|
748
|
+
# PowerShell Reflection.Assembly Load (ex CLT-TECH-024)
|
|
749
|
+
- id: "CLT-WIN-CMD-059"
|
|
750
|
+
category: tool
|
|
751
|
+
severity: high
|
|
752
|
+
confidence: 0.80
|
|
753
|
+
action: require_approval
|
|
754
|
+
pattern: "powershell.+\\[Reflection\\.Assembly\\]::Load"
|
|
755
|
+
case_insensitive: true
|
|
756
|
+
match_on: command
|
|
757
|
+
title: "PowerShell Reflection.Assembly Load"
|
|
758
|
+
expires_at: null
|
|
759
|
+
revoked: false
|
|
760
|
+
|
|
761
|
+
# PowerShell certificate validation bypass (ex CLT-TECH-025)
|
|
762
|
+
- id: "CLT-WIN-CMD-060"
|
|
763
|
+
category: tool
|
|
764
|
+
severity: high
|
|
765
|
+
confidence: 0.80
|
|
766
|
+
action: require_approval
|
|
767
|
+
pattern: "powershell.+ServerCertificateValidationCallback\\s*=\\s*\\{\\s*\\$true\\s*\\}"
|
|
768
|
+
case_insensitive: true
|
|
769
|
+
match_on: command
|
|
770
|
+
title: "PowerShell certificate validation bypass"
|
|
771
|
+
expires_at: null
|
|
772
|
+
revoked: false
|
|
773
|
+
|
|
774
|
+
# PowerShell GetTypeFromCLSID (ex CLT-TECH-029)
|
|
775
|
+
- id: "CLT-WIN-CMD-061"
|
|
776
|
+
category: tool
|
|
777
|
+
severity: high
|
|
778
|
+
confidence: 0.80
|
|
779
|
+
action: require_approval
|
|
780
|
+
pattern: "powershell.+GetTypeFromCLSID"
|
|
781
|
+
case_insensitive: true
|
|
782
|
+
match_on: command
|
|
783
|
+
title: "PowerShell GetTypeFromCLSID usage"
|
|
784
|
+
expires_at: null
|
|
785
|
+
revoked: false
|