egemenguney/threat_hunter

GitHub: egemenguney/threat_hunter

防御性 CTI 平台,被动监控 OSINT、安全公告与供应链风险信号,并与组织观察列表进行关联以提供可操作的预警。

Stars: 1 | Forks: 0

# Threat Hunter — 外部威胁雷达与供应链风险监控器 ## Threat Hunter 目前的定位 Threat Hunter 是一个**防御性网络威胁情报 (CTI) 平台**,它被动地监控合法的、开源的外部网络风险信号,并**将它们与组织观察列表进行关联**。 它同时是: - 一个**外部威胁雷达** — 针对针对*您*的威胁提供预警; - 一个**供应链风险监控器** — 监控包/依赖项和维护者风险; - 一个**基于 OSINT 的预警系统** — 公开的、被动的情报; - 一个**防御性 CTI 关联平台** — 将信号与您的资产进行匹配。 旧有的恶意软件/仓库扫描功能作为一项**高级收集能力**,依然存在于高级 引擎 (`threat_hunter_core/`) 中 — 它**不再是主要的产品标识**。 ## 适用人群? | 受众 | 获得的收益 | |---|---| | **SOC 团队** | 预警以及经过分拣的、与观察列表相关的外部信号。 | | **MSSP** | 可跨多个客户扩展的、由观察列表驱动的监控。 | | **企业安全团队** | 品牌/域名滥用、供应链及安全公告感知。 | | **威胁情报团队** | 具有可导出指示器 (CSV/JSON/STIX) 的标准化信号。 | | **CERT / CSIRT 团队** | 行业和区域级别的威胁趋势监控。 | | **具有安全意识的软件公司** | 包生态系统和依赖项风险信号。 | ## 三种模式 | 模式 | 默认状态 | 数据 | 网络 | 用途 | |---|---|---|---|---| | **Demo 模式** | ✅ 开启 | 安全的虚假/匿名化样本数据 | 无 | 适合展示作品集的安全演示。 | | **Proof 模式** | 可选命令 | 有限的、被动的**公开类**数据(目前为内置离线样本) | 此构建版本中无 | 在不进行实时收集的情况下,验证 pipeline 处理非 demo 输入。 | | **Live 模式** | ❌ 关闭 | 操作员启用的真实收集 | 是 | 高级功能,仅限选择开启(需要两个显式 flag + 运行时守护)。 | 仪表板始终按来源标记每条记录:**DEMO DATA**、**PROOF DATA - PUBLIC SOURCE** 或 **LIVE DATA - OPERATOR ENABLED**。 ## 快速开始(demo 模式,零成本,零依赖) demo/产品层**仅使用 Python 标准库**。 ``` # 显示当前模式 + Cost Guard 状态 python -m demo status # 将静态的 External Threat Radar (HTML) 构建到 demo/output/ 中 python -m demo build # 或者在本地提供只读的离线服务 python -m demo serve --port 8000 # then open http://127.0.0.1:8000/ # 安全的被动公共来源验证(Proof Mode),严格限制条目数量 python -m demo proof --limit 20 python -m demo build # dashboard now distinguishes DEMO vs PROOF data # 导出威胁信号 + IOC 发现结果 python -m demo export --format csv python -m demo export --format json --out signals.json python -m demo export --format stix --out signals.stix.json ``` 高级实时引擎仅通过模块形式调用(且默认保持关闭状态): ``` python -m threat_hunter_core.orchestration.cti_platform --help python -m threat_hunter_core.orchestration.pipeline --help ``` ## 概念:Signals 与 Findings Threat Hunter 保留两种相关但**在概念上独立**的记录: - **ThreatSignal** — 一种*组织上下文的外部风险*(仿冒域名、高风险 包、关键安全公告、IOC feed 匹配、行业趋势、供应链或 品牌冒充事件)。一个 signal 可能根本**没有 IOC** — 它可能仅与 CVE、包、域名或趋势相关。这是**主要的、以 signal 为中心**的视图。 - **Finding** — 一种*技术性的、面向 IOC 的检测*(哈希/域名/IP/URL artifact)。这些 作为**支持性技术细节**保留,在仪表板中层级较低。 ### 组织观察列表 观察列表描述了您要保护的资产 (`demo/watchlist.json`): ``` { "organization_name": "Acme Financial Group", "domains": ["acme-finance.example", "acme-payments.example"], "brand_names": ["AcmePay", "AcmeBank"], "github_organizations": ["acme-example"], "package_names": ["acmepay-sdk", "acme-auth-client"], "technologies": ["FastAPI", "React", "PostgreSQL", "Supabase", "Expo"], "sectors": ["finance", "fintech"], "countries": ["Türkiye", "Germany"], "vip_names": [] // optional, empty/disabled by default } ``` ## 为什么这不是攻击性安全 **Threat Hunter 不会:** - 利用系统漏洞 - 探测或扫描第三方目标 - 暴力破解凭证 - 收集密码或窃取凭证 - 下载或存储被盗数据 - 默认存储真实的恶意软件样本 - 绕过身份验证 - 抓取非法的暗网内容 **Threat Hunter 会:** - 监控防御性 OSINT 和公开的、合法的信号(被动) - 将信号标准化为一致的模型 - 将信号与您的组织观察列表进行关联 - 确定风险的优先级,并用通俗易懂的语言进行解释 - 导出可操作的指示器 (CSV / JSON / STIX) - 帮助安全团队决定**要审查什么** 所有 demo 和 proof 数据都是**虚假/匿名化/安全的**:使用保留的 `.example` / `.test` / `.invalid` 域名,RFC 5737 文档 IP 范围 (`192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`)、占位符 CVE 和随机哈希。没有真实的受害者或被盗数据。 ## 示例 signal(对管理者友好的语言) 不是显示: 平台会显示: ## 示例导出(合并的 CSV) ``` record_type,signal_id,signal_type,severity,confidence,source,first_seen,affected_watchlist_items,related_indicator_type,related_indicator_value,recommended_action,data_origin threat_signal,SIG-0001,suspicious_domain,HIGH,82,Passive domain / certificate monitoring (demo),2026-06-05T07:20:00,acme-payments.example; AcmePay,ioc:domain,acme-payments-login.example,Review WHOIS/DNS and certificate transparency records for the lookalike domain.,DEMO threat_signal,PROOF-0001,critical_vulnerability,HIGH,85,Bundled public-style sample (offline),2026-06-01T00:00:00,PostgreSQL; FastAPI,cve,CVE-DEMO-2026-1001,Inventory services using the affected technology and their versions.,PROOF ``` `record_type` 是 `threat_signal` 或 `ioc_finding` 中的一种。`python -m demo export --type all|signals|findings` 用于选择包含哪些记录(默认为 `all`)。 ## 成本控制设计 (Cost Guard) 可通过环境变量进行配置(显示为安全的默认值),并在仪表板中展示: | 设置 | 默认值 | 用途 | |---|---|---| | `DEMO_MODE` | `true` | 使用匿名化样本数据代替扫描 | | `LIVE_SCAN_ENABLED` | `false` | 任何真实扫描的主开关 | | `STORE_RAW_SAMPLES` | `false` | 从不持久化完整的恶意软件样本 | | `AUTO_DELETE_OLD_DATA` | `true` | 清理超过保留窗口的数据 | | `MAX_DAILY_SCANS` | `10` | 严格的每日扫描上限 | | `MAX_ITEMS_PER_RUN` | `25` | 每次运行处理的项目数 | | `MAX_STORAGE_DAYS` | `30` | 保留窗口 | | `MAX_FINDINGS_STORED` | `500` | 存储的 finding 上限 | | `PROOF_MAX_ITEMS` | `20` | 每次 Proof 模式运行的严格项目限制 | ## 仓库结构与打包 完整地图与职责表:[docs/REPOSITORY_LAYOUT.md](docs/REPOSITORY_LAYOUT.md)。 | 路径 | 类型 | 说明 | |---|---|---| | `demo/` | **源码** | 默认安全的外部威胁雷达产品/demo 层(离线,仅依赖标准库)。包含 `demo/proof/` (Proof 模式)。 | | `threat_hunter_core/` | **源码** | 高级实时收集/分析引擎(收集器 / 分析器 / 集成 / 存储 / 通知器 / 导出器 / 编排)。规范入口:`threat_hunter_core.orchestration.cti_platform`。 | | `threat_hunter_core/resources/yara_rules/` | **源码** | 为高级引擎内置的 YARA 检测资源。 | | `tools/`, `scripts/` | **源码** | 维护/检查脚本 + 作品集打包器。 | | `docs/` | **文档** | 笔记 + 精选的 `docs/samples/`。 | | `demo/output/` | **生成物** | 由 `python -m demo build` 重新生成(已 gitignored)。 | ### 创建安全的作品集 zip 包 ``` powershell -ExecutionPolicy Bypass -File scripts/package_portfolio.ps1 ``` 打包器是基于**白名单**的,并且如果检测到任何 secret、 会话或 virtualenv 标记,它将**拒绝**生成 zip 包。 ## 安全与法律声明 - **仅用于防御。** 被动情报;无攻击性或破坏性行动;无漏洞利用。 - **不存储或分发恶意软件样本。** demo/proof 数据仅包含合成的、无实际功能的指示器。 - **Secrets:** `.env.local` 已被 gitignored。请使用 `.env.example` 作为模板;切勿提交真实的 token。 - 实时连接器受其各自的服务条款和速率限制与第三方服务通信 — 启用它们由您自己承担责任。 ## 如何安全地启用实时扫描(高级,可选 — 默认关闭) 1. 将 `.env.example` 复制到 `.env.local`,并仅添加您需要的凭证。 2. **显式**设置选择开启的 flag:`DEMO_MODE=false` 和 `LIVE_SCAN_ENABLED=true`。 3. 保持 Cost Guard 的限制处于保守水平。 4. 首先运行单个有界限的模块,例如 `python -m threat_hunter_core.orchestration.cti_platform --osint`。 5. 监控 Supabase 使用情况;`STORE_RAW_SAMPLES` 必须保持为 `false`。 除非两个 flag 都被翻转,否则防护机制 `demo.config.assert_scan_allowed()` 将拒绝运行实时扫描。 ## 许可证 专有许可证 — 保留所有权利。请参阅 [LICENSE](LICENSE)。 **作者:** Egemen Guney KOC · [egemenguney.net](https://www.egemenguney.net) · [LinkedIn](https://www.linkedin.com/in/egemenguneykoc)
标签:ESC4, OSINT, 威胁情报, 开发者工具, 文档安全, 网络信息收集, 网络安全, 逆向工具, 隐私保护