@panguard-ai/threat-cloud 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.
Files changed (57) hide show
  1. package/dist/audit-logger.d.ts +46 -0
  2. package/dist/audit-logger.d.ts.map +1 -0
  3. package/dist/audit-logger.js +105 -0
  4. package/dist/audit-logger.js.map +1 -0
  5. package/dist/cli.d.ts +9 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +115 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/correlation-engine.d.ts +41 -0
  10. package/dist/correlation-engine.d.ts.map +1 -0
  11. package/dist/correlation-engine.js +313 -0
  12. package/dist/correlation-engine.js.map +1 -0
  13. package/dist/database.d.ts +63 -0
  14. package/dist/database.d.ts.map +1 -0
  15. package/dist/database.js +444 -0
  16. package/dist/database.js.map +1 -0
  17. package/dist/feed-distributor.d.ts +36 -0
  18. package/dist/feed-distributor.d.ts.map +1 -0
  19. package/dist/feed-distributor.js +125 -0
  20. package/dist/feed-distributor.js.map +1 -0
  21. package/dist/index.d.ts +13 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +12 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/ioc-store.d.ts +83 -0
  26. package/dist/ioc-store.d.ts.map +1 -0
  27. package/dist/ioc-store.js +278 -0
  28. package/dist/ioc-store.js.map +1 -0
  29. package/dist/query-handlers.d.ts +40 -0
  30. package/dist/query-handlers.d.ts.map +1 -0
  31. package/dist/query-handlers.js +211 -0
  32. package/dist/query-handlers.js.map +1 -0
  33. package/dist/reputation-engine.d.ts +44 -0
  34. package/dist/reputation-engine.d.ts.map +1 -0
  35. package/dist/reputation-engine.js +169 -0
  36. package/dist/reputation-engine.js.map +1 -0
  37. package/dist/rule-generator.d.ts +47 -0
  38. package/dist/rule-generator.d.ts.map +1 -0
  39. package/dist/rule-generator.js +238 -0
  40. package/dist/rule-generator.js.map +1 -0
  41. package/dist/scheduler.d.ts +52 -0
  42. package/dist/scheduler.d.ts.map +1 -0
  43. package/dist/scheduler.js +143 -0
  44. package/dist/scheduler.js.map +1 -0
  45. package/dist/server.d.ts +99 -0
  46. package/dist/server.d.ts.map +1 -0
  47. package/dist/server.js +809 -0
  48. package/dist/server.js.map +1 -0
  49. package/dist/sighting-store.d.ts +61 -0
  50. package/dist/sighting-store.d.ts.map +1 -0
  51. package/dist/sighting-store.js +191 -0
  52. package/dist/sighting-store.js.map +1 -0
  53. package/dist/types.d.ts +352 -0
  54. package/dist/types.d.ts.map +1 -0
  55. package/dist/types.js +6 -0
  56. package/dist/types.js.map +1 -0
  57. package/package.json +37 -0
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Threat Cloud API type definitions
3
+ * 威脅雲 API 型別定義
4
+ */
5
+ /** Anonymized threat data from clients / 客戶端匿名化威脅數據 */
6
+ export interface AnonymizedThreatData {
7
+ attackSourceIP: string;
8
+ attackType: string;
9
+ mitreTechnique: string;
10
+ sigmaRuleMatched: string;
11
+ timestamp: string;
12
+ industry?: string;
13
+ region: string;
14
+ }
15
+ /** Community rule update / 社群規則更新 */
16
+ export interface ThreatCloudRule {
17
+ ruleId: string;
18
+ ruleContent: string;
19
+ publishedAt: string;
20
+ source: string;
21
+ }
22
+ /** API response envelope / API 回應封套 */
23
+ export interface ApiResponse<T = unknown> {
24
+ ok: boolean;
25
+ data?: T;
26
+ error?: string;
27
+ }
28
+ /** Threat statistics / 威脅統計 */
29
+ export interface ThreatStats {
30
+ totalThreats: number;
31
+ totalRules: number;
32
+ topAttackTypes: Array<{
33
+ type: string;
34
+ count: number;
35
+ }>;
36
+ topMitreTechniques: Array<{
37
+ technique: string;
38
+ count: number;
39
+ }>;
40
+ last24hThreats: number;
41
+ }
42
+ /** Server configuration / 伺服器配置 */
43
+ export interface ServerConfig {
44
+ port: number;
45
+ host: string;
46
+ dbPath: string;
47
+ apiKeyRequired: boolean;
48
+ apiKeys: string[];
49
+ rateLimitPerMinute: number;
50
+ }
51
+ /** IoC type categories / IoC 類型分類 */
52
+ export type IoCType = 'ip' | 'domain' | 'url' | 'hash_md5' | 'hash_sha1' | 'hash_sha256';
53
+ /** IoC status / IoC 狀態 */
54
+ export type IoCStatus = 'active' | 'expired' | 'revoked' | 'under_review';
55
+ /** Stored IoC record / 儲存的 IoC 記錄 */
56
+ export interface IoCRecord {
57
+ id: number;
58
+ type: IoCType;
59
+ value: string;
60
+ normalizedValue: string;
61
+ threatType: string;
62
+ source: string;
63
+ confidence: number;
64
+ reputationScore: number;
65
+ firstSeen: string;
66
+ lastSeen: string;
67
+ sightings: number;
68
+ status: IoCStatus;
69
+ tags: string[];
70
+ metadata: Record<string, unknown>;
71
+ createdAt: string;
72
+ updatedAt: string;
73
+ }
74
+ /** Input for creating/updating an IoC / 建立或更新 IoC 的輸入 */
75
+ export interface IoCInput {
76
+ type: IoCType;
77
+ value: string;
78
+ threatType: string;
79
+ source: string;
80
+ confidence: number;
81
+ tags?: string[];
82
+ metadata?: Record<string, unknown>;
83
+ }
84
+ /** IoC lookup result / IoC 查詢結果 */
85
+ export interface IoCLookupResult {
86
+ found: boolean;
87
+ ioc?: IoCRecord;
88
+ relatedThreats: number;
89
+ }
90
+ /** TrapIntelligence payload from Trap agents / Trap 代理的情報資料 */
91
+ export interface TrapIntelligencePayload {
92
+ timestamp: string;
93
+ serviceType: string;
94
+ sourceIP: string;
95
+ attackType: string;
96
+ mitreTechniques: string[];
97
+ skillLevel: string;
98
+ intent: string;
99
+ tools: string[];
100
+ topCredentials: Array<{
101
+ username: string;
102
+ count: number;
103
+ }>;
104
+ region?: string;
105
+ }
106
+ /** Enriched threat event (Guard + Trap unified) / 豐富化威脅事件 */
107
+ export interface EnrichedThreatEvent {
108
+ id: number;
109
+ sourceType: 'guard' | 'trap' | 'external_feed';
110
+ attackSourceIP: string;
111
+ attackType: string;
112
+ mitreTechniques: string[];
113
+ sigmaRuleMatched: string;
114
+ timestamp: string;
115
+ industry?: string;
116
+ region: string;
117
+ confidence: number;
118
+ severity: string;
119
+ serviceType?: string;
120
+ skillLevel?: string;
121
+ intent?: string;
122
+ tools?: string[];
123
+ eventHash: string;
124
+ receivedAt: string;
125
+ campaignId?: string;
126
+ }
127
+ /** Pagination parameters / 分頁參數 */
128
+ export interface PaginationParams {
129
+ page: number;
130
+ limit: number;
131
+ }
132
+ /** Paginated response / 分頁回應 */
133
+ export interface PaginatedResponse<T> {
134
+ items: T[];
135
+ total: number;
136
+ page: number;
137
+ limit: number;
138
+ hasMore: boolean;
139
+ }
140
+ /** Campaign record / 攻擊活動記錄 */
141
+ export interface Campaign {
142
+ campaignId: string;
143
+ name: string;
144
+ campaignType: 'ip_cluster' | 'pattern_cluster' | 'manual';
145
+ firstSeen: string;
146
+ lastSeen: string;
147
+ eventCount: number;
148
+ uniqueIPs: number;
149
+ attackTypes: string[];
150
+ mitreTechniques: string[];
151
+ regions: string[];
152
+ severity: string;
153
+ status: 'active' | 'resolved' | 'false_positive';
154
+ createdAt: string;
155
+ updatedAt: string;
156
+ }
157
+ /** Campaign scan result / 關聯掃描結果 */
158
+ export interface CampaignScanResult {
159
+ newCampaigns: number;
160
+ updatedCampaigns: number;
161
+ eventsCorrelated: number;
162
+ duration: number;
163
+ }
164
+ /** Campaign statistics / 攻擊活動統計 */
165
+ export interface CampaignStats {
166
+ totalCampaigns: number;
167
+ activeCampaigns: number;
168
+ totalCorrelatedEvents: number;
169
+ topAttackTypes: Array<{
170
+ type: string;
171
+ count: number;
172
+ }>;
173
+ }
174
+ /** Reputation configuration / 信譽評分配置 */
175
+ export interface ReputationConfig {
176
+ halfLifeDays: number;
177
+ weights: {
178
+ sighting: number;
179
+ severity: number;
180
+ recency: number;
181
+ diversity: number;
182
+ confidence: number;
183
+ };
184
+ }
185
+ /** Correlation configuration / 關聯引擎配置 */
186
+ export interface CorrelationConfig {
187
+ timeWindowMinutes: number;
188
+ minEventsForCampaign: number;
189
+ minIPsForPatternCampaign: number;
190
+ scanWindowHours: number;
191
+ }
192
+ /** Detected pattern for rule generation / 偵測到的模式 */
193
+ export interface DetectedPattern {
194
+ attackType: string;
195
+ mitreTechniques: string[];
196
+ patternHash: string;
197
+ occurrences: number;
198
+ distinctIPs: number;
199
+ regions: string[];
200
+ severityCounts: Record<string, number>;
201
+ firstSeen: string;
202
+ lastSeen: string;
203
+ }
204
+ /** Rule generation result / 規則產生結果 */
205
+ export interface RuleGenerationResult {
206
+ patternsAnalyzed: number;
207
+ rulesGenerated: number;
208
+ rulesUpdated: number;
209
+ duration: number;
210
+ }
211
+ /** Rule generator configuration / 規則產生器配置 */
212
+ export interface RuleGeneratorConfig {
213
+ minOccurrences: number;
214
+ analysisWindowHours: number;
215
+ minDistinctIPs: number;
216
+ }
217
+ /** Time-series data point / 時間序列資料點 */
218
+ export interface TimeSeriesPoint {
219
+ timestamp: string;
220
+ count: number;
221
+ }
222
+ /** Geographic distribution entry / 地理分佈項目 */
223
+ export interface GeoDistributionEntry {
224
+ region: string;
225
+ count: number;
226
+ topAttackTypes: Array<{
227
+ type: string;
228
+ count: number;
229
+ }>;
230
+ uniqueIPs: number;
231
+ }
232
+ /** Trend entry / 趨勢項目 */
233
+ export interface TrendEntry {
234
+ attackType: string;
235
+ currentCount: number;
236
+ previousCount: number;
237
+ changePercent: number;
238
+ direction: 'rising' | 'falling' | 'stable';
239
+ }
240
+ /** MITRE ATT&CK heatmap entry / MITRE 熱力圖項目 */
241
+ export interface MitreHeatmapEntry {
242
+ technique: string;
243
+ count: number;
244
+ severity: string;
245
+ }
246
+ /** Enhanced stats (extends ThreatStats) / 增強統計 */
247
+ export interface EnhancedStats extends ThreatStats {
248
+ totalIoCs: number;
249
+ iocsByType: Record<string, number>;
250
+ activeCampaigns: number;
251
+ autoGeneratedRules: number;
252
+ trapEventsCount: number;
253
+ guardEventsCount: number;
254
+ topRegions: Array<{
255
+ region: string;
256
+ count: number;
257
+ }>;
258
+ }
259
+ /** IoC feed entry / IoC feed 項目 */
260
+ export interface IoCFeedEntry {
261
+ type: IoCType;
262
+ value: string;
263
+ threatType: string;
264
+ reputation: number;
265
+ confidence: number;
266
+ lastSeen: string;
267
+ tags: string[];
268
+ }
269
+ /** IoC feed response / IoC feed 回應 */
270
+ export interface IoCFeedResponse {
271
+ generatedAt: string;
272
+ totalEntries: number;
273
+ entries: IoCFeedEntry[];
274
+ }
275
+ /** Agent update package / Agent 更新包 */
276
+ export interface AgentUpdatePackage {
277
+ generatedAt: string;
278
+ rules: ThreatCloudRule[];
279
+ iocs: IoCFeedEntry[];
280
+ stats: {
281
+ newRules: number;
282
+ newIoCs: number;
283
+ totalActiveIoCs: number;
284
+ };
285
+ }
286
+ /** Scheduler configuration / 排程器配置 */
287
+ export interface SchedulerConfig {
288
+ reputationIntervalMs: number;
289
+ correlationIntervalMs: number;
290
+ ruleGenerationIntervalMs: number;
291
+ threatRetentionDays: number;
292
+ iocRetentionDays: number;
293
+ aggregationIntervalMs: number;
294
+ }
295
+ /**
296
+ * Admiralty Scale source reliability rating.
297
+ * A = Completely reliable, B = Usually reliable, C = Fairly reliable,
298
+ * D = Not usually reliable, E = Unreliable, F = Cannot be judged
299
+ */
300
+ export type SourceReliability = 'A' | 'B' | 'C' | 'D' | 'E' | 'F';
301
+ /** Sighting type / 觀測類型 */
302
+ export type SightingType = 'positive' | 'negative' | 'false_positive';
303
+ /** Sighting input / 觀測輸入 */
304
+ export interface SightingInput {
305
+ iocId: number;
306
+ type: SightingType;
307
+ source: string;
308
+ confidence?: number;
309
+ details?: string;
310
+ }
311
+ /** Stored sighting record / 儲存的觀測記錄 */
312
+ export interface SightingRecord {
313
+ id: number;
314
+ iocId: number;
315
+ type: SightingType;
316
+ source: string;
317
+ confidence: number;
318
+ details: string;
319
+ actorHash: string;
320
+ createdAt: string;
321
+ }
322
+ /** Audit log action / 稽核日誌動作 */
323
+ export type AuditAction = 'ioc_create' | 'ioc_update' | 'ioc_revoke' | 'sighting_create' | 'threat_upload' | 'trap_intel_upload' | 'rule_publish' | 'rule_generate' | 'campaign_create' | 'feed_access';
324
+ /** Audit log entry / 稽核日誌項目 */
325
+ export interface AuditLogEntry {
326
+ id: number;
327
+ action: AuditAction;
328
+ entityType: string;
329
+ entityId: string;
330
+ actorHash: string;
331
+ ipAddress: string;
332
+ details: string;
333
+ createdAt: string;
334
+ }
335
+ /** Audit log query params / 稽核日誌查詢參數 */
336
+ export interface AuditLogQuery {
337
+ action?: AuditAction;
338
+ entityType?: string;
339
+ entityId?: string;
340
+ since?: string;
341
+ limit?: number;
342
+ }
343
+ /** Feed license info for compliance / Feed 授權資訊 */
344
+ export type FeedLicense = 'public_domain' | 'cc0' | 'fair_use' | 'commercial_restricted' | 'unknown';
345
+ /** Source reliability mapping for known feeds / 已知 feed 的來源可靠度對映 */
346
+ export interface FeedSourceConfig {
347
+ name: string;
348
+ reliability: SourceReliability;
349
+ license: FeedLicense;
350
+ redistributable: boolean;
351
+ }
352
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Threat Cloud API type definitions
3
+ * 威脅雲 API 型別定義
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@panguard-ai/threat-cloud",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Threat Cloud backend API for collective threat intelligence / 威脅雲後端 API",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "threat-cloud": "./dist/cli.js"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "package.json",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc --build",
21
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
22
+ "typecheck": "tsc --noEmit",
23
+ "test": "vitest run",
24
+ "dev": "tsc --build --watch",
25
+ "start": "node dist/cli.js",
26
+ "seed": "npx tsx scripts/seed.ts",
27
+ "prepublishOnly": "pnpm run build"
28
+ },
29
+ "dependencies": {
30
+ "better-sqlite3": "^11.0.0"
31
+ },
32
+ "devDependencies": {
33
+ "@types/better-sqlite3": "^7.6.8",
34
+ "@types/node": "^22.14.0",
35
+ "typescript": "~5.7.3"
36
+ }
37
+ }