jph4cks/perimtr

GitHub: jph4cks/perimtr

一个基于 Python 的边界智能平台,专注于自动化攻击面侦察与变更检测。

Stars: 0 | Forks: 0

# Perimtr **Perimeter Intelligence Platform** — 自动攻击面侦察与现实世界企业环境中的变更检测。 提供您的边界网络范围和域名,Perimtr 将进行调查、记录发现并跟踪随时间的变化。可选集成 LLM 以提供 AI 驱动的安全建议。 [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Tests](https://img.shields.io/badge/tests-78%20passed-brightgreen.svg)]() ## 功能 Perimtr 是一个全面的边界安全评估工具,专为真实公司的安全团队设计。它执行以下操作: - **网络端口扫描** — 对知名端口进行缓慢、隐蔽的 SYN 扫描,以发现暴露的服务 - **DNS 枚举** — 被动(通过 crt.sh 的证书透明度)和主动(暴力破解)子域名发现,以及完整的 DNS 记录枚举和区域传输测试 - **HTTP 安全头** — 检查 HSTS、CSP、X-Frame-Options、Cookie 安全、TLS 配置和信息泄露 - **WHOIS 与证书情报** — 域名注册跟踪、SSL/TLS 证书分析(过期、密钥强度、主题备用名称)以及证书透明度监控 - **漏洞检查** — 检测暴露的数据库(MySQL、PostgreSQL、MongoDB、Redis、Elasticsearch)、开放 RDP、匿名 FTP、默认 SNMP、SSH 弱版本、SMTP 开放中继 - **域名安全** — SPF、DKIM、DMARC、DNSSEC 和 CAA 记录验证及策略分析 - **变更检测** — 自动与之前的评估进行比较,以显现新的端口、子域名、漏洞和配置变更 - **LLM 分析** — 可选的 AI 驱动执行摘要、风险评分和优先修复建议 - **交互式 HTML 报告** — JavaScript 驱动的仪表板,包含严重性图表、过滤、搜索和标签导航 ## 架构 ``` perimtr/ ├── cli.py # CLI entry point (scan, setup, report, diff, history, schedule) ├── engine.py # Orchestration engine — runs modules, saves, diffs, reports ├── core/ │ ├── config.py # YAML config with interactive first-run setup │ ├── module_base.py # Abstract base class for all recon modules │ ├── datastore.py # JSON-based local assessment storage │ ├── diff_engine.py # Change detection across all module types │ ├── scheduler.py # Recurring assessment scheduling │ └── llm_engine.py # LLM integration (OpenAI, Anthropic, OpenRouter, local) ├── modules/ │ ├── port_scanner.py # Network port scanning (nmap + socket fallback) │ ├── dns_enum.py # DNS enumeration (crt.sh + brute-force + records) │ ├── http_headers.py # HTTP security header analysis │ ├── whois_cert.py # WHOIS & certificate intelligence │ ├── vuln_check.py # Vulnerability & misconfiguration checks │ └── domain_security.py # SPF/DKIM/DMARC/DNSSEC/CAA validation ├── reports/ │ └── html_report.py # HTML report generator with Jinja2 └── templates/ └── report.html # Interactive dashboard template ``` ### 插件架构 每个侦察模块继承自 `ReconModule` 并实现 `run(targets)` 方法。要添加新模块: 1. 在 `perimtr/modules/` 中创建新文件 2. 继承 `perimtr.core.module_base.ReconModule` 3. 定义 `name`、`description` 和 `category` 4. 实现 `run(targets) -> dict` 方法 5. 在 `perimtr/modules/__init__.py` 中注册 ## 安装 ### 先决条件 - Python 3.9 或更高版本 - nmap(可选,但推荐用于更准确的端口扫描) ### 从源代码安装 ``` git clone https://github.com/jph4cks/perimtr.git cd perimtr pip install -e . ``` ### 支持 LLM ``` pip install -e ".[llm]" ``` ### 开发工具 ``` pip install -e ".[dev]" ``` ## 快速开始 ### 首次运行 ``` perimtr ``` 首次运行时,Perimtr 将引导您完成交互式设置: 1. **项目名称** — 本次评估范围的标识符 2. **网络范围** — CIDR 表示法(例如 `203.0.113.0/24`) 3. **域名** — 您的域名(例如 `example.com, api.example.com`) 4. **计划** — 运行频率(每日、每周、每月) 5. **LLM 集成** — 可选的 AI 驱动分析 这将创建 `perimtr.yaml` 配置文件。 ### 运行评估 ``` # 运行完整评估 perimtr scan # 使用详细输出 perimtr scan -v # 使用特定配置文件 perimtr scan -c /path/to/config.yaml ``` ### 查看结果 ``` # 从最新评估生成 HTML 报告 perimtr report # 将报告保存到指定路径 perimtr report -o my_report.html # 显示最近两次评估之间的更改 perimtr diff # 列出所有已保存的评估 perimtr history ``` ### 安排定期评估 ``` # 启动调度器(在 foreground 运行) perimtr schedule ``` ## 配置 Perimtr 使用 YAML 配置文件(`perimtr.yaml`): ``` project_name: my-company-perimeter targets: networks: - 203.0.113.0/24 - 198.51.100.0/28 domains: - example.com - api.example.com schedule: frequency: weekly # daily, weekly, monthly enabled: false scan_settings: port_scan_rate: 10 # max packets/sec (slow to avoid blocks) top_ports: 1000 # number of ports to scan dns_timeout: 10 # seconds http_timeout: 15 # seconds threads: 5 # concurrent module execution modules: port_scanner: enabled: true dns_enum: enabled: true http_headers: enabled: true whois_cert: enabled: true vuln_check: enabled: true domain_security: enabled: true llm: provider: openai # openai, anthropic, openrouter, local api_key: sk-... model: gpt-4o-mini base_url: null # for local LLMs (e.g., http://localhost:11434/v1) data_dir: data ``` ### LLM 提供商 Perimtr 支持多种 LLM 提供商用于 AI 驱动分析: | 提供商 | 设置 | 示例模型 | |--------|------|----------| | **OpenAI** | 来自 platform.openai.com 的 API 密钥 | `gpt-4o-mini`, `gpt-4o` | | **Anthropic** | 来自 console.anthropic.com 的 API 密钥 | `claude-sonnet-4-20250514` | | **OpenRouter** | 来自 openrouter.ai 的 API 密钥 | `anthropic/claude-3.5-sonnet` | | **本地** | Ollama、vLLM 或任何 OpenAI 兼容服务器 | `llama3`, `mistral` | 未配置 LLM 时,Perimtr 仍会基于发现结果生成带有预定义建议的有用报告。 ## 数据存储 所有评估数据以 JSON 文件形式本地存储: ``` data/ └── my-company-perimeter/ ├── assessment_20260416_110000.json ├── assessment_20260423_110000.json ├── report_20260416_110000.html ├── report_20260423_110000.html └── report_latest.html ``` 每个评估 JSON 包含所有模块的完整结果、时间戳和元数据。差异引擎会比较任意两个评估以检测变更。 ## 报告仪表板 报告是自包含的 HTML 文件,内置交互式 JavaScript 仪表板,提供以下功能: - **概览** — 统计摘要、严重性分布、柱状图 - **网络** — 包含服务详情的主机和端口表格 - **DNS** — 子域名网格、DNS 记录、区域传输结果 - **Web 安全** — 每个域的头部分析(存在/缺失/泄露) - **证书** — 证书详情、WHOIS 数据、过期跟踪 - **域名安全** — SPF/DKIM/DMARC/DNSSEC/CAA 状态卡片 - **漏洞** — 带严重性徽章的可过滤发现列表 - **变更** — 显示新增、已解决和变更发现的差异视图 - **AI 分析** — 风险评分、执行摘要、优先操作和建议 - **所有问题** — 可搜索、可过滤的主问题表 ## 工作原理 ### 扫描流程 1. **加载配置** — 读取目标、设置和模块配置 2. **运行模块** — 并发执行启用的模块(带速率限制) 3. **保存评估** — 将结果存储为带时间戳的 JSON 4. **差异对比** — 与上一次评估比较以检测变更 5. **分析** — 生成分析结果(LLM 驱动或预定义) 6. **报告** — 生成交互式 HTML 仪表板 ### 隐蔽扫描 端口扫描使用缓慢、速率受限的技术以避免检测和阻断: - 默认速率:每秒 10 个数据包 - 使用 `-T2` 定时(nmap)或定时 socket 连接的 SYN 扫描 - 仅扫描知名端口(默认不扫描完整端口范围) - 尽可能随机化顺序 - 可通过 `scan_settings.port_scan_rate` 配置 ### 变更检测 差异引擎跟踪所有模块类型的变更: | 变更类型 | 严重性 | 示例 | |----------|--------|------| | 新增开放端口 | 高 | 服务器上新出现端口 8080 | | 端口关闭 | 信息 | 端口 21(FTP)不再响应 | | 新增主机 | 高 | 发现新主机 10.0.0.5 | | 主机消失 | 中 | 主机 10.0.0.3 停止响应 | | 新增子域名 | 中 | dev.example.com 出现 | | DNS 记录变更 | 中 | api.example.com 的 A 记录变更 | | 新增漏洞 | 严重 | 未认证暴露的 MySQL | | 漏洞修复 | 信息 | 匿名 FTP 访问移除 | | 证书颁发者变更 | 高 | SSL 证书颁发者意外变更 | | 缺失新头部 | 中 | 生产环境移除 HSTS 头部 | | 域名安全问题 | 中 | SPF 记录被修改为 +all | ## 测试 ``` # 运行所有测试 pytest tests/ -v # 运行带覆盖率测试 pytest tests/ --cov=perimtr --cov-report=term-missing # 运行特定测试文件 pytest tests/test_diff_engine.py -v ``` 78 个测试,涵盖配置、数据存储、差异引擎、全部 6 个侦察模块、LLM 引擎和 HTML 报告生成。 ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)。 ## 作者 **Jesus A. Perez Duerto** — [Red Hound Information Security](https://redhound.us)
标签:AI安全分析, CAA记录, CI/CD安全, CSP, DKIM, DLL 劫持, DMARC, DNSSEC, DNS枚举, Homebrew安装, HSTS, HTTP安全头, Llama, RDP暴露, SEO, SMTP开放中继, SPF, SSH弱版本, SSL/TLS分析, SYN扫描, WHOIS查询, X-Frame-Options, 交互式HTML报告, 企业安全, 关键词丰富, 匿名FTP, 协议探测, 变更检测, 域名解析, 外部威胁评估, 大语言模型, 安全推荐, 安全标准, 安全监测, 数据可视化, 数据库暴露, 数据统计, 端口扫描, 网络安全工具, 网络安全评估, 网络库存, 网络资产管理, 自动化侦察, 证书透明度, 逆向工具