@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,112 @@
|
|
|
1
|
+
# Windows credential exposure threat patterns for Sage
|
|
2
|
+
# Author: Gen Digital Inc.
|
|
3
|
+
# License: DRL-1.1 (see threats/LICENSE)
|
|
4
|
+
|
|
5
|
+
# cmdkey stored credentials
|
|
6
|
+
- id: "CLT-WIN-CRED-001"
|
|
7
|
+
category: secrets
|
|
8
|
+
severity: high
|
|
9
|
+
confidence: 0.85
|
|
10
|
+
action: require_approval
|
|
11
|
+
pattern: "\\b[Cc]mdkey\\s+/add:"
|
|
12
|
+
match_on: command
|
|
13
|
+
title: "Stored credential creation via cmdkey"
|
|
14
|
+
expires_at: null
|
|
15
|
+
revoked: false
|
|
16
|
+
|
|
17
|
+
# ConvertTo-SecureString with plaintext
|
|
18
|
+
- id: "CLT-WIN-CRED-002"
|
|
19
|
+
category: secrets
|
|
20
|
+
severity: high
|
|
21
|
+
confidence: 0.85
|
|
22
|
+
action: require_approval
|
|
23
|
+
pattern: "[Cc]onvert[Tt]o-[Ss]ecure[Ss]tring.*-[Aa]s[Pp]lain[Tt]ext"
|
|
24
|
+
match_on: command
|
|
25
|
+
title: "ConvertTo-SecureString with plaintext password"
|
|
26
|
+
expires_at: null
|
|
27
|
+
revoked: false
|
|
28
|
+
|
|
29
|
+
# Reading credential files on Windows (type, more, Get-Content)
|
|
30
|
+
- id: "CLT-WIN-CRED-003"
|
|
31
|
+
category: secrets
|
|
32
|
+
severity: high
|
|
33
|
+
confidence: 0.80
|
|
34
|
+
action: require_approval
|
|
35
|
+
pattern: "\\b(type|more|[Gg]et-[Cc]ontent)\\b.*\\.(env|credentials|pgpass|netrc)"
|
|
36
|
+
match_on: command
|
|
37
|
+
title: "Reading credential file via type/more/Get-Content"
|
|
38
|
+
expires_at: null
|
|
39
|
+
revoked: false
|
|
40
|
+
|
|
41
|
+
# [Environment]::SetEnvironmentVariable with credential keyword
|
|
42
|
+
- id: "CLT-WIN-CRED-004"
|
|
43
|
+
category: secrets
|
|
44
|
+
severity: high
|
|
45
|
+
confidence: 0.80
|
|
46
|
+
action: require_approval
|
|
47
|
+
pattern: "\\[Environment\\]::SetEnvironmentVariable.*([Pp]assword|[Ss]ecret|[Tt]oken|[Kk]ey)"
|
|
48
|
+
match_on: command
|
|
49
|
+
title: "Setting credential environment variable via .NET"
|
|
50
|
+
expires_at: null
|
|
51
|
+
revoked: false
|
|
52
|
+
|
|
53
|
+
# $env: credential assignment
|
|
54
|
+
- id: "CLT-WIN-CRED-005"
|
|
55
|
+
category: secrets
|
|
56
|
+
severity: high
|
|
57
|
+
confidence: 0.80
|
|
58
|
+
action: require_approval
|
|
59
|
+
pattern: "\\$env:.*([Pp]assword|[Ss]ecret|[Tt]oken|[Aa]pi_?[Kk]ey)\\s*="
|
|
60
|
+
match_on: command
|
|
61
|
+
title: "PowerShell $env: credential variable assignment"
|
|
62
|
+
expires_at: null
|
|
63
|
+
revoked: false
|
|
64
|
+
|
|
65
|
+
# Mimikatz / sekurlsa
|
|
66
|
+
- id: "CLT-WIN-CRED-006"
|
|
67
|
+
category: secrets
|
|
68
|
+
severity: critical
|
|
69
|
+
confidence: 0.95
|
|
70
|
+
action: block
|
|
71
|
+
pattern: "[Mm]imikatz|[Ss]ekurlsa::"
|
|
72
|
+
match_on: command
|
|
73
|
+
title: "Mimikatz credential dumping tool"
|
|
74
|
+
expires_at: null
|
|
75
|
+
revoked: false
|
|
76
|
+
|
|
77
|
+
# Registry hive export for credential theft
|
|
78
|
+
- id: "CLT-WIN-CRED-007"
|
|
79
|
+
category: secrets
|
|
80
|
+
severity: critical
|
|
81
|
+
confidence: 0.95
|
|
82
|
+
action: block
|
|
83
|
+
pattern: "\\breg\\s+save\\b.*\\bHKLM\\\\(SAM|SYSTEM|SECURITY)\\b"
|
|
84
|
+
match_on: command
|
|
85
|
+
title: "Registry hive export for credential theft (reg save HKLM\\SAM/SYSTEM)"
|
|
86
|
+
expires_at: null
|
|
87
|
+
revoked: false
|
|
88
|
+
|
|
89
|
+
# LSASS credential dumping
|
|
90
|
+
- id: "CLT-WIN-CRED-008"
|
|
91
|
+
category: secrets
|
|
92
|
+
severity: critical
|
|
93
|
+
confidence: 0.95
|
|
94
|
+
action: block
|
|
95
|
+
pattern: "\\b(procdump|procdump64)\\b.*\\blsass\\b|\\brundll32\\b.*\\bcomsvcs(\\.dll)?\\b.*\\bMiniDump\\b"
|
|
96
|
+
match_on: command
|
|
97
|
+
title: "LSASS credential dumping (procdump/comsvcs.dll MiniDump)"
|
|
98
|
+
expires_at: null
|
|
99
|
+
revoked: false
|
|
100
|
+
|
|
101
|
+
# WLAN password extraction (ex CLT-TECH-034)
|
|
102
|
+
- id: "CLT-WIN-CRED-009"
|
|
103
|
+
category: secrets
|
|
104
|
+
severity: high
|
|
105
|
+
confidence: 0.80
|
|
106
|
+
action: require_approval
|
|
107
|
+
pattern: "netsh.*wlan.*show.*profiles.*key=clear"
|
|
108
|
+
case_insensitive: true
|
|
109
|
+
match_on: command
|
|
110
|
+
title: "WLAN password extraction via netsh"
|
|
111
|
+
expires_at: null
|
|
112
|
+
revoked: false
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Windows sensitive file path threat patterns for Sage
|
|
2
|
+
# Author: Gen Digital Inc.
|
|
3
|
+
# License: DRL-1.1 (see threats/LICENSE)
|
|
4
|
+
# Detects Write/Edit operations targeting Windows security-sensitive files
|
|
5
|
+
|
|
6
|
+
# SAM/SECURITY/SYSTEM hive
|
|
7
|
+
- id: "CLT-WIN-FILE-001"
|
|
8
|
+
category: secrets
|
|
9
|
+
severity: critical
|
|
10
|
+
confidence: 0.95
|
|
11
|
+
action: block
|
|
12
|
+
pattern: "(\\\\|/)Windows(\\\\|/)System32(\\\\|/)config(\\\\|/)(SAM|SECURITY|SYSTEM)"
|
|
13
|
+
match_on: file_path
|
|
14
|
+
title: "Write to SAM/SECURITY/SYSTEM registry hive"
|
|
15
|
+
expires_at: null
|
|
16
|
+
revoked: false
|
|
17
|
+
|
|
18
|
+
# NTDS.dit (Active Directory database)
|
|
19
|
+
- id: "CLT-WIN-FILE-002"
|
|
20
|
+
category: secrets
|
|
21
|
+
severity: critical
|
|
22
|
+
confidence: 0.95
|
|
23
|
+
action: block
|
|
24
|
+
pattern: "[Nn][Tt][Dd][Ss]\\.[Dd][Ii][Tt]"
|
|
25
|
+
match_on: file_path
|
|
26
|
+
title: "Write to NTDS.dit (Active Directory database)"
|
|
27
|
+
expires_at: null
|
|
28
|
+
revoked: false
|
|
29
|
+
|
|
30
|
+
# Windows hosts file
|
|
31
|
+
- id: "CLT-WIN-FILE-003"
|
|
32
|
+
category: tool
|
|
33
|
+
severity: high
|
|
34
|
+
confidence: 0.85
|
|
35
|
+
action: require_approval
|
|
36
|
+
pattern: "(\\\\|/)Windows(\\\\|/)System32(\\\\|/)drivers(\\\\|/)etc(\\\\|/)hosts"
|
|
37
|
+
match_on: file_path
|
|
38
|
+
title: "Write to Windows hosts file"
|
|
39
|
+
expires_at: null
|
|
40
|
+
revoked: false
|
|
41
|
+
|
|
42
|
+
# Startup folder
|
|
43
|
+
- id: "CLT-WIN-FILE-004"
|
|
44
|
+
category: tool
|
|
45
|
+
severity: high
|
|
46
|
+
confidence: 0.90
|
|
47
|
+
action: require_approval
|
|
48
|
+
pattern: "(\\\\|/)(Startup|Start Menu(\\\\|/)Programs(\\\\|/)Startup)(\\\\|/)"
|
|
49
|
+
match_on: file_path
|
|
50
|
+
title: "Write to Windows Startup folder"
|
|
51
|
+
expires_at: null
|
|
52
|
+
revoked: false
|
|
53
|
+
|
|
54
|
+
# Executable script in System32/SysWOW64
|
|
55
|
+
- id: "CLT-WIN-FILE-005"
|
|
56
|
+
category: tool
|
|
57
|
+
severity: critical
|
|
58
|
+
confidence: 0.90
|
|
59
|
+
action: block
|
|
60
|
+
pattern: "(\\\\|/)Windows(\\\\|/)(System32|SysWOW64)(\\\\|/).*\\.(bat|cmd|ps1|vbs|wsf)$"
|
|
61
|
+
match_on: file_path
|
|
62
|
+
title: "Write executable script to System32/SysWOW64"
|
|
63
|
+
expires_at: null
|
|
64
|
+
revoked: false
|
|
65
|
+
|
|
66
|
+
# Driver file in System32/drivers
|
|
67
|
+
- id: "CLT-WIN-FILE-006"
|
|
68
|
+
category: tool
|
|
69
|
+
severity: critical
|
|
70
|
+
confidence: 0.90
|
|
71
|
+
action: block
|
|
72
|
+
pattern: "(\\\\|/)Windows(\\\\|/)System32(\\\\|/)drivers(\\\\|/).*\\.sys$"
|
|
73
|
+
match_on: file_path
|
|
74
|
+
title: "Write driver file to System32/drivers"
|
|
75
|
+
expires_at: null
|
|
76
|
+
revoked: false
|
|
77
|
+
|
|
78
|
+
# Task Scheduler directory
|
|
79
|
+
- id: "CLT-WIN-FILE-007"
|
|
80
|
+
category: tool
|
|
81
|
+
severity: high
|
|
82
|
+
confidence: 0.85
|
|
83
|
+
action: require_approval
|
|
84
|
+
pattern: "(Windows|WINDOWS)[/\\\\]System32[/\\\\]Tasks[/\\\\]"
|
|
85
|
+
match_on: file_path
|
|
86
|
+
title: "Write to Windows Task Scheduler directory"
|
|
87
|
+
expires_at: null
|
|
88
|
+
revoked: false
|
|
89
|
+
|
|
90
|
+
# SSH key or config file (Windows path)
|
|
91
|
+
- id: "CLT-WIN-FILE-008"
|
|
92
|
+
category: secrets
|
|
93
|
+
severity: high
|
|
94
|
+
confidence: 0.90
|
|
95
|
+
action: require_approval
|
|
96
|
+
pattern: "\\.ssh[\\\\](id_rsa|id_ed25519|id_ecdsa|id_dsa|config|authorized_keys)$"
|
|
97
|
+
match_on: file_path
|
|
98
|
+
title: "Write to SSH key or config file (Windows path)"
|
|
99
|
+
expires_at: null
|
|
100
|
+
revoked: false
|
|
101
|
+
|
|
102
|
+
# AWS credentials file (Windows path)
|
|
103
|
+
- id: "CLT-WIN-FILE-009"
|
|
104
|
+
category: secrets
|
|
105
|
+
severity: high
|
|
106
|
+
confidence: 0.85
|
|
107
|
+
action: require_approval
|
|
108
|
+
pattern: "\\.aws[\\\\]credentials$"
|
|
109
|
+
match_on: file_path
|
|
110
|
+
title: "Write to AWS credentials file (Windows path)"
|
|
111
|
+
expires_at: null
|
|
112
|
+
revoked: false
|
|
113
|
+
|
|
114
|
+
# Browser credential stores
|
|
115
|
+
- id: "CLT-WIN-FILE-010"
|
|
116
|
+
category: secrets
|
|
117
|
+
severity: critical
|
|
118
|
+
confidence: 0.90
|
|
119
|
+
action: block
|
|
120
|
+
pattern: "(Google[/\\\\]Chrome|Mozilla[/\\\\]Firefox|Microsoft[/\\\\]Edge)[/\\\\].*[/\\\\](Login Data|logins\\.json|Cookies)$"
|
|
121
|
+
match_on: file_path
|
|
122
|
+
title: "Write to browser credential store"
|
|
123
|
+
expires_at: null
|
|
124
|
+
revoked: false
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Windows obfuscation threat patterns for Sage
|
|
2
|
+
# Author: Gen Digital Inc.
|
|
3
|
+
# License: DRL-1.1 (see threats/LICENSE)
|
|
4
|
+
|
|
5
|
+
# PowerShell -EncodedCommand
|
|
6
|
+
- id: "CLT-WIN-OBFUS-001"
|
|
7
|
+
category: tool
|
|
8
|
+
severity: critical
|
|
9
|
+
confidence: 0.95
|
|
10
|
+
action: block
|
|
11
|
+
pattern: "-[Ee]nc(oded[Cc]ommand)?\\s+[A-Za-z0-9+/=]{20,}"
|
|
12
|
+
match_on: command
|
|
13
|
+
title: "PowerShell -EncodedCommand with base64 payload"
|
|
14
|
+
expires_at: null
|
|
15
|
+
revoked: false
|
|
16
|
+
|
|
17
|
+
# certutil -decode
|
|
18
|
+
- id: "CLT-WIN-OBFUS-002"
|
|
19
|
+
category: tool
|
|
20
|
+
severity: high
|
|
21
|
+
confidence: 0.85
|
|
22
|
+
action: require_approval
|
|
23
|
+
pattern: "[Cc][Ee][Rr][Tt][Uu][Tt][Ii][Ll]\\s.*-decode"
|
|
24
|
+
match_on: command
|
|
25
|
+
title: "certutil base64 decode (obfuscation)"
|
|
26
|
+
expires_at: null
|
|
27
|
+
revoked: false
|
|
28
|
+
|
|
29
|
+
# Hidden PowerShell window
|
|
30
|
+
- id: "CLT-WIN-OBFUS-003"
|
|
31
|
+
category: tool
|
|
32
|
+
severity: high
|
|
33
|
+
confidence: 0.85
|
|
34
|
+
action: require_approval
|
|
35
|
+
pattern: "-[Ww]indow[Ss]tyle\\s+[Hh]idden"
|
|
36
|
+
match_on: command
|
|
37
|
+
title: "Hidden PowerShell window"
|
|
38
|
+
expires_at: null
|
|
39
|
+
revoked: false
|
|
40
|
+
|
|
41
|
+
# Bypass + NoProfile combo
|
|
42
|
+
- id: "CLT-WIN-OBFUS-004"
|
|
43
|
+
category: tool
|
|
44
|
+
severity: high
|
|
45
|
+
confidence: 0.90
|
|
46
|
+
action: block
|
|
47
|
+
pattern: "-[Ee]xecution[Pp]olicy\\s+[Bb]ypass.*-[Nn]o[Pp]rofile"
|
|
48
|
+
match_on: command
|
|
49
|
+
title: "PowerShell -ExecutionPolicy Bypass -NoProfile (malware pattern)"
|
|
50
|
+
expires_at: null
|
|
51
|
+
revoked: false
|
|
52
|
+
|
|
53
|
+
# [char] code obfuscation
|
|
54
|
+
- id: "CLT-WIN-OBFUS-005"
|
|
55
|
+
category: tool
|
|
56
|
+
severity: high
|
|
57
|
+
confidence: 0.80
|
|
58
|
+
action: require_approval
|
|
59
|
+
pattern: "\\[char\\]\\s*\\d+.*-[Jj]oin"
|
|
60
|
+
match_on: [command, content]
|
|
61
|
+
title: "PowerShell [char] code obfuscation with -join"
|
|
62
|
+
expires_at: null
|
|
63
|
+
revoked: false
|
|
64
|
+
|
|
65
|
+
# Security provider DLL injection via registry
|
|
66
|
+
- id: "CLT-WIN-OBFUS-006"
|
|
67
|
+
category: tool
|
|
68
|
+
severity: critical
|
|
69
|
+
confidence: 0.90
|
|
70
|
+
action: block
|
|
71
|
+
pattern: "\\bSYSTEM\\\\CurrentControlSet\\\\Control\\\\SecurityProviders\\b"
|
|
72
|
+
match_on: command
|
|
73
|
+
title: "Security provider DLL injection via registry"
|
|
74
|
+
expires_at: null
|
|
75
|
+
revoked: false
|
|
76
|
+
|
|
77
|
+
# mshta VBScript execution (Execute, CreateObject, close patterns)
|
|
78
|
+
- id: "CLT-WIN-OBFUS-007"
|
|
79
|
+
category: tool
|
|
80
|
+
severity: critical
|
|
81
|
+
confidence: 0.90
|
|
82
|
+
action: block
|
|
83
|
+
pattern: "\\bmshta\\b.*\\bvbscript:(Execute|CreateObject|close\\s*\\()"
|
|
84
|
+
case_insensitive: true
|
|
85
|
+
match_on: command
|
|
86
|
+
title: "mshta VBScript execution (Execute/CreateObject obfuscation)"
|
|
87
|
+
expires_at: null
|
|
88
|
+
revoked: false
|
|
89
|
+
|
|
90
|
+
# mshta javascript: eval execution
|
|
91
|
+
- id: "CLT-WIN-OBFUS-008"
|
|
92
|
+
category: tool
|
|
93
|
+
severity: critical
|
|
94
|
+
confidence: 0.90
|
|
95
|
+
action: block
|
|
96
|
+
pattern: "\\bmshta\\b.*\\bjavascript:"
|
|
97
|
+
case_insensitive: true
|
|
98
|
+
match_on: command
|
|
99
|
+
title: "mshta JavaScript execution (LOLBin obfuscation)"
|
|
100
|
+
expires_at: null
|
|
101
|
+
revoked: false
|
|
102
|
+
|
|
103
|
+
# wscript/cscript //E: engine override on non-script files
|
|
104
|
+
- id: "CLT-WIN-OBFUS-009"
|
|
105
|
+
category: tool
|
|
106
|
+
severity: critical
|
|
107
|
+
confidence: 0.90
|
|
108
|
+
action: block
|
|
109
|
+
pattern: "(wscript|cscript)(\\.exe)?\\b.*//[Ee]:([Vv][Bb][Ss]cript|[Jj][Ss]cript)"
|
|
110
|
+
case_insensitive: true
|
|
111
|
+
match_on: command
|
|
112
|
+
title: "wscript/cscript script engine override (//E:VBScript evasion)"
|
|
113
|
+
expires_at: null
|
|
114
|
+
revoked: false
|
|
115
|
+
|
|
116
|
+
# NTFS $INDEX_ALLOCATION folder creation (ex CLT-TECH-001)
|
|
117
|
+
- id: "CLT-WIN-OBFUS-010"
|
|
118
|
+
category: tool
|
|
119
|
+
severity: high
|
|
120
|
+
confidence: 0.80
|
|
121
|
+
action: require_approval
|
|
122
|
+
pattern: "echo [\\S\\s]+> [a-zA-Z0-9.]+::\\$INDEX_ALLOCATION"
|
|
123
|
+
case_insensitive: true
|
|
124
|
+
match_on: command
|
|
125
|
+
title: "NTFS $INDEX_ALLOCATION folder creation without permissions"
|
|
126
|
+
expires_at: null
|
|
127
|
+
revoked: false
|
|
128
|
+
|
|
129
|
+
# ADS bypass via type redirect or wmic process create (ex CLT-TECH-002)
|
|
130
|
+
- id: "CLT-WIN-OBFUS-011"
|
|
131
|
+
category: tool
|
|
132
|
+
severity: high
|
|
133
|
+
confidence: 0.80
|
|
134
|
+
action: require_approval
|
|
135
|
+
pattern: "(type [a-zA-Z+0-9.\\\\:]+ > [a-zA-Z+0-9.\\\\:]+:[0-9a-zA-Z+.]+|wmic process call create [a-zA-Z+0-9.\\\\:]+:[a-z0-9A-Z.]+)"
|
|
136
|
+
case_insensitive: true
|
|
137
|
+
match_on: command
|
|
138
|
+
title: "Alternate Data Streams bypass"
|
|
139
|
+
expires_at: null
|
|
140
|
+
revoked: false
|
|
141
|
+
|
|
142
|
+
# Dotdotdot hidden folder (ex CLT-TECH-003)
|
|
143
|
+
- id: "CLT-WIN-OBFUS-012"
|
|
144
|
+
category: tool
|
|
145
|
+
severity: high
|
|
146
|
+
confidence: 0.80
|
|
147
|
+
action: require_approval
|
|
148
|
+
pattern: "(mkdir\\s+\\.{3,}|[a-zA-Z]+\\s+[a-z0-9]+\\s+>\\s+\\.{3,})"
|
|
149
|
+
case_insensitive: true
|
|
150
|
+
match_on: command
|
|
151
|
+
title: "Hidden file/folder via ... directory trick"
|
|
152
|
+
expires_at: null
|
|
153
|
+
revoked: false
|
|
154
|
+
|
|
155
|
+
# cmd caret obfuscation (ex CLT-TECH-014)
|
|
156
|
+
- id: "CLT-WIN-OBFUS-013"
|
|
157
|
+
category: tool
|
|
158
|
+
severity: high
|
|
159
|
+
confidence: 0.80
|
|
160
|
+
action: require_approval
|
|
161
|
+
pattern: "cmd.*([^\\^]\\^[a-z].*){5}"
|
|
162
|
+
case_insensitive: true
|
|
163
|
+
match_on: command
|
|
164
|
+
title: "cmd caret (^) obfuscation"
|
|
165
|
+
expires_at: null
|
|
166
|
+
revoked: false
|
|
167
|
+
|
|
168
|
+
# cmd substring concatenation obfuscation (ex CLT-TECH-015)
|
|
169
|
+
- id: "CLT-WIN-OBFUS-014"
|
|
170
|
+
category: tool
|
|
171
|
+
severity: high
|
|
172
|
+
confidence: 0.80
|
|
173
|
+
action: require_approval
|
|
174
|
+
pattern: "cmd.*(%[^%]+:~[^%]*%[a-z]*){2}"
|
|
175
|
+
case_insensitive: true
|
|
176
|
+
match_on: command
|
|
177
|
+
title: "cmd substring concatenation obfuscation"
|
|
178
|
+
expires_at: null
|
|
179
|
+
revoked: false
|
|
180
|
+
|
|
181
|
+
# PowerShell backtick obfuscation (ex CLT-TECH-021)
|
|
182
|
+
- id: "CLT-WIN-OBFUS-015"
|
|
183
|
+
category: tool
|
|
184
|
+
severity: high
|
|
185
|
+
confidence: 0.80
|
|
186
|
+
action: require_approval
|
|
187
|
+
pattern: "powershell.*(`[a-z].*){4}"
|
|
188
|
+
case_insensitive: true
|
|
189
|
+
match_on: command
|
|
190
|
+
title: "PowerShell backtick obfuscation"
|
|
191
|
+
expires_at: null
|
|
192
|
+
revoked: false
|
|
193
|
+
|
|
194
|
+
# PowerShell XOR decryption (ex CLT-TECH-026)
|
|
195
|
+
- id: "CLT-WIN-OBFUS-016"
|
|
196
|
+
category: tool
|
|
197
|
+
severity: high
|
|
198
|
+
confidence: 0.80
|
|
199
|
+
action: require_approval
|
|
200
|
+
pattern: "powershell.+-bxor\\s*['\"]"
|
|
201
|
+
case_insensitive: true
|
|
202
|
+
match_on: command
|
|
203
|
+
title: "PowerShell XOR decryption"
|
|
204
|
+
expires_at: null
|
|
205
|
+
revoked: false
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Windows persistence mechanism threat patterns for Sage
|
|
2
|
+
# Author: Gen Digital Inc.
|
|
3
|
+
# License: DRL-1.1 (see threats/LICENSE)
|
|
4
|
+
# Covers: Registry Run keys, Services, Task Scheduler, Startup folder
|
|
5
|
+
|
|
6
|
+
# Registry Run key via reg add
|
|
7
|
+
- id: "CLT-WIN-PERSIST-001"
|
|
8
|
+
category: tool
|
|
9
|
+
severity: critical
|
|
10
|
+
confidence: 0.90
|
|
11
|
+
action: block
|
|
12
|
+
pattern: "\\b[Rr][Ee][Gg]\\b\\s+[Aa][Dd][Dd].*\\\\(Run|RunOnce)\\\\"
|
|
13
|
+
match_on: command
|
|
14
|
+
title: "Registry Run key persistence via reg add"
|
|
15
|
+
expires_at: null
|
|
16
|
+
revoked: false
|
|
17
|
+
|
|
18
|
+
# sc create/config service
|
|
19
|
+
- id: "CLT-WIN-PERSIST-002"
|
|
20
|
+
category: tool
|
|
21
|
+
severity: critical
|
|
22
|
+
confidence: 0.90
|
|
23
|
+
action: block
|
|
24
|
+
pattern: "\\b[Ss][Cc]\\b\\s+(create|config).*binpath"
|
|
25
|
+
match_on: command
|
|
26
|
+
title: "Windows service creation/modification via sc"
|
|
27
|
+
expires_at: null
|
|
28
|
+
revoked: false
|
|
29
|
+
|
|
30
|
+
# schtasks /create
|
|
31
|
+
- id: "CLT-WIN-PERSIST-003"
|
|
32
|
+
category: tool
|
|
33
|
+
severity: high
|
|
34
|
+
confidence: 0.85
|
|
35
|
+
action: require_approval
|
|
36
|
+
pattern: "\\b[Ss][Cc][Hh][Tt][Aa][Ss][Kk][Ss]\\b.*/[Cc]reate"
|
|
37
|
+
match_on: command
|
|
38
|
+
title: "Scheduled task creation via schtasks"
|
|
39
|
+
expires_at: null
|
|
40
|
+
revoked: false
|
|
41
|
+
|
|
42
|
+
# PowerShell New-ScheduledTask
|
|
43
|
+
- id: "CLT-WIN-PERSIST-004"
|
|
44
|
+
category: tool
|
|
45
|
+
severity: high
|
|
46
|
+
confidence: 0.85
|
|
47
|
+
action: require_approval
|
|
48
|
+
pattern: "[Nn]ew-[Ss]cheduled[Tt]ask"
|
|
49
|
+
match_on: command
|
|
50
|
+
title: "PowerShell scheduled task creation"
|
|
51
|
+
expires_at: null
|
|
52
|
+
revoked: false
|
|
53
|
+
|
|
54
|
+
# PowerShell Set-ItemProperty Run key
|
|
55
|
+
- id: "CLT-WIN-PERSIST-005"
|
|
56
|
+
category: tool
|
|
57
|
+
severity: critical
|
|
58
|
+
confidence: 0.90
|
|
59
|
+
action: block
|
|
60
|
+
pattern: "[Ss]et-[Ii]tem[Pp]roperty.*\\\\(Run|RunOnce)\\\\"
|
|
61
|
+
match_on: command
|
|
62
|
+
title: "PowerShell Registry Run key persistence"
|
|
63
|
+
expires_at: null
|
|
64
|
+
revoked: false
|
|
65
|
+
|
|
66
|
+
# PowerShell New-Service
|
|
67
|
+
- id: "CLT-WIN-PERSIST-006"
|
|
68
|
+
category: tool
|
|
69
|
+
severity: high
|
|
70
|
+
confidence: 0.85
|
|
71
|
+
action: require_approval
|
|
72
|
+
pattern: "\\b[Nn]ew-[Ss]ervice\\b"
|
|
73
|
+
match_on: command
|
|
74
|
+
title: "PowerShell Windows service creation"
|
|
75
|
+
expires_at: null
|
|
76
|
+
revoked: false
|
|
77
|
+
|
|
78
|
+
# Startup folder path
|
|
79
|
+
- id: "CLT-WIN-PERSIST-007"
|
|
80
|
+
category: tool
|
|
81
|
+
severity: high
|
|
82
|
+
confidence: 0.85
|
|
83
|
+
action: require_approval
|
|
84
|
+
pattern: "\\\\(Startup|Start Menu\\\\Programs\\\\Startup)\\\\"
|
|
85
|
+
match_on: command
|
|
86
|
+
title: "Startup folder drop (persistence)"
|
|
87
|
+
expires_at: null
|
|
88
|
+
revoked: false
|
|
89
|
+
|
|
90
|
+
# WMI event subscription persistence
|
|
91
|
+
- id: "CLT-WIN-PERSIST-008"
|
|
92
|
+
category: tool
|
|
93
|
+
severity: critical
|
|
94
|
+
confidence: 0.90
|
|
95
|
+
action: block
|
|
96
|
+
pattern: "\\b(CommandLineEventConsumer|ActiveScriptEventConsumer)\\b"
|
|
97
|
+
match_on: command
|
|
98
|
+
title: "WMI event subscription persistence"
|
|
99
|
+
expires_at: null
|
|
100
|
+
revoked: false
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Windows supply chain threat patterns for Sage
|
|
2
|
+
# Author: Gen Digital Inc.
|
|
3
|
+
# License: DRL-1.1 (see threats/LICENSE)
|
|
4
|
+
|
|
5
|
+
# Install-Module without -RequiredVersion
|
|
6
|
+
- id: "CLT-WIN-SUPPLY-001"
|
|
7
|
+
category: supply_chain
|
|
8
|
+
severity: medium
|
|
9
|
+
confidence: 0.65
|
|
10
|
+
action: require_approval
|
|
11
|
+
pattern: "[Ii]nstall-[Mm]odule\\s+(?!.*-[Rr]equired[Vv]ersion)"
|
|
12
|
+
match_on: command
|
|
13
|
+
title: "PowerShell Install-Module without -RequiredVersion"
|
|
14
|
+
expires_at: null
|
|
15
|
+
revoked: false
|