nox-openclaw-hunter 1.0.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/LICENSE +21 -0
- package/README.md +140 -0
- package/bin/nox.js +2 -0
- package/dist/branding.d.ts +39 -0
- package/dist/branding.d.ts.map +1 -0
- package/dist/branding.js +66 -0
- package/dist/branding.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +94 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/export.d.ts +21 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +616 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +8 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/isolate.d.ts +30 -0
- package/dist/commands/isolate.d.ts.map +1 -0
- package/dist/commands/isolate.js +547 -0
- package/dist/commands/isolate.js.map +1 -0
- package/dist/commands/purge.d.ts +22 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +295 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/scan.d.ts +23 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +155 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/detector/app-bundle.d.ts +13 -0
- package/dist/detector/app-bundle.d.ts.map +1 -0
- package/dist/detector/app-bundle.js +27 -0
- package/dist/detector/app-bundle.js.map +1 -0
- package/dist/detector/cli-binary.d.ts +12 -0
- package/dist/detector/cli-binary.d.ts.map +1 -0
- package/dist/detector/cli-binary.js +66 -0
- package/dist/detector/cli-binary.js.map +1 -0
- package/dist/detector/config.d.ts +21 -0
- package/dist/detector/config.d.ts.map +1 -0
- package/dist/detector/config.js +337 -0
- package/dist/detector/config.js.map +1 -0
- package/dist/detector/detection-config.d.ts +24 -0
- package/dist/detector/detection-config.d.ts.map +1 -0
- package/dist/detector/detection-config.js +242 -0
- package/dist/detector/detection-config.js.map +1 -0
- package/dist/detector/docker.d.ts +10 -0
- package/dist/detector/docker.d.ts.map +1 -0
- package/dist/detector/docker.js +94 -0
- package/dist/detector/docker.js.map +1 -0
- package/dist/detector/index.d.ts +50 -0
- package/dist/detector/index.d.ts.map +1 -0
- package/dist/detector/index.js +155 -0
- package/dist/detector/index.js.map +1 -0
- package/dist/detector/network.d.ts +34 -0
- package/dist/detector/network.d.ts.map +1 -0
- package/dist/detector/network.js +205 -0
- package/dist/detector/network.js.map +1 -0
- package/dist/detector/process.d.ts +16 -0
- package/dist/detector/process.d.ts.map +1 -0
- package/dist/detector/process.js +47 -0
- package/dist/detector/process.js.map +1 -0
- package/dist/detector/service.d.ts +17 -0
- package/dist/detector/service.d.ts.map +1 -0
- package/dist/detector/service.js +51 -0
- package/dist/detector/service.js.map +1 -0
- package/dist/enforcer/docker-cleaner.d.ts +30 -0
- package/dist/enforcer/docker-cleaner.d.ts.map +1 -0
- package/dist/enforcer/docker-cleaner.js +163 -0
- package/dist/enforcer/docker-cleaner.js.map +1 -0
- package/dist/enforcer/file-remover.d.ts +34 -0
- package/dist/enforcer/file-remover.d.ts.map +1 -0
- package/dist/enforcer/file-remover.js +137 -0
- package/dist/enforcer/file-remover.js.map +1 -0
- package/dist/enforcer/index.d.ts +33 -0
- package/dist/enforcer/index.d.ts.map +1 -0
- package/dist/enforcer/index.js +142 -0
- package/dist/enforcer/index.js.map +1 -0
- package/dist/enforcer/process-killer.d.ts +18 -0
- package/dist/enforcer/process-killer.d.ts.map +1 -0
- package/dist/enforcer/process-killer.js +80 -0
- package/dist/enforcer/process-killer.js.map +1 -0
- package/dist/enforcer/service-stopper.d.ts +23 -0
- package/dist/enforcer/service-stopper.d.ts.map +1 -0
- package/dist/enforcer/service-stopper.js +95 -0
- package/dist/enforcer/service-stopper.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/isolator/firewall.d.ts +25 -0
- package/dist/isolator/firewall.d.ts.map +1 -0
- package/dist/isolator/firewall.js +114 -0
- package/dist/isolator/firewall.js.map +1 -0
- package/dist/isolator/index.d.ts +63 -0
- package/dist/isolator/index.d.ts.map +1 -0
- package/dist/isolator/index.js +201 -0
- package/dist/isolator/index.js.map +1 -0
- package/dist/isolator/lockdown.d.ts +22 -0
- package/dist/isolator/lockdown.d.ts.map +1 -0
- package/dist/isolator/lockdown.js +401 -0
- package/dist/isolator/lockdown.js.map +1 -0
- package/dist/isolator/quarantine.d.ts +39 -0
- package/dist/isolator/quarantine.d.ts.map +1 -0
- package/dist/isolator/quarantine.js +364 -0
- package/dist/isolator/quarantine.js.map +1 -0
- package/dist/mdm/index.d.ts +93 -0
- package/dist/mdm/index.d.ts.map +1 -0
- package/dist/mdm/index.js +414 -0
- package/dist/mdm/index.js.map +1 -0
- package/dist/mdm/intune.d.ts +69 -0
- package/dist/mdm/intune.d.ts.map +1 -0
- package/dist/mdm/intune.js +409 -0
- package/dist/mdm/intune.js.map +1 -0
- package/dist/mdm/jamf.d.ts +58 -0
- package/dist/mdm/jamf.d.ts.map +1 -0
- package/dist/mdm/jamf.js +441 -0
- package/dist/mdm/jamf.js.map +1 -0
- package/dist/mdm/jumpcloud.d.ts +73 -0
- package/dist/mdm/jumpcloud.d.ts.map +1 -0
- package/dist/mdm/jumpcloud.js +470 -0
- package/dist/mdm/jumpcloud.js.map +1 -0
- package/dist/mdm/templates/detect.ps1.d.ts +30 -0
- package/dist/mdm/templates/detect.ps1.d.ts.map +1 -0
- package/dist/mdm/templates/detect.ps1.js +463 -0
- package/dist/mdm/templates/detect.ps1.js.map +1 -0
- package/dist/mdm/templates/detect.sh.d.ts +30 -0
- package/dist/mdm/templates/detect.sh.d.ts.map +1 -0
- package/dist/mdm/templates/detect.sh.js +474 -0
- package/dist/mdm/templates/detect.sh.js.map +1 -0
- package/dist/mdm/templates/enforce.ps1.d.ts +33 -0
- package/dist/mdm/templates/enforce.ps1.d.ts.map +1 -0
- package/dist/mdm/templates/enforce.ps1.js +681 -0
- package/dist/mdm/templates/enforce.ps1.js.map +1 -0
- package/dist/mdm/templates/enforce.sh.d.ts +33 -0
- package/dist/mdm/templates/enforce.sh.d.ts.map +1 -0
- package/dist/mdm/templates/enforce.sh.js +591 -0
- package/dist/mdm/templates/enforce.sh.js.map +1 -0
- package/dist/platform/darwin.d.ts +6 -0
- package/dist/platform/darwin.d.ts.map +1 -0
- package/dist/platform/darwin.js +192 -0
- package/dist/platform/darwin.js.map +1 -0
- package/dist/platform/index.d.ts +43 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +27 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/linux.d.ts +6 -0
- package/dist/platform/linux.d.ts.map +1 -0
- package/dist/platform/linux.js +134 -0
- package/dist/platform/linux.js.map +1 -0
- package/dist/platform/windows.d.ts +6 -0
- package/dist/platform/windows.d.ts.map +1 -0
- package/dist/platform/windows.js +134 -0
- package/dist/platform/windows.js.map +1 -0
- package/dist/reporter/console.d.ts +27 -0
- package/dist/reporter/console.d.ts.map +1 -0
- package/dist/reporter/console.js +431 -0
- package/dist/reporter/console.js.map +1 -0
- package/dist/reporter/index.d.ts +11 -0
- package/dist/reporter/index.d.ts.map +1 -0
- package/dist/reporter/index.js +13 -0
- package/dist/reporter/index.js.map +1 -0
- package/dist/reporter/json.d.ts +61 -0
- package/dist/reporter/json.d.ts.map +1 -0
- package/dist/reporter/json.js +75 -0
- package/dist/reporter/json.js.map +1 -0
- package/dist/reporter/webhook.d.ts +57 -0
- package/dist/reporter/webhook.d.ts.map +1 -0
- package/dist/reporter/webhook.js +230 -0
- package/dist/reporter/webhook.js.map +1 -0
- package/dist/types/config.d.ts +116 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/detection.d.ts +85 -0
- package/dist/types/detection.d.ts.map +1 -0
- package/dist/types/detection.js +5 -0
- package/dist/types/detection.js.map +1 -0
- package/dist/types/enforcement.d.ts +33 -0
- package/dist/types/enforcement.d.ts.map +1 -0
- package/dist/types/enforcement.js +5 -0
- package/dist/types/enforcement.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/isolation.d.ts +55 -0
- package/dist/types/isolation.d.ts.map +1 -0
- package/dist/types/isolation.js +5 -0
- package/dist/types/isolation.js.map +1 -0
- package/dist/utils/exec.d.ts +48 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +103 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/fs.d.ts +34 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +111 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +48 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/intune.md +390 -0
- package/docs/jamf.md +400 -0
- package/docs/jumpcloud.md +510 -0
- package/package.json +65 -0
package/docs/jamf.md
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
# Jamf Pro Integration Guide
|
|
2
|
+
|
|
3
|
+
Deploy Nox OpenClaw detection and enforcement scripts across your macOS fleet using Jamf Pro.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This guide explains how to:
|
|
8
|
+
|
|
9
|
+
1. Add detection and enforcement scripts to Jamf Pro
|
|
10
|
+
2. Create policies for automated scanning
|
|
11
|
+
3. Set up extension attributes for inventory
|
|
12
|
+
4. Create Smart Groups for targeting
|
|
13
|
+
5. Configure webhook integration for SIEM alerting
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Jamf Pro 10.x or later
|
|
18
|
+
- macOS 10.15+ managed devices
|
|
19
|
+
- Admin access to Jamf Pro console
|
|
20
|
+
- (Optional) Webhook endpoint for SIEM integration
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
1. Generate scripts:
|
|
25
|
+
```bash
|
|
26
|
+
nox export --platform jamf --mode detect --output ./jamf-scripts
|
|
27
|
+
nox export --platform jamf --mode enforce --output ./jamf-scripts
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. Upload scripts to Jamf Pro
|
|
31
|
+
3. Create detection policy with recurring trigger
|
|
32
|
+
4. (Optional) Create enforcement policy scoped to detected devices
|
|
33
|
+
|
|
34
|
+
## Script Setup
|
|
35
|
+
|
|
36
|
+
### Step 1: Generate Scripts
|
|
37
|
+
|
|
38
|
+
Generate Jamf-optimized scripts using the CLI:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Detection script
|
|
42
|
+
nox export --platform jamf --mode detect --output ./jamf-scripts
|
|
43
|
+
|
|
44
|
+
# Enforcement script
|
|
45
|
+
nox export --platform jamf --mode enforce --output ./jamf-scripts
|
|
46
|
+
|
|
47
|
+
# With webhook integration
|
|
48
|
+
nox export --platform jamf --mode detect \
|
|
49
|
+
--webhook https://siem.example.com/webhook \
|
|
50
|
+
--webhook-token YOUR_TOKEN \
|
|
51
|
+
--output ./jamf-scripts
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Step 2: Add Detection Script
|
|
55
|
+
|
|
56
|
+
1. Navigate to **Settings > Computer Management > Scripts**
|
|
57
|
+
2. Click **+ New**
|
|
58
|
+
3. Configure the **General** tab:
|
|
59
|
+
- **Display Name:** Nox OpenClaw Detection
|
|
60
|
+
- **Category:** Security
|
|
61
|
+
- **Info:** Detects OpenClaw AI agent installations
|
|
62
|
+
- **Notes:** Generated by nox-openclaw-detector v1.0.0
|
|
63
|
+
4. Configure the **Script** tab:
|
|
64
|
+
- Paste contents of `detect-openclaw.sh`
|
|
65
|
+
5. Configure the **Options** tab:
|
|
66
|
+
- **Priority:** Before
|
|
67
|
+
- **Parameter 4 Label:** Webhook URL
|
|
68
|
+
- **Parameter 5 Label:** Webhook Token
|
|
69
|
+
- **Parameter 6 Label:** Verbose Mode (true/false)
|
|
70
|
+
6. Click **Save**
|
|
71
|
+
|
|
72
|
+
### Step 3: Add Enforcement Script
|
|
73
|
+
|
|
74
|
+
1. Navigate to **Settings > Computer Management > Scripts**
|
|
75
|
+
2. Click **+ New**
|
|
76
|
+
3. Configure the **General** tab:
|
|
77
|
+
- **Display Name:** Nox OpenClaw Enforcement
|
|
78
|
+
- **Category:** Security
|
|
79
|
+
- **Info:** Removes OpenClaw AI agent installations
|
|
80
|
+
4. Configure the **Script** tab:
|
|
81
|
+
- Paste contents of `enforce-openclaw.sh`
|
|
82
|
+
5. Configure the **Options** tab:
|
|
83
|
+
- **Priority:** Before
|
|
84
|
+
- **Parameter 4 Label:** Webhook URL
|
|
85
|
+
- **Parameter 5 Label:** Webhook Token
|
|
86
|
+
- **Parameter 6 Label:** Quarantine Mode (true/false)
|
|
87
|
+
- **Parameter 7 Label:** Verbose Mode (true/false)
|
|
88
|
+
6. Click **Save**
|
|
89
|
+
|
|
90
|
+
## Extension Attribute
|
|
91
|
+
|
|
92
|
+
Create an extension attribute to report OpenClaw status in Jamf inventory.
|
|
93
|
+
|
|
94
|
+
### Add Extension Attribute
|
|
95
|
+
|
|
96
|
+
1. Navigate to **Settings > Computer Management > Extension Attributes**
|
|
97
|
+
2. Click **+ New**
|
|
98
|
+
3. Configure:
|
|
99
|
+
- **Display Name:** OpenClaw Status
|
|
100
|
+
- **Description:** Reports OpenClaw installation status
|
|
101
|
+
- **Data Type:** String
|
|
102
|
+
- **Inventory Display:** General
|
|
103
|
+
- **Input Type:** Script
|
|
104
|
+
4. Paste the extension attribute script:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
#!/bin/bash
|
|
108
|
+
# Nox OpenClaw Detection - Jamf Extension Attribute
|
|
109
|
+
|
|
110
|
+
OPENCLAW_STATUS="Not Installed"
|
|
111
|
+
|
|
112
|
+
# Check CLI binary
|
|
113
|
+
if command -v openclaw &>/dev/null; then
|
|
114
|
+
OPENCLAW_STATUS="Installed"
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
# Check common paths
|
|
118
|
+
for path in /usr/local/bin/openclaw /opt/homebrew/bin/openclaw; do
|
|
119
|
+
if [[ -f "$path" ]]; then
|
|
120
|
+
OPENCLAW_STATUS="Installed"
|
|
121
|
+
break
|
|
122
|
+
fi
|
|
123
|
+
done
|
|
124
|
+
|
|
125
|
+
# Check app bundle
|
|
126
|
+
if [[ -d "/Applications/OpenClaw.app" ]]; then
|
|
127
|
+
OPENCLAW_STATUS="Installed"
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
# Check config directory
|
|
131
|
+
if [[ -d "$HOME/.openclaw" ]] || ls -d /Users/*/.openclaw &>/dev/null 2>&1; then
|
|
132
|
+
OPENCLAW_STATUS="Installed"
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
# Check if running
|
|
136
|
+
if pgrep -f "openclaw" > /dev/null 2>&1; then
|
|
137
|
+
OPENCLAW_STATUS="Running"
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
# Check gateway port
|
|
141
|
+
if nc -z localhost 18789 2>/dev/null; then
|
|
142
|
+
OPENCLAW_STATUS="Running"
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
echo "<result>$OPENCLAW_STATUS</result>"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
5. Click **Save**
|
|
149
|
+
|
|
150
|
+
### Extension Attribute Values
|
|
151
|
+
|
|
152
|
+
| Value | Meaning |
|
|
153
|
+
|-------|---------|
|
|
154
|
+
| `Not Installed` | No OpenClaw components found |
|
|
155
|
+
| `Installed` | OpenClaw detected but not actively running |
|
|
156
|
+
| `Running` | OpenClaw is actively running |
|
|
157
|
+
|
|
158
|
+
## Policy Configuration
|
|
159
|
+
|
|
160
|
+
### Detection Policy
|
|
161
|
+
|
|
162
|
+
Create a policy to run detection on a schedule.
|
|
163
|
+
|
|
164
|
+
1. Navigate to **Computers > Policies**
|
|
165
|
+
2. Click **+ New**
|
|
166
|
+
3. Configure **General**:
|
|
167
|
+
- **Display Name:** Nox OpenClaw Detection
|
|
168
|
+
- **Enabled:** Yes
|
|
169
|
+
- **Trigger:** Recurring Check-in
|
|
170
|
+
- **Execution Frequency:** Once per day
|
|
171
|
+
4. Configure **Scripts**:
|
|
172
|
+
- Click **Configure**
|
|
173
|
+
- Add "Nox OpenClaw Detection" script
|
|
174
|
+
- Set parameter values:
|
|
175
|
+
- **Parameter 4 (Webhook URL):** Your SIEM webhook URL
|
|
176
|
+
- **Parameter 5 (Webhook Token):** Your authentication token
|
|
177
|
+
- **Parameter 6 (Verbose):** false
|
|
178
|
+
5. Configure **Scope**:
|
|
179
|
+
- **Targets:** All Managed Clients (or specific groups)
|
|
180
|
+
6. Click **Save**
|
|
181
|
+
|
|
182
|
+
### Enforcement Policy
|
|
183
|
+
|
|
184
|
+
Create a policy to remediate detected installations.
|
|
185
|
+
|
|
186
|
+
1. Navigate to **Computers > Policies**
|
|
187
|
+
2. Click **+ New**
|
|
188
|
+
3. Configure **General**:
|
|
189
|
+
- **Display Name:** Nox OpenClaw Enforcement
|
|
190
|
+
- **Enabled:** Yes (or No for manual trigger only)
|
|
191
|
+
- **Trigger:** Custom (see below) or Recurring Check-in
|
|
192
|
+
- **Execution Frequency:** Ongoing
|
|
193
|
+
4. Configure **Scripts**:
|
|
194
|
+
- Add "Nox OpenClaw Enforcement" script
|
|
195
|
+
- Set parameter values as needed
|
|
196
|
+
5. Configure **Scope**:
|
|
197
|
+
- **Targets:** Smart Group "OpenClaw Detected" (see below)
|
|
198
|
+
6. Click **Save**
|
|
199
|
+
|
|
200
|
+
### Self Service Policy (Optional)
|
|
201
|
+
|
|
202
|
+
Allow users or IT to manually run enforcement:
|
|
203
|
+
|
|
204
|
+
1. Create policy as above
|
|
205
|
+
2. Set **Trigger:** Self Service
|
|
206
|
+
3. Configure **Self Service**:
|
|
207
|
+
- **Make the policy available in Self Service:** Yes
|
|
208
|
+
- **Button Name:** Remove OpenClaw
|
|
209
|
+
- **Description:** Removes unauthorized AI agent software
|
|
210
|
+
|
|
211
|
+
## Smart Groups
|
|
212
|
+
|
|
213
|
+
### OpenClaw Detected
|
|
214
|
+
|
|
215
|
+
Identify devices with OpenClaw installed:
|
|
216
|
+
|
|
217
|
+
1. Navigate to **Computers > Smart Computer Groups**
|
|
218
|
+
2. Click **+ New**
|
|
219
|
+
3. Configure:
|
|
220
|
+
- **Display Name:** OpenClaw Detected
|
|
221
|
+
- **Criteria:**
|
|
222
|
+
|
|
223
|
+
| And/Or | Criteria | Operator | Value |
|
|
224
|
+
|--------|----------|----------|-------|
|
|
225
|
+
| | Extension Attribute: OpenClaw Status | is | Installed |
|
|
226
|
+
| or | Extension Attribute: OpenClaw Status | is | Running |
|
|
227
|
+
|
|
228
|
+
4. Click **Save**
|
|
229
|
+
|
|
230
|
+
### OpenClaw Running
|
|
231
|
+
|
|
232
|
+
Identify devices actively running OpenClaw (high priority):
|
|
233
|
+
|
|
234
|
+
1. Navigate to **Computers > Smart Computer Groups**
|
|
235
|
+
2. Click **+ New**
|
|
236
|
+
3. Configure:
|
|
237
|
+
- **Display Name:** OpenClaw Running
|
|
238
|
+
- **Criteria:**
|
|
239
|
+
|
|
240
|
+
| Criteria | Operator | Value |
|
|
241
|
+
|----------|----------|-------|
|
|
242
|
+
| Extension Attribute: OpenClaw Status | is | Running |
|
|
243
|
+
|
|
244
|
+
4. Click **Save**
|
|
245
|
+
|
|
246
|
+
### OpenClaw Clean
|
|
247
|
+
|
|
248
|
+
Identify devices without OpenClaw (for compliance reporting):
|
|
249
|
+
|
|
250
|
+
1. Create Smart Group with criteria:
|
|
251
|
+
|
|
252
|
+
| Criteria | Operator | Value |
|
|
253
|
+
|----------|----------|-------|
|
|
254
|
+
| Extension Attribute: OpenClaw Status | is | Not Installed |
|
|
255
|
+
|
|
256
|
+
## Exit Codes
|
|
257
|
+
|
|
258
|
+
Scripts report these exit codes to Jamf:
|
|
259
|
+
|
|
260
|
+
| Code | Detection Meaning | Enforcement Meaning | Jamf Behavior |
|
|
261
|
+
|------|-------------------|---------------------|---------------|
|
|
262
|
+
| 0 | Not detected | Successful removal | Policy marked successful |
|
|
263
|
+
| 1 | Detected | Partial failure | Policy marked failed |
|
|
264
|
+
| 2 | Script error | Script error | Policy marked failed |
|
|
265
|
+
| 3 | N/A | Nothing to remove | Policy marked successful |
|
|
266
|
+
|
|
267
|
+
## Webhook Integration
|
|
268
|
+
|
|
269
|
+
### Configure Webhooks in Policy
|
|
270
|
+
|
|
271
|
+
Set webhook parameters in the policy script configuration:
|
|
272
|
+
|
|
273
|
+
- **Parameter 4:** `https://siem.example.com/api/v1/events`
|
|
274
|
+
- **Parameter 5:** `Bearer YOUR_API_TOKEN`
|
|
275
|
+
|
|
276
|
+
### Webhook Payload
|
|
277
|
+
|
|
278
|
+
Detection events send this payload:
|
|
279
|
+
|
|
280
|
+
```json
|
|
281
|
+
{
|
|
282
|
+
"event": "openclaw.detection",
|
|
283
|
+
"version": "1.0",
|
|
284
|
+
"timestamp": "2026-02-03T10:30:00Z",
|
|
285
|
+
"status": "detected",
|
|
286
|
+
"severity": "high",
|
|
287
|
+
"host": {
|
|
288
|
+
"hostname": "MacBook-Pro.local",
|
|
289
|
+
"os": "Darwin",
|
|
290
|
+
"arch": "arm64",
|
|
291
|
+
"user": "jsmith"
|
|
292
|
+
},
|
|
293
|
+
"jamf": {
|
|
294
|
+
"computer_name": "MacBook-Pro.local",
|
|
295
|
+
"mount_point": "/",
|
|
296
|
+
"username": "jsmith"
|
|
297
|
+
},
|
|
298
|
+
"details": "CLI found at /usr/local/bin/openclaw; Config directory found",
|
|
299
|
+
"source": {
|
|
300
|
+
"tool": "nox-openclaw-detector",
|
|
301
|
+
"version": "1.0.0",
|
|
302
|
+
"vendor": "Nox Security"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### SIEM Queries
|
|
308
|
+
|
|
309
|
+
Example Splunk query:
|
|
310
|
+
|
|
311
|
+
```splunk
|
|
312
|
+
index=security sourcetype=nox_openclaw event=openclaw.detection status=detected
|
|
313
|
+
| stats count by host.hostname, details
|
|
314
|
+
| sort -count
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Example Datadog query:
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
source:nox_openclaw status:detected | count by host
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Advanced Configurations
|
|
324
|
+
|
|
325
|
+
### Staged Rollout
|
|
326
|
+
|
|
327
|
+
1. Create a static group with pilot devices
|
|
328
|
+
2. Scope detection policy to pilot group first
|
|
329
|
+
3. Monitor results for 1-2 weeks
|
|
330
|
+
4. Expand scope to all managed devices
|
|
331
|
+
|
|
332
|
+
### Automated Remediation Workflow
|
|
333
|
+
|
|
334
|
+
1. Detection policy runs daily
|
|
335
|
+
2. Smart Group "OpenClaw Detected" updates automatically
|
|
336
|
+
3. Enforcement policy scoped to Smart Group runs immediately
|
|
337
|
+
4. Webhook alerts security team of both events
|
|
338
|
+
|
|
339
|
+
### Compliance Reporting
|
|
340
|
+
|
|
341
|
+
Create an Advanced Search:
|
|
342
|
+
|
|
343
|
+
1. Navigate to **Computers > Search Inventory**
|
|
344
|
+
2. Create criteria: Extension Attribute "OpenClaw Status" is not "Not Installed"
|
|
345
|
+
3. Save as "OpenClaw Compliance Report"
|
|
346
|
+
4. Schedule email delivery to security team
|
|
347
|
+
|
|
348
|
+
## Troubleshooting
|
|
349
|
+
|
|
350
|
+
### Script Not Running
|
|
351
|
+
|
|
352
|
+
1. Verify policy scope includes target computers
|
|
353
|
+
2. Check policy trigger and frequency settings
|
|
354
|
+
3. Ensure computer is checking in to Jamf
|
|
355
|
+
4. Review **Management > Logs** on the computer
|
|
356
|
+
|
|
357
|
+
### Permission Errors
|
|
358
|
+
|
|
359
|
+
1. Scripts should run as root (default for policies)
|
|
360
|
+
2. Check for SIP restrictions on certain paths
|
|
361
|
+
3. Verify MDM profile allows script execution
|
|
362
|
+
|
|
363
|
+
### Extension Attribute Not Updating
|
|
364
|
+
|
|
365
|
+
1. Force inventory update: `sudo jamf recon`
|
|
366
|
+
2. Check extension attribute is enabled
|
|
367
|
+
3. Verify script syntax is correct
|
|
368
|
+
|
|
369
|
+
### Webhook Failures
|
|
370
|
+
|
|
371
|
+
1. Verify URL is accessible from managed devices
|
|
372
|
+
2. Check firewall rules allow outbound HTTPS
|
|
373
|
+
3. Validate bearer token
|
|
374
|
+
4. Add verbose logging to troubleshoot:
|
|
375
|
+
- Set Parameter 6 to `true`
|
|
376
|
+
- Check policy logs in Jamf
|
|
377
|
+
|
|
378
|
+
### False Negatives
|
|
379
|
+
|
|
380
|
+
If OpenClaw is installed but not detected:
|
|
381
|
+
|
|
382
|
+
1. Check for non-standard installation paths
|
|
383
|
+
2. Verify detection script has latest signatures
|
|
384
|
+
3. Run with verbose mode enabled
|
|
385
|
+
4. Report to support@nox.security
|
|
386
|
+
|
|
387
|
+
## Best Practices
|
|
388
|
+
|
|
389
|
+
1. **Test First**: Deploy to a pilot group before fleet-wide rollout
|
|
390
|
+
2. **Schedule Off-Hours**: Run detection during low-usage periods
|
|
391
|
+
3. **Monitor Results**: Review Jamf logs and Smart Group membership regularly
|
|
392
|
+
4. **Use Webhooks**: Integrate with SIEM for centralized alerting
|
|
393
|
+
5. **Document Exceptions**: Track any approved OpenClaw installations
|
|
394
|
+
6. **Regular Updates**: Update scripts when new versions are available
|
|
395
|
+
|
|
396
|
+
## Support
|
|
397
|
+
|
|
398
|
+
- Email: support@nox.security
|
|
399
|
+
- Documentation: https://docs.nox.security/jamf
|
|
400
|
+
- Jamf Marketplace: [Nox OpenClaw Detector](https://marketplace.jamf.com)
|