@gendigital/sage-opencode 0.10.0 → 0.11.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/README.md +5 -5
- package/dist/bundled-dirs.d.ts +1 -1
- package/dist/bundled-dirs.d.ts.map +1 -1
- package/dist/bundled-dirs.js +1 -1
- package/dist/bundled-dirs.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.cjs +31776 -0
- package/dist/mcp-server.cjs.map +7 -0
- package/dist/startup-scan.d.ts.map +1 -1
- package/dist/startup-scan.js +3 -2
- package/dist/startup-scan.js.map +1 -1
- package/dist/tool-handler.d.ts +1 -1
- package/dist/tool-handler.d.ts.map +1 -1
- package/dist/tool-handler.js +9 -3
- package/dist/tool-handler.js.map +1 -1
- package/package.json +5 -3
- package/resources/threats/agent-layer.yaml +186 -0
- package/resources/threats/commands.yaml +24 -53
- package/resources/threats/credentials.yaml +12 -20
- package/resources/threats/dummy.yaml +22 -33
- package/resources/threats/files.yaml +34 -53
- package/resources/threats/mac-commands.yaml +20 -47
- package/resources/threats/mac-credentials.yaml +4 -12
- package/resources/threats/mac-files.yaml +5 -15
- package/resources/threats/mac-obfuscation.yaml +6 -13
- package/resources/threats/mac-persistence.yaml +11 -20
- package/resources/threats/mac-supply-chain.yaml +5 -8
- package/resources/threats/mitre.yaml +105 -167
- package/resources/threats/obfuscation.yaml +7 -15
- package/resources/threats/persistence.yaml +10 -17
- package/resources/threats/prompt-injection.yaml +92 -43
- package/resources/threats/self-defense.yaml +8 -12
- package/resources/threats/supply_chain.yaml +1 -2
- package/resources/threats/urls.yaml +9 -14
- package/resources/threats/win-commands.yaml +46 -106
- package/resources/threats/win-credentials.yaml +14 -24
- package/resources/threats/win-files.yaml +10 -20
- package/resources/threats/win-obfuscation.yaml +21 -37
- package/resources/threats/win-persistence.yaml +8 -16
- package/resources/threats/win-supply-chain.yaml +2 -3
- /package/resources/{allowlists → trusted-domains}/trusted-installer-domains.yaml +0 -0
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
category: tool
|
|
11
11
|
severity: critical
|
|
12
12
|
confidence: 0.95
|
|
13
|
-
action: block
|
|
14
13
|
pattern: "\\bosascript\\b.*-e.*do shell script"
|
|
15
14
|
case_insensitive: true
|
|
16
15
|
match_on: command
|
|
@@ -23,7 +22,6 @@
|
|
|
23
22
|
category: tool
|
|
24
23
|
severity: critical
|
|
25
24
|
confidence: 0.90
|
|
26
|
-
action: block
|
|
27
25
|
pattern: "\\bosascript\\b.*-l\\s+JavaScript"
|
|
28
26
|
case_insensitive: true
|
|
29
27
|
match_on: command
|
|
@@ -36,7 +34,6 @@
|
|
|
36
34
|
category: tool
|
|
37
35
|
severity: critical
|
|
38
36
|
confidence: 0.90
|
|
39
|
-
action: block
|
|
40
37
|
pattern: "\\|\\s*osascript"
|
|
41
38
|
match_on: command
|
|
42
39
|
title: "Piped input to osascript (stdin AppleScript execution)"
|
|
@@ -48,7 +45,6 @@
|
|
|
48
45
|
category: tool
|
|
49
46
|
severity: critical
|
|
50
47
|
confidence: 0.90
|
|
51
|
-
action: block
|
|
52
48
|
pattern: "(curl|wget).*\\|.*osascript|osascript.*(curl|wget)"
|
|
53
49
|
case_insensitive: true
|
|
54
50
|
match_on: command
|
|
@@ -61,9 +57,8 @@
|
|
|
61
57
|
# open -a Terminal (launch Terminal with script)
|
|
62
58
|
- id: "CLT-MAC-CMD-005"
|
|
63
59
|
category: tool
|
|
64
|
-
severity:
|
|
65
|
-
confidence: 0.
|
|
66
|
-
action: require_approval
|
|
60
|
+
severity: warning
|
|
61
|
+
confidence: 0.60
|
|
67
62
|
pattern: "\\bopen\\s+-a\\s+Terminal"
|
|
68
63
|
match_on: command
|
|
69
64
|
title: "Launch Terminal application via open -a"
|
|
@@ -73,9 +68,8 @@
|
|
|
73
68
|
# open with hidden/background flags
|
|
74
69
|
- id: "CLT-MAC-CMD-006"
|
|
75
70
|
category: tool
|
|
76
|
-
severity:
|
|
77
|
-
confidence: 0.
|
|
78
|
-
action: require_approval
|
|
71
|
+
severity: warning
|
|
72
|
+
confidence: 0.60
|
|
79
73
|
pattern: "\\bopen\\s+(-[jg]|--hide|--background)"
|
|
80
74
|
match_on: command
|
|
81
75
|
title: "Launch application hidden/background via open"
|
|
@@ -87,9 +81,8 @@
|
|
|
87
81
|
# dscl user/group manipulation
|
|
88
82
|
- id: "CLT-MAC-CMD-007"
|
|
89
83
|
category: tool
|
|
90
|
-
severity:
|
|
91
|
-
confidence: 0.
|
|
92
|
-
action: require_approval
|
|
84
|
+
severity: warning
|
|
85
|
+
confidence: 0.60
|
|
93
86
|
pattern: "\\bdscl\\b.*(-create|-delete|-passwd|-append)"
|
|
94
87
|
match_on: command
|
|
95
88
|
title: "Directory Services user/group manipulation via dscl"
|
|
@@ -99,9 +92,8 @@
|
|
|
99
92
|
# networksetup proxy/DNS manipulation
|
|
100
93
|
- id: "CLT-MAC-CMD-008"
|
|
101
94
|
category: tool
|
|
102
|
-
severity:
|
|
103
|
-
confidence: 0.
|
|
104
|
-
action: require_approval
|
|
95
|
+
severity: warning
|
|
96
|
+
confidence: 0.60
|
|
105
97
|
pattern: "\\bnetworksetup\\b.*(-setwebproxy|-setsocksfirewallproxy|-setdnsservers|-setautoproxyurl)"
|
|
106
98
|
case_insensitive: true
|
|
107
99
|
match_on: command
|
|
@@ -114,7 +106,6 @@
|
|
|
114
106
|
category: tool
|
|
115
107
|
severity: critical
|
|
116
108
|
confidence: 0.90
|
|
117
|
-
action: block
|
|
118
109
|
pattern: "\\bsystemsetup\\b.*(-setremotelogin\\s+on|-setwakeonnetworkaccess\\s+on)"
|
|
119
110
|
case_insensitive: true
|
|
120
111
|
match_on: command
|
|
@@ -127,7 +118,6 @@
|
|
|
127
118
|
category: tool
|
|
128
119
|
severity: critical
|
|
129
120
|
confidence: 0.90
|
|
130
|
-
action: block
|
|
131
121
|
pattern: "kickstart.*-activate.*-configure"
|
|
132
122
|
case_insensitive: true
|
|
133
123
|
match_on: command
|
|
@@ -138,9 +128,8 @@
|
|
|
138
128
|
# installer -pkg -target / (silent package install)
|
|
139
129
|
- id: "CLT-MAC-CMD-011"
|
|
140
130
|
category: tool
|
|
141
|
-
severity:
|
|
142
|
-
confidence: 0.
|
|
143
|
-
action: require_approval
|
|
131
|
+
severity: warning
|
|
132
|
+
confidence: 0.60
|
|
144
133
|
pattern: "\\binstaller\\b.*-pkg.*-target"
|
|
145
134
|
case_insensitive: true
|
|
146
135
|
match_on: command
|
|
@@ -151,9 +140,8 @@
|
|
|
151
140
|
# hdiutil mount remote DMG
|
|
152
141
|
- id: "CLT-MAC-CMD-012"
|
|
153
142
|
category: tool
|
|
154
|
-
severity:
|
|
155
|
-
confidence: 0.
|
|
156
|
-
action: require_approval
|
|
143
|
+
severity: warning
|
|
144
|
+
confidence: 0.60
|
|
157
145
|
pattern: "\\bhdiutil\\b.*\\b(attach|mount)\\b.*https?://"
|
|
158
146
|
case_insensitive: true
|
|
159
147
|
match_on: command
|
|
@@ -164,9 +152,8 @@
|
|
|
164
152
|
# pkgutil --forget (package receipt manipulation)
|
|
165
153
|
- id: "CLT-MAC-CMD-013"
|
|
166
154
|
category: tool
|
|
167
|
-
severity:
|
|
168
|
-
confidence: 0.
|
|
169
|
-
action: require_approval
|
|
155
|
+
severity: warning
|
|
156
|
+
confidence: 0.60
|
|
170
157
|
pattern: "\\bpkgutil\\b.*--forget"
|
|
171
158
|
match_on: command
|
|
172
159
|
title: "Package receipt removal via pkgutil --forget"
|
|
@@ -180,7 +167,6 @@
|
|
|
180
167
|
category: tool
|
|
181
168
|
severity: critical
|
|
182
169
|
confidence: 0.95
|
|
183
|
-
action: block
|
|
184
170
|
pattern: "\\bdiskutil\\b.*\\b(eraseDisk|partitionDisk|secureErase)\\b"
|
|
185
171
|
match_on: command
|
|
186
172
|
title: "Disk erase/partition via diskutil"
|
|
@@ -192,7 +178,6 @@
|
|
|
192
178
|
category: tool
|
|
193
179
|
severity: critical
|
|
194
180
|
confidence: 0.95
|
|
195
|
-
action: block
|
|
196
181
|
pattern: "\\btmutil\\b.*\\b(delete|disable)\\b"
|
|
197
182
|
match_on: command
|
|
198
183
|
title: "Time Machine backup deletion/disable via tmutil (ransomware indicator)"
|
|
@@ -206,7 +191,6 @@
|
|
|
206
191
|
category: tool
|
|
207
192
|
severity: critical
|
|
208
193
|
confidence: 0.95
|
|
209
|
-
action: block
|
|
210
194
|
pattern: "\\bspctl\\b.*--master-disable"
|
|
211
195
|
match_on: command
|
|
212
196
|
title: "Gatekeeper disable via spctl --master-disable"
|
|
@@ -218,7 +202,6 @@
|
|
|
218
202
|
category: tool
|
|
219
203
|
severity: critical
|
|
220
204
|
confidence: 0.95
|
|
221
|
-
action: block
|
|
222
205
|
pattern: "\\bcsrutil\\b.*\\bdisable\\b"
|
|
223
206
|
match_on: command
|
|
224
207
|
title: "System Integrity Protection disable via csrutil"
|
|
@@ -230,7 +213,6 @@
|
|
|
230
213
|
category: tool
|
|
231
214
|
severity: critical
|
|
232
215
|
confidence: 0.90
|
|
233
|
-
action: block
|
|
234
216
|
pattern: "\\bdefaults\\b.*\\bwrite\\b.*LSQuarantine"
|
|
235
217
|
case_insensitive: true
|
|
236
218
|
match_on: command
|
|
@@ -241,9 +223,8 @@
|
|
|
241
223
|
# xattr -d com.apple.quarantine (quarantine removal)
|
|
242
224
|
- id: "CLT-MAC-CMD-019"
|
|
243
225
|
category: tool
|
|
244
|
-
severity:
|
|
245
|
-
confidence: 0.
|
|
246
|
-
action: require_approval
|
|
226
|
+
severity: warning
|
|
227
|
+
confidence: 0.60
|
|
247
228
|
pattern: "\\bxattr\\b.*-d.*com\\.apple\\.quarantine"
|
|
248
229
|
match_on: command
|
|
249
230
|
title: "Quarantine attribute removal via xattr"
|
|
@@ -255,7 +236,6 @@
|
|
|
255
236
|
category: tool
|
|
256
237
|
severity: critical
|
|
257
238
|
confidence: 0.90
|
|
258
|
-
action: block
|
|
259
239
|
pattern: "\\bpfctl\\b.*\\s-d\\b"
|
|
260
240
|
match_on: command
|
|
261
241
|
title: "Packet filter (firewall) disable via pfctl -d"
|
|
@@ -267,7 +247,6 @@
|
|
|
267
247
|
category: tool
|
|
268
248
|
severity: critical
|
|
269
249
|
confidence: 0.90
|
|
270
|
-
action: block
|
|
271
250
|
pattern: "\\btccutil\\b.*\\breset\\b"
|
|
272
251
|
match_on: command
|
|
273
252
|
title: "TCC privacy permissions reset via tccutil"
|
|
@@ -279,7 +258,6 @@
|
|
|
279
258
|
category: tool
|
|
280
259
|
severity: critical
|
|
281
260
|
confidence: 0.90
|
|
282
|
-
action: block
|
|
283
261
|
pattern: "\\blaunchctl\\b.*\\b(unload|bootout)\\b.*(com\\.apple\\.MRT|com\\.apple\\.XProtect|com\\.apple\\.security)"
|
|
284
262
|
case_insensitive: true
|
|
285
263
|
match_on: command
|
|
@@ -292,7 +270,6 @@
|
|
|
292
270
|
category: tool
|
|
293
271
|
severity: critical
|
|
294
272
|
confidence: 0.90
|
|
295
|
-
action: block
|
|
296
273
|
pattern: "\\bdefaults\\b.*\\bwrite\\b.*(com\\.apple\\.Finder\\s+AppleShowAllFiles|com\\.apple\\.LaunchServices\\s+LSQuarantine|com\\.apple\\.loginwindow)"
|
|
297
274
|
case_insensitive: true
|
|
298
275
|
match_on: command
|
|
@@ -307,7 +284,6 @@
|
|
|
307
284
|
category: tool
|
|
308
285
|
severity: critical
|
|
309
286
|
confidence: 0.90
|
|
310
|
-
action: block
|
|
311
287
|
pattern: "\\bdscl\\b.*\\s-passwd\\b"
|
|
312
288
|
match_on: command
|
|
313
289
|
title: "User password change via dscl"
|
|
@@ -319,7 +295,6 @@
|
|
|
319
295
|
category: tool
|
|
320
296
|
severity: critical
|
|
321
297
|
confidence: 0.95
|
|
322
|
-
action: block
|
|
323
298
|
pattern: "\\bdseditgroup\\b.*-o\\s+edit.*-a.*admin"
|
|
324
299
|
match_on: command
|
|
325
300
|
title: "Add user to admin group via dseditgroup"
|
|
@@ -329,9 +304,8 @@
|
|
|
329
304
|
# createhomedir — create home directory for arbitrary user
|
|
330
305
|
- id: "CLT-MAC-CMD-026"
|
|
331
306
|
category: tool
|
|
332
|
-
severity:
|
|
333
|
-
confidence: 0.
|
|
334
|
-
action: require_approval
|
|
307
|
+
severity: warning
|
|
308
|
+
confidence: 0.60
|
|
335
309
|
pattern: "\\bcreatehomedir\\b"
|
|
336
310
|
match_on: command
|
|
337
311
|
title: "Create home directory for user via createhomedir"
|
|
@@ -345,9 +319,8 @@
|
|
|
345
319
|
# screencapture to remote or hidden location
|
|
346
320
|
- id: "CLT-MAC-CMD-027"
|
|
347
321
|
category: tool
|
|
348
|
-
severity:
|
|
349
|
-
confidence: 0.
|
|
350
|
-
action: require_approval
|
|
322
|
+
severity: warning
|
|
323
|
+
confidence: 0.60
|
|
351
324
|
pattern: "\\bscreencapture\\b.*(-x|-C)"
|
|
352
325
|
match_on: command
|
|
353
326
|
title: "Silent screen capture via screencapture"
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
category: secrets
|
|
8
8
|
severity: critical
|
|
9
9
|
confidence: 0.95
|
|
10
|
-
action: block
|
|
11
10
|
pattern: "\\bsecurity\\b.*\\bfind-generic-password\\b.*-w"
|
|
12
11
|
match_on: command
|
|
13
12
|
title: "Keychain password extraction via security find-generic-password"
|
|
@@ -19,7 +18,6 @@
|
|
|
19
18
|
category: secrets
|
|
20
19
|
severity: critical
|
|
21
20
|
confidence: 0.95
|
|
22
|
-
action: block
|
|
23
21
|
pattern: "\\bsecurity\\b.*\\bfind-internet-password\\b.*-w"
|
|
24
22
|
match_on: command
|
|
25
23
|
title: "Keychain internet password extraction via security find-internet-password"
|
|
@@ -31,7 +29,6 @@
|
|
|
31
29
|
category: secrets
|
|
32
30
|
severity: critical
|
|
33
31
|
confidence: 0.95
|
|
34
|
-
action: block
|
|
35
32
|
pattern: "\\bsecurity\\b.*\\bdump-keychain\\b"
|
|
36
33
|
match_on: command
|
|
37
34
|
title: "Full keychain dump via security dump-keychain"
|
|
@@ -43,7 +40,6 @@
|
|
|
43
40
|
category: secrets
|
|
44
41
|
severity: critical
|
|
45
42
|
confidence: 0.90
|
|
46
|
-
action: block
|
|
47
43
|
pattern: "\\bsecurity\\b.*\\bunlock-keychain\\b.*-p"
|
|
48
44
|
match_on: command
|
|
49
45
|
title: "Keychain unlock with plaintext password"
|
|
@@ -53,9 +49,8 @@
|
|
|
53
49
|
# Keychain export
|
|
54
50
|
- id: "CLT-MAC-CRED-005"
|
|
55
51
|
category: secrets
|
|
56
|
-
severity:
|
|
57
|
-
confidence: 0.
|
|
58
|
-
action: require_approval
|
|
52
|
+
severity: warning
|
|
53
|
+
confidence: 0.60
|
|
59
54
|
pattern: "\\bsecurity\\b.*\\bexport\\b.*-k"
|
|
60
55
|
match_on: command
|
|
61
56
|
title: "Keychain item export via security export"
|
|
@@ -67,7 +62,6 @@
|
|
|
67
62
|
category: secrets
|
|
68
63
|
severity: critical
|
|
69
64
|
confidence: 0.90
|
|
70
|
-
action: block
|
|
71
65
|
pattern: "\\bsecurity\\b.*\\bdelete-keychain\\b"
|
|
72
66
|
match_on: command
|
|
73
67
|
title: "Keychain deletion via security delete-keychain"
|
|
@@ -77,9 +71,8 @@
|
|
|
77
71
|
# Directory Services auth data read
|
|
78
72
|
- id: "CLT-MAC-CRED-007"
|
|
79
73
|
category: secrets
|
|
80
|
-
severity:
|
|
81
|
-
confidence: 0.
|
|
82
|
-
action: require_approval
|
|
74
|
+
severity: warning
|
|
75
|
+
confidence: 0.60
|
|
83
76
|
pattern: "\\bdscl\\b.*-read.*(AuthenticationAuthority|Password|ShadowHash)"
|
|
84
77
|
match_on: command
|
|
85
78
|
title: "Read user authentication data via dscl"
|
|
@@ -91,7 +84,6 @@
|
|
|
91
84
|
category: secrets
|
|
92
85
|
severity: critical
|
|
93
86
|
confidence: 0.90
|
|
94
|
-
action: block
|
|
95
87
|
pattern: "\\bsqlite3\\b.*(/Library/Keychains/|login\\.keychain)"
|
|
96
88
|
match_on: command
|
|
97
89
|
title: "Direct Keychain database access via sqlite3"
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
# LaunchAgent/LaunchDaemon plist (migrated from files.yaml CLT-FILE-005)
|
|
7
7
|
- id: "CLT-MAC-FILE-001"
|
|
8
8
|
category: tool
|
|
9
|
-
severity:
|
|
9
|
+
severity: warning
|
|
10
10
|
confidence: 0.90
|
|
11
|
-
action: block
|
|
12
11
|
pattern: "(LaunchAgents|LaunchDaemons)/.*\\.plist$"
|
|
13
12
|
match_on: file_path
|
|
14
13
|
title: "Access macOS LaunchAgent/LaunchDaemon plist"
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
category: secrets
|
|
21
20
|
severity: critical
|
|
22
21
|
confidence: 0.95
|
|
23
|
-
action: block
|
|
24
22
|
pattern: "com\\.apple\\.TCC/TCC\\.db"
|
|
25
23
|
match_on: file_path
|
|
26
24
|
title: "Access TCC privacy permissions database"
|
|
@@ -32,7 +30,6 @@
|
|
|
32
30
|
category: secrets
|
|
33
31
|
severity: critical
|
|
34
32
|
confidence: 0.95
|
|
35
|
-
action: block
|
|
36
33
|
pattern: "(/etc/authorization|/var/db/auth\\.db)"
|
|
37
34
|
match_on: file_path
|
|
38
35
|
title: "Access macOS authorization database"
|
|
@@ -44,7 +41,6 @@
|
|
|
44
41
|
category: tool
|
|
45
42
|
severity: critical
|
|
46
43
|
confidence: 0.90
|
|
47
|
-
action: block
|
|
48
44
|
pattern: "(/Library/Extensions/|/System/Library/Extensions/).*\\.kext"
|
|
49
45
|
match_on: file_path
|
|
50
46
|
title: "Access kernel extension (.kext)"
|
|
@@ -56,7 +52,6 @@
|
|
|
56
52
|
category: tool
|
|
57
53
|
severity: critical
|
|
58
54
|
confidence: 0.90
|
|
59
|
-
action: block
|
|
60
55
|
pattern: "/Library/Security/SecurityAgentPlugins/"
|
|
61
56
|
match_on: file_path
|
|
62
57
|
title: "Access SecurityAgentPlugins directory"
|
|
@@ -66,9 +61,8 @@
|
|
|
66
61
|
# Periodic scripts directory
|
|
67
62
|
- id: "CLT-MAC-FILE-006"
|
|
68
63
|
category: tool
|
|
69
|
-
severity:
|
|
70
|
-
confidence: 0.
|
|
71
|
-
action: require_approval
|
|
64
|
+
severity: warning
|
|
65
|
+
confidence: 0.60
|
|
72
66
|
pattern: "/etc/periodic/(daily|weekly|monthly)/"
|
|
73
67
|
match_on: file_path
|
|
74
68
|
title: "Access macOS periodic scripts directory"
|
|
@@ -80,7 +74,6 @@
|
|
|
80
74
|
category: tool
|
|
81
75
|
severity: critical
|
|
82
76
|
confidence: 0.90
|
|
83
|
-
action: block
|
|
84
77
|
pattern: "/etc/emond\\.d/rules/"
|
|
85
78
|
match_on: file_path
|
|
86
79
|
title: "Access Event Monitor daemon rules directory"
|
|
@@ -92,7 +85,6 @@
|
|
|
92
85
|
category: secrets
|
|
93
86
|
severity: critical
|
|
94
87
|
confidence: 0.90
|
|
95
|
-
action: block
|
|
96
88
|
pattern: "/Safari/(Cookies\\.binarycookies|LastSession\\.plist|Databases|LocalStorage)"
|
|
97
89
|
match_on: file_path
|
|
98
90
|
title: "Access Safari credential/cookie store"
|
|
@@ -102,9 +94,8 @@
|
|
|
102
94
|
# Managed Preferences (MDM profiles)
|
|
103
95
|
- id: "CLT-MAC-FILE-009"
|
|
104
96
|
category: tool
|
|
105
|
-
severity:
|
|
106
|
-
confidence: 0.
|
|
107
|
-
action: require_approval
|
|
97
|
+
severity: warning
|
|
98
|
+
confidence: 0.60
|
|
108
99
|
pattern: "/Library/Managed Preferences/"
|
|
109
100
|
match_on: file_path
|
|
110
101
|
title: "Access Managed Preferences (MDM profile injection)"
|
|
@@ -116,7 +107,6 @@
|
|
|
116
107
|
category: secrets
|
|
117
108
|
severity: critical
|
|
118
109
|
confidence: 0.90
|
|
119
|
-
action: block
|
|
120
110
|
pattern: "/Library/Keychains/.*\\.keychain"
|
|
121
111
|
match_on: file_path
|
|
122
112
|
title: "Access system Keychain file"
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
category: tool
|
|
8
8
|
severity: critical
|
|
9
9
|
confidence: 0.90
|
|
10
|
-
action: block
|
|
11
10
|
pattern: "\\bosascript\\b.*do shell script"
|
|
12
11
|
case_insensitive: true
|
|
13
12
|
match_on: command
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
category: tool
|
|
21
20
|
severity: critical
|
|
22
21
|
confidence: 0.90
|
|
23
|
-
action: block
|
|
24
22
|
pattern: "\\bosascript\\b.*-l\\s+JavaScript.*-e"
|
|
25
23
|
case_insensitive: true
|
|
26
24
|
match_on: command
|
|
@@ -33,7 +31,6 @@
|
|
|
33
31
|
category: tool
|
|
34
32
|
severity: critical
|
|
35
33
|
confidence: 0.95
|
|
36
|
-
action: block
|
|
37
34
|
pattern: "base64\\s+(-d|-D|--decode).*\\|.*osascript"
|
|
38
35
|
match_on: command
|
|
39
36
|
title: "Base64 decode piped to osascript (encoded payload execution)"
|
|
@@ -45,7 +42,6 @@
|
|
|
45
42
|
category: tool
|
|
46
43
|
severity: critical
|
|
47
44
|
confidence: 0.90
|
|
48
|
-
action: block
|
|
49
45
|
pattern: "DYLD_INSERT_LIBRARIES=.*\\.(dylib|so)"
|
|
50
46
|
match_on: command
|
|
51
47
|
title: "Dynamic library injection via DYLD_INSERT_LIBRARIES"
|
|
@@ -55,9 +51,8 @@
|
|
|
55
51
|
# Quarantine attribute removal (evasion)
|
|
56
52
|
- id: "CLT-MAC-OBFUS-005"
|
|
57
53
|
category: tool
|
|
58
|
-
severity:
|
|
59
|
-
confidence: 0.
|
|
60
|
-
action: require_approval
|
|
54
|
+
severity: warning
|
|
55
|
+
confidence: 0.60
|
|
61
56
|
pattern: "\\bxattr\\b.*(-d|-c).*com\\.apple\\.quarantine"
|
|
62
57
|
match_on: command
|
|
63
58
|
title: "Quarantine attribute removal (Gatekeeper evasion)"
|
|
@@ -69,9 +64,8 @@
|
|
|
69
64
|
# plutil plist manipulation (payload hiding)
|
|
70
65
|
- id: "CLT-MAC-OBFUS-006"
|
|
71
66
|
category: tool
|
|
72
|
-
severity:
|
|
73
|
-
confidence: 0.
|
|
74
|
-
action: require_approval
|
|
67
|
+
severity: warning
|
|
68
|
+
confidence: 0.60
|
|
75
69
|
pattern: "\\bplutil\\b.*-convert\\s+(binary1|raw)"
|
|
76
70
|
match_on: command
|
|
77
71
|
title: "Plist conversion to binary (payload obfuscation)"
|
|
@@ -81,9 +75,8 @@
|
|
|
81
75
|
# Swift/swiftc inline execution
|
|
82
76
|
- id: "CLT-MAC-OBFUS-007"
|
|
83
77
|
category: tool
|
|
84
|
-
severity:
|
|
85
|
-
confidence: 0.
|
|
86
|
-
action: require_approval
|
|
78
|
+
severity: warning
|
|
79
|
+
confidence: 0.60
|
|
87
80
|
pattern: "\\bswift\\b\\s+-e\\s+[\"'].*\\b(Process|NSTask|URLSession|shell)\\b"
|
|
88
81
|
case_insensitive: true
|
|
89
82
|
match_on: command
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
# LaunchAgent/LaunchDaemon plist (migrated from persistence.yaml CLT-PERSIST-004)
|
|
7
7
|
- id: "CLT-MAC-PERSIST-001"
|
|
8
8
|
category: tool
|
|
9
|
-
severity:
|
|
9
|
+
severity: warning
|
|
10
10
|
confidence: 0.90
|
|
11
|
-
action: block
|
|
12
11
|
pattern: "(LaunchAgents|LaunchDaemons)/.*\\.plist"
|
|
13
12
|
match_on: command
|
|
14
13
|
title: "macOS LaunchAgent/LaunchDaemon persistence"
|
|
@@ -18,9 +17,8 @@
|
|
|
18
17
|
# Login Items via osascript
|
|
19
18
|
- id: "CLT-MAC-PERSIST-002"
|
|
20
19
|
category: tool
|
|
21
|
-
severity:
|
|
22
|
-
confidence: 0.
|
|
23
|
-
action: require_approval
|
|
20
|
+
severity: warning
|
|
21
|
+
confidence: 0.60
|
|
24
22
|
pattern: "\\bosascript\\b.*login item"
|
|
25
23
|
case_insensitive: true
|
|
26
24
|
match_on: command
|
|
@@ -31,9 +29,8 @@
|
|
|
31
29
|
# Login window manipulation via defaults
|
|
32
30
|
- id: "CLT-MAC-PERSIST-003"
|
|
33
31
|
category: tool
|
|
34
|
-
severity:
|
|
35
|
-
confidence: 0.
|
|
36
|
-
action: require_approval
|
|
32
|
+
severity: warning
|
|
33
|
+
confidence: 0.60
|
|
37
34
|
pattern: "\\bdefaults\\b.*\\bwrite\\b.*loginwindow.*(AutoLaunch|LoginHook|LogoutHook)"
|
|
38
35
|
case_insensitive: true
|
|
39
36
|
match_on: command
|
|
@@ -46,7 +43,6 @@
|
|
|
46
43
|
category: tool
|
|
47
44
|
severity: critical
|
|
48
45
|
confidence: 0.90
|
|
49
|
-
action: block
|
|
50
46
|
pattern: "/Library/Security/SecurityAgentPlugins/"
|
|
51
47
|
match_on: command
|
|
52
48
|
title: "Authorization plugin drop in SecurityAgentPlugins"
|
|
@@ -56,9 +52,8 @@
|
|
|
56
52
|
# Periodic script drop
|
|
57
53
|
- id: "CLT-MAC-PERSIST-005"
|
|
58
54
|
category: tool
|
|
59
|
-
severity:
|
|
60
|
-
confidence: 0.
|
|
61
|
-
action: require_approval
|
|
55
|
+
severity: warning
|
|
56
|
+
confidence: 0.60
|
|
62
57
|
pattern: "/etc/periodic/(daily|weekly|monthly)/"
|
|
63
58
|
match_on: command
|
|
64
59
|
title: "Periodic script persistence drop"
|
|
@@ -72,7 +67,6 @@
|
|
|
72
67
|
category: tool
|
|
73
68
|
severity: critical
|
|
74
69
|
confidence: 0.90
|
|
75
|
-
action: block
|
|
76
70
|
pattern: "/etc/emond\\.d/rules/"
|
|
77
71
|
match_on: command
|
|
78
72
|
title: "Event Monitor daemon rules persistence"
|
|
@@ -84,7 +78,6 @@
|
|
|
84
78
|
category: tool
|
|
85
79
|
severity: critical
|
|
86
80
|
confidence: 0.90
|
|
87
|
-
action: block
|
|
88
81
|
pattern: "DYLD_INSERT_LIBRARIES"
|
|
89
82
|
match_on: command
|
|
90
83
|
title: "DYLD_INSERT_LIBRARIES dylib injection (persistence/hijack)"
|
|
@@ -94,9 +87,8 @@
|
|
|
94
87
|
# Folder Actions via osascript
|
|
95
88
|
- id: "CLT-MAC-PERSIST-008"
|
|
96
89
|
category: tool
|
|
97
|
-
severity:
|
|
98
|
-
confidence: 0.
|
|
99
|
-
action: require_approval
|
|
90
|
+
severity: warning
|
|
91
|
+
confidence: 0.60
|
|
100
92
|
pattern: "\\bosascript\\b.*folder action"
|
|
101
93
|
case_insensitive: true
|
|
102
94
|
match_on: command
|
|
@@ -107,9 +99,8 @@
|
|
|
107
99
|
# launchctl load/bootstrap persistent agent
|
|
108
100
|
- id: "CLT-MAC-PERSIST-009"
|
|
109
101
|
category: tool
|
|
110
|
-
severity:
|
|
111
|
-
confidence: 0.
|
|
112
|
-
action: require_approval
|
|
102
|
+
severity: warning
|
|
103
|
+
confidence: 0.60
|
|
113
104
|
pattern: "\\blaunchctl\\b.*\\b(load|bootstrap)\\b"
|
|
114
105
|
match_on: command
|
|
115
106
|
title: "Load persistent launch agent/daemon via launchctl"
|
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
# brew install without version pin
|
|
6
6
|
- id: "CLT-MAC-SUPPLY-001"
|
|
7
7
|
category: supply_chain
|
|
8
|
-
severity:
|
|
9
|
-
confidence: 0.
|
|
10
|
-
action: require_approval
|
|
8
|
+
severity: warning
|
|
9
|
+
confidence: 0.60
|
|
11
10
|
pattern: "\\bbrew\\s+install\\b(?!.*@\\d)"
|
|
12
11
|
match_on: command
|
|
13
12
|
title: "Homebrew install without version pin"
|
|
@@ -17,9 +16,8 @@
|
|
|
17
16
|
# installer -pkg from remote URL
|
|
18
17
|
- id: "CLT-MAC-SUPPLY-002"
|
|
19
18
|
category: supply_chain
|
|
20
|
-
severity:
|
|
19
|
+
severity: warning
|
|
21
20
|
confidence: 0.85
|
|
22
|
-
action: block
|
|
23
21
|
pattern: "\\binstaller\\b.*-pkg.*https?://"
|
|
24
22
|
case_insensitive: true
|
|
25
23
|
match_on: command
|
|
@@ -30,9 +28,8 @@
|
|
|
30
28
|
# brew install --cask from non-default tap
|
|
31
29
|
- id: "CLT-MAC-SUPPLY-003"
|
|
32
30
|
category: supply_chain
|
|
33
|
-
severity:
|
|
34
|
-
confidence: 0.
|
|
35
|
-
action: require_approval
|
|
31
|
+
severity: warning
|
|
32
|
+
confidence: 0.60
|
|
36
33
|
pattern: "\\bbrew\\s+(install|reinstall)\\s+--cask\\b"
|
|
37
34
|
match_on: command
|
|
38
35
|
title: "Homebrew cask install (binary application)"
|