Files
xingrin/README.md

334 lines
11 KiB
Markdown
Raw Normal View History

2025-12-21 08:52:33 +08:00
<h1 align="center">XingRin - 星环</h1>
2025-12-12 18:04:57 +08:00
<p align="center">
<b>攻击面管理平台 (ASM) | 自动化资产发现与漏洞扫描系统</b>
2025-12-12 18:04:57 +08:00
</p>
2025-12-21 08:42:00 +08:00
<p align="center">
<a href="https://github.com/yyhuni/xingrin/stargazers"><img src="https://img.shields.io/github/stars/yyhuni/xingrin?style=flat-square&logo=github" alt="GitHub stars"></a>
<a href="https://github.com/yyhuni/xingrin/network/members"><img src="https://img.shields.io/github/forks/yyhuni/xingrin?style=flat-square&logo=github" alt="GitHub forks"></a>
<a href="https://github.com/yyhuni/xingrin/issues"><img src="https://img.shields.io/github/issues/yyhuni/xingrin?style=flat-square&logo=github" alt="GitHub issues"></a>
<a href="https://github.com/yyhuni/xingrin/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-PolyForm%20NC-blue?style=flat-square" alt="License"></a>
</p>
<p align="center">
<a href="#功能特性">功能特性</a> •
<a href="#全局资产搜索">资产搜索</a> •
<a href="#快速开始">快速开始</a> •
<a href="#文档">文档</a> •
<a href="#反馈与贡献">反馈与贡献</a>
2025-12-21 08:42:00 +08:00
</p>
<p align="center">
<sub>关键词: ASM | 攻击面管理 | 漏洞扫描 | 资产发现 | 资产搜索 | Bug Bounty | 渗透测试 | Nuclei | 子域名枚举 | EASM</sub>
2025-12-21 08:42:00 +08:00
</p>
---
## 在线 Demo
**[https://xingrin.vercel.app/](https://xingrin.vercel.app/)**
> 仅用于 UI 展示,未接入后端数据库
---
<p align="center">
<b>现代化 UI</b>
</p>
2025-12-17 10:42:43 +08:00
<p align="center">
2025-12-24 17:28:08 +08:00
<img src="docs/screenshots/light.png" alt="Light Mode" width="24%">
<img src="docs/screenshots/bubblegum.png" alt="Bubblegum" width="24%">
<img src="docs/screenshots/cosmic-night.png" alt="Cosmic Night" width="24%">
<img src="docs/screenshots/quantum-rose.png" alt="Quantum Rose" width="24%">
2025-12-17 10:42:43 +08:00
</p>
## 文档
- [技术文档](./docs/README.md) - 技术文档导航(持续完善中)
- [快速开始](./docs/quick-start.md) - 一键安装和部署指南
- [版本管理](./docs/version-management.md) - Git Tag 驱动的自动化版本管理系统
- [Nuclei 模板架构](./docs/nuclei-template-architecture.md) - 模板仓库的存储与同步
- [字典文件架构](./docs/wordlist-architecture.md) - 字典文件的存储与同步
- [扫描流程架构](./docs/scan-flow-architecture.md) - 完整扫描流程与工具编排
2025-12-12 18:04:57 +08:00
---
## 功能特性
2025-12-12 18:04:57 +08:00
### 扫描能力
| 功能 | 状态 | 工具 | 说明 |
|------|------|------|------|
| 子域名扫描 | 已完成 | Subfinder, Amass, PureDNS | 被动收集 + 主动爆破,聚合 50+ 数据源 |
| 端口扫描 | 已完成 | Naabu | 自定义端口范围 |
| 站点发现 | 已完成 | HTTPX | HTTP 探测,自动获取标题、状态码、技术栈 |
| 指纹识别 | 已完成 | XingFinger | 2.7W+ 指纹规则,多源指纹库 |
| URL 收集 | 已完成 | Waymore, Katana | 历史数据 + 主动爬取 |
| 目录扫描 | 已完成 | FFUF | 高速爆破,智能字典 |
| 漏洞扫描 | 已完成 | Nuclei, Dalfox | 9000+ POC 模板XSS 检测 |
| 站点截图 | 已完成 | Playwright | WebP 高压缩存储 |
### 平台能力
| 功能 | 状态 | 说明 |
|------|------|------|
| 目标管理 | 已完成 | 多层级组织,支持域名/IP 目标 |
| 资产快照 | 已完成 | 扫描结果对比,追踪资产变化 |
| 黑名单过滤 | 已完成 | 全局 + Target 级,支持通配符/CIDR |
| 定时任务 | 已完成 | Cron 表达式,自动化周期扫描 |
| 分布式扫描 | 已完成 | 多 Worker 节点,负载感知调度 |
| 全局搜索 | 已完成 | 表达式语法,多字段组合查询 |
| 通知推送 | 已完成 | 企业微信、Telegram、Discord |
| API 密钥管理 | 已完成 | 可视化配置各数据源 API Key |
### 扫描流程架构
2025-12-19 16:05:32 +08:00
完整的扫描流程包括子域名发现、端口扫描、站点发现、指纹识别、URL 收集、目录扫描、漏洞扫描等阶段
2025-12-19 16:15:57 +08:00
2025-12-19 16:05:32 +08:00
```mermaid
2025-12-19 16:15:57 +08:00
flowchart LR
START["开始扫描"]
2025-12-19 16:05:32 +08:00
2025-12-19 16:15:57 +08:00
subgraph STAGE1["阶段 1: 资产发现"]
2025-12-19 16:05:32 +08:00
direction TB
2025-12-19 16:15:57 +08:00
SUB["子域名发现<br/>subfinder, amass, puredns"]
PORT["端口扫描<br/>naabu"]
SITE["站点识别<br/>httpx"]
FINGER["指纹识别<br/>xingfinger"]
SUB --> PORT --> SITE --> FINGER
2025-12-19 16:05:32 +08:00
end
2025-12-19 16:15:57 +08:00
subgraph STAGE2["阶段 2: 深度分析"]
2025-12-19 16:05:32 +08:00
direction TB
2025-12-19 16:15:57 +08:00
URL["URL 收集<br/>waymore, katana"]
DIR["目录扫描<br/>ffuf"]
SCREENSHOT["站点截图<br/>playwright"]
2025-12-19 16:05:32 +08:00
end
2025-12-19 16:15:57 +08:00
subgraph STAGE3["阶段 3: 漏洞检测"]
VULN["漏洞扫描<br/>nuclei, dalfox"]
2025-12-19 16:05:32 +08:00
end
2025-12-19 16:15:57 +08:00
FINISH["扫描完成"]
2025-12-19 16:05:32 +08:00
2025-12-19 16:15:57 +08:00
START --> STAGE1
FINGER --> STAGE2
2025-12-19 16:15:57 +08:00
STAGE2 --> STAGE3
STAGE3 --> FINISH
2025-12-19 16:05:32 +08:00
2025-12-19 16:15:57 +08:00
style START fill:#34495e,stroke:#2c3e50,stroke-width:2px,color:#fff
style FINISH fill:#27ae60,stroke:#229954,stroke-width:2px,color:#fff
style STAGE1 fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff
style STAGE2 fill:#9b59b6,stroke:#8e44ad,stroke-width:2px,color:#fff
style STAGE3 fill:#e67e22,stroke:#d35400,stroke-width:2px,color:#fff
style SUB fill:#5dade2,stroke:#3498db,stroke-width:1px,color:#fff
style PORT fill:#5dade2,stroke:#3498db,stroke-width:1px,color:#fff
style SITE fill:#5dade2,stroke:#3498db,stroke-width:1px,color:#fff
style FINGER fill:#5dade2,stroke:#3498db,stroke-width:1px,color:#fff
2025-12-19 16:15:57 +08:00
style URL fill:#bb8fce,stroke:#9b59b6,stroke-width:1px,color:#fff
style DIR fill:#bb8fce,stroke:#9b59b6,stroke-width:1px,color:#fff
style SCREENSHOT fill:#bb8fce,stroke:#9b59b6,stroke-width:1px,color:#fff
2025-12-19 16:15:57 +08:00
style VULN fill:#f0b27a,stroke:#e67e22,stroke-width:1px,color:#fff
2025-12-19 16:05:32 +08:00
```
详细说明请查看 [扫描流程架构文档](./docs/scan-flow-architecture.md)
### 分布式架构
- **多节点扫描** - 支持部署多个 Worker 节点,横向扩展扫描能力
- **本地节点** - 零配置,安装即自动注册本地 Docker Worker
- **远程节点** - SSH 一键部署远程 VPS 作为扫描节点
- **负载感知调度** - 实时感知节点负载,自动分发任务到最优节点
- **节点监控** - 实时心跳检测CPU/内存/磁盘状态监控
- **断线重连** - 节点离线自动检测,恢复后自动重新接入
2025-12-12 18:04:57 +08:00
2025-12-19 16:05:32 +08:00
```mermaid
flowchart TB
2025-12-19 16:15:57 +08:00
subgraph MASTER["主服务器 (Master Server)"]
2025-12-19 16:05:32 +08:00
direction TB
2025-12-19 16:15:57 +08:00
REDIS["Redis 负载缓存"]
2025-12-19 16:05:32 +08:00
2025-12-19 16:15:57 +08:00
subgraph SCHEDULER["任务调度器 (Task Distributor)"]
2025-12-19 16:05:32 +08:00
direction TB
2025-12-19 16:15:57 +08:00
SUBMIT["接收扫描任务"]
2025-12-19 16:19:11 +08:00
SELECT["负载感知选择"]
DISPATCH["智能分发"]
2025-12-19 16:05:32 +08:00
SUBMIT --> SELECT
SELECT --> DISPATCH
end
REDIS -.负载数据.-> SELECT
end
2025-12-19 16:15:57 +08:00
subgraph WORKERS["Worker 节点集群"]
2025-12-19 16:05:32 +08:00
direction TB
2025-12-19 16:15:57 +08:00
W1["Worker 1 (本地)<br/>CPU: 45% | MEM: 60%"]
W2["Worker 2 (远程)<br/>CPU: 30% | MEM: 40%"]
W3["Worker N (远程)<br/>CPU: 90% | MEM: 85%"]
2025-12-19 16:05:32 +08:00
end
DISPATCH -->|任务分发| W1
DISPATCH -->|任务分发| W2
2025-12-19 16:15:57 +08:00
DISPATCH -->|高负载跳过| W3
2025-12-19 16:05:32 +08:00
2025-12-19 16:19:11 +08:00
W1 -.心跳上报.-> REDIS
W2 -.心跳上报.-> REDIS
W3 -.心跳上报.-> REDIS
```
2025-12-19 16:05:32 +08:00
### 全局资产搜索
2026-01-03 13:32:58 +08:00
- **多类型搜索** - 支持 Website 和 Endpoint 两种资产类型
- **表达式语法** - 支持 `=`(模糊)、`==`(精确)、`!=`(不等于)操作符
- **逻辑组合** - 支持 `&&` (AND) 和 `||` (OR) 逻辑组合
- **多字段查询** - 支持 host、url、title、tech、status、body、header 字段
- **CSV 导出** - 流式导出全部搜索结果,无数量限制
#### 搜索语法示例
```bash
# 基础搜索
host="api" # host 包含 "api"
status=="200" # 状态码精确等于 200
tech="nginx" # 技术栈包含 nginx
# 组合搜索
host="api" && status=="200" # host 包含 api 且状态码为 200
tech="vue" || tech="react" # 技术栈包含 vue 或 react
# 复杂查询
host="admin" && tech="php" && status=="200"
url="/api/v1" && status!="404"
```
### 可视化界面
2025-12-12 18:04:57 +08:00
- **数据统计** - 资产/漏洞统计仪表盘
- **实时通知** - WebSocket 消息推送
- **通知推送** - 实时企业微信tgdiscard消息推送服务
2025-12-12 18:04:57 +08:00
---
## 快速开始
2025-12-12 18:04:57 +08:00
### 环境要求
2026-01-03 13:32:58 +08:00
- **操作系统**: Ubuntu 20.04+ / Debian 11+
- **系统架构**: AMD64 (x86_64) / ARM64 (aarch64)
2025-12-19 16:19:11 +08:00
- **硬件**: 2核 4G 内存起步20GB+ 磁盘空间
2025-12-12 18:04:57 +08:00
### 一键安装
```bash
# 克隆项目
git clone https://github.com/yyhuni/xingrin.git
cd xingrin
# 安装并启动(生产模式)
sudo ./install.sh
2025-12-29 20:08:40 +08:00
# 中国大陆用户推荐使用镜像加速(第三方加速服务可能会失效,不保证长期可用)
2025-12-29 20:08:40 +08:00
sudo ./install.sh --mirror
2025-12-12 18:04:57 +08:00
```
> **--mirror 参数说明**
2025-12-29 20:08:40 +08:00
> - 自动配置 Docker 镜像加速(国内镜像源)
> - 加速 Git 仓库克隆Nuclei 模板等)
2025-12-12 18:04:57 +08:00
### 访问服务
2025-12-25 16:06:01 +08:00
- **Web 界面**: `https://ip:8083`
2026-01-03 13:32:58 +08:00
- **默认账号**: admin / admin首次登录后请修改密码
2025-12-12 18:04:57 +08:00
### 常用命令
```bash
# 启动服务
sudo ./start.sh
# 停止服务
sudo ./stop.sh
# 重启服务
sudo ./restart.sh
# 卸载
sudo ./uninstall.sh
```
2025-12-16 16:38:48 +08:00
## 反馈与贡献
2025-12-16 16:38:48 +08:00
- **发现 Bug有新想法比如UI设计功能设计等** 欢迎点击右边链接进行提交建议 [Issue](https://github.com/yyhuni/xingrin/issues) 或者公众号私信
2025-12-16 16:38:48 +08:00
## 联系
- 微信公众号: **塔罗安全学苑**
- 微信群去公众号底下的菜单,有个交流群,点击就可以看到了,链接过期可以私信我拉你
2025-12-16 16:38:48 +08:00
<img src="docs/wechat-qrcode.png" alt="微信公众号" width="200">
### 关注公众号免费领取指纹库
| 指纹库 | 数量 |
|--------|------|
| ehole.json | 21,977 |
| ARL.yaml | 9,264 |
| goby.json | 7,086 |
| FingerprintHub.json | 3,147 |
> 关注公众号回复「指纹」即可获取
## 赞助支持
如果这个项目对你有帮助谢谢请我能喝杯蜜雪冰城你的star和赞助是我免费更新的动力
<p>
<img src="docs/wx_pay.jpg" alt="微信支付" width="200">
<img src="docs/zfb_pay.jpg" alt="支付宝" width="200">
</p>
2025-12-12 18:04:57 +08:00
## 免责声明
2025-12-12 18:04:57 +08:00
**重要:请在使用前仔细阅读**
1. 本工具仅供**授权的安全测试**和**安全研究**使用
2. 使用者必须确保已获得目标系统的**合法授权**
3. **严禁**将本工具用于未经授权的渗透测试或攻击行为
4. 未经授权扫描他人系统属于**违法行为**,可能面临法律责任
5. 开发者**不对任何滥用行为负责**
使用本工具即表示您同意:
- 仅在合法授权范围内使用
- 遵守所在地区的法律法规
- 承担因滥用产生的一切后果
## Star History
2025-12-21 08:42:00 +08:00
如果这个项目对你有帮助,请给一个 Star 支持一下!
2025-12-21 08:42:00 +08:00
[![Star History Chart](https://api.star-history.com/svg?repos=yyhuni/xingrin&type=Date)](https://star-history.com/#yyhuni/xingrin&Date)
## 许可证
2025-12-12 18:04:57 +08:00
2025-12-21 09:36:37 +08:00
本项目采用 [GNU General Public License v3.0](LICENSE) 许可证。
2025-12-12 18:04:57 +08:00
### 允许的用途
- 个人学习和研究
- 商业和非商业使用
- 修改和分发
- 专利使用
- 私人使用
2025-12-12 18:04:57 +08:00
2025-12-21 09:36:37 +08:00
### 义务和限制
2025-12-12 18:04:57 +08:00
- **开源义务**:分发时必须提供源代码
- **相同许可**:衍生作品必须使用相同许可证
- **版权声明**:必须保留原始版权和许可证声明
- **责任免除**:不提供任何担保
- 未经授权的渗透测试
- 任何违法行为