hamzajawad11/phishguard-cti
GitHub: hamzajawad11/phishguard-cti
PhishGuard 是一款用于分析可疑 URL 和域名的网络安全威胁情报平台。
Stars: 0 | Forks: 0
# PhishGuard CTI
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://phishguard-cti.vercel.app/)
[](https://github.com/hamzajawad11/phishguard-cti/actions/workflows/tests.yml)
PhishGuard 是一个用于可疑 URL 和域名调查的网络安全威胁情报平台。它将链接转换为可解释的风险评分、丰富情报、动态沙箱证据、IOC 提取、保存历史记录和分析师准备好的报告。
实时演示:[phishguard-cti.vercel.app](https://phishguard-cti.vercel.app/)
安全沙箱演示 URL:
```
https://phishguard-cti.vercel.app/secure-login/account/verify/billing/update?redirect=http%3A%2F%2F192.168.10.20%2Fportal&continue=microsoft-office-sso&session=verify-account-payment-update&token=ZXhhbXBsZS1kZW1v
```
此演示 URL 故意看起来可疑但无害。它存在是为了测试 PhishGuard 的评分、动态 urlscan.io 截图捕获和下载检测工作流程。
## 预览


## 功能
PhishGuard 是为战术 CTI 和 SOC 风格的分级而构建的:
- 分析 URL、域名和可疑文本提交。
- 提取包括 URL、域名、IP 地址、哈希和 CVE 在内的 IOC。
- 从透明证据而不是黑盒标签中评分风险。
- 使用 RDAP、DNS、重定向、订阅源、可选声誉 API 和 urlscan.io 丰富指标。
- 通过 urlscan.io 支持主动动态扫描。
- 检测观察到的下载并使用 VirusTotal 检查文件哈希。
- 将调查保存到 SQLite 以供本地/演示使用。
- 将报告导出为 JSON、可打印的 HTML 和 CSV 历史记录。
## 关键功能
| 区域 | 功能 |
| --- | --- |
| URL 惯例 | HTTPS 检查、IP 主机、punycode、风险 TLD、URL 缩短、长 URL、深路径、编码字符、重定向参数 |
| 钓鱼信号 | 可疑关键词、品牌模仿提示、嵌入的 IP 指示器 |
| 被动情报 | RDAP 域名年龄、注册商、到期时间、DNS A/AAAA/MX/NS/TXT 记录、重定向跟踪 |
| 公共订阅源 | URLHaus、PhishStats、CISA 已知利用漏洞目录 |
| 可选 API | VirusTotal、AbuseIPDB、AlienVault OTX、urlscan.io |
| 动态沙箱 | urlscan.io 浏览器扫描、截图链接、DOM 链接、最终 URL、观察到的下载 |
| 文件判断 | 下载哈希提取和 VirusTotal 文件哈希查找 |
| 报告 | 仪表板、历史记录、过滤器、JSON 导出、HTML 报告导出、CSV 导出 |
## 架构
```
flowchart LR
A["User submits URL, domain, or text"] --> B["FastAPI routes"]
B --> C["Analyzer"]
C --> D["Local heuristics and IOC extraction"]
C --> E["Passive enrichment"]
E --> E1["RDAP"]
E --> E2["DNS"]
E --> E3["Redirect trace"]
E --> F["Threat feeds"]
F --> F1["URLHaus"]
F --> F2["PhishStats"]
F --> F3["CISA KEV"]
C --> G["Optional APIs"]
G --> G1["VirusTotal"]
G --> G2["AbuseIPDB"]
G --> G3["AlienVault OTX"]
G --> G4["urlscan.io"]
G4 --> H["Dynamic sandbox screenshot and downloads"]
H --> I["VirusTotal file hash verdicts"]
D --> J["Risk score and evidence"]
E --> J
F --> J
G --> J
I --> J
J --> K["SQLite history and reports"]
```
## 实时演示说明
托管在 Vercel 上的演示对于 UI 和工作流程测试很有用,但 Vercel 无服务器存储是临时的。SQLite 记录可能会重置或在不同实例之间出现不一致。
为了可靠的长期历史记录和稳定的报告 URL,请使用持久存储部署:
- Vercel Postgres
- Neon Postgres
- Supabase Postgres
- Railway Postgres
- Render 或 Fly.io 与持久磁盘/数据库
## 快速入门
```
git clone https://github.com/hamzajawad11/phishguard-cti.git
cd phishguard-cti
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m uvicorn app.main:app --reload
```
打开:
```
http://127.0.0.1:8000
```
## 可选 API 密钥
应用程序无需密钥即可运行,但可选提供程序可以提高丰富质量。
复制示例文件:
```
Copy-Item .env.example .env
```
配置值:
```
VIRUSTOTAL_API_KEY=
ABUSEIPDB_API_KEY=
OTX_API_KEY=
URLSCAN_API_KEY=
ENABLE_URLSCAN_SUBMISSION=false
URLSCAN_VISIBILITY=unlisted
URLSCAN_INITIAL_WAIT_SECONDS=10
URLSCAN_POLL_INTERVAL_SECONDS=5
URLSCAN_POLL_TIMEOUT_SECONDS=45
```
重要:
- 永远不要提交 `.env`。
- 将 `ENABLE_URLSCAN_SUBMISSION=false` 设置为仅被动 urlscan.io 搜索。
- 仅当您有意向将 URL 提交给 urlscan.io 进行动态浏览器扫描时,才将 `ENABLE_URLSCAN_SUBMISSION=true`。
- 当您的账户支持时,使用 `URLSCAN_VISIBILITY=unlisted` 或 `private`。
## 演示输入
用于快速课堂或作品集演示:
```
https://www.microsoft.com/security
http://login-microsoft-security-update.xyz/verify/account?redirect=http://192.168.10.20
http://paypal.com.account-verify-login.top/session/update
http://bit.ly/security-verification-login
paypal-login-check.xyz
verify-account-update.top
```
安全动态沙箱演示:
```
https://phishguard-cti.vercel.app/secure-login/account/verify/billing/update?redirect=http%3A%2F%2F192.168.10.20%2Fportal&continue=microsoft-office-sso&session=verify-account-payment-update&token=ZXhhbXBsZS1kZW1v
```
## 测试
```
python -m pytest
```
当前本地套件:
```
34 tests passing
```
## 部署
### Vercel
此存储库包含一个与 Vercel 兼容的 FastAPI 入口点:
```
app/app.py
```
Vercel 检测 FastAPI 应用程序并从 GitHub 存储库部署。
### Render
`render.yaml` 包含用于 Render 风格 Python 托管的配置:
```
Build command: pip install -r requirements.txt
Start command: uvicorn app.main:app --host 0.0.0.0 --port $PORT
```
### Docker
```
docker build -t phishguard-cti .
docker run --rm -p 8000:8000 phishguard-cti
```
## 项目结构
```
app/
analyzer.py URL parsing, IOC extraction, and risk scoring
config.py Timeouts, limits, and shared configuration
database.py SQLAlchemy engine and session management
dns_intel.py DNS record enrichment
domain_intel.py RDAP/domain-age intelligence
enrichment.py URLHaus, PhishStats, and CISA KEV enrichment
main.py FastAPI routes and web pages
optional_sources.py VirusTotal, AbuseIPDB, OTX, and urlscan.io integrations
redirects.py Passive redirect tracing
reports.py CSV, JSON, and HTML report rendering
static/ UI CSS, JavaScript, and logo
templates/ Jinja dashboard, analyzer, history, and report pages
tests/ Backend tests
data/ Runtime SQLite database
```
## 安全范围
PhishGuard 是一个防御性 CTI 项目。它不收集凭证、执行下载的文件或执行利用。包含的攻击者风格演示 URL 故意无害,仅用于检测、截图和下载观察测试。
## 作者
Ali Ahsan / Hamza Jawad / Arun Lal / Taha Nasir
标签:逆向工具