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.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +140 -0
  3. package/bin/nox.js +2 -0
  4. package/dist/branding.d.ts +39 -0
  5. package/dist/branding.d.ts.map +1 -0
  6. package/dist/branding.js +66 -0
  7. package/dist/branding.js.map +1 -0
  8. package/dist/cli.d.ts +15 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +94 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/export.d.ts +21 -0
  13. package/dist/commands/export.d.ts.map +1 -0
  14. package/dist/commands/export.js +616 -0
  15. package/dist/commands/export.js.map +1 -0
  16. package/dist/commands/index.d.ts +8 -0
  17. package/dist/commands/index.d.ts.map +1 -0
  18. package/dist/commands/index.js +8 -0
  19. package/dist/commands/index.js.map +1 -0
  20. package/dist/commands/isolate.d.ts +30 -0
  21. package/dist/commands/isolate.d.ts.map +1 -0
  22. package/dist/commands/isolate.js +547 -0
  23. package/dist/commands/isolate.js.map +1 -0
  24. package/dist/commands/purge.d.ts +22 -0
  25. package/dist/commands/purge.d.ts.map +1 -0
  26. package/dist/commands/purge.js +295 -0
  27. package/dist/commands/purge.js.map +1 -0
  28. package/dist/commands/scan.d.ts +23 -0
  29. package/dist/commands/scan.d.ts.map +1 -0
  30. package/dist/commands/scan.js +155 -0
  31. package/dist/commands/scan.js.map +1 -0
  32. package/dist/detector/app-bundle.d.ts +13 -0
  33. package/dist/detector/app-bundle.d.ts.map +1 -0
  34. package/dist/detector/app-bundle.js +27 -0
  35. package/dist/detector/app-bundle.js.map +1 -0
  36. package/dist/detector/cli-binary.d.ts +12 -0
  37. package/dist/detector/cli-binary.d.ts.map +1 -0
  38. package/dist/detector/cli-binary.js +66 -0
  39. package/dist/detector/cli-binary.js.map +1 -0
  40. package/dist/detector/config.d.ts +21 -0
  41. package/dist/detector/config.d.ts.map +1 -0
  42. package/dist/detector/config.js +337 -0
  43. package/dist/detector/config.js.map +1 -0
  44. package/dist/detector/detection-config.d.ts +24 -0
  45. package/dist/detector/detection-config.d.ts.map +1 -0
  46. package/dist/detector/detection-config.js +242 -0
  47. package/dist/detector/detection-config.js.map +1 -0
  48. package/dist/detector/docker.d.ts +10 -0
  49. package/dist/detector/docker.d.ts.map +1 -0
  50. package/dist/detector/docker.js +94 -0
  51. package/dist/detector/docker.js.map +1 -0
  52. package/dist/detector/index.d.ts +50 -0
  53. package/dist/detector/index.d.ts.map +1 -0
  54. package/dist/detector/index.js +155 -0
  55. package/dist/detector/index.js.map +1 -0
  56. package/dist/detector/network.d.ts +34 -0
  57. package/dist/detector/network.d.ts.map +1 -0
  58. package/dist/detector/network.js +205 -0
  59. package/dist/detector/network.js.map +1 -0
  60. package/dist/detector/process.d.ts +16 -0
  61. package/dist/detector/process.d.ts.map +1 -0
  62. package/dist/detector/process.js +47 -0
  63. package/dist/detector/process.js.map +1 -0
  64. package/dist/detector/service.d.ts +17 -0
  65. package/dist/detector/service.d.ts.map +1 -0
  66. package/dist/detector/service.js +51 -0
  67. package/dist/detector/service.js.map +1 -0
  68. package/dist/enforcer/docker-cleaner.d.ts +30 -0
  69. package/dist/enforcer/docker-cleaner.d.ts.map +1 -0
  70. package/dist/enforcer/docker-cleaner.js +163 -0
  71. package/dist/enforcer/docker-cleaner.js.map +1 -0
  72. package/dist/enforcer/file-remover.d.ts +34 -0
  73. package/dist/enforcer/file-remover.d.ts.map +1 -0
  74. package/dist/enforcer/file-remover.js +137 -0
  75. package/dist/enforcer/file-remover.js.map +1 -0
  76. package/dist/enforcer/index.d.ts +33 -0
  77. package/dist/enforcer/index.d.ts.map +1 -0
  78. package/dist/enforcer/index.js +142 -0
  79. package/dist/enforcer/index.js.map +1 -0
  80. package/dist/enforcer/process-killer.d.ts +18 -0
  81. package/dist/enforcer/process-killer.d.ts.map +1 -0
  82. package/dist/enforcer/process-killer.js +80 -0
  83. package/dist/enforcer/process-killer.js.map +1 -0
  84. package/dist/enforcer/service-stopper.d.ts +23 -0
  85. package/dist/enforcer/service-stopper.d.ts.map +1 -0
  86. package/dist/enforcer/service-stopper.js +95 -0
  87. package/dist/enforcer/service-stopper.js.map +1 -0
  88. package/dist/index.d.ts +6 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +10 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/isolator/firewall.d.ts +25 -0
  93. package/dist/isolator/firewall.d.ts.map +1 -0
  94. package/dist/isolator/firewall.js +114 -0
  95. package/dist/isolator/firewall.js.map +1 -0
  96. package/dist/isolator/index.d.ts +63 -0
  97. package/dist/isolator/index.d.ts.map +1 -0
  98. package/dist/isolator/index.js +201 -0
  99. package/dist/isolator/index.js.map +1 -0
  100. package/dist/isolator/lockdown.d.ts +22 -0
  101. package/dist/isolator/lockdown.d.ts.map +1 -0
  102. package/dist/isolator/lockdown.js +401 -0
  103. package/dist/isolator/lockdown.js.map +1 -0
  104. package/dist/isolator/quarantine.d.ts +39 -0
  105. package/dist/isolator/quarantine.d.ts.map +1 -0
  106. package/dist/isolator/quarantine.js +364 -0
  107. package/dist/isolator/quarantine.js.map +1 -0
  108. package/dist/mdm/index.d.ts +93 -0
  109. package/dist/mdm/index.d.ts.map +1 -0
  110. package/dist/mdm/index.js +414 -0
  111. package/dist/mdm/index.js.map +1 -0
  112. package/dist/mdm/intune.d.ts +69 -0
  113. package/dist/mdm/intune.d.ts.map +1 -0
  114. package/dist/mdm/intune.js +409 -0
  115. package/dist/mdm/intune.js.map +1 -0
  116. package/dist/mdm/jamf.d.ts +58 -0
  117. package/dist/mdm/jamf.d.ts.map +1 -0
  118. package/dist/mdm/jamf.js +441 -0
  119. package/dist/mdm/jamf.js.map +1 -0
  120. package/dist/mdm/jumpcloud.d.ts +73 -0
  121. package/dist/mdm/jumpcloud.d.ts.map +1 -0
  122. package/dist/mdm/jumpcloud.js +470 -0
  123. package/dist/mdm/jumpcloud.js.map +1 -0
  124. package/dist/mdm/templates/detect.ps1.d.ts +30 -0
  125. package/dist/mdm/templates/detect.ps1.d.ts.map +1 -0
  126. package/dist/mdm/templates/detect.ps1.js +463 -0
  127. package/dist/mdm/templates/detect.ps1.js.map +1 -0
  128. package/dist/mdm/templates/detect.sh.d.ts +30 -0
  129. package/dist/mdm/templates/detect.sh.d.ts.map +1 -0
  130. package/dist/mdm/templates/detect.sh.js +474 -0
  131. package/dist/mdm/templates/detect.sh.js.map +1 -0
  132. package/dist/mdm/templates/enforce.ps1.d.ts +33 -0
  133. package/dist/mdm/templates/enforce.ps1.d.ts.map +1 -0
  134. package/dist/mdm/templates/enforce.ps1.js +681 -0
  135. package/dist/mdm/templates/enforce.ps1.js.map +1 -0
  136. package/dist/mdm/templates/enforce.sh.d.ts +33 -0
  137. package/dist/mdm/templates/enforce.sh.d.ts.map +1 -0
  138. package/dist/mdm/templates/enforce.sh.js +591 -0
  139. package/dist/mdm/templates/enforce.sh.js.map +1 -0
  140. package/dist/platform/darwin.d.ts +6 -0
  141. package/dist/platform/darwin.d.ts.map +1 -0
  142. package/dist/platform/darwin.js +192 -0
  143. package/dist/platform/darwin.js.map +1 -0
  144. package/dist/platform/index.d.ts +43 -0
  145. package/dist/platform/index.d.ts.map +1 -0
  146. package/dist/platform/index.js +27 -0
  147. package/dist/platform/index.js.map +1 -0
  148. package/dist/platform/linux.d.ts +6 -0
  149. package/dist/platform/linux.d.ts.map +1 -0
  150. package/dist/platform/linux.js +134 -0
  151. package/dist/platform/linux.js.map +1 -0
  152. package/dist/platform/windows.d.ts +6 -0
  153. package/dist/platform/windows.d.ts.map +1 -0
  154. package/dist/platform/windows.js +134 -0
  155. package/dist/platform/windows.js.map +1 -0
  156. package/dist/reporter/console.d.ts +27 -0
  157. package/dist/reporter/console.d.ts.map +1 -0
  158. package/dist/reporter/console.js +431 -0
  159. package/dist/reporter/console.js.map +1 -0
  160. package/dist/reporter/index.d.ts +11 -0
  161. package/dist/reporter/index.d.ts.map +1 -0
  162. package/dist/reporter/index.js +13 -0
  163. package/dist/reporter/index.js.map +1 -0
  164. package/dist/reporter/json.d.ts +61 -0
  165. package/dist/reporter/json.d.ts.map +1 -0
  166. package/dist/reporter/json.js +75 -0
  167. package/dist/reporter/json.js.map +1 -0
  168. package/dist/reporter/webhook.d.ts +57 -0
  169. package/dist/reporter/webhook.d.ts.map +1 -0
  170. package/dist/reporter/webhook.js +230 -0
  171. package/dist/reporter/webhook.js.map +1 -0
  172. package/dist/types/config.d.ts +116 -0
  173. package/dist/types/config.d.ts.map +1 -0
  174. package/dist/types/config.js +6 -0
  175. package/dist/types/config.js.map +1 -0
  176. package/dist/types/detection.d.ts +85 -0
  177. package/dist/types/detection.d.ts.map +1 -0
  178. package/dist/types/detection.js +5 -0
  179. package/dist/types/detection.js.map +1 -0
  180. package/dist/types/enforcement.d.ts +33 -0
  181. package/dist/types/enforcement.d.ts.map +1 -0
  182. package/dist/types/enforcement.js +5 -0
  183. package/dist/types/enforcement.js.map +1 -0
  184. package/dist/types/index.d.ts +8 -0
  185. package/dist/types/index.d.ts.map +1 -0
  186. package/dist/types/index.js +8 -0
  187. package/dist/types/index.js.map +1 -0
  188. package/dist/types/isolation.d.ts +55 -0
  189. package/dist/types/isolation.d.ts.map +1 -0
  190. package/dist/types/isolation.js +5 -0
  191. package/dist/types/isolation.js.map +1 -0
  192. package/dist/utils/exec.d.ts +48 -0
  193. package/dist/utils/exec.d.ts.map +1 -0
  194. package/dist/utils/exec.js +103 -0
  195. package/dist/utils/exec.js.map +1 -0
  196. package/dist/utils/fs.d.ts +34 -0
  197. package/dist/utils/fs.d.ts.map +1 -0
  198. package/dist/utils/fs.js +111 -0
  199. package/dist/utils/fs.js.map +1 -0
  200. package/dist/utils/index.d.ts +7 -0
  201. package/dist/utils/index.d.ts.map +1 -0
  202. package/dist/utils/index.js +7 -0
  203. package/dist/utils/index.js.map +1 -0
  204. package/dist/utils/logger.d.ts +14 -0
  205. package/dist/utils/logger.d.ts.map +1 -0
  206. package/dist/utils/logger.js +48 -0
  207. package/dist/utils/logger.js.map +1 -0
  208. package/docs/intune.md +390 -0
  209. package/docs/jamf.md +400 -0
  210. package/docs/jumpcloud.md +510 -0
  211. package/package.json +65 -0
