ekorangin/phising-website-reporter
GitHub: ekorangin/phising-website-reporter
一个自动化钓鱼网站举报与取证平台,集成移动端仿真截图、RDAP/DNS 查询和多渠道威胁情报广播,帮助安全团队高效完成钓鱼网站的调查与下架。
Stars: 0 | Forks: 0
# 🛡️ 钓鱼网站举报与自动下架中心
一个现代、高性能的 monorepo 平台,专为网络安全社区、威胁情报分析师和品牌保护团队设计,用于举报、调查、获取取证证据,并向恶意钓鱼网站发送多渠道下架通知。
## 📌 目录
- [概述与描述](#-overview--description)
- [核心功能](#-key-features)
- [系统要求](#-system-requirements)
- [流程与架构工作流](#-process--architecture-workflow)
- [安装与配置指南](#-installation--setup-guide)
- [API 参考](#-api-reference)
- [项目结构](#-project-structure)
- [许可证](#-license)
## 📖 概述与描述
**Phishing Website Reporter** 是一个自动化的钓鱼网站调查与下架平台。它结合了 Playwright 移动端 headless 浏览器自动化、超快 DNS 解析、域名注册商 RDAP 查询、外发二级威胁链接收集(WhatsApp、Telegram、Google Forms、APK 恶意软件),以及一个多渠道威胁广播模块,可向全球主要的威胁情报提供商(Google Safe Browsing、Microsoft Defender SmartScreen、McAfee WebAdvisor 和 NordVPN CyberSec)举报钓鱼 URL。
## ✨ 核心功能
- **简洁的公开举报界面:** 采用居中的表单布局,支持 URL 验证、受害品牌名称输入和 Turnstile CAPTCHA 验证。
- **实时去重层:** 自动检测同一 URL 的重复举报,增加威胁命中次数(+1)并显示当前状态,而无需重新触发繁重的 worker 任务。
- **自动化取证处理 Worker:**
- **域名与 IP RDAP 查询:** 自动识别域名注册商详细信息、托管基础设施所有者以及官方滥用行为联系电子邮件地址 (`abuse@...`)。
- **超快 DNS 解析:** 采用本地操作系统 DNS 查询 (<10ms),并自动回退到 Cloudflare DNS-over-Https (DoH)。
- **全页取证截图:** 使用 Playwright headless 浏览器捕获全页移动端仿真截图(Android/iOS User-Agent 和视口)。
- **跨域链接收集器:** 扫描目标页面,查找外发二级诈骗渠道(WhatsApp `wa.me`、Telegram `t.me`、Google Forms 和 `.apk` 恶意软件下载 URL)。
- **三列管理员分流仪表板:** 专业的分流工作区,具有按 `hit_count DESC` 排序的优先级队列、技术取证规格卡片、浏览器模拟边框截图查看器以及分组的外发链接风险矩阵。
- **多渠道威胁情报广播:** 批准后,自动跨 5 个安全渠道分发威胁通知:
1. 📧 **注册商与托管提供商滥用电子邮件**
2. 🔴 **Google Safe Browsing API**(在 Chrome、Firefox 和 Safari 中触发红色插页式警告页面)
3. 🪟 **Microsoft Defender SmartScreen**(在 Edge 和 Windows Defender 中触发黑名单保护)
4. 🔒 **McAfee WebAdvisor / SiteAdvisor**(将 URL 添加到 McAfee 恶意网站数据库)
5. 🌐 **NordVPN Threat Protection / CyberSec**(阻止 Nord Security 用户的 DNS 解析)
- **自动化 Janitor 失效验证:** 后台调度程序(每小时运行一次),定期验证已批准威胁 URL 的可用性。当网站下线时(*NXDOMAIN / HTTP 404 / Safe Browsing 警告*),状态会自动设置为 `COMPLETED`。
## ⚙️ 系统要求
在运行应用程序之前,请确保您的环境满足以下前提条件:
- **Node.js:** v18.x 或更高版本 (`node -v`)
- **npm:** v9.x 或更高版本
- **Playwright Chromium:** 用于捕获取证截图的 headless 浏览器引擎
- **操作系统:** Windows 10/11、macOS 或 Linux
## 🔄 流程与架构工作流
```
flowchart TD
A[Public Reporter] -->|Submits URL & Victim Brand| B(Public Report Form)
B -->|Submit POST /api/reports| C{Check Database Duplicates}
C -->|Duplicate Found| D[Increment Hit Count + Show Status Modal]
C -->|New Report| E[Save PENDING Status & Queue Forensic Job]
E --> F[Automated Forensic Worker]
subgraph Forensic Processing
F --> G[Parse Main Domain & Query Domain RDAP]
F --> H[High-Speed OS DNS Lookup & DoH Fallback]
F --> I[Query IP RDAP & Match Known Registrar Map]
F --> J[Playwright Mobile Spoofing Full-Page Screenshot]
F --> K[Harvest Outgoing WhatsApp / Telegram / APK Links]
end
J & K --> L[(SQLite Database)]
L --> M[Admin Triage Dashboard]
M -->|Analyst Review| N{Approve / Reject}
N -->|Reject| O[Status REJECTED]
N -->|Approve| P[Multi-Vector Threat Dispatcher]
subgraph Multi-Vector Broadcast
P --> Q1[1. Registrar Abuse Email]
P --> Q2[2. Google Safe Browsing Red Screen]
P --> Q3[3. Microsoft Defender SmartScreen]
P --> Q4[4. McAfee WebAdvisor Database]
P --> Q5[5. NordVPN CyberSec DNS Block]
end
P --> R[Status APPROVED]
R --> S[Scheduled Janitor Checker - Every 1hr]
S -->|Site Offline / NXDOMAIN / 404| T[Status COMPLETED]
```
### 逐步流程:
1. **举报提交:** 用户提交可疑 URL 和受害品牌名称。
2. **去重检查:** 系统查询数据库。如果重复,则增加命中次数并打开实时状态叠加层。
3. **取证扫描:** Worker 解析域名信息、IP 地址、注册商滥用电子邮件,捕获移动端屏幕截图,并收集外发诈骗链接。
4. **管理员分流审查:** 安全分析师在三列管理员仪表板内审查取证证据。
5. **多渠道分发:** 批准后,威胁报告将同时广播到注册商滥用电子邮件、Google Safe Browsing、Microsoft SmartScreen、McAfee 和 NordVPN。
6. **失效验证:** Janitor 服务每小时监控一次网站状态,直到其被自动下架。
## 🚀 安装与配置指南
### 1. 克隆仓库
```
git clone https://github.com/ekorangin/phising-website-reporter.git
cd phising-website-reporter
```
### 2. 安装 Monorepo 依赖项
```
npm run install:all
```
### 3. 安装 Playwright Chromium 引擎
```
npx playwright install chromium
```
### 4. 运行开发服务器
```
npm run dev
```
此命令同时启动两个服务器:
- **Express 后端 API 服务器:** [http://localhost:5000](http://localhost:5000)
- **Vite React 前端 UI:** [http://localhost:5173](http://localhost:5173)
## 📡 API 参考
| 方法 | Endpoint | 描述 |
| :--- | :--- | :--- |
| `POST` | `/api/reports` | 提交新的可疑 URL 报告 (`reported_url`, `target_brand_raw`)。 |
| `GET` | `/api/reports/status?url=...` | 通过 URL 检查报告状态。 |
| `GET` | `/api/reports/pending` | 检索管理员控制台所有待处理的分流案例。 |
| `POST` | `/api/reports/:id/approve` | 批准报告并跨 5 个威胁情报渠道进行广播。 |
| `POST` | `/api/reports/:id/reject` | 拒绝报告。 |
| `DELETE` | `/api/reports/pending` | 从数据库中删除所有待处理的案例。 |
| `DELETE` | `/api/reports/:id` | 通过 ID 删除特定报告。 |
| `GET` | `/api/brands?q=...` | 检索品牌建议自动补全。 |
| `POST` | `/api/janitor/run` | 手动触发站点可用性验证检查。 |
## 📁 项目结构
```
phising-website-reporter/
├── client/ # React Frontend (Vite)
│ ├── src/
│ │ ├── components/
│ │ │ ├── AdminDashboard.jsx # 3-Column Admin Triage Console
│ │ │ ├── PublicForm.jsx # Public Reporting Form Component
│ │ │ └── StatusModal.jsx # Deduplication Status Modal
│ │ ├── App.jsx # Main Navigation & View Switcher
│ │ └── index.css # Vanilla CSS Styling & Design Tokens
│ └── package.json
├── server/ # Express.js Backend & Workers
│ ├── src/
│ │ ├── index.js # Express API Server Entrypoint & Routes
│ │ ├── worker.js # Playwright Forensic & Screenshot Worker
│ │ ├── threat_dispatcher.js# Multi-Vector Threat Intelligence Dispatcher
│ │ ├── mailer.js # Registrar Abuse Email Generator
│ │ ├── janitor.js # Scheduled Site Death Checker
│ │ └── db.js # SQLite Database Initialization
│ ├── public/screenshots/ # Captured Forensic Screenshot Directory (.jpg)
│ └── package.json
├── README.md # Project Documentation
└── package.json # Root Monorepo Scripts
```
## 📄 许可证
该项目基于 [MIT 许可证](LICENSE) 授权开放。欢迎社区网络安全与威胁情报协作。
标签:DNS解析, MITM代理, Playwright, RDAP查询, 十六进制编辑器, 反钓鱼, 威胁情报, 开发者工具, 开源项目, 特征检测, 自动化响应, 自定义脚本