@panguard-ai/panguard-guard 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/analyze-agent.d.ts +62 -0
- package/dist/agent/analyze-agent.d.ts.map +1 -0
- package/dist/agent/analyze-agent.js +327 -0
- package/dist/agent/analyze-agent.js.map +1 -0
- package/dist/agent/detect-agent.d.ts +59 -0
- package/dist/agent/detect-agent.d.ts.map +1 -0
- package/dist/agent/detect-agent.js +214 -0
- package/dist/agent/detect-agent.js.map +1 -0
- package/dist/agent/index.d.ts +15 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +14 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/report-agent.d.ts +122 -0
- package/dist/agent/report-agent.d.ts.map +1 -0
- package/dist/agent/report-agent.js +468 -0
- package/dist/agent/report-agent.js.map +1 -0
- package/dist/agent/respond-agent.d.ts +113 -0
- package/dist/agent/respond-agent.d.ts.map +1 -0
- package/dist/agent/respond-agent.js +749 -0
- package/dist/agent/respond-agent.js.map +1 -0
- package/dist/agent-client/index.d.ts +81 -0
- package/dist/agent-client/index.d.ts.map +1 -0
- package/dist/agent-client/index.js +170 -0
- package/dist/agent-client/index.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +295 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +108 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon/index.d.ts +66 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +284 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +78 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +455 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/guard-engine.d.ts +108 -0
- package/dist/guard-engine.d.ts.map +1 -0
- package/dist/guard-engine.js +740 -0
- package/dist/guard-engine.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/install/index.d.ts +23 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +216 -0
- package/dist/install/index.js.map +1 -0
- package/dist/investigation/index.d.ts +80 -0
- package/dist/investigation/index.d.ts.map +1 -0
- package/dist/investigation/index.js +570 -0
- package/dist/investigation/index.js.map +1 -0
- package/dist/license/index.d.ts +46 -0
- package/dist/license/index.d.ts.map +1 -0
- package/dist/license/index.js +145 -0
- package/dist/license/index.js.map +1 -0
- package/dist/memory/baseline.d.ts +34 -0
- package/dist/memory/baseline.d.ts.map +1 -0
- package/dist/memory/baseline.js +224 -0
- package/dist/memory/baseline.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +58 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learning.d.ts +35 -0
- package/dist/memory/learning.d.ts.map +1 -0
- package/dist/memory/learning.js +60 -0
- package/dist/memory/learning.js.map +1 -0
- package/dist/monitors/falco-monitor.d.ts +62 -0
- package/dist/monitors/falco-monitor.d.ts.map +1 -0
- package/dist/monitors/falco-monitor.js +226 -0
- package/dist/monitors/falco-monitor.js.map +1 -0
- package/dist/monitors/suricata-monitor.d.ts +80 -0
- package/dist/monitors/suricata-monitor.d.ts.map +1 -0
- package/dist/monitors/suricata-monitor.js +227 -0
- package/dist/monitors/suricata-monitor.js.map +1 -0
- package/dist/notify/email.d.ts +23 -0
- package/dist/notify/email.d.ts.map +1 -0
- package/dist/notify/email.js +124 -0
- package/dist/notify/email.js.map +1 -0
- package/dist/notify/index.d.ts +31 -0
- package/dist/notify/index.d.ts.map +1 -0
- package/dist/notify/index.js +70 -0
- package/dist/notify/index.js.map +1 -0
- package/dist/notify/line-notify.d.ts.map +1 -0
- package/dist/notify/slack.d.ts +21 -0
- package/dist/notify/slack.d.ts.map +1 -0
- package/dist/notify/slack.js +92 -0
- package/dist/notify/slack.js.map +1 -0
- package/dist/notify/telegram.d.ts +21 -0
- package/dist/notify/telegram.d.ts.map +1 -0
- package/dist/notify/telegram.js +89 -0
- package/dist/notify/telegram.js.map +1 -0
- package/dist/response/file-quarantine.d.ts +63 -0
- package/dist/response/file-quarantine.d.ts.map +1 -0
- package/dist/response/file-quarantine.js +137 -0
- package/dist/response/file-quarantine.js.map +1 -0
- package/dist/response/index.d.ts +4 -0
- package/dist/response/index.d.ts.map +1 -0
- package/dist/response/index.js +4 -0
- package/dist/response/index.js.map +1 -0
- package/dist/response/ip-blocker.d.ts +69 -0
- package/dist/response/ip-blocker.d.ts.map +1 -0
- package/dist/response/ip-blocker.js +191 -0
- package/dist/response/ip-blocker.js.map +1 -0
- package/dist/response/process-killer.d.ts +49 -0
- package/dist/response/process-killer.d.ts.map +1 -0
- package/dist/response/process-killer.js +230 -0
- package/dist/response/process-killer.js.map +1 -0
- package/dist/rules/builtin-rules.d.ts +12 -0
- package/dist/rules/builtin-rules.d.ts.map +1 -0
- package/dist/rules/builtin-rules.js +471 -0
- package/dist/rules/builtin-rules.js.map +1 -0
- package/dist/threat-cloud/client-id.d.ts +13 -0
- package/dist/threat-cloud/client-id.d.ts.map +1 -0
- package/dist/threat-cloud/client-id.js +38 -0
- package/dist/threat-cloud/client-id.js.map +1 -0
- package/dist/threat-cloud/index.d.ts +103 -0
- package/dist/threat-cloud/index.d.ts.map +1 -0
- package/dist/threat-cloud/index.js +386 -0
- package/dist/threat-cloud/index.js.map +1 -0
- package/dist/types.d.ts +336 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +42 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process Killer - Terminate processes with child cleanup and safety checks
|
|
3
|
+
* 程序終止器 - 終止程序(含子程序清理與安全檢查)
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Kill process and all child processes (process tree)
|
|
7
|
+
* - Protected process list (never kill system-critical processes)
|
|
8
|
+
* - SIGTERM first, SIGKILL after timeout
|
|
9
|
+
* - Cross-platform support
|
|
10
|
+
*
|
|
11
|
+
* @module @panguard-ai/panguard-guard/response/process-killer
|
|
12
|
+
*/
|
|
13
|
+
import { execFile } from 'node:child_process';
|
|
14
|
+
import { platform } from 'node:os';
|
|
15
|
+
import { createLogger } from '@panguard-ai/core';
|
|
16
|
+
const logger = createLogger('panguard-guard:process-killer');
|
|
17
|
+
/** Protected system processes that must never be killed / 不可終止的系統程序 */
|
|
18
|
+
const PROTECTED_PROCESSES = new Set([
|
|
19
|
+
// Unix/Linux
|
|
20
|
+
'init',
|
|
21
|
+
'systemd',
|
|
22
|
+
'launchd',
|
|
23
|
+
'sshd',
|
|
24
|
+
'cron',
|
|
25
|
+
'atd',
|
|
26
|
+
'journald',
|
|
27
|
+
'udevd',
|
|
28
|
+
'dbus-daemon',
|
|
29
|
+
'NetworkManager',
|
|
30
|
+
'login',
|
|
31
|
+
'getty',
|
|
32
|
+
// macOS
|
|
33
|
+
'loginwindow',
|
|
34
|
+
'WindowServer',
|
|
35
|
+
'kernel_task',
|
|
36
|
+
'mds',
|
|
37
|
+
'mds_stores',
|
|
38
|
+
'coreaudiod',
|
|
39
|
+
'diskarbitrationd',
|
|
40
|
+
'configd',
|
|
41
|
+
// Windows
|
|
42
|
+
'explorer.exe',
|
|
43
|
+
'svchost.exe',
|
|
44
|
+
'csrss.exe',
|
|
45
|
+
'lsass.exe',
|
|
46
|
+
'services.exe',
|
|
47
|
+
'winlogon.exe',
|
|
48
|
+
'wininit.exe',
|
|
49
|
+
'smss.exe',
|
|
50
|
+
'System',
|
|
51
|
+
'dwm.exe',
|
|
52
|
+
// Self
|
|
53
|
+
'panguard-guard',
|
|
54
|
+
'node',
|
|
55
|
+
]);
|
|
56
|
+
/** Protected PIDs / 受保護的 PID */
|
|
57
|
+
const PROTECTED_PIDS = new Set([0, 1]);
|
|
58
|
+
/**
|
|
59
|
+
* Process Killer with safety checks and tree killing
|
|
60
|
+
* 程序終止器(含安全檢查與程序樹終止)
|
|
61
|
+
*/
|
|
62
|
+
export class ProcessKiller {
|
|
63
|
+
additionalProtected;
|
|
64
|
+
constructor(additionalProtectedProcesses = []) {
|
|
65
|
+
this.additionalProtected = new Set(additionalProtectedProcesses);
|
|
66
|
+
}
|
|
67
|
+
/** Check if process name is protected / 檢查程序名稱是否受保護 */
|
|
68
|
+
isProtected(nameOrPid) {
|
|
69
|
+
if (typeof nameOrPid === 'number') {
|
|
70
|
+
return PROTECTED_PIDS.has(nameOrPid) || nameOrPid === process.pid;
|
|
71
|
+
}
|
|
72
|
+
return PROTECTED_PROCESSES.has(nameOrPid) || this.additionalProtected.has(nameOrPid);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Kill a process and optionally its children
|
|
76
|
+
* 終止程序(可選終止子程序)
|
|
77
|
+
*/
|
|
78
|
+
async kill(pid, options = {}) {
|
|
79
|
+
const { processName, killChildren = true, gracePeriodMs = 3000 } = options;
|
|
80
|
+
// Safety: protected PID check
|
|
81
|
+
if (PROTECTED_PIDS.has(pid) || pid === process.pid) {
|
|
82
|
+
return {
|
|
83
|
+
pid,
|
|
84
|
+
processName,
|
|
85
|
+
success: false,
|
|
86
|
+
message: `PID ${pid} is protected and cannot be killed`,
|
|
87
|
+
childrenKilled: 0,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// Safety: protected process name check
|
|
91
|
+
if (processName &&
|
|
92
|
+
(PROTECTED_PROCESSES.has(processName) || this.additionalProtected.has(processName))) {
|
|
93
|
+
return {
|
|
94
|
+
pid,
|
|
95
|
+
processName,
|
|
96
|
+
success: false,
|
|
97
|
+
message: `Process "${processName}" is protected`,
|
|
98
|
+
childrenKilled: 0,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
let childrenKilled = 0;
|
|
102
|
+
// Kill children first if requested
|
|
103
|
+
if (killChildren) {
|
|
104
|
+
try {
|
|
105
|
+
const children = await this.getChildPIDs(pid);
|
|
106
|
+
for (const childPid of children) {
|
|
107
|
+
try {
|
|
108
|
+
process.kill(childPid, 'SIGTERM');
|
|
109
|
+
childrenKilled++;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Child may have already exited
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Failed to get children, continue with parent
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// SIGTERM first (graceful)
|
|
121
|
+
try {
|
|
122
|
+
process.kill(pid, 'SIGTERM');
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
126
|
+
if (err.code === 'ESRCH') {
|
|
127
|
+
return {
|
|
128
|
+
pid,
|
|
129
|
+
processName,
|
|
130
|
+
success: true,
|
|
131
|
+
message: 'Process already exited',
|
|
132
|
+
childrenKilled,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
pid,
|
|
137
|
+
processName,
|
|
138
|
+
success: false,
|
|
139
|
+
message: `SIGTERM failed: ${msg}`,
|
|
140
|
+
childrenKilled,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// Wait for graceful exit, then SIGKILL if still alive
|
|
144
|
+
const isAlive = await this.waitForExit(pid, gracePeriodMs);
|
|
145
|
+
if (isAlive) {
|
|
146
|
+
try {
|
|
147
|
+
process.kill(pid, 'SIGKILL');
|
|
148
|
+
logger.info(`SIGKILL sent to PID ${pid} after grace period`);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Process may have exited between check and kill
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
logger.info(`Killed process PID ${pid}${processName ? ` (${processName})` : ''}, ${childrenKilled} children terminated`);
|
|
155
|
+
return {
|
|
156
|
+
pid,
|
|
157
|
+
processName,
|
|
158
|
+
success: true,
|
|
159
|
+
message: `Process PID ${pid} terminated (${childrenKilled} children also killed)`,
|
|
160
|
+
childrenKilled,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get child PIDs of a process / 取得程序的子 PID
|
|
165
|
+
*/
|
|
166
|
+
async getChildPIDs(parentPid) {
|
|
167
|
+
const os = platform();
|
|
168
|
+
try {
|
|
169
|
+
if (os === 'win32') {
|
|
170
|
+
const stdout = await execFilePromise('wmic', [
|
|
171
|
+
'process',
|
|
172
|
+
'where',
|
|
173
|
+
`(ParentProcessId=${parentPid})`,
|
|
174
|
+
'get',
|
|
175
|
+
'ProcessId',
|
|
176
|
+
]);
|
|
177
|
+
return stdout
|
|
178
|
+
.split('\n')
|
|
179
|
+
.map((line) => parseInt(line.trim(), 10))
|
|
180
|
+
.filter((pid) => !isNaN(pid) && pid !== parentPid);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
// Unix/macOS: use pgrep
|
|
184
|
+
const stdout = await execFilePromise('/usr/bin/pgrep', ['-P', String(parentPid)]);
|
|
185
|
+
return stdout
|
|
186
|
+
.split('\n')
|
|
187
|
+
.map((line) => parseInt(line.trim(), 10))
|
|
188
|
+
.filter((pid) => !isNaN(pid));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return []; // No children or pgrep not available
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Wait for process to exit, return true if still alive
|
|
197
|
+
* 等待程序退出,如果仍存活則回傳 true
|
|
198
|
+
*/
|
|
199
|
+
waitForExit(pid, timeoutMs) {
|
|
200
|
+
return new Promise((resolve) => {
|
|
201
|
+
const start = Date.now();
|
|
202
|
+
const check = () => {
|
|
203
|
+
try {
|
|
204
|
+
process.kill(pid, 0); // Signal 0 checks existence
|
|
205
|
+
if (Date.now() - start >= timeoutMs) {
|
|
206
|
+
resolve(true); // Still alive after timeout
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
setTimeout(check, 200);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
resolve(false); // Process exited
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
check();
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function execFilePromise(command, args) {
|
|
221
|
+
return new Promise((resolve, reject) => {
|
|
222
|
+
execFile(command, args, { timeout: 5000 }, (error, stdout) => {
|
|
223
|
+
if (error)
|
|
224
|
+
reject(error);
|
|
225
|
+
else
|
|
226
|
+
resolve(stdout);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=process-killer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-killer.js","sourceRoot":"","sources":["../../src/response/process-killer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Sigma detection rules shipped with Guard
|
|
3
|
+
* 內建 Sigma 偵測規則
|
|
4
|
+
*
|
|
5
|
+
* These rules provide baseline detection capability out of the box.
|
|
6
|
+
* Additional rules can be loaded from disk or fetched from Threat Cloud.
|
|
7
|
+
*
|
|
8
|
+
* @module @panguard-ai/panguard-guard/rules/builtin-rules
|
|
9
|
+
*/
|
|
10
|
+
import type { SigmaRule } from '@panguard-ai/core';
|
|
11
|
+
export declare const BUILTIN_RULES: SigmaRule[];
|
|
12
|
+
//# sourceMappingURL=builtin-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-rules.d.ts","sourceRoot":"","sources":["../../src/rules/builtin-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,SAAS,EAqdpC,CAAC"}
|