@@ -0,0 +1,414 @@
1
+ /**
2
+ * MDM Export Module - Main entry point.
3
+ *
4
+ * Provides unified interface for generating MDM deployment scripts
5
+ * for Jamf Pro, Microsoft Intune, and JumpCloud platforms.
6
+ *
7
+ * @module mdm
8
+ */
9
+ import * as fs from 'node:fs/promises';
10
+ import * as path from 'node:path';
11
+ import { VERSION, COMPANY } from '../branding.js';
12
+ // Re-export platform-specific modules
13
+ export * from './jamf.js';
14
+ export * from './intune.js';
15
+ export * from './jumpcloud.js';
16
+ // Re-export template modules
17
+ export * from './templates/detect.sh.js';
18
+ export * from './templates/detect.ps1.js';
19
+ export * from './templates/enforce.sh.js';
20
+ export * from './templates/enforce.ps1.js';
21
+ // Import platform modules for unified interface
22
+ import { getJamfExports } from './jamf.js';
23
+ import { getIntuneExports } from './intune.js';
24
+ import { getJumpCloudExports } from './jumpcloud.js';
25
+ /**
26
+ * Platform display names.
27
+ */
28
+ export const PLATFORM_NAMES = {
29
+ jamf: 'Jamf Pro',
30
+ intune: 'Microsoft Intune',
31
+ jumpcloud: 'JumpCloud',
32
+ };
33
+ /**
34
+ * Platform supported operating systems.
35
+ */
36
+ export const PLATFORM_OS = {
37
+ jamf: ['macOS'],
38
+ intune: ['Windows', 'macOS'],
39
+ jumpcloud: ['Windows', 'macOS', 'Linux'],
40
+ };
41
+ /**
42
+ * Validate MDM platform.
43
+ */
44
+ export function isValidPlatform(platform) {
45
+ return ['jamf', 'intune', 'jumpcloud'].includes(platform.toLowerCase());
46
+ }
47
+ /**
48
+ * Validate script mode.
49
+ */
50
+ export function isValidMode(mode) {
51
+ return ['detect', 'enforce', 'all'].includes(mode.toLowerCase());
52
+ }
53
+ /**
54
+ * Generate MDM deployment scripts for the specified platform.
55
+ */
56
+ export function generateMdmScripts(options) {
57
+ const { platform, mode, webhookUrl, webhookToken, gatewayPort, verbose, quarantine } = options;
58
+ const commonOptions = {
59
+ webhookUrl,
60
+ webhookToken,
61
+ gatewayPort,
62
+ verbose,
63
+ quarantine,
64
+ };
65
+ const files = [];
66
+ switch (platform) {
67
+ case 'jamf':
68
+ files.push(...generateJamfFiles(commonOptions, mode));
69
+ break;
70
+ case 'intune':
71
+ files.push(...generateIntuneFiles(commonOptions, mode));
72
+ break;
73
+ case 'jumpcloud':
74
+ files.push(...generateJumpCloudFiles(commonOptions, mode));
75
+ break;
76
+ }
77
+ return {
78
+ platform,
79
+ displayName: PLATFORM_NAMES[platform],
80
+ supportedOS: PLATFORM_OS[platform],
81
+ files,
82
+ outputDir: options.outputDir,
83
+ };
84
+ }
85
+ /**
86
+ * Generate Jamf-specific files.
87
+ */
88
+ function generateJamfFiles(options, mode) {
89
+ const exports = getJamfExports(options);
90
+ const files = [];
91
+ if (mode === 'detect' || mode === 'all') {
92
+ files.push({
93
+ filename: exports.detectScript.filename,
94
+ content: exports.detectScript.content,
95
+ description: exports.detectScript.description,
96
+ platform: 'macOS',
97
+ type: 'script',
98
+ });
99
+ }
100
+ if (mode === 'enforce' || mode === 'all') {
101
+ files.push({
102
+ filename: exports.enforceScript.filename,
103
+ content: exports.enforceScript.content,
104
+ description: exports.enforceScript.description,
105
+ platform: 'macOS',
106
+ type: 'script',
107
+ });
108
+ }
109
+ // Always include extension attribute and docs
110
+ files.push({
111
+ filename: 'nox-openclaw-extension-attribute.sh',
112
+ content: exports.extensionAttribute,
113
+ description: 'Jamf Pro extension attribute for inventory reporting',
114
+ platform: 'macOS',
115
+ type: 'extension',
116
+ });
117
+ files.push({
118
+ filename: 'README-jamf.md',
119
+ content: exports.documentation,
120
+ description: 'Jamf Pro deployment documentation',
121
+ platform: 'macOS',
122
+ type: 'documentation',
123
+ });
124
+ return files;
125
+ }
126
+ /**
127
+ * Generate Intune-specific files.
128
+ */
129
+ function generateIntuneFiles(options, mode) {
130
+ const exports = getIntuneExports(options);
131
+ const files = [];
132
+ if (mode === 'detect' || mode === 'all') {
133
+ // Windows detection
134
+ files.push({
135
+ filename: exports.windowsDetectScript.filename,
136
+ content: exports.windowsDetectScript.content,
137
+ description: exports.windowsDetectScript.description,
138
+ platform: 'Windows',
139
+ type: 'script',
140
+ });
141
+ // macOS detection
142
+ files.push({
143
+ filename: exports.macosDetectScript.filename,
144
+ content: exports.macosDetectScript.content,
145
+ description: exports.macosDetectScript.description,
146
+ platform: 'macOS',
147
+ type: 'script',
148
+ });
149
+ }
150
+ if (mode === 'enforce' || mode === 'all') {
151
+ // Windows enforcement
152
+ files.push({
153
+ filename: exports.windowsEnforceScript.filename,
154
+ content: exports.windowsEnforceScript.content,
155
+ description: exports.windowsEnforceScript.description,
156
+ platform: 'Windows',
157
+ type: 'script',
158
+ });
159
+ // macOS enforcement
160
+ files.push({
161
+ filename: exports.macosEnforceScript.filename,
162
+ content: exports.macosEnforceScript.content,
163
+ description: exports.macosEnforceScript.description,
164
+ platform: 'macOS',
165
+ type: 'script',
166
+ });
167
+ }
168
+ // Documentation
169
+ files.push({
170
+ filename: 'README-intune.md',
171
+ content: exports.documentation,
172
+ description: 'Microsoft Intune deployment documentation',
173
+ platform: 'Windows/macOS',
174
+ type: 'documentation',
175
+ });
176
+ return files;
177
+ }
178
+ /**
179
+ * Generate JumpCloud-specific files.
180
+ */
181
+ function generateJumpCloudFiles(options, mode) {
182
+ const exports = getJumpCloudExports(options);
183
+ const files = [];
184
+ if (mode === 'detect' || mode === 'all') {
185
+ // macOS detection
186
+ files.push({
187
+ filename: 'detect-openclaw-mac.sh',
188
+ content: exports.macDetectCommand.command,
189
+ description: 'JumpCloud detection command for macOS',
190
+ platform: 'macOS',
191
+ type: 'script',
192
+ });
193
+ // Linux detection
194
+ files.push({
195
+ filename: 'detect-openclaw-linux.sh',
196
+ content: exports.linuxDetectCommand.command,
197
+ description: 'JumpCloud detection command for Linux',
198
+ platform: 'Linux',
199
+ type: 'script',
200
+ });
201
+ // Windows detection
202
+ files.push({
203
+ filename: 'Detect-OpenClaw-Windows.ps1',
204
+ content: exports.windowsDetectCommand.command,
205
+ description: 'JumpCloud detection command for Windows',
206
+ platform: 'Windows',
207
+ type: 'script',
208
+ });
209
+ }
210
+ if (mode === 'enforce' || mode === 'all') {
211
+ // macOS enforcement
212
+ files.push({
213
+ filename: 'enforce-openclaw-mac.sh',
214
+ content: exports.macEnforceCommand.command,
215
+ description: 'JumpCloud enforcement command for macOS',
216
+ platform: 'macOS',
217
+ type: 'script',
218
+ });
219
+ // Linux enforcement
220
+ files.push({
221
+ filename: 'enforce-openclaw-linux.sh',
222
+ content: exports.linuxEnforceCommand.command,
223
+ description: 'JumpCloud enforcement command for Linux',
224
+ platform: 'Linux',
225
+ type: 'script',
226
+ });
227
+ // Windows enforcement
228
+ files.push({
229
+ filename: 'Enforce-OpenClaw-Windows.ps1',
230
+ content: exports.windowsEnforceCommand.command,
231
+ description: 'JumpCloud enforcement command for Windows',
232
+ platform: 'Windows',
233
+ type: 'script',
234
+ });
235
+ }
236
+ // System Insights fact
237
+ files.push({
238
+ filename: 'system-insights-fact.sh',
239
+ content: exports.systemInsightsFact,
240
+ description: 'JumpCloud System Insights custom fact',
241
+ platform: 'macOS/Linux',
242
+ type: 'extension',
243
+ });
244
+ // Documentation
245
+ files.push({
246
+ filename: 'README-jumpcloud.md',
247
+ content: exports.documentation,
248
+ description: 'JumpCloud deployment documentation',
249
+ platform: 'Windows/macOS/Linux',
250
+ type: 'documentation',
251
+ });
252
+ return files;
253
+ }
254
+ /**
255
+ * Write generated files to output directory.
256
+ */
257
+ export async function writeMdmFiles(result, outputDir) {
258
+ // Create output directory
259
+ await fs.mkdir(outputDir, { recursive: true });
260
+ // Write each file
261
+ for (const file of result.files) {
262
+ const filePath = path.join(outputDir, file.filename);
263
+ await fs.writeFile(filePath, file.content, 'utf-8');
264
+ // Make shell scripts executable
265
+ if (file.filename.endsWith('.sh')) {
266
+ await fs.chmod(filePath, 0o755);
267
+ }
268
+ }
269
+ // Write summary manifest
270
+ const manifest = {
271
+ generatedAt: new Date().toISOString(),
272
+ generator: {
273
+ name: 'nox-openclaw-detector',
274
+ version: VERSION,
275
+ vendor: COMPANY,
276
+ },
277
+ platform: result.platform,
278
+ displayName: result.displayName,
279
+ supportedOS: result.supportedOS,
280
+ files: result.files.map(f => ({
281
+ filename: f.filename,
282
+ type: f.type,
283
+ platform: f.platform,
284
+ description: f.description,
285
+ })),
286
+ };
287
+ await fs.writeFile(path.join(outputDir, 'manifest.json'), JSON.stringify(manifest, null, 2), 'utf-8');
288
+ }
289
+ /**
290
+ * Get supported platforms information.
291
+ */
292
+ export function getSupportedPlatforms() {
293
+ return [
294
+ { id: 'jamf', name: 'Jamf Pro', supportedOS: ['macOS'] },
295
+ { id: 'intune', name: 'Microsoft Intune', supportedOS: ['Windows', 'macOS'] },
296
+ { id: 'jumpcloud', name: 'JumpCloud', supportedOS: ['Windows', 'macOS', 'Linux'] },
297
+ ];
298
+ }
299
+ /**
300
+ * Generate combined README for all platforms.
301
+ */
302
+ export function generateMasterDocumentation() {
303
+ return `# Nox OpenClaw Detector - MDM Deployment Guide
304
+
305
+ ## Overview
306
+
307
+ This package contains deployment scripts for the Nox OpenClaw Detector,
308
+ designed for deployment via enterprise MDM platforms.
309
+
310
+ Generated by nox-openclaw-detector v${VERSION}
311
+ ${COMPANY} - https://nox.security
312
+
313
+ ## Supported Platforms
314
+
315
+ | Platform | Supported OS | Documentation |
316
+ |----------|-------------|---------------|
317
+ | Jamf Pro | macOS | README-jamf.md |
318
+ | Microsoft Intune | Windows, macOS | README-intune.md |
319
+ | JumpCloud | Windows, macOS, Linux | README-jumpcloud.md |
320
+
321
+ ## Quick Start
322
+
323
+ ### 1. Choose Your Platform
324
+
325
+ Select the appropriate scripts for your MDM platform from the generated files.
326
+
327
+ ### 2. Configure Webhook (Optional)
328
+
329
+ To send detection/enforcement results to your SIEM, regenerate scripts with webhook configuration:
330
+
331
+ \`\`\`bash
332
+ nox export --platform <platform> --mode detect --webhook https://your-siem.example.com/webhook --webhook-token YOUR_TOKEN
333
+ \`\`\`
334
+
335
+ ### 3. Deploy Scripts
336
+
337
+ Follow the platform-specific documentation for deployment instructions.
338
+
339
+ ### 4. Monitor Results
340
+
341
+ Configure alerting in your SIEM or MDM console based on exit codes:
342
+
343
+ | Exit Code | Detection | Enforcement |
344
+ |-----------|-----------|-------------|
345
+ | 0 | Clean | Success |
346
+ | 1 | Detected | Partial Failure |
347
+ | 2 | Error | Error |
348
+ | 3 | N/A | Nothing to Do |
349
+
350
+ ## Script Types
351
+
352
+ ### Detection Scripts
353
+
354
+ Scan devices for OpenClaw installations without making changes:
355
+ - CLI binary presence
356
+ - Application bundles
357
+ - Configuration directories
358
+ - Running processes
359
+ - Gateway port listening
360
+ - System services
361
+ - Docker containers
362
+
363
+ ### Enforcement Scripts
364
+
365
+ Remove OpenClaw installations from devices:
366
+ - Kill running processes
367
+ - Stop and disable services
368
+ - Remove binaries and applications
369
+ - Delete configuration files
370
+ - Clean Docker artifacts
371
+ - Optional: quarantine instead of delete
372
+
373
+ ## Webhook Payload
374
+
375
+ All scripts can send JSON payloads to a webhook URL:
376
+
377
+ \`\`\`json
378
+ {
379
+ "event": "openclaw.detection",
380
+ "version": "1.0",
381
+ "timestamp": "2026-02-03T10:30:00Z",
382
+ "status": "detected",
383
+ "severity": "high",
384
+ "host": {
385
+ "hostname": "device-name",
386
+ "os": "Darwin",
387
+ "arch": "arm64",
388
+ "user": "username"
389
+ },
390
+ "details": "CLI found at /usr/local/bin/openclaw",
391
+ "source": {
392
+ "tool": "nox-openclaw-detector",
393
+ "version": "${VERSION}",
394
+ "vendor": "${COMPANY}"
395
+ }
396
+ }
397
+ \`\`\`
398
+
399
+ ## Security Considerations
400
+
401
+ - Scripts require elevated privileges (root/admin)
402
+ - Webhook tokens should be stored securely
403
+ - Review scripts before deployment
404
+ - Test in pilot group first
405
+ - Monitor enforcement results
406
+
407
+ ## Support
408
+
409
+ For issues or questions:
410
+ - Email: support@nox.security
411
+ - Documentation: https://docs.nox.security/mdm
412
+ `;
413
+ }
414
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mdm/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Microsoft Intune MDM integration module.
3
+ * Generates Intune-specific deployment scripts and documentation.
4
+ */
5
+ export interface IntuneScriptOptions {
6
+ webhookUrl?: string;
7
+ webhookToken?: string;
8
+ gatewayPort?: number;
9
+ verbose?: boolean;
10
+ quarantine?: boolean;
11
+ }
12
+ export interface IntuneScript {
13
+ filename: string;
14
+ content: string;
15
+ description: string;
16
+ platform: 'windows' | 'macos' | 'linux';
17
+ runAs: 'system' | 'user';
18
+ runIn64Bit: boolean;
19
+ enforceSignature: boolean;
20
+ }
21
+ export interface IntuneCompliancePolicy {
22
+ name: string;
23
+ description: string;
24
+ platform: 'windows' | 'macos';
25
+ detectionScript: string;
26
+ remediationScript?: string;
27
+ }
28
+ /**
29
+ * Generate Intune-formatted Windows detection script.
30
+ */
31
+ export declare function generateIntuneWindowsDetectScript(options?: IntuneScriptOptions): IntuneScript;
32
+ /**
33
+ * Generate Intune-formatted Windows enforcement script.
34
+ */
35
+ export declare function generateIntuneWindowsEnforceScript(options?: IntuneScriptOptions): IntuneScript;
36
+ /**
37
+ * Generate Intune-formatted macOS detection script.
38
+ */
39
+ export declare function generateIntuneMacOSDetectScript(options?: IntuneScriptOptions): IntuneScript;
40
+ /**
41
+ * Generate Intune-formatted macOS enforcement script.
42
+ */
43
+ export declare function generateIntuneMacOSEnforceScript(options?: IntuneScriptOptions): IntuneScript;
44
+ /**
45
+ * Generate Intune Proactive Remediation package definition.
46
+ */
47
+ export declare function generateIntuneProactiveRemediation(options?: IntuneScriptOptions): IntuneCompliancePolicy;
48
+ /**
49
+ * Generate Intune deployment documentation.
50
+ */
51
+ export declare function generateIntuneDocumentation(): string;
52
+ /**
53
+ * Get all Intune exports.
54
+ */
55
+ export declare function getIntuneExports(options?: IntuneScriptOptions): {
56
+ windowsDetectScript: IntuneScript;
57
+ windowsEnforceScript: IntuneScript;
58
+ macosDetectScript: IntuneScript;
59
+ macosEnforceScript: IntuneScript;
60
+ proactiveRemediation: IntuneCompliancePolicy;
61
+ documentation: string;
62
+ metadata: {
63
+ platform: string;
64
+ displayName: string;
65
+ supportedOS: string[];
66
+ version: string;
67
+ };
68
+ };
69
+ //# sourceMappingURL=intune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intune.d.ts","sourceRoot":"","sources":["../../src/mdm/intune.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAoBjG;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAqBlG;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAoB/F;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAqBhG;AAgDD;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,GAAE,mBAAwB,GAAG,sBAAsB,CAW5G;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAkOpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,mBAAwB;;;;;;;;;;;;;EAejE"}