12Lemon123456/linkscan-dns-asset-discovery
GitHub: 12Lemon123456/linkscan-dns-asset-discovery
全栈 DNS 资产发现平台,将子域名枚举、DNS 解析与 TCP 端口扫描整合为一条自动化扫描流水线并通过 Web 仪表板可视化呈现。
Stars: 0 | Forks: 0
# LinkScan — DNS 资产发现平台
## 项目概述
LinkScan 是一个全栈安全侦察原型,在单个工作流中自动执行子域名枚举、DNS 解析和 TCP 端口扫描。安全分析师和工程师可以提交根域名、配置扫描选项,并通过 Web 仪表板查看结果。后端将结构化结果持久化存储在 MySQL 中;前端则可视化展示 KPI、图表和每个任务的详细信息。已完成的扫描可以导出为 JSON 或 CSV 格式。
## 主要功能
- 带有 OpenAPI 文档和健康检查的 RESTful FastAPI 后端
- 基于字典的子域名枚举(内置词表、自定义词汇或文件路径)
- 针对 A、AAAA、CNAME、MX 和 NS 记录的并发 DNS 解析
- 具有可配置端口集和基本服务映射的 TCP 端口扫描
- 串联扫描 pipeline:枚举 → DNS → 端口,包含阶段进度和日志
- 带有 ECharts 可视化的 Vue 3 仪表板
- 具有实时状态轮询的任务管理 UI
- 针对已完成扫描的 JSON 和 CSV 导出
## 技术栈
| 层级 | 技术 |
| --- | --- |
| 后端 | Python, FastAPI, SQLAlchemy, Pydantic, Alembic, dnspython, Celery(可选) |
| 前端 | Vue 3, TypeScript, Vite, Element Plus, ECharts, Axios |
| 数据库 | MySQL, Redis(可选) |
| 测试 | pytest |
## 系统架构
```
flowchart LR
User[User] --> Frontend[Vue Frontend]
Frontend --> API[FastAPI Backend]
API --> DB[(MySQL)]
API --> BG[Background Tasks]
BG --> Enum[Subdomain Enumeration]
Enum --> DNS[DNS Resolver]
DNS --> Port[TCP Port Scanner]
Port --> DB
API -. optional .-> Redis[(Redis / Celery)]
```
另请参阅:`docs/system-architecture.png`、`docs/scan-sequence.png`、`docs/database-er.png`
## 项目结构
```
Github_Portfolio/
├── backend/
│ ├── alembic/ # Database migrations
│ ├── app/
│ │ ├── api/routes/ # REST endpoints
│ │ ├── models/ # SQLAlchemy ORM models
│ │ ├── services/ # Scan engine, DNS, port scanner
│ │ └── tasks/ # Background task handlers
│ ├── scripts/ # Demo seeding and test reports
│ └── tests/ # Unit tests
├── frontend/
│ └── src/ # Vue views, charts, API client
├── docs/ # Architecture diagrams
├── models/ # Model documentation index
├── screenshots/ # UI demo images
├── requirements.txt
└── .env.example
```
## 我的贡献
- 设计了用于多阶段扫描结果的数据库 schema
- 构建了用于任务生命周期、仪表板统计和导出的 FastAPI endpoint
- 实现了具有弹性错误处理的串联扫描引擎
- 集成了并发 DNS 解析和 TCP 端口扫描
- 开发了包含图表、任务工作流和导出操作的 Vue 3 前端
- 添加了 Alembic 迁移、pytest 覆盖率和系统测试工具
## 成果
已完成扫描的代表性输出:
- 带有 DNS 解析状态的子域名候选项
- DNS 记录细分(A / CNAME / MX)
- 具有映射服务(http、https、ssh、mysql、redis 等)的开放端口
- 高危端口计数和各阶段执行时间
- 跨所有扫描的聚合仪表板统计数据
API 响应示例(`POST /api/scans`):
```
{
"scan_id": 1,
"status": "pending",
"stage": "enum"
}
```
正式的机器学习评估指标不适用于本项目。
## 截图
| 仪表板 | 创建扫描 |
| --- | --- |
|  |  |
| 任务列表 | 任务详情 |
| --- | --- |
|  |  |
| DNS 结果 | 端口结果 |
| --- | --- |
|  |  |
## 如何运行
### 前置条件
- Python 3.10+
- Node.js 18+
- MySQL 8+
- Redis(可选)
### 设置
```
cp .env.example .env
# 编辑 .env 中的 DATABASE_URL
pip install -r requirements.txt
```
### 后端
```
cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
- 健康检查:http://localhost:8000/health
- API 文档:http://localhost:8000/docs
### 前端
```
cd frontend
npm install
npm run dev
```
打开 http://localhost:5173
### 测试
```
cd backend
pytest tests/
```
## 未来改进
- 用于一键本地设置的 Docker Compose
- 使用生产级 Celery worker 替代进程内后台任务
- 用户身份验证和基于角色的访问控制
- 基于浏览器的字典文件上传
- CI/CD pipeline 和扩展的集成测试
- 英文 UI 本地化
## 许可证
MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:AV绕过, FastAPI, GitHub, Vue 3, 子域名枚举, 安全侦察, 安全规则引擎, 插件系统, 搜索引擎查询, 数据统计, 端口扫描, 系统安全, 逆向工具