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/intune.md
ADDED
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
# Microsoft Intune Integration Guide
|
|
2
|
+
|
|
3
|
+
Deploy Nox OpenClaw detection and enforcement scripts across your Windows and macOS fleet using Microsoft Intune.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This guide explains how to:
|
|
8
|
+
|
|
9
|
+
1. Deploy PowerShell scripts for Windows detection and enforcement
|
|
10
|
+
2. Deploy shell scripts for macOS detection and enforcement
|
|
11
|
+
3. Set up Proactive Remediation for automated detection and enforcement
|
|
12
|
+
4. Create compliance policies
|
|
13
|
+
5. Monitor results via Intune reporting and Log Analytics
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Microsoft Intune subscription (standalone or part of Microsoft 365)
|
|
18
|
+
- Azure AD joined or hybrid joined devices
|
|
19
|
+
- Windows 10/11 or macOS 10.15+ managed devices
|
|
20
|
+
- Intune admin access
|
|
21
|
+
- (Optional) Azure Log Analytics workspace for advanced reporting
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
1. Generate scripts:
|
|
26
|
+
```bash
|
|
27
|
+
nox export --platform intune --mode detect --output ./intune-scripts
|
|
28
|
+
nox export --platform intune --mode enforce --output ./intune-scripts
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
2. Upload scripts to Intune
|
|
32
|
+
3. Configure Proactive Remediation (recommended)
|
|
33
|
+
4. Monitor via Endpoint Analytics
|
|
34
|
+
|
|
35
|
+
## Script Setup
|
|
36
|
+
|
|
37
|
+
### Step 1: Generate Scripts
|
|
38
|
+
|
|
39
|
+
Generate Intune-optimized scripts using the CLI:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Detection scripts
|
|
43
|
+
nox export --platform intune --mode detect --output ./intune-scripts
|
|
44
|
+
|
|
45
|
+
# Enforcement scripts
|
|
46
|
+
nox export --platform intune --mode enforce --output ./intune-scripts
|
|
47
|
+
|
|
48
|
+
# With webhook integration
|
|
49
|
+
nox export --platform intune --mode detect \
|
|
50
|
+
--webhook https://siem.example.com/webhook \
|
|
51
|
+
--webhook-token YOUR_TOKEN \
|
|
52
|
+
--output ./intune-scripts
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
This generates:
|
|
56
|
+
- `Detect-OpenClaw.ps1` - Windows detection script
|
|
57
|
+
- `Remediate-OpenClaw.ps1` - Windows enforcement script
|
|
58
|
+
- `detect-openclaw.sh` - macOS detection script (if applicable)
|
|
59
|
+
- `remediate-openclaw.sh` - macOS enforcement script (if applicable)
|
|
60
|
+
|
|
61
|
+
### Step 2: Upload Windows Scripts
|
|
62
|
+
|
|
63
|
+
#### Platform Scripts Method
|
|
64
|
+
|
|
65
|
+
1. Navigate to **Devices > Windows > Scripts**
|
|
66
|
+
2. Click **+ Add**
|
|
67
|
+
3. Configure **Basics**:
|
|
68
|
+
- **Name:** Nox OpenClaw Detection
|
|
69
|
+
- **Description:** Detects OpenClaw AI agent installations
|
|
70
|
+
4. Configure **Script settings**:
|
|
71
|
+
- **Script location:** Upload `Detect-OpenClaw.ps1`
|
|
72
|
+
- **Run this script using the logged on credentials:** No
|
|
73
|
+
- **Enforce script signature check:** No
|
|
74
|
+
- **Run script in 64-bit PowerShell:** Yes
|
|
75
|
+
5. Configure **Assignments**:
|
|
76
|
+
- Add target groups
|
|
77
|
+
6. Click **Create**
|
|
78
|
+
|
|
79
|
+
Repeat for the enforcement script.
|
|
80
|
+
|
|
81
|
+
### Step 3: Upload macOS Scripts
|
|
82
|
+
|
|
83
|
+
1. Navigate to **Devices > macOS > Shell scripts**
|
|
84
|
+
2. Click **+ Add**
|
|
85
|
+
3. Configure **Basics**:
|
|
86
|
+
- **Name:** Nox OpenClaw Detection (macOS)
|
|
87
|
+
4. Configure **Script settings**:
|
|
88
|
+
- Upload `detect-openclaw.sh`
|
|
89
|
+
- **Run script as signed-in user:** No
|
|
90
|
+
- **Hide script notifications on devices:** Yes
|
|
91
|
+
- **Script frequency:** Every 1 day
|
|
92
|
+
- **Max number of times to retry if script fails:** 3
|
|
93
|
+
5. Configure **Assignments**:
|
|
94
|
+
- Add target groups
|
|
95
|
+
6. Click **Create**
|
|
96
|
+
|
|
97
|
+
## Proactive Remediation (Recommended)
|
|
98
|
+
|
|
99
|
+
Proactive Remediation automatically detects and fixes issues. This is the recommended deployment method for Windows.
|
|
100
|
+
|
|
101
|
+
### Create Remediation Package
|
|
102
|
+
|
|
103
|
+
1. Navigate to **Devices > Remediations**
|
|
104
|
+
2. Click **+ Create script package**
|
|
105
|
+
3. Configure **Basics**:
|
|
106
|
+
- **Name:** Nox OpenClaw Detection and Remediation
|
|
107
|
+
- **Description:** Automatically detects and removes OpenClaw AI agent
|
|
108
|
+
- **Publisher:** Nox Security
|
|
109
|
+
4. Configure **Settings**:
|
|
110
|
+
- **Detection script file:** Upload `Detect-OpenClaw.ps1`
|
|
111
|
+
- **Remediation script file:** Upload `Remediate-OpenClaw.ps1`
|
|
112
|
+
- **Run this script using the logged on credentials:** No
|
|
113
|
+
- **Enforce script signature check:** No
|
|
114
|
+
- **Run script in 64-bit PowerShell:** Yes
|
|
115
|
+
5. Configure **Scope tags** (optional)
|
|
116
|
+
6. Configure **Assignments**:
|
|
117
|
+
- Select target groups
|
|
118
|
+
- **Schedule:**
|
|
119
|
+
- **Run frequency:** Daily (recommended)
|
|
120
|
+
- Or: Every 6 hours (for high-security environments)
|
|
121
|
+
7. Click **Create**
|
|
122
|
+
|
|
123
|
+
### How Proactive Remediation Works
|
|
124
|
+
|
|
125
|
+
1. **Detection phase:** Runs `Detect-OpenClaw.ps1`
|
|
126
|
+
- Exit code 0 = Compliant (no OpenClaw found)
|
|
127
|
+
- Exit code 1 = Non-compliant (OpenClaw detected)
|
|
128
|
+
|
|
129
|
+
2. **Remediation phase:** If detection returns exit code 1
|
|
130
|
+
- Runs `Remediate-OpenClaw.ps1`
|
|
131
|
+
- Removes OpenClaw components
|
|
132
|
+
- Reports success/failure
|
|
133
|
+
|
|
134
|
+
3. **Reporting:** Results visible in Endpoint Analytics
|
|
135
|
+
|
|
136
|
+
## Compliance Policy
|
|
137
|
+
|
|
138
|
+
Create a compliance policy to mark devices with OpenClaw as non-compliant.
|
|
139
|
+
|
|
140
|
+
### Windows Compliance Policy
|
|
141
|
+
|
|
142
|
+
1. Navigate to **Devices > Compliance policies**
|
|
143
|
+
2. Click **+ Create Policy**
|
|
144
|
+
3. Select **Windows 10 and later**
|
|
145
|
+
4. Configure **Basics**:
|
|
146
|
+
- **Name:** OpenClaw Detection Compliance
|
|
147
|
+
5. Configure **Compliance settings**:
|
|
148
|
+
- Use custom compliance script or rely on Proactive Remediation results
|
|
149
|
+
6. Configure **Actions for noncompliance**:
|
|
150
|
+
|
|
151
|
+
| Action | Schedule |
|
|
152
|
+
|--------|----------|
|
|
153
|
+
| Mark device noncompliant | Immediately |
|
|
154
|
+
| Send email to end user | After 1 day |
|
|
155
|
+
| Retire the noncompliant device | After 14 days (optional) |
|
|
156
|
+
|
|
157
|
+
7. Configure **Assignments**
|
|
158
|
+
8. Click **Create**
|
|
159
|
+
|
|
160
|
+
### Conditional Access Integration
|
|
161
|
+
|
|
162
|
+
Block non-compliant devices from corporate resources:
|
|
163
|
+
|
|
164
|
+
1. Navigate to **Azure AD > Security > Conditional Access**
|
|
165
|
+
2. Create or edit policy
|
|
166
|
+
3. Configure **Conditions**:
|
|
167
|
+
- Device compliance: Require device to be marked as compliant
|
|
168
|
+
4. Configure **Access controls**:
|
|
169
|
+
- Block access for non-compliant devices
|
|
170
|
+
|
|
171
|
+
## Monitoring and Reporting
|
|
172
|
+
|
|
173
|
+
### Script Status Dashboard
|
|
174
|
+
|
|
175
|
+
1. Navigate to **Devices > Monitor > Device script status**
|
|
176
|
+
2. Select your script
|
|
177
|
+
3. View execution results per device
|
|
178
|
+
|
|
179
|
+
### Proactive Remediation Reports
|
|
180
|
+
|
|
181
|
+
1. Navigate to **Reports > Endpoint analytics > Proactive remediations**
|
|
182
|
+
2. Click on your remediation package
|
|
183
|
+
3. View:
|
|
184
|
+
- **Overview:** Detection and remediation rates
|
|
185
|
+
- **Device status:** Per-device results
|
|
186
|
+
- **Issue breakdown:** Common failure reasons
|
|
187
|
+
|
|
188
|
+
### Log Analytics Integration
|
|
189
|
+
|
|
190
|
+
Export data to Azure Log Analytics for custom dashboards.
|
|
191
|
+
|
|
192
|
+
#### Configure Diagnostic Settings
|
|
193
|
+
|
|
194
|
+
1. Navigate to **Tenant administration > Diagnostics settings**
|
|
195
|
+
2. Click **+ Add diagnostic setting**
|
|
196
|
+
3. Configure:
|
|
197
|
+
- **Name:** Intune to Log Analytics
|
|
198
|
+
- **Log categories:** Scripts, Device compliance, etc.
|
|
199
|
+
- **Destination:** Send to Log Analytics workspace
|
|
200
|
+
4. Click **Save**
|
|
201
|
+
|
|
202
|
+
#### Example Queries
|
|
203
|
+
|
|
204
|
+
Devices with OpenClaw detected:
|
|
205
|
+
|
|
206
|
+
```kusto
|
|
207
|
+
IntuneDevices
|
|
208
|
+
| where TimeGenerated > ago(7d)
|
|
209
|
+
| where DeviceId in (
|
|
210
|
+
IntuneDeviceComplianceOrg
|
|
211
|
+
| where ComplianceState == "Noncompliant"
|
|
212
|
+
| where PolicyName contains "OpenClaw"
|
|
213
|
+
| project DeviceId
|
|
214
|
+
)
|
|
215
|
+
| project DeviceName, UserPrincipalName, OS, OSVersion, LastContact
|
|
216
|
+
| sort by LastContact desc
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Proactive Remediation summary:
|
|
220
|
+
|
|
221
|
+
```kusto
|
|
222
|
+
IntuneProactiveRemediations
|
|
223
|
+
| where TimeGenerated > ago(30d)
|
|
224
|
+
| where PolicyName == "Nox OpenClaw Detection and Remediation"
|
|
225
|
+
| summarize
|
|
226
|
+
Detected = countif(DetectionStatus == "NonCompliant"),
|
|
227
|
+
Remediated = countif(RemediationStatus == "Success"),
|
|
228
|
+
Failed = countif(RemediationStatus == "Failed")
|
|
229
|
+
by bin(TimeGenerated, 1d)
|
|
230
|
+
| render timechart
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Exit Codes
|
|
234
|
+
|
|
235
|
+
### Detection Script
|
|
236
|
+
|
|
237
|
+
| Code | Meaning | Intune Status |
|
|
238
|
+
|------|---------|---------------|
|
|
239
|
+
| 0 | OpenClaw not detected | Compliant |
|
|
240
|
+
| 1 | OpenClaw detected | Non-compliant (triggers remediation) |
|
|
241
|
+
| 2 | Script error | Error |
|
|
242
|
+
|
|
243
|
+
### Remediation Script
|
|
244
|
+
|
|
245
|
+
| Code | Meaning | Intune Status |
|
|
246
|
+
|------|---------|---------------|
|
|
247
|
+
| 0 | Remediation successful | Success |
|
|
248
|
+
| 1 | Partial failure | With issues |
|
|
249
|
+
| 2 | Script error | Failed |
|
|
250
|
+
| 3 | Nothing to remediate | Success |
|
|
251
|
+
|
|
252
|
+
## Webhook Integration
|
|
253
|
+
|
|
254
|
+
### Configure Webhooks in Scripts
|
|
255
|
+
|
|
256
|
+
Edit scripts before uploading to include webhook configuration:
|
|
257
|
+
|
|
258
|
+
```powershell
|
|
259
|
+
# At the top of the script
|
|
260
|
+
$WebhookUrl = "https://siem.example.com/api/v1/events"
|
|
261
|
+
$WebhookToken = "YOUR_API_TOKEN"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Or generate scripts with webhooks built-in:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
nox export --platform intune --mode detect \
|
|
268
|
+
--webhook https://siem.example.com/webhook \
|
|
269
|
+
--webhook-token YOUR_TOKEN
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Webhook Payload
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"event": "openclaw.detection",
|
|
277
|
+
"version": "1.0",
|
|
278
|
+
"timestamp": "2026-02-03T10:30:00Z",
|
|
279
|
+
"status": "detected",
|
|
280
|
+
"severity": "high",
|
|
281
|
+
"host": {
|
|
282
|
+
"hostname": "DESKTOP-ABC123",
|
|
283
|
+
"os": "Windows",
|
|
284
|
+
"osVersion": "Microsoft Windows NT 10.0.19045.0",
|
|
285
|
+
"arch": "AMD64",
|
|
286
|
+
"user": "jsmith",
|
|
287
|
+
"domain": "CONTOSO"
|
|
288
|
+
},
|
|
289
|
+
"details": "CLI found at C:\\Users\\jsmith\\AppData\\Local\\Programs\\openclaw",
|
|
290
|
+
"source": {
|
|
291
|
+
"tool": "nox-openclaw-detector",
|
|
292
|
+
"version": "1.0.0",
|
|
293
|
+
"vendor": "Nox Security"
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Microsoft Sentinel Integration
|
|
299
|
+
|
|
300
|
+
Create a Logic App to ingest webhooks into Sentinel:
|
|
301
|
+
|
|
302
|
+
1. Create Logic App with HTTP trigger
|
|
303
|
+
2. Parse JSON payload
|
|
304
|
+
3. Send to Log Analytics Custom Log
|
|
305
|
+
4. Create Sentinel Analytics Rule for detection events
|
|
306
|
+
|
|
307
|
+
## Advanced Configurations
|
|
308
|
+
|
|
309
|
+
### Staged Deployment
|
|
310
|
+
|
|
311
|
+
1. Create Azure AD groups for pilot users
|
|
312
|
+
2. Assign Proactive Remediation to pilot group
|
|
313
|
+
3. Monitor for 2 weeks
|
|
314
|
+
4. Expand to all users
|
|
315
|
+
|
|
316
|
+
### High-Security Mode
|
|
317
|
+
|
|
318
|
+
For environments requiring immediate detection:
|
|
319
|
+
|
|
320
|
+
1. Set Proactive Remediation schedule to every 6 hours
|
|
321
|
+
2. Enable Conditional Access to block non-compliant devices
|
|
322
|
+
3. Configure email alerts for immediate notification
|
|
323
|
+
4. Set remediation to auto-run without user interaction
|
|
324
|
+
|
|
325
|
+
### Multi-OS Deployment
|
|
326
|
+
|
|
327
|
+
Deploy to both Windows and macOS fleets:
|
|
328
|
+
|
|
329
|
+
1. Create device groups:
|
|
330
|
+
- "All Windows Devices"
|
|
331
|
+
- "All macOS Devices"
|
|
332
|
+
2. Create separate scripts for each platform
|
|
333
|
+
3. Assign Windows scripts to Windows group
|
|
334
|
+
4. Assign macOS scripts to macOS group
|
|
335
|
+
|
|
336
|
+
## Troubleshooting
|
|
337
|
+
|
|
338
|
+
### Script Not Running
|
|
339
|
+
|
|
340
|
+
1. Verify device is enrolled and checking in
|
|
341
|
+
2. Check device group assignment
|
|
342
|
+
3. Verify Intune Management Extension is installed:
|
|
343
|
+
- Path: `C:\Program Files (x86)\Microsoft Intune Management Extension`
|
|
344
|
+
4. Review IME logs:
|
|
345
|
+
- Path: `%ProgramData%\Microsoft\IntuneManagementExtension\Logs`
|
|
346
|
+
|
|
347
|
+
### Access Denied Errors
|
|
348
|
+
|
|
349
|
+
1. Verify script runs as SYSTEM (not user)
|
|
350
|
+
2. Check for UAC restrictions
|
|
351
|
+
3. Ensure device is properly enrolled
|
|
352
|
+
4. Verify MDM authority is Intune
|
|
353
|
+
|
|
354
|
+
### Remediation Not Triggering
|
|
355
|
+
|
|
356
|
+
1. Verify detection script returns exit code 1 for detection
|
|
357
|
+
2. Check remediation script is assigned to package
|
|
358
|
+
3. Review Proactive Remediation schedule
|
|
359
|
+
4. Check device is within scope of assignments
|
|
360
|
+
|
|
361
|
+
### PowerShell Execution Policy
|
|
362
|
+
|
|
363
|
+
If scripts fail due to execution policy:
|
|
364
|
+
|
|
365
|
+
1. Scripts run via Intune bypass local execution policy
|
|
366
|
+
2. If issues persist, check group policy for overrides
|
|
367
|
+
3. Ensure 64-bit PowerShell option is selected
|
|
368
|
+
|
|
369
|
+
### macOS Script Issues
|
|
370
|
+
|
|
371
|
+
1. Check script has correct line endings (LF, not CRLF)
|
|
372
|
+
2. Verify bash syntax is compatible
|
|
373
|
+
3. Check for permission issues with System Integrity Protection
|
|
374
|
+
|
|
375
|
+
## Best Practices
|
|
376
|
+
|
|
377
|
+
1. **Use Proactive Remediation**: Automates detection and enforcement
|
|
378
|
+
2. **Start with Detection Only**: Understand scope before enabling remediation
|
|
379
|
+
3. **Test in Pilot Group**: Validate before fleet-wide deployment
|
|
380
|
+
4. **Enable Log Analytics**: Essential for long-term reporting and trend analysis
|
|
381
|
+
5. **Set Appropriate Schedules**: Daily is sufficient for most environments
|
|
382
|
+
6. **Monitor Remediation Success**: Investigate any failures promptly
|
|
383
|
+
7. **Document Exceptions**: Track approved OpenClaw installations in Azure AD notes
|
|
384
|
+
8. **Regular Updates**: Update scripts when new versions are available
|
|
385
|
+
|
|
386
|
+
## Support
|
|
387
|
+
|
|
388
|
+
- Email: support@nox.security
|
|
389
|
+
- Documentation: https://docs.nox.security/intune
|
|
390
|
+
- Microsoft Endpoint Manager Admin Center: https://endpoint.microsoft.com
|