@panguard-ai/core 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/adapters/adapter-registry.d.ts +150 -0
- package/dist/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/adapters/adapter-registry.js +271 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/base-adapter.d.ts +101 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +160 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/defender-adapter.d.ts +90 -0
- package/dist/adapters/defender-adapter.d.ts.map +1 -0
- package/dist/adapters/defender-adapter.js +227 -0
- package/dist/adapters/defender-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +22 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +23 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/syslog-adapter.d.ts +207 -0
- package/dist/adapters/syslog-adapter.d.ts.map +1 -0
- package/dist/adapters/syslog-adapter.js +432 -0
- package/dist/adapters/syslog-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +135 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +13 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/wazuh-adapter.d.ts +120 -0
- package/dist/adapters/wazuh-adapter.d.ts.map +1 -0
- package/dist/adapters/wazuh-adapter.js +266 -0
- package/dist/adapters/wazuh-adapter.js.map +1 -0
- package/dist/ai/claude-provider.d.ts +66 -0
- package/dist/ai/claude-provider.d.ts.map +1 -0
- package/dist/ai/claude-provider.js +166 -0
- package/dist/ai/claude-provider.js.map +1 -0
- package/dist/ai/funnel-router.d.ts +75 -0
- package/dist/ai/funnel-router.d.ts.map +1 -0
- package/dist/ai/funnel-router.js +173 -0
- package/dist/ai/funnel-router.js.map +1 -0
- package/dist/ai/index.d.ts +77 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +95 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/ollama-provider.d.ts +73 -0
- package/dist/ai/ollama-provider.d.ts.map +1 -0
- package/dist/ai/ollama-provider.js +200 -0
- package/dist/ai/ollama-provider.js.map +1 -0
- package/dist/ai/openai-provider.d.ts +70 -0
- package/dist/ai/openai-provider.d.ts.map +1 -0
- package/dist/ai/openai-provider.js +175 -0
- package/dist/ai/openai-provider.js.map +1 -0
- package/dist/ai/prompts/event-classifier.d.ts +25 -0
- package/dist/ai/prompts/event-classifier.d.ts.map +1 -0
- package/dist/ai/prompts/event-classifier.js +94 -0
- package/dist/ai/prompts/event-classifier.js.map +1 -0
- package/dist/ai/prompts/index.d.ts +13 -0
- package/dist/ai/prompts/index.d.ts.map +1 -0
- package/dist/ai/prompts/index.js +13 -0
- package/dist/ai/prompts/index.js.map +1 -0
- package/dist/ai/prompts/report-generator.d.ts +25 -0
- package/dist/ai/prompts/report-generator.d.ts.map +1 -0
- package/dist/ai/prompts/report-generator.js +131 -0
- package/dist/ai/prompts/report-generator.js.map +1 -0
- package/dist/ai/prompts/threat-analyzer.d.ts +26 -0
- package/dist/ai/prompts/threat-analyzer.d.ts.map +1 -0
- package/dist/ai/prompts/threat-analyzer.js +75 -0
- package/dist/ai/prompts/threat-analyzer.js.map +1 -0
- package/dist/ai/provider-base.d.ts +100 -0
- package/dist/ai/provider-base.d.ts.map +1 -0
- package/dist/ai/provider-base.js +166 -0
- package/dist/ai/provider-base.js.map +1 -0
- package/dist/ai/response-parser.d.ts +36 -0
- package/dist/ai/response-parser.d.ts.map +1 -0
- package/dist/ai/response-parser.js +195 -0
- package/dist/ai/response-parser.js.map +1 -0
- package/dist/ai/token-tracker.d.ts +72 -0
- package/dist/ai/token-tracker.d.ts.map +1 -0
- package/dist/ai/token-tracker.js +145 -0
- package/dist/ai/token-tracker.js.map +1 -0
- package/dist/ai/types.d.ts +138 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +12 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli/index.d.ts +146 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +515 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/prompts.d.ts +58 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +327 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/wizard.d.ts +58 -0
- package/dist/cli/wizard.d.ts.map +1 -0
- package/dist/cli/wizard.js +200 -0
- package/dist/cli/wizard.js.map +1 -0
- package/dist/discovery/firewall-checker.d.ts +28 -0
- package/dist/discovery/firewall-checker.d.ts.map +1 -0
- package/dist/discovery/firewall-checker.js +379 -0
- package/dist/discovery/firewall-checker.js.map +1 -0
- package/dist/discovery/index.d.ts +23 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +29 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/network-scanner.d.ts +60 -0
- package/dist/discovery/network-scanner.d.ts.map +1 -0
- package/dist/discovery/network-scanner.js +640 -0
- package/dist/discovery/network-scanner.js.map +1 -0
- package/dist/discovery/os-detector.d.ts +24 -0
- package/dist/discovery/os-detector.d.ts.map +1 -0
- package/dist/discovery/os-detector.js +253 -0
- package/dist/discovery/os-detector.js.map +1 -0
- package/dist/discovery/osquery-provider.d.ts +127 -0
- package/dist/discovery/osquery-provider.d.ts.map +1 -0
- package/dist/discovery/osquery-provider.js +214 -0
- package/dist/discovery/osquery-provider.js.map +1 -0
- package/dist/discovery/risk-scorer.d.ts +66 -0
- package/dist/discovery/risk-scorer.d.ts.map +1 -0
- package/dist/discovery/risk-scorer.js +294 -0
- package/dist/discovery/risk-scorer.js.map +1 -0
- package/dist/discovery/security-tools.d.ts +31 -0
- package/dist/discovery/security-tools.d.ts.map +1 -0
- package/dist/discovery/security-tools.js +346 -0
- package/dist/discovery/security-tools.js.map +1 -0
- package/dist/discovery/service-detector.d.ts +28 -0
- package/dist/discovery/service-detector.d.ts.map +1 -0
- package/dist/discovery/service-detector.js +300 -0
- package/dist/discovery/service-detector.js.map +1 -0
- package/dist/discovery/types.d.ts +502 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +12 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/discovery/user-auditor.d.ts +28 -0
- package/dist/discovery/user-auditor.d.ts.map +1 -0
- package/dist/discovery/user-auditor.js +385 -0
- package/dist/discovery/user-auditor.js.map +1 -0
- package/dist/i18n/config.d.ts +45 -0
- package/dist/i18n/config.d.ts.map +1 -0
- package/dist/i18n/config.js +135 -0
- package/dist/i18n/config.js.map +1 -0
- package/dist/i18n/index.d.ts +8 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +8 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/monitor/event-normalizer.d.ts +102 -0
- package/dist/monitor/event-normalizer.d.ts.map +1 -0
- package/dist/monitor/event-normalizer.js +195 -0
- package/dist/monitor/event-normalizer.js.map +1 -0
- package/dist/monitor/file-monitor.d.ts +90 -0
- package/dist/monitor/file-monitor.d.ts.map +1 -0
- package/dist/monitor/file-monitor.js +222 -0
- package/dist/monitor/file-monitor.js.map +1 -0
- package/dist/monitor/index.d.ts +147 -0
- package/dist/monitor/index.d.ts.map +1 -0
- package/dist/monitor/index.js +293 -0
- package/dist/monitor/index.js.map +1 -0
- package/dist/monitor/log-monitor.d.ts +102 -0
- package/dist/monitor/log-monitor.d.ts.map +1 -0
- package/dist/monitor/log-monitor.js +245 -0
- package/dist/monitor/log-monitor.js.map +1 -0
- package/dist/monitor/network-monitor.d.ts +103 -0
- package/dist/monitor/network-monitor.d.ts.map +1 -0
- package/dist/monitor/network-monitor.js +336 -0
- package/dist/monitor/network-monitor.js.map +1 -0
- package/dist/monitor/process-monitor.d.ts +108 -0
- package/dist/monitor/process-monitor.d.ts.map +1 -0
- package/dist/monitor/process-monitor.js +245 -0
- package/dist/monitor/process-monitor.js.map +1 -0
- package/dist/monitor/threat-intel-feeds.d.ts +141 -0
- package/dist/monitor/threat-intel-feeds.d.ts.map +1 -0
- package/dist/monitor/threat-intel-feeds.js +430 -0
- package/dist/monitor/threat-intel-feeds.js.map +1 -0
- package/dist/monitor/threat-intel.d.ts +83 -0
- package/dist/monitor/threat-intel.d.ts.map +1 -0
- package/dist/monitor/threat-intel.js +215 -0
- package/dist/monitor/threat-intel.js.map +1 -0
- package/dist/monitor/types.d.ts +65 -0
- package/dist/monitor/types.d.ts.map +1 -0
- package/dist/monitor/types.js +20 -0
- package/dist/monitor/types.js.map +1 -0
- package/dist/rules/index.d.ts +115 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +244 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/rule-loader.d.ts +54 -0
- package/dist/rules/rule-loader.d.ts.map +1 -0
- package/dist/rules/rule-loader.js +167 -0
- package/dist/rules/rule-loader.js.map +1 -0
- package/dist/rules/sigma-matcher.d.ts +40 -0
- package/dist/rules/sigma-matcher.d.ts.map +1 -0
- package/dist/rules/sigma-matcher.js +447 -0
- package/dist/rules/sigma-matcher.js.map +1 -0
- package/dist/rules/sigma-parser.d.ts +36 -0
- package/dist/rules/sigma-parser.d.ts.map +1 -0
- package/dist/rules/sigma-parser.js +180 -0
- package/dist/rules/sigma-parser.js.map +1 -0
- package/dist/rules/types.d.ts +112 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +11 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/rules/yara-scanner.d.ts +103 -0
- package/dist/rules/yara-scanner.d.ts.map +1 -0
- package/dist/rules/yara-scanner.js +421 -0
- package/dist/rules/yara-scanner.js.map +1 -0
- package/dist/scoring/achievements.d.ts +76 -0
- package/dist/scoring/achievements.d.ts.map +1 -0
- package/dist/scoring/achievements.js +211 -0
- package/dist/scoring/achievements.js.map +1 -0
- package/dist/scoring/index.d.ts +3 -0
- package/dist/scoring/index.d.ts.map +1 -0
- package/dist/scoring/index.js +3 -0
- package/dist/scoring/index.js.map +1 -0
- package/dist/scoring/security-score.d.ts +60 -0
- package/dist/scoring/security-score.d.ts.map +1 -0
- package/dist/scoring/security-score.js +211 -0
- package/dist/scoring/security-score.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +38 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +71 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/validation.d.ts +35 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +56 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sigma rule filesystem loader
|
|
3
|
+
* Sigma 規則檔案系統載入器
|
|
4
|
+
*
|
|
5
|
+
* Loads Sigma rules from directories and supports watching for changes.
|
|
6
|
+
* 從目錄載入 Sigma 規則並支援監視變更。
|
|
7
|
+
*
|
|
8
|
+
* @module @panguard-ai/core/rules/rule-loader
|
|
9
|
+
*/
|
|
10
|
+
import type { SigmaRule } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Load all Sigma rules from a directory
|
|
13
|
+
* 從目錄載入所有 Sigma 規則
|
|
14
|
+
*
|
|
15
|
+
* Reads all .yml and .yaml files in the given directory (non-recursive),
|
|
16
|
+
* parses each one, and returns the successfully parsed rules.
|
|
17
|
+
* 讀取指定目錄中所有 .yml 和 .yaml 檔案(非遞迴),
|
|
18
|
+
* 解析每一個,並回傳成功解析的規則。
|
|
19
|
+
*
|
|
20
|
+
* @param dir - Directory path containing Sigma rule files / 包含 Sigma 規則檔案的目錄路徑
|
|
21
|
+
* @returns Array of successfully parsed Sigma rules / 成功解析的 Sigma 規則陣列
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadRulesFromDirectory(dir: string): SigmaRule[];
|
|
24
|
+
/**
|
|
25
|
+
* Recursively load Sigma rules from a directory tree
|
|
26
|
+
* 從目錄樹遞迴載入 Sigma 規則
|
|
27
|
+
*
|
|
28
|
+
* Walks subdirectories to find all .yml/.yaml files.
|
|
29
|
+
* Optionally tags each rule with a source label.
|
|
30
|
+
* 遍歷子目錄尋找所有 .yml/.yaml 檔案。
|
|
31
|
+
* 可選擇性地為每條規則標記來源標籤。
|
|
32
|
+
*
|
|
33
|
+
* @param dir - Root directory to scan recursively / 要遞迴掃描的根目錄
|
|
34
|
+
* @param source - Optional source tag for loaded rules / 可選的規則來源標記
|
|
35
|
+
* @returns Array of successfully parsed Sigma rules / 成功解析的 Sigma 規則陣列
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadRulesRecursive(dir: string, source?: SigmaRule['source']): SigmaRule[];
|
|
38
|
+
/**
|
|
39
|
+
* Watch a directory for Sigma rule file changes
|
|
40
|
+
* 監視目錄中的 Sigma 規則檔案變更
|
|
41
|
+
*
|
|
42
|
+
* Uses fs.watch to monitor the directory. When any .yml/.yaml file changes,
|
|
43
|
+
* reloads all rules from the directory and invokes the callback.
|
|
44
|
+
* Returns a cleanup function that stops the watcher.
|
|
45
|
+
* 使用 fs.watch 監視目錄。當任何 .yml/.yaml 檔案變更時,
|
|
46
|
+
* 從目錄重新載入所有規則並呼叫回調。
|
|
47
|
+
* 回傳停止監視的清理函式。
|
|
48
|
+
*
|
|
49
|
+
* @param dir - Directory path to watch / 要監視的目錄路徑
|
|
50
|
+
* @param callback - Called with reloaded rules on file changes / 檔案變更時以重新載入的規則呼叫
|
|
51
|
+
* @returns Cleanup function to stop the watcher / 停止監視的清理函式
|
|
52
|
+
*/
|
|
53
|
+
export declare function watchRulesDirectory(dir: string, callback: (rules: SigmaRule[]) => void): () => void;
|
|
54
|
+
//# sourceMappingURL=rule-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-loader.d.ts","sourceRoot":"","sources":["../../src/rules/rule-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CA0C/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,EAAE,CAyCzF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,GACrC,MAAM,IAAI,CA2CZ"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sigma rule filesystem loader
|
|
3
|
+
* Sigma 規則檔案系統載入器
|
|
4
|
+
*
|
|
5
|
+
* Loads Sigma rules from directories and supports watching for changes.
|
|
6
|
+
* 從目錄載入 Sigma 規則並支援監視變更。
|
|
7
|
+
*
|
|
8
|
+
* @module @panguard-ai/core/rules/rule-loader
|
|
9
|
+
*/
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { createLogger } from '../utils/logger.js';
|
|
13
|
+
import { parseSigmaFile } from './sigma-parser.js';
|
|
14
|
+
const logger = createLogger('rule-loader');
|
|
15
|
+
/** Supported Sigma rule file extensions / 支援的 Sigma 規則檔案副檔名 */
|
|
16
|
+
const SIGMA_EXTENSIONS = new Set(['.yml', '.yaml']);
|
|
17
|
+
/**
|
|
18
|
+
* Load all Sigma rules from a directory
|
|
19
|
+
* 從目錄載入所有 Sigma 規則
|
|
20
|
+
*
|
|
21
|
+
* Reads all .yml and .yaml files in the given directory (non-recursive),
|
|
22
|
+
* parses each one, and returns the successfully parsed rules.
|
|
23
|
+
* 讀取指定目錄中所有 .yml 和 .yaml 檔案(非遞迴),
|
|
24
|
+
* 解析每一個,並回傳成功解析的規則。
|
|
25
|
+
*
|
|
26
|
+
* @param dir - Directory path containing Sigma rule files / 包含 Sigma 規則檔案的目錄路徑
|
|
27
|
+
* @returns Array of successfully parsed Sigma rules / 成功解析的 Sigma 規則陣列
|
|
28
|
+
*/
|
|
29
|
+
export function loadRulesFromDirectory(dir) {
|
|
30
|
+
const rules = [];
|
|
31
|
+
if (!fs.existsSync(dir)) {
|
|
32
|
+
logger.error(`Rules directory does not exist: ${dir} / 規則目錄不存在: ${dir}`);
|
|
33
|
+
return rules;
|
|
34
|
+
}
|
|
35
|
+
let entries;
|
|
36
|
+
try {
|
|
37
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
41
|
+
logger.error(`Failed to read rules directory: ${dir} / 讀取規則目錄失敗: ${dir}`, {
|
|
42
|
+
error: message,
|
|
43
|
+
});
|
|
44
|
+
return rules;
|
|
45
|
+
}
|
|
46
|
+
for (const entry of entries) {
|
|
47
|
+
if (!entry.isFile())
|
|
48
|
+
continue;
|
|
49
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
50
|
+
if (!SIGMA_EXTENSIONS.has(ext))
|
|
51
|
+
continue;
|
|
52
|
+
const filePath = path.join(dir, entry.name);
|
|
53
|
+
const rule = parseSigmaFile(filePath);
|
|
54
|
+
if (rule !== null) {
|
|
55
|
+
rules.push(rule);
|
|
56
|
+
logger.debug(`Loaded rule from file: ${entry.name} / 從檔案載入規則: ${entry.name}`, {
|
|
57
|
+
ruleId: rule.id,
|
|
58
|
+
title: rule.title,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
logger.info(`Loaded ${rules.length} rules from directory: ${dir} / 從目錄載入 ${rules.length} 條規則: ${dir}`);
|
|
63
|
+
return rules;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Recursively load Sigma rules from a directory tree
|
|
67
|
+
* 從目錄樹遞迴載入 Sigma 規則
|
|
68
|
+
*
|
|
69
|
+
* Walks subdirectories to find all .yml/.yaml files.
|
|
70
|
+
* Optionally tags each rule with a source label.
|
|
71
|
+
* 遍歷子目錄尋找所有 .yml/.yaml 檔案。
|
|
72
|
+
* 可選擇性地為每條規則標記來源標籤。
|
|
73
|
+
*
|
|
74
|
+
* @param dir - Root directory to scan recursively / 要遞迴掃描的根目錄
|
|
75
|
+
* @param source - Optional source tag for loaded rules / 可選的規則來源標記
|
|
76
|
+
* @returns Array of successfully parsed Sigma rules / 成功解析的 Sigma 規則陣列
|
|
77
|
+
*/
|
|
78
|
+
export function loadRulesRecursive(dir, source) {
|
|
79
|
+
if (!fs.existsSync(dir)) {
|
|
80
|
+
logger.warn(`Rules directory does not exist, skipping: ${dir} / 規則目錄不存在,跳過: ${dir}`);
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
const rules = [];
|
|
84
|
+
function walk(currentDir) {
|
|
85
|
+
let entries;
|
|
86
|
+
try {
|
|
87
|
+
entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
for (const entry of entries) {
|
|
93
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
94
|
+
if (entry.isDirectory()) {
|
|
95
|
+
walk(fullPath);
|
|
96
|
+
}
|
|
97
|
+
else if (entry.isFile()) {
|
|
98
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
99
|
+
if (!SIGMA_EXTENSIONS.has(ext))
|
|
100
|
+
continue;
|
|
101
|
+
const rule = parseSigmaFile(fullPath);
|
|
102
|
+
if (rule !== null) {
|
|
103
|
+
if (source !== undefined) {
|
|
104
|
+
rule.source = source;
|
|
105
|
+
}
|
|
106
|
+
rules.push(rule);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
walk(dir);
|
|
112
|
+
logger.info(`Loaded ${rules.length} rules recursively from: ${dir} (source: ${source ?? 'unset'}) / 從 ${dir} 遞迴載入 ${rules.length} 條規則`);
|
|
113
|
+
return rules;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Watch a directory for Sigma rule file changes
|
|
117
|
+
* 監視目錄中的 Sigma 規則檔案變更
|
|
118
|
+
*
|
|
119
|
+
* Uses fs.watch to monitor the directory. When any .yml/.yaml file changes,
|
|
120
|
+
* reloads all rules from the directory and invokes the callback.
|
|
121
|
+
* Returns a cleanup function that stops the watcher.
|
|
122
|
+
* 使用 fs.watch 監視目錄。當任何 .yml/.yaml 檔案變更時,
|
|
123
|
+
* 從目錄重新載入所有規則並呼叫回調。
|
|
124
|
+
* 回傳停止監視的清理函式。
|
|
125
|
+
*
|
|
126
|
+
* @param dir - Directory path to watch / 要監視的目錄路徑
|
|
127
|
+
* @param callback - Called with reloaded rules on file changes / 檔案變更時以重新載入的規則呼叫
|
|
128
|
+
* @returns Cleanup function to stop the watcher / 停止監視的清理函式
|
|
129
|
+
*/
|
|
130
|
+
export function watchRulesDirectory(dir, callback) {
|
|
131
|
+
if (!fs.existsSync(dir)) {
|
|
132
|
+
logger.error(`Cannot watch non-existent directory: ${dir} / 無法監視不存在的目錄: ${dir}`);
|
|
133
|
+
return () => {
|
|
134
|
+
/* noop */
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
let debounceTimer = null;
|
|
138
|
+
const DEBOUNCE_MS = 300;
|
|
139
|
+
const watcher = fs.watch(dir, (eventType, filename) => {
|
|
140
|
+
// Filter for Sigma rule files only / 僅篩選 Sigma 規則檔案
|
|
141
|
+
if (filename !== null && filename !== undefined) {
|
|
142
|
+
const ext = path.extname(filename).toLowerCase();
|
|
143
|
+
if (!SIGMA_EXTENSIONS.has(ext))
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// Debounce rapid changes / 防止快速連續變更
|
|
147
|
+
if (debounceTimer !== null) {
|
|
148
|
+
clearTimeout(debounceTimer);
|
|
149
|
+
}
|
|
150
|
+
debounceTimer = setTimeout(() => {
|
|
151
|
+
logger.info(`Detected rule file change (${eventType}${filename ? `: ${filename}` : ''}), reloading rules / 偵測到規則檔案變更,重新載入規則`);
|
|
152
|
+
const rules = loadRulesFromDirectory(dir);
|
|
153
|
+
callback(rules);
|
|
154
|
+
debounceTimer = null;
|
|
155
|
+
}, DEBOUNCE_MS);
|
|
156
|
+
});
|
|
157
|
+
logger.info(`Watching rules directory for changes: ${dir} / 正在監視規則目錄的變更: ${dir}`);
|
|
158
|
+
// Return cleanup function / 回傳清理函式
|
|
159
|
+
return () => {
|
|
160
|
+
if (debounceTimer !== null) {
|
|
161
|
+
clearTimeout(debounceTimer);
|
|
162
|
+
}
|
|
163
|
+
watcher.close();
|
|
164
|
+
logger.info(`Stopped watching rules directory: ${dir} / 停止監視規則目錄: ${dir}`);
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=rule-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-loader.js","sourceRoot":"","sources":["../../src/rules/rule-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sigma rule event matcher
|
|
3
|
+
* Sigma 規則事件比對器
|
|
4
|
+
*
|
|
5
|
+
* Matches SecurityEvent instances against Sigma rules by evaluating
|
|
6
|
+
* detection selections and condition expressions.
|
|
7
|
+
* Supports wildcards (*), the |contains modifier, and simple AND/OR/NOT logic.
|
|
8
|
+
* 將 SecurityEvent 實例與 Sigma 規則比對,透過評估偵測選擇項和條件表達式。
|
|
9
|
+
* 支援萬用字元(*)、|contains 修飾符,以及簡單的 AND/OR/NOT 邏輯。
|
|
10
|
+
*
|
|
11
|
+
* @module @panguard-ai/core/rules/sigma-matcher
|
|
12
|
+
*/
|
|
13
|
+
import type { SecurityEvent } from '../types.js';
|
|
14
|
+
import type { SigmaRule, RuleMatch } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Match a single security event against a single Sigma rule
|
|
17
|
+
* 比對單一安全事件與單一 Sigma 規則
|
|
18
|
+
*
|
|
19
|
+
* Evaluates all selections in the rule's detection block, then checks
|
|
20
|
+
* whether the condition expression is satisfied.
|
|
21
|
+
* 評估規則偵測區塊中的所有選擇項,然後檢查條件表達式是否滿足。
|
|
22
|
+
*
|
|
23
|
+
* @param event - The security event to test / 要測試的安全事件
|
|
24
|
+
* @param rule - The Sigma rule to match against / 要比對的 Sigma 規則
|
|
25
|
+
* @returns A RuleMatch if the event matches, or null / 事件比對時回傳 RuleMatch,否則回傳 null
|
|
26
|
+
*/
|
|
27
|
+
export declare function matchEvent(event: SecurityEvent, rule: SigmaRule): RuleMatch | null;
|
|
28
|
+
/**
|
|
29
|
+
* Match a single security event against multiple Sigma rules
|
|
30
|
+
* 比對單一安全事件與多個 Sigma 規則
|
|
31
|
+
*
|
|
32
|
+
* Tests the event against every rule and returns all matches.
|
|
33
|
+
* 將事件與每個規則測試並回傳所有比對結果。
|
|
34
|
+
*
|
|
35
|
+
* @param event - The security event to test / 要測試的安全事件
|
|
36
|
+
* @param rules - Array of Sigma rules to match against / 要比對的 Sigma 規則陣列
|
|
37
|
+
* @returns Array of RuleMatch for all matching rules / 所有比對規則的 RuleMatch 陣列
|
|
38
|
+
*/
|
|
39
|
+
export declare function matchEventAgainstRules(event: SecurityEvent, rules: SigmaRule[]): RuleMatch[];
|
|
40
|
+
//# sourceMappingURL=sigma-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigma-matcher.d.ts","sourceRoot":"","sources":["../../src/rules/sigma-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuYvD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAwClF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAW5F"}
|