nox-project/nox-framework

GitHub: nox-project/nox-framework

NOX 是一个高性能异步网络威胁情报框架,利用递归透视引擎整合 120+ 数据源,实现自动化的身份挖掘、凭证破解及企业风险分析。

Stars: 122 | Forks: 3

``` ███╗ ██╗ ██████╗ ██╗ ██╗ ████╗ ██║██╔═══██╗╚██╗██╔╝ ██╔██╗ ██║██║ ██║ ╚███╔╝ ██║╚██╗██║██║ ██║ ██╔██╗ ██║ ╚████║╚██████╔╝██╔╝ ██╗ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ``` **Cyber Threat Intelligence Framework** [![Status](https://img.shields.io/badge/Status-v1.0.1-success)](https://github.com/nox-project/nox-framework/releases/tag/v1.0.1) [![Python](https://img.shields.io/badge/Python-3.8%2B-blue?logo=python&logoColor=white)](https://www.python.org/) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE.txt) [![Kali Linux](https://img.shields.io/badge/Kali%20Linux-Ready-557C94?logo=kalilinux&logoColor=white)](https://www.kali.org/) [![BlackArch](https://img.shields.io/badge/BlackArch-Available-1E1E2E?logo=archlinux&logoColor=white)](https://blackarch.org/) [![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey)](https://github.com/nox-project/nox-framework) [![Sources](https://img.shields.io/badge/Sources-123-red)](https://github.com/nox-project/nox-framework) *用于红队行动、数字取证和企业暴露分析的 OSINT 框架。*
## 简介 NOX 是一个专用的网络威胁情报引擎,专为追求速度、行动安全和深度的操作人员设计,整合于一个统一的框架中。它不是现有工具的封装 —— 它是一个完全异步、由插件驱动的情报平台,并严格分离了执行逻辑和源定义。 | 能力 | 详情 | |-|-| | ⚡ **异步执行引擎** | 跨 123 个情报源进行大规模并行扫描,无顺序瓶颈,无阻塞 I/O。 | | 🛡️ **Guardian 引擎** | 集成 OPSEC 层,支持自动代理轮换和 SOCKS5。如果传输链路不可用,故障安全保护开关会中止所有流量。 | | 🧠 **风险评分** | 动态 0-100 评分,包含时间衰减、源置信度加权、密码复杂度分析、持久性乘数和 HVT 检测。 | | 🔗 **递归 Avalanche 引擎** | 每个发现的资产 —— 用户名、邮箱、破解密码、电话 —— 都会自动作为新的扫描种子重新注入。单个资产管道按顺序运行(breach → crack → dork → scrape);子资产并发运行。来自所有四个阶段的标识符都会馈送到透视 队列中。全局去重和可配置的深度上限防止失控递归。 | | 🔍 **自动扫描** | 单条命令触发 breach 扫描 + 递归 pivot + dorking + paste 抓取 —— 全自动,无需手动串联。 | ## 功能特性 | 特性 | 描述 | |-|-| | **123 个 JSON 插件源** | 每个情报源都是一个 JSON 插件。执行引擎中零硬编码源逻辑。 | | **异步核心** | 完整的 `asyncio` 事件循环,支持 JA3 指纹识别、SSL 会话管理、每个请求的抖动以及可配置的并发数。 | | **自动扫描管道** | `--autoscan` 触发:breach 扫描 → 递归 pivot → Google/Bing/SearXNG dorking → paste/Telegram 抓取 —— 全部包含在一条命令中。 | | **递归 Avalanche 引擎** | 每个发现的标识符 —— 无论来自 breach 记录、dork 命中还是抓取的 paste/Telegram 内容 —— 都会作为新种子重新注入。单个资产的管道是顺序的(breach → crack → dork → scrape);子资产通过 `asyncio.gather` 并发运行。全局 `seen_assets` 集合防止无限循环。并发数和深度可通过 `--threads` 和 `--depth` 在运行时完全配置。 | | **Hash Pivot** | breach 数据中发现的 Hash 会自动识别(MD5/SHA1/SHA256/NTLM/bcrypt)并通过并发后台 API 查询进行破解。破解后的明文会作为密码重用种子注入到 pivot 队列中。失败会静默记录 —— 扫描永不停止。 | | **Guardian 代理引擎** | 零配置 OPSEC 层:如果存在则读取 `proxies.txt`;否则在内存中自动获取并验证高匿名性代理池。完全支持 SOCKS5/HTTP/S 和 Tor。 | | **API Key 轮换** | 每个源的 `api_key_slots` —— NOX 在多个密钥之间进行轮询,以绕过单个密钥的速率限制。 | | **身份图谱** | Union-Find 关联引擎使用类型感知的 pivot 分类,将 breach 记录跨所有源统一为身份集群。 | | **企业取证报告** | 专业的 PDF/HTML/JSON/CSV/Markdown 报告,包含执行摘要仪表板(总耗时、发现节点数、明文密码、Pivot 深度)、交互式 Pivot 链可视化以及严格的数据净化 —— 输出中不含技术噪音。JSON 导出包含完整的元数据块,具有自描述性。 | | **HVT 检测** | 自动将 C 级、Admin、DevOps 和政府域账户标记为高价值目标 (HVT)。 | | **Dorking 引擎** | 通过 Google/Bing/SearXNG dorks 进行被动文档发现,附带 PDF/Office 元数据提取。 | | **抓取引擎** | Paste 站点索引、Telegram CTI 频道监控、凭证提取和错误配置发现。每个 autoscan 资产都有一个专用的抓取会话 —— 无共享状态。 | | **代理 / Tor** | SOCKS5、HTTP/S 代理、通过 `stem` 的完整 Tor 路由以及自动 Guardian 回退。SOCKS5 代理通过 `aiohttp-socks` 进行正确验证和路由。 | | **安全密钥存储** | API 密钥通过 `~/.config/nox-cli/apikeys.json` 管理 (chmod 0600)。未配置的密钥会被静默跳过。通过环境变量设置的密钥会被自动拾取,无需重启。 | | **系统日志** | 所有扫描事件、阶段完成、pivot 发现、API 事件、速率限制和破解尝试都会写入 `~/.nox/logs/nox.log`。只有可操作的情报才会输出到终端。 | | **插件调试** | `--list-sources` 打印完整的操作员调试表:插件名称、输入类型、置信度评分、密钥状态(已配置 / 未配置 / 公开)以及任何 JSON 解析错误。 | ## 架构 ### 插件驱动设计 NOX 遵循严格的关注点分离原则:`nox.py` 是一个**纯粹的、中立的执行引擎** —— 它处理异步 I/O、JA3 指纹识别、SSL 会话管理、递归 pivot 和结果关联。它不包含任何硬编码的情报逻辑。 所有情报都定义为 `sources/` 目录下的 **JSON 插件**。这些插件是 NOX 查询内容、认证方式以及提取内容的唯一真实来源。构建工具 `build_sources.py` 是创建或修改它们的唯一授权方式。 ``` build_sources.py ──► sources/*.json ──► nox.py (runtime loader) [Builder] [Plugins] [Execution Engine] ``` #### 源 Schema ``` { "name": "MyPrivateDB", "endpoint": "https://api.myprivatedb.com/search?q={target}", "method": "GET", "headers": { "Authorization": "Bearer {MY_API_KEY}" }, "regex_pattern": "([\\w.+-]+@[\\w-]+\\.[\\w.]+):([\\S]+)", "required_api_key_name": "MY_API_KEY", "api_key_slots": ["{MY_API_KEY}"], "input_type": "email", "output_type": ["username", "ip"], "pivot_types": ["email", "username"], "confidence": 0.9 } ``` 支持的字段:`name`、`endpoint`、`method`、`headers`、`regex_pattern`(或 `json_root` + `normalization_map`)、`required_api_key_name`、`api_key_slots`、`input_type`、`output_type`、`pivot_types`、`confidence`。 ### 自动扫描管道 `--autoscan` (CLI) / `autoscan` (REPL) 在单条命令中执行完整的情报管道: ``` For each asset (seed + every discovered identifier): ├─ Phase 1 — Breach Scan │ 123 sources queried in parallel (async) │ ├─ Phase 2 — Hash Crack (non-blocking, concurrent) │ Hashes found in breach data → rainbow-table APIs → cracked plaintext │ → password-recycling breach scan │ ├─ Phase 3 — Dorking │ Google/Bing/SearXNG dorks → leaked docs, .env files, SQL dumps │ → new identifiers extracted and re-injected │ └─ Phase 4 — Scraping Pastebin, IntelX, Telegram CTI channels → credential extraction → new identifiers extracted and re-injected All identifiers discovered in phases 1–4 are re-injected as new seeds. Child assets are processed concurrently via asyncio.gather. ``` `scan`(不带 `--autoscan`)仅运行阶段 1 —— breach 源,无 pivot/dork/scrape。 ### 递归 Avalanche 引擎 扫描期间发现的每个标识符 —— 无论来自 breach 记录、dork 命中还是抓取的 paste/Telegram 内容 —— 都被视为新的情报种子。对于每个资产,引擎按顺序运行四个阶段:breach 扫描 → hash 破解 → dork → 抓取。从**所有四个阶段**提取的标识符都会被收集并作为新种子重新注入。然后通过 `asyncio.gather` 并发处理子资产。 ``` target@company.com └─► [Breach] username: j.doe ──► [Breach + Crack + Dork + Scrape] │ └─► github.com/jdoe ──► [Breach + Crack + Dork + Scrape] └─► [Breach] hash: 5f4dcc... ──► [AutoCrack] → "password123" │ └─► [Breach] password-recycling scan across all sources └─► [Dork] new@email.com ──► [Breach + Crack + Dork + Scrape] └─► [Scrape/paste] admin@corp.com ──► [Breach + Crack + Dork + Scrape] ``` - **`seen_assets` 集合** —— 全局去重;无论标识符由哪个阶段发现,都不会被处理两次 - **全局信号量** —— 跨整个发现树的单一共享并发上限,遵守 `--threads` 设置 - **`--depth N`** —— 可配置的 pivot 深度(默认:2);硬性后端防止失控递归 - **`--no-pivot`** —— 禁用递归丰富功能,进行快速仅 breach 扫描 ### Hash Pivot 在 `--autoscan` 期间于 breach 数据中发现 hash 时: 1. 识别 hash 类型(MD5/NTLM、SHA1、SHA256、bcrypt) 2. 在后台任务中**并发**查询多个彩虹表 API 3. **如果破解成功** —— 记录明文,更新记录,并将密码注入到 pivot 队列中,以便跨所有 breach 源进行密码重用分析 4. **如果破解失败** —— 将失败记录到 `nox_system.log`,hash 保留在报告中,并立即继续对所有其他资产进行 pivot 破解过程完全是非阻塞的。超时或 API 失败绝不会暂停扫描。使用 `--no-online-crack` 将破解限制为仅本地词表(不向第三方 API 发送数据)。 ### Guardian 代理引擎 Guardian 引擎是 NOX 的零配置 OPSEC 层。当未提供 `--proxy` 或 `--tor` 标志时,它会自动激活。 **解析顺序:** 1. **`proxies.txt`** —— 如果工作目录中存在此文件,NOX 会加载并轮换使用列出的代理。 2. **动态获取** —— 如果 `proxies.txt` 不存在,Guardian 引擎会获取一份全新的高匿名性公共代理列表,验证每一个,并在会话期间将验证后的代理池保留在内存中。不会写入任何内容到磁盘。 3. **直接连接** —— 如果未找到有效代理,NOX 会回退到直接连接并发出警告。 | 标志 | 行为 | |-|-| | `--proxy ` | 通过指定的 HTTP/S 或 SOCKS5 代理路由所有流量。禁用 Guardian。 | | `--tor` | 通过 Tor 路由所有流量(需要端口 9050 上的 `tor` 服务)。禁用 Guardian。 | | `--guardian-off` | 绕过 OPSEC 故障安全保护开关并直接连接。 | | *(无标志)* | Guardian 引擎自动激活。 | ### 报告 所有报告格式都包含一个**执行摘要仪表板**: | 指标 | 描述 | |-|-| | 总耗时 | 完整扫描的挂钟持续时间 | | 发现节点数 | 跨所有源发现的唯一身份 | | 明文密码 | 发现或破解的明文凭证 | | Pivot 深度 | 递归 avalanche 引擎达到的深度 | 报告还包括 **Pivot 链可视化**,显示从初始种子到最终发现的完整关系路径: ``` [seed@corp.com] -> [LeakA / username:jdoe] -> [Dork: leaked .env] -> [new@email.com] ``` JSON 导出包含一个 `_meta` 块,其中包含 `scan_id`、`target`、`timestamp`、`nox_version` 和 `pivot_depth_reached` —— 使每个导出都具有自描述性,便于导入案件管理平台。 所有输出都经过净化 —— 代理错误、超时和回溯信息都会被剥离。仅包含可操作的情报。 ## 文件系统布局 ``` ~/.nox/ ├── sources/ # Auto-generated JSON source plugins ├── reports/ # Generated forensic reports ├── logs/ # Runtime log (nox.log) ├── wordlists/ # Hash cracking wordlists ├── vault/ # Secure storage └── nox_cache.db # Forensic persistence database (SQLite) ~/.config/nox-cli/ ├── apikeys.json # API keys — chmod 0600, never committed to VCS └── logs/ └── nox_system.log # Silent system log: API events, rate-limits, crack attempts # .deb 安装 /opt/nox-cli/ ├── nox.py ├── build_sources.py ├── requirements.txt ├── sources/ └── .venv/ # Isolated Python environment (PEP 668 compliant) ``` ## 前置条件 - **Python 3.8+** - **pip** (Debian/Kali 上的 `python3-pip`) - **Tor** *(可选)* —— 仅 `--tor` 需要。在 Kali 上:`sudo apt install tor -y`。`tor` 服务必须在端口 `9050` 上运行。 ## 安装说明 ### 选项 1:Debian / Kali Linux — 独立 .deb (推荐) 从 [Releases 页面](https://github.com/nox-project/nox-framework/releases) 下载 `.deb` 包,然后运行: ``` sudo dpkg -i nox-cli_*_all.deb nox-cli --help ``` 安装后脚本会自动: 1. 在 `/opt/nox-cli/.venv` 创建独立的虚拟环境 2. 在 venv 内安装所有 Python 依赖(符合 PEP 668 —— 零系统污染) 3. 构建 123 个源插件 4. 将 `/usr/bin/nox-cli` 链接到 `/opt/nox-cli/nox-wrapper.sh` ### 选项 2:从源码安装 ``` git clone https://github.com/nox-project/nox-framework.git cd nox-framework pip install -r requirements.txt python build_sources.py python3 nox.py ``` ## 快速开始 **步骤 1 — 构建源插件** *(仅限从源码安装 —— .deb 会自动执行此操作)* ``` python build_sources.py ``` **步骤 2 — 配置 API 密钥** `build_sources.py` 在首次运行时创建 `~/.config/nox-cli/apikeys.json`,预填充了每个支持的服务。该文件权限为 `chmod 0600`,绝不会提交到 VCS。 这是**单一规范的密钥存储** —— 所有源都在运行时从此读取。 ``` # 直接编辑文件 nano ~/.config/nox-cli/apikeys.json # 或检查插件状态和关键配置 nox-cli --list-sources ``` **步骤 3 — 执行** ``` # Breach 扫描 — 自动检测输入类型 nox-cli -t target@company.com # 全自动扫描:breach + 递归 pivot + dork + 抓取 nox-cli -t target@company.com --autoscan # 使用 Tor 路由的自动扫描 nox-cli -t target@company.com --autoscan --tor # 使用 SOCKS5 代理的自动扫描 + PDF 报告 nox-cli -t target@company.com --autoscan --proxy socks5://127.0.0.1:1080 -o report.pdf --format pdf # 自定义 pivot 深度的自动扫描 nox-cli -t target@company.com --autoscan --depth 3 # 仅 Breach 扫描 — 无 pivot,无 dork,无抓取 nox-cli -t target@company.com --no-pivot # Domain 扫描 nox-cli -t company.com # Hash 识别和破解 nox-cli --crack 5f4dcc3b5aa765d61d8327deb882cf99 # Hash 破解 — 仅本地 wordlist,无第三方 API 调用 nox-cli --crack 5f4dcc3b5aa765d61d8327deb882cf99 --no-online-crack # 密码强度分析 nox-cli --analyze "P@ssw0rd123" # Google dorking nox-cli --dork target@company.com # Paste / Telegram 抓取 nox-cli --scrape target@company.com # 将扫描结果与上次缓存结果比较 — 仅显示新发现 nox-cli -t target@company.com --diff # 插件调试:已加载的源、输入类型、置信度、密钥状态 nox-cli --list-sources # 强制从包重新同步源插件 nox-cli --reset-sources ``` ## CLI 参考 ``` usage: nox-cli [-h] [-t TARGET] [-i] [--version] [--autoscan] [--fullscan] [--no-pivot] [--depth N] [--dork TARGET] [--scrape TARGET] [--crack HASH] [--no-online-crack] [--analyze PASS] [--list-sources] [--reset-sources] [--tor] [--proxy URL] [--guardian-off] [--allow-leak] [--threads N] [--timeout N] [-o FILE] [--format {json,csv,html,md,pdf}] [--diff] -t, --target TARGET Target to scan (auto-detected type) -i, --interactive Launch interactive REPL --version Show version and exit --autoscan Full pipeline: breach + pivot + dork + scrape --fullscan Breach + pivot only (no dork/scrape) --no-pivot Disable recursive pivot enrichment --depth N Avalanche pivot depth (default: 2) --dork TARGET Google/Bing/SearXNG dorking for leaked documents --scrape TARGET Paste site + Telegram scraping --crack HASH Identify and crack a hash --no-online-crack Local wordlist only — no data sent to third-party APIs --analyze PASS Deep password strength analysis --list-sources Plugin debug: input type, confidence, key status --reset-sources Force resync of source plugins from package --tor Route all traffic through Tor (port 9050) --proxy URL HTTP/S or SOCKS5 proxy URL --guardian-off Bypass OPSEC kill-switch (direct connection) --allow-leak Allow direct connection if proxy/Tor is unavailable --threads N Concurrency limit (default: 20) --timeout N Request timeout in seconds (default: 15) -o, --output FILE Output file path --format FORMAT Output format: json, csv, html, md, pdf --diff Show only new findings vs last cached scan ``` ## REPL 不使用任何参数启动交互式 REPL: ``` nox-cli ``` ``` Command Description ----------- --------------------------------------------------------------- autoscan Full pipeline: breach + pivot + dork + scrape scan Breach intelligence scan only dork Google/Bing/SearXNG dorking for leaked documents scrape Paste site + Telegram scraping crack Identify and crack a hash analyze Deep password strength analysis graph ASCII identity graph of last scan visualize ASCII relationship map (Target → Data → Pivots) pivot Re-scan using result #n as new pivot seed search Filter in-memory records by keyword sources Plugin debug: input type, confidence, key status export Export results (json / csv / html / md / pdf) tor Toggle Tor routing on/off proxy Set or clear proxy URL config Configure threads / timeout / depth help Show this menu quit Exit NOX ``` 示例:** ``` nox> autoscan target@company.com nox> graph nox> visualize nox> pivot 3 nox> search admin nox> export pdf investigation.pdf nox> sources nox> config threads 30 nox> config depth 3 nox> proxy socks5://127.0.0.1:1080 nox> tor ``` ## 源管理 ### 添加源 **1. 在 `build_sources.py` 中定义:** ``` _auth("NewIntelDB", "breaches", "https://api.newinteldb.com/v1/search?q={target}", "GET", {"results": "$.results"}, headers={"X-API-Key": "{NEWINTELDB_API_KEY}"}, api_key_slots=["{NEWINTELDB_API_KEY}"], normalization_map={"email": "email", "password": "password"}, input_type="email", output_type=["username", "ip"], confidence=0.85) ``` **2. 重新构建:** ``` python build_sources.py ``` ## 构建 .deb 包 ``` gem install fpm bash build_deb.sh sudo dpkg -i dist/nox-cli_*_all.deb ``` ## 法律免责声明 ## 许可证 [Apache License 2.0](LICENSE.txt)
标签:BlackArch, BSD, ESC4, Homebrew安装, OSINT, Python, 企业暴露面分析, 反取证, 多源情报, 安全评估, 异步编程, 情报收集, 扫描器, 插件化架构, 数字取证, 数字取证与事件响应, 数据展示, 数据挖掘, 无后门, 漏洞研究, 红队, 网络威胁情报, 自动化框架, 自动化脚本, 计算机取证, 身份关联分析, 逆向工具, 风险分析