jph4cks/perimtr
GitHub: jph4cks/perimtr
一个基于 Python 的边界智能平台,专注于自动化攻击面侦察与变更检测。
Stars: 0 | Forks: 0
# Perimtr
**Perimeter Intelligence Platform** — 自动攻击面侦察与现实世界企业环境中的变更检测。
提供您的边界网络范围和域名,Perimtr 将进行调查、记录发现并跟踪随时间的变化。可选集成 LLM 以提供 AI 驱动的安全建议。
[](https://www.python.org/downloads/)
[](LICENSE)
[]()
## 功能
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, 协议探测, 变更检测, 域名解析, 外部威胁评估, 大语言模型, 安全推荐, 安全标准, 安全监测, 数据可视化, 数据库暴露, 数据统计, 端口扫描, 网络安全工具, 网络安全评估, 网络库存, 网络资产管理, 自动化侦察, 证书透明度, 逆向工具