joemunene-by/ghostrecon

GitHub: joemunene-by/ghostrecon

一个被动 OSINT 侦察框架,通过异步收集器从公开数据源中提取目标信息并构建实体关系图,输出 JSON 和 HTML 报告。

Stars: 0 | Forks: 0

ghostrecon logo

ghostrecon

License: MIT Python 3.10+ Part of GhostSuite

用于授权安全评估的被动 OSINT 侦察框架。 ghostrecon 接收一个目标域名,对公开和被动的数据源运行一组异步模块化收集器, 构建所发现内容的类型化实体图,对结果进行关联,并输出 JSON 和独立的 HTML 报告。 它仅执行被动收集:它查询公开的数据集和 DNS,不会主动扫描、暴力破解或利用目标。 ## 授权使用和法律免责声明 ghostrecon 仅旨在用于授权的安全评估、研究,以及针对您拥有或获得明确书面测试许可的资产的防御性工作。 未经授权对系统进行侦察可能会违反计算机滥用和隐私法。您有责任确保您的使用是合法且经授权的。作者提供此软件时不提供任何担保,也不对滥用承担责任。详情请参阅 LICENSE。 ## 功能 - 异步、模块化的收集器架构(httpx + asyncio)。 - 无需 API 密钥的被动收集器。 - 具有共享基础设施关联功能的类型化实体图。 - JSON 和独立的 HTML 报告(无外部资产,无跟踪)。 - 可通过 CLI 标志或 YAML 文件进行配置。 - 设计稳健:具备单次请求超时、指数退避重试、可选的速率限制,以及隔离机制,确保单个收集器发生故障时不会导致整个运行崩溃。 ## 收集器 | 名称 | 来源 | 输出 | |-----------|-----------------------------------------|---------------------------------| | `crtsh` | crt.sh 证书透明度日志 | 子域名 | | `dns` | 系统 DNS 解析器 (dnspython) | A, AAAA, MX, NS, TXT 记录 | | `wayback` | Internet Archive Wayback CDX API | 历史 URL 和路径 | | `resolve` | 系统 DNS 解析器 | 将发现的主机解析为 IP| 收集器是可插拔的。添加新数据源的方法是继承 `ghostrecon.collectors.base.BaseCollector`,实现异步 `collect` 方法和纯 `parse` 方法,并在 `ghostrecon.collectors.REGISTRY` 中注册它。 ## 安装 需要 Python 3.11 或更高版本。 ``` git clone https://github.com/joemunene-by/ghostrecon.git cd ghostrecon python -m venv .venv . .venv/bin/activate pip install -e ".[dev]" ``` ## 快速开始 ``` ghostrecon scan example.com ``` 这将生成 `ghostrecon-output/example.com.json` 和 `ghostrecon-output/example.com.html`,然后打印摘要: ``` ghostrecon v0.1.0 scanning example.com with collectors: crtsh, dns, wayback, resolve JSON report written to ghostrecon-output/example.com.json HTML report written to ghostrecon-output/example.com.html ghostrecon summary: example.com Metric Count Subdomains 14 IP addresses 6 URLs 132 MX records 2 NS records 4 Graph edges 210 ``` 常用选项: ``` ghostrecon scan example.com --collectors crtsh,dns --json-only -v ghostrecon scan example.com --config ghostrecon.example.yaml --out ./reports ghostrecon list-collectors ghostrecon --version ``` | 标志 | 描述 | |------------------|---------------------------------------------------| | `--collectors` | 以逗号分隔的要启用的收集器 | | `--config, -c` | YAML 配置文件(CLI 标志会覆盖其中的值) | | `--out, -o` | 报告的输出目录 | | `--timeout` | 单次请求超时时间(秒) | | `--concurrency` | 最大并发操作数 | | `--retries` | 每次请求的重试次数 | | `--rate-limit` | 每个收集器请求之间的最小间隔秒数 | | `--wayback-limit`| 要获取的最大 Wayback URL 数量 | | `--json-only` | 跳过 HTML 报告 | | `--verbose, -v` | 详细日志记录 | ## 架构 ``` cli.py Typer CLI, rich output, flag and YAML config wiring config.py Config dataclass with YAML and CLI merge engine.py Orchestrates collectors, builds the graph, correlates collectors/ BaseCollector plus crtsh, dns, wayback, resolve graph.py Typed networkx entity graph and correlation report.py JSON and self-contained HTML report writers ``` 引擎使用 `asyncio.gather` 并发运行发现收集器,将发现的主机提供给解析收集器,将每个结果摄取到实体图中,然后在报告之前运行关联过程。该图包含类型化节点(domain, subdomain, IP, URL, MX, NS)和类型化边(`has_subdomain`, `resolves_to`, `has_url`, `has_mx`, `has_ns`)。关联功能会对解析到相同 IP 的主机进行分组,并将其标记为共享基础设施。 ## 开发 ``` pip install -e ".[dev]" ruff check . pytest ``` 测试套件完全离线。网络收集器使用模拟的 HTTP 响应(pytest-httpx)和模拟的 DNS 解析器进行测试,不会进行任何实时调用。 ## 路线图 - 更多被动数据源(Common Crawl URL 索引、RDAP、ASN 查询)。 - 针对发现 IP 的反向 DNS 和 PTR 扩展。 - 将图导出为 GraphML 和 DOT 格式,以供可视化工具使用。 - 可选的,针对同一目标的两次扫描之间的差异对比。 - 可插拔的输出接收器(stdout JSON lines, webhook)。 ## 许可证 MIT。详情请参阅 LICENSE。 ghostsuite 的一部分:十一款开源安全工具,一个幽灵。
标签:ESC4, OSINT, Python, 安全测试, 安全规则引擎, 实时处理, 异步框架, 情报收集, 攻击性安全, 无后门, 漏洞研究, 计算机取证, 运行时操纵, 逆向工具