DanDreadless/Insight
GitHub: DanDreadless/Insight
Insight 是一个开源的被动式 Web 威胁扫描平台,通过深度内容分析而非外部情报来检测 JavaScript 威胁、钓鱼指标及安全配置错误。
Stars: 0 | Forks: 0
# Insight — Web 威胁扫描器
[](https://github.com/DanDreadless/Insight/blob/main/LICENSE)
[](https://insight.vault1337.com/)
[](https://x.com/DanDreadless)
Insight 是一个开源的被动式 Web 威胁扫描器。提交任意 URL,它会获取所有公共资源——HTML、脚本、标头、证书——并完全基于内容进行分析,不依赖信誉数据库或外部威胁情报 API。结果是一份经过优先级排序的发现报告,涵盖 JavaScript 威胁、钓鱼指标、域名情报、安全配置错误以及完整的检测技术栈。
由于检测是基于内容的,Insight 能够发现信誉源尚未索引的零日攻击活动、新注册的钓鱼域名以及新注入的窃取程序(skimmer)。
这是 [vault1337.com](https://vault1337.com) 的配套工具。共享相同的设计系统并镜像了技术栈。
## 技术栈
| Layer | Technology |
|---|---|
| Backend | Python 3.11 / Django 5.2 / Django REST Framework |
| Task Queue | Celery + Redis |
| Frontend | React 19 / TypeScript / Vite / Tailwind CSS 4 |
| Database | PostgreSQL (生产环境) / SQLite (开发环境) |
| Cache / Broker | Redis |
| Visual Renderer | [Carapace](https://github.com/DanDreadless/Carapace) (Rust) |
## Carapace 集成
Insight 使用 [Carapace](https://github.com/DanDreadless/Carapace) 作为其视觉渲染引擎。当扫描运行时,Carapace 在一个加固的 Chromium 无头环境中获取并渲染目标 URL,该环境完全禁用 JavaScript 并阻止所有出站网络请求。结果连同额外的威胁信号一起返回给 Insight。
**Carapace 为每次扫描增加的内容:**
- 访客所见的页面截图,在不执行任何 JavaScript 的情况下捕获
- 来自静态 JS 分析的额外威胁标志(eval 链、混淆、数据渗出调用、沙箱逃逸探测、路过式下载检测)
- 扩展的技术栈——在剥离特定框架属性之前从预清理 DOM 中检测,比仅基于标头的检测准确率更高
- 风险评分,该评分会输入到整体扫描结论中
Carapace 作为沙箱化的 Docker sidecar 容器运行(`--cap-drop=ALL`,非 root 用户,网络切断开关)。截图显示在结果页面上,默认处于折叠状态。
## 检测内容
### JavaScript 威胁(30 项检查)
- 远程代码执行:`fetch()` + `eval()` 异步链——受损的 WordPress 暂存模式
- 基于 eval 的混淆:`eval(atob(...))`、`eval(unescape(...))`、嵌套解码链
- 解密后执行:使用 WebCrypto API (`crypto.subtle`) 在运行时解密并运行载荷
- 支付卡窃取程序(Magecart 风格):针对卡号/CVV 字段的 DOM 查询 + 数据渗出
- 键盘记录器:通过出站网络调用读取键值的键盘事件监听器
- Cookie 和会话渗出
- 表单劫持和凭证收集
- Web3 钱包排空程序(Inferno/Angel Drainer 模式)
- 通过 Blob API 进行 HTML 走私
- 恶意和外部 Service Worker 注册
- 加密矿工(CoinHive、CryptoLoot、WebWorker + WASM)
- 嵌入在 JS 中的 Shell 投递程序:Unix (`base64 -d | bash`) 和 PowerShell (`irm | iex`)
- 动态 `import()` 从外部未知 URL 加载 ES 模块
- Living off Trusted Sites (LoTS):通过 Telegram、Discord、Slack、Google Apps Script 等平台路由渗出,以绕过域名信誉拦截列表
- 混淆指纹:obfuscator.io `_0x` 数组、`String.fromCharCode` 链、高香农熵字符串
- 反分析:DevTools 检测、禁用右键、自动跳转
### HTML 和结构检查(18 项检查)
- 跨域 `action` 目标的钓鱼表单
- 隐藏的 iframe、base 标签劫持、meta-refresh 重定向
- 假浏览器更新页面(SocGholish / ClearFake 签名)
- 假 CAPTCHA / ClickFix 社会工程学(Win+R 执行指令)
- 点击劫持覆盖元素
- IPFS 托管的资源(抗封杀钓鱼和排空程序托管)
- 外部脚本 preload/prefetch 提示——常见的恶意软件注入暂存模式
- 可执行下载链接、内联脚本异常、敏感 HTML 注释
- 安全配置错误:缺少 SRI、无 autocomplete 的密码字段、HTTP 上的登录表单
### 域名情报(10 项检查)
- 通过品牌监视列表的 Levenshtein 编辑距离检测子域名和 SLD 变体拼写(typosquatting)
- 子域标记中的精确品牌冒充
- IDN / 同形异义字攻击(西里尔字母和混合脚本模仿)
- DGA 概率评分(辅音比率、熵、缺少英语子词)
- 高风险 TLD(`.xyz`、`.top`、`.click`、`.loan`、`.zip`、`.cyou` 等 20 多个)
- 数字替换(`g00gle`、`faceb00k`)
- 滥用倾向的免费托管平台(Cloudflare R2、Pages.dev、Firebase)上的随机子域
### HTTP 标头(12 项检查)
缺少 CSP、X-Frame-Options、HSTS、X-Content-Type-Options、Referrer-Policy、Permissions-Policy;服务器/版本披露;已弃用的软件版本;不安全的 Cookie 标志;带有凭据的 CORS 通配符。
### TLS / SSL(6 项检查)
证书过期、自签名证书、主机名不匹配、品牌冒充域名上的 Let's Encrypt 证书、已弃用的 TLS 版本、可疑域名上新颁发的证书。
### 结论
| Verdict | Condition |
|---|---|
| MALICIOUS | 任何 CRITICAL 发现 |
| SUSPICIOUS | 任何 HIGH 发现,或 2 个及以上 MEDIUM 发现 |
| CLEAN | 仅 LOW 和 INFO 发现 |
| UNKNOWN | 无发现 |
当信号组合表明有协调的攻击基础设施时(例如 DGA 域名 + 隐藏 iframe + 混淆 JS → CRITICAL “路过式恶意软件投递”),上下文折叠规则会触发额外的合成发现。
### 技术栈检测
识别 CMS、JS 框架、构建工具、库、CSS 框架、后端运行时、Web 服务器、CDN、托管平台、分析工具、安全工具和支付提供商——在结果页面上显示为带有徽标的彩色编码标记。
## 本地运行
### 环境要求
- Python 3.11+
- Node.js 18+
- Redis 7+(本地运行或通过 Docker)
### 1. 启动 Redis
```
# Docker (任何操作系统)
docker run -d -p 6379:6379 redis:7-alpine
```
### 2. 后端
```
git clone https://github.com/DanDreadless/insight_vault1337.git
cd insight_vault1337/backend
pip install -r requirements.txt
cp ../.env.sample ../.env
# 编辑 ../.env — 至少设置一个 SECRET_KEY 值
python manage.py migrate
python manage.py runserver
```
### 3. Celery worker(单独的终端——运行扫描所必需)
```
cd backend
celery -A insight worker -l info
```
### 4. 前端(单独的终端)
```
cd frontend
npm install
npm run dev
```
打开 `http://localhost:5173`。Vite 开发服务器将所有 `/api/` 请求代理到 `:8000` 端口上的 Django。
### 环境变量
将 `.env.sample` 复制为仓库根目录下的 `.env`。对于本地开发,唯一必需的更改是设置 `SECRET_KEY`。
| Variable | Default | Notes |
|---|---|---|
| `SECRET_KEY` | *(不安全示例)* | 运行前请更改 |
| `DEBUG` | `True` | 生产环境设为 `False` |
| `REDIS_URL` | `redis://localhost:6379/0` | |
| `DATABASE_URL` | `sqlite:///db.sqlite3` | 生产环境使用 PostgreSQL |
| `CORS_ALLOWED_ORIGINS` | `http://localhost:5173` | |
| `RATE_LIMIT_SCANS_PER_HOUR` | `5` | 每个 IP |
| `MAX_SCAN_RESOURCES` | `50` | 每次扫描分析的外部脚本数 |
| `SCAN_TIMEOUT_SECONDS` | `60` | Celery 任务硬性限制 |
| `CARAPACE_URL` | *(未设置)* | Carapace API 的 URL(使用 Docker Compose 时为 `http://carapace:8080`)。如果未设置,将跳过截图和额外的威胁标志。 |
### 通过 Docker 运行全栈
如果您不想在本地安装 Python 和 Node:
```
cp .env.sample .env # edit SECRET_KEY
docker-compose up --build
```
停止所有服务并删除卷:
```
docker-compose down -v
```
## API
| Method | Endpoint | Description |
|---|---|---|
| POST | `/api/scan/` | 提交 URL 进行扫描 |
| GET | `/api/scan/{id}/` | 轮询结果 |
| GET | `/api/scan/{id}/stream/` | Server-Sent Events 进度流 |
| GET | `/api/health/` | 健康检查 |
| GET | `/api/schema/swagger-ui/` | 交互式 API 文档 |
## 许可证
本项目在 **GNU Affero General Public License v3.0 (AGPL-3.0)** 下获得许可。这确保了:
- 您可以根据 AGPL-3.0 的条款自由使用、修改和共享本软件。
- 如果您将本软件作为托管服务部署,您必须向用户提供源代码——包括任何修改——并且使用相同的许可证。
完整的许可证文本位于 [LICENSE](LICENSE) 文件中。
## 商业使用
Insight 是开源的,但需要在没有 AGPL 版权保留要求的情况下私有部署的组织可以获得商业许可证。
**商业许可证的优势:**
1. 在专有环境中部署,无需开源修改内容。
2. 支持项目的持续开发。
**咨询方式:** 通过 LinkedIn 联系——[www.linkedin.com/in/dan-pickering](https://www.linkedin.com/in/dan-pickering)
## 支持项目
如果 Insight 对您有帮助,请考虑通过赞助或捐款来支持它。您的贡献有助于保持其免费和积极维护。
感谢您使用 Insight。
标签:Celery, Django, Django REST Framework, DNS解析, Headless Chromium, JavaScript威胁分析, PostgreSQL, Python, React, Redis, Rust, Snort++, Syscalls, Tailwind CSS, TypeScript, Vite, Web威胁检测, Web安全, Web安全扫描器, 代码生成, 内容检测, 可视化界面, 域名情报, 威胁扫描, 安全插件, 安全配置审计, 开源项目, 技术栈指纹, 搜索引擎查询, 无后门, 测试用例, 渗透测试工具, 网络安全, 网络流量审计, 网络钓鱼检测, 蓝队分析, 被动扫描, 资产识别, 逆向工具, 隐私保护