alialsartawi7-sketch/ghosttrace
GitHub: alialsartawi7-sketch/ghosttrace
一款本地运行的模块化 OSINT 与攻击面分析平台,聚合多款安全工具并提供风险评分与报告生成。
Stars: 24 | Forks: 2




-orange?logo=linux&logoColor=white)




```
██████╗ ██╗ ██╗ ██████╗ ███████╗████████╗████████╗██████╗ █████╗ ██████╗███████╗
██╔════╝ ██║ ██║██╔═══██╗██╔════╝╚══██╔══╝╚══██╔══╝██╔══██╗██╔══██╗██╔════╝██╔════╝
██║ ███╗███████║██║ ██║███████╗ ██║ ██║ ██████╔╝███████║██║ █████╗
██║ ██║██╔══██║██║ ██║╚════██║ ██║ ██║ ██╔══██╗██╔══██║██║ ██╔══╝
╚██████╔╝██║ ██║╚██████╔╝███████║ ██║ ██║ ██║ ██║██║ ██║╚██████╗███████╗
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚══════╝
v6.3 by Alsartawi
```
**让 OSINT 变得简单 —— 从初学者到专业人士。**
GhostTrace 是一个模块化的 OSINT 情报平台,它将 9 款 Linux 工具封装在一个单一的 Web 界面中,提供实时流式传输、主动侦察、风险评分、攻击路径分析以及专业的 PDF 报告。无云端依赖。无遥测。完全在您的本地机器上运行。
## 🆕 v6.3 的新功能
前端安全加固 —— 无破坏性变更,全部 153 个测试通过。
| 领域 | 修复 |
|------|-----|
| 🛡️ **DOM-XSS 防护** | 扫描获取的值(WHOIS 字段、证书 SANs/CN、页面标题、原始工具输出)现在会在每个 UI 注入点(控制台、结果列表、历史记录和图表提示框)进行转义。一个失败即关闭的白名单净化器保留了 `hl`/`muted`/`val` 样式跨度,同时中和了任何其他注入的标记。 |
## 🆕 v6.2 的新功能
报告质量与电子邮件安全版本。
| 领域 | 改进 |
|------|-------------|
| 🌐 **子域名分组** | 解析到多个 IP 的主机被折叠成一个包含所有聚合 IP 的单行 —— 计数现在反映的是*唯一*主机,这在报告、实体时间线和图表中均保持一致 |
| 📧 **DMARC 检测** | DNS 扫描会自动检查 `_dmarc.
` —— 如果存在策略则报告,如果缺失则标记为**“易受电子邮件欺骗攻击”** |
| 🎯 **更智能的关键发现** | 域名验证 TXT token(Zoom、Google、MS 等)的权重被降低,因此它们不再会挤占真正的发现结果 |
| 🧹 **源头数据更纯净** | 子域名在存储时即进行去重,而不仅仅是在显示时 |
## 🆕 v6.1 的新功能
稳定性与安全加固版本 —— 无破坏性变更,全部 201 个测试通过。
| 领域 | 修复 |
|------|-----|
| ⏱️ **卡死防护** | 一个挂钟看门狗现在会终止不产生任何输出的工具(扫描不再无限期冻结);stderr 在单独的线程中被排空,以防止管道缓冲区死锁 |
| 🔑 **会话持久化** | Flask 密钥现在被持久化,因此您在重启后依然保持登录状态(以前每次启动都会重新生成) |
| 🛡️ **CSRF / 驱动式攻击防护** | 通过 Sec-Fetch-Site 标头拒绝指向 API 的跨站点 GET 请求 |
| 📄 **CSV 注入防护** | CSV 导出中的电子表格公式注入已被中和 |
| 🗄️ **数据完整性** | 强制执行外键(级联删除有效),原子化结果去重,并修复了中止/完成的竞态条件 |
| 🧹 **加固与清理** | 配置文件被锁定为模式 600,导出文件自动清理,上传文件添加时间戳前缀以避免覆盖 |
## 🆕 v6.0 的新功能
| 功能 | 描述 |
|---------|-------------|
| ⭐ **星标扫描** | 将重要的扫描固定在历史记录的顶部 —— 它们会受到保护,免受自动清理的影响 |
| ⌨️ **键盘快捷键** | 为高级用户提供 Enter、Esc、Ctrl+K/H/L/,, 1-9、Ctrl+/ 快捷键 |
| 🔗 **深链接** | 加载扫描时更新 URL —— 与同事分享 `?scan=` |
| 🗑️ **数据库清理** | 自动删除超过 N 天的扫描(保留已星标的),执行 vacuum 回收空间 |
| 📊 **数据库信息** | 通过 API 查看数据库大小、扫描次数、星标次数 |
| 📦 **批量操作** | 通过 API 一次删除多个扫描 |
| 💾 **导出所有历史记录** | 完整备份为 JSON,用于存档或传输 |
| 📝 **更好的日志** | 扫描生命周期在日志中被跟踪 —— 开始、完成、错误 |
| 🔒 **CSRF 修复** | 修复了 3 个安全漏洞 —— null token 拒绝、正确流程、jsonify 导入 |
| 🐛 **AttackPath 崩溃修复** | 修复了不完整管理面板数据上的 `KeyError: 'status'` |
## ⚡ GhostTrace 的独特之处
- 🔍 **9 款集成工具** —— 不仅仅是简单的包装,而是完整的情报 pipeline
- 🛡️ **主动侦察** —— DNS 验证、HTTP 探测、带有 **banner grabbing** 的端口扫描
- 📊 **风险评分引擎** —— 0-100 的动态评分,并附带具有指导意义的评分原因
- 🗺️ **攻击路径生成器** —— 5 条映射真实漏洞利用路径的规则
- 🧠 **智能置信度** —— 基于结果质量的评分,而不仅仅是来源
- 🔬 **智能元数据分析** —— 自动检测 WhatsApp/Telegram 移除元数据的行为
- 📄 **专业报告** —— 包含关键发现、SVG 图表、实体时间线、风险评估的 PDF
- 🌐 **交互式图表** —— Quadtree O(n log n) 力导向布局,PNG 导出,全屏显示
- 🔐 **身份验证 + CSRF** —— bcrypt 密码,基于会话,所有 POST/DELETE 请求均带有 CSRF token
- 🎨 **12 款高级主题** —— 包括皇家金和午夜银
- 🔄 **跨扫描差异对比** —— 比较两次扫描以检测新的暴露面
- 📤 **文件上传 + 拖拽** —— 提取元数据时无需手动输入路径
## 🧰 集成工具 (9)
| # | 工具 | 标签页 | 发现内容 |
|---|------|-----|---------------|
| 1 | **theHarvester** | Email / Subs | 来自 13 个免费来源的电子邮件、子域名、IP |
| 2 | **Maigret** | Username | 跨越 2500+ 个站点的社交媒体资料 |
| 3 | **Sherlock** | Username | 跨越 400+ 个站点的用户名搜索 |
| 4 | **ExifTool** | Metadata | 隐藏的元数据 —— GPS、作者、设备(智能分类) |
| 5 | **PhoneInfoga** | Phone | 电话号码运营商、国家(已过滤搜索引擎干扰) |
| 6 | **Whois** | Auto/CLI | 域名注册信息、注册商、过期时间、域名服务器 |
| 7 | **dig** | DNS | MX、TXT (SPF/DKIM/DMARC)、NS、SOA、A、AAAA、CNAME 记录 |
| 8 | **openssl** | SSL | 证书 SANs(隐藏的子域名)、颁发者、过期时间 |
| 9 | **Google Dorks** | Dorks | 28 个有针对性的可点击查询 |
## 🎛️ 10 个扫描模块
| 模块 | 输入 | 使用工具 | 示例 |
|--------|-------|-----------|---------|
| **Auto** | 任意内容 | 自动检测,为域名链接 DNS+SSL | `microsoft.com` → 3 阶段 pipeline |
| **Email** | 域名 | theHarvester | `example.com` |
| **Username** | 用户名 | Maigret / Sherlock | `johndoe` |
| **Metadata** | 文件路径或上传(拖放) | ExifTool(智能分类) | 拖拽文件或浏览 |
| **Phone** | 电话号码 | PhoneInfoga(已过滤干扰) | `+1234567890` |
| **Subdomain** | 域名 | theHarvester | `google.com` |
| **DNS** | 域名 | dig(7 种记录类型) | `example.com` |
| **SSL** | 域名 | openssl | `example.com` |
| **Dorks** | 域名 | 生成器(可点击) | `example.com` |
| **Recon** | 域名 | 内置 | 包含 banner grabbing 的完整 pipeline |
## ⌨️ 键盘快捷键
| 快捷键 | 操作 |
|----------|--------|
| `Enter` | 开始扫描 |
| `Esc` | 中止扫描 |
| `Ctrl + K` | 聚焦过滤器 |
| `Ctrl + /` | 显示帮助 |
| `Ctrl + H` | 打开历史记录 |
| `Ctrl + ,` | 设置 |
| `Ctrl + L` | 清空控制台 |
| `1` – `9` | 切换标签页 |
## 🛡️ 主动侦察 Pipeline
在被动的 OSINT 之后,GhostTrace 会对结果进行验证和丰富:
```
📡 DNS Resolution → Remove dead domains, validate alive hosts
🌐 HTTP Probing → Status codes, technology detection, security headers
🔌 Port Scanning → Top 25 ports + banner grabbing (OpenSSH, Apache, nginx...)
🎯 Attack Surface → Admin panels, login pages, API endpoints
📊 Risk Scoring → 0-100 dynamic score with explanations
🗺️ Attack Paths → 5 rules: Brute Force, Admin Panel, API, Legacy, Chained
```
### 风险评分
| 因素 | 分数 | 示例 |
|--------|--------|---------|
| 存活主机 | +10 | 可达目标的基础分数 |
| RDP 暴露 | +25 | 3389 端口开放 |
| 发现管理面板 | +20 | `/admin` 返回 200/401/403 |
| 缺失 HSTS | +10 | 没有 Strict-Transport-Security 标头 |
| 预发布/开发环境暴露 | +18 | `staging.example.com` 可公开访问 |
| 检测到 WordPress | +10 | 已知的漏洞历史 |
### 攻击路径规则
| 规则 | 触发条件 | 严重程度 |
|------|---------|----------|
| 暴力破解候选目标 | 登录页面 + SSH/FTP/RDP 开放 | 高 |
| 管理面板暴露 | 发现任何管理面板 | 严重 (分数≥65) |
| API 枚举 | 检测到 API endpoint | 高 |
| 遗留服务 | FTP (21) 或 Telnet (23) 开放 | 严重 |
| 链式风险 | 分数≥65 + 3 个促成因素 | 严重 |
## 🧠 智能置信度系统
| 结果 | 旧分数 | 智能分数 | 原因 |
|--------|-----------|-------------|-----|
| `john.doe@example.com` | 72% | **90%** | 个人电子邮件 (firstname.lastname) |
| `info@example.com` | 72% | **60%** | 通用别名 |
| `admin.example.com` | 70% | **90%** | 管理子域名 + DNS 已解析 |
| `blog.example.com` | 70% | **60%** | 无 IP 确认 |
| `0.0.0.0` | 70% | **15%** | 私有 IP —— 噪音 |
| `*.example.com` | 70% | **20%** | 通配符条目 |
## 🔬 智能元数据分析
ExifTool 结果按情报价值分类:
| 分类 | 置信度 | 示例 |
|---------------|-----------|----------|
| 📍 **GPS** | 98% | 纬度、经度、海拔 |
| 👤 **作者** | 95% | 所有者姓名、版权、艺术家 |
| 📱 **设备** | 92% | iPhone 14 Pro、Samsung、Canon |
| 💻 **软件** | 85% | iOS 17.2、Photoshop、GIMP |
| 📅 **日期** | 85% | 原始拍摄日期/时间 |
| 📄 **基本** | 40% | 文件大小、尺寸、类型 |
**自动检测移除元数据**的行为来自:WhatsApp、Telegram、Signal、Facebook、Twitter、屏幕截图。
## 📄 专业 PDF 报告
报告包含**所有 9 种结果类型**,具有:
- 🎯 **关键发现** —— 优先级最高的前 10 个结果(仅限置信度 ≥50%)
- 📊 **SVG 图表** —— 按类型划分的结果柱状图
- 🕐 **实体时间线** —— 包含 first_seen/last_seen/count 的重复发现
- 📈 置信度分布柱状图(高//低)
- 📝 执行摘要(自动生成)
- 🛡️ 风险评估部分(如果执行了侦察)
- 🗺️ 带有严重程度和步骤的攻击路径
- ⚠️ 建议
## ✨ 功能
| 功能 | 描述 |
|---------|-------------|
| 🔐 **身份验证** | bcrypt 密码配合 `--setup`,基于会话 |
| 🔒 **CSRF 防护** | 每个会话一个 token,自动注入到所有 POST/DELETE 请求中 |
| 🎨 **12 款高级主题** | Ghost Blue、Matrix、Cyberpunk、Ocean、Sunset、Toxic、Blood、Stealth、Arctic、Light、**皇家金**、**午夜银** |
| 🌙 **深色/浅色切换** | 导航栏中的快速切换按钮 |
| ⭐ **星标扫描** | 固定重要的扫描 —— 受保护,免受自动清理 |
| 🔗 **深链接** | 加载扫描时更新 URL —— 可分享的链接 |
| 📤 **文件上传 + 拖拽** | 直接将文件拖放到 metadata 标签页中 |
| 📋 **复制按钮** | 将鼠标悬停在任何结果上 → 点击 ⎘ 进行复制 |
| 📝 **扫描笔记** | 从历史记录中为任何扫描添加笔记 |
| 🗑️ **删除 / 批量删除** | 逐个或批量删除旧的扫描 |
| 🧹 **自动清理** | 删除超过 N 天的扫描(保留已星标的) |
| 💾 **完整数据库备份** | 将整个历史记录导出为 JSON |
| 🔄 **跨扫描差异对比** | 比较两次扫描:添加/删除/未更改 |
| 🌐 **交互式图表** | Quadtree O(n log n)、聚类、形状、PNG 导出 |
| ⛶ **全屏图表** | 专用的全屏模式 |
| 🔎 **结果搜索** | 实时过滤结果 |
| 💾 **扫描历史** | 基于 SQLite,支持星标排序 |
| 🔌 **Tor 集成** | 一键切换 —— 通过 Tor 路由流量 |
| 📦 **导出** | JSON、CSV、TXT、HTML、PDF |
| 🖥️ **CLI 模式** | 在终端栏中直接输入命令 |
| ⌨️ **键盘快捷键** | 高级用户工作流 |
## 🧪 质量保证
| 类别 | 详情 |
|----------|---------|
| ✅ **9 个测试文件** | validators、harvester、correlator、risk_engine、recon、new_tools、database、report、integration |
| ✅ **代码检查** | flake8 检查语法错误和未定义的名称 |
| ✅ **API 文档** | 完整参考位于 [`docs/API.md`](docs/API.md) —— 全部 36 个 endpoint |
| ✅ **贡献指南** | [`CONTRIBUTING.md`](CONTRIBUTING.md) —— 如何添加工具、运行测试、代码风格 |
| ✅ **类型提示** | 关键模块已类型化:base、risk_engine、correlator、validators |
在本地运行测试:
```
pytest tests/ -v
```
## 架构
```
GhostTrace v6.3
┌──────────┐ ┌────────────┐ ┌──────────────┐ ┌──────────┐
│ Web UI │───→│ Validators │───→│ Tool Adapters │───→│ Execution│
│ 10 tabs │ │ whitelist │ │ 9 tools │ │ Engine │
└──────────┘ └────────────┘ └──────────────┘ └────┬─────┘
↑ │
│ SSE ┌────────────┐ ┌──────────────┐ subprocess
│←─────────│ Scanner │←───│ Parser │←───────┘
│ └─────┬──────┘ └──────────────┘
│ │
│ ┌─────↓──────┐ ┌──────────────┐
│ │ Correlator │───→│ SQLite DB │
│ │ + Scorer │ │ WAL + starred│
│ └─────┬──────┘ └──────────────┘
│ │
│ ┌─────↓──────┐ ┌──────────────┐
│ │ Active Recon│───→│ Risk Engine │
│ │ DNS+HTTP+ │ │ Score 0-100 │
│ │ Ports+Attack│ │ Attack Paths │
│ └────────────┘ └──────────────┘
```
## 安装说明
**目标环境:** Kali Linux 2025+ / Ubuntu 22.04+
### 1. 克隆并安装 Python 依赖
```
git clone https://github.com/alialsartawi7-sketch/ghosttrace.git
cd ghosttrace
pip install -r requirements.txt --break-system-packages
```
### 2. 安装 OSINT 工具
```
# 必需
sudo apt update
sudo apt install -y pipx dnsutils whois libimage-exiftool-perl \
openssl git libcairo2-dev pkg-config python3-dev build-essential
# pipx PATH
pipx ensurepath
# OSINT tools
pipx install maigret sherlock-project
# PhoneInfoga
wget https://github.com/sundowndev/phoneinfoga/releases/latest/download/phoneinfoga_Linux_x86_64.tar.gz -O /tmp/phoneinfoga.tar.gz
tar xzf /tmp/phoneinfoga.tar.gz -C /tmp/
sudo mv /tmp/phoneinfoga /usr/local/bin/
# 克隆并运行
git clone https://github.com/alialsartawi7-sketch/ghosttrace.git
cd ghosttrace
pip install -r requirements.txt --break-system-packages
python3 app.py
# 可选 — 用于 Tor 路由
sudo apt install tor -y
sudo service tor start
```
### 3. 验证工具
```
theHarvester -h
sherlock --version
maigret --version
exiftool -ver
phoneinfoga version
dig -v
openssl version
```
### 4. 设置密码(推荐)
```
python3 app.py --setup
```
## 用法
```
python3 app.py
# 打开 http://127.0.0.1:5000
```
### Tor
| 工具 | Tor 方法 |
|------|-----------|
| Maigret | `--tor-proxy socks5://127.0.0.1:9050` |
| Sherlock | `--tor` |
| theHarvester | `proxychains4 -q` 包装器 |
| ExifTool | 不适用(本地文件处理) |
### CLI 模式
```
ghost $ maigret johndoe --site Instagram --site GitHub
ghost $ theHarvester -d example.com -b crtsh -l 100
ghost $ whois example.com
ghost $ dig example.com MX
```
## 📸 截图
**主题:**
所有主题 —— 试试看 😉
**扫描:**
**图表:**
**PDF 报告:**
## 安全模型
| 层级 | 实现 |
|-------|---------------|
| 身份验证 | bcrypt 密码哈希,基于会话的身份验证 |
| **CSRF 防护** | 每个会话一个 token,在所有 POST/DELETE 请求上进行验证 |
| 输入验证 | 按字段的正则表达式:域名、电子邮件、用户名、文件路径、电话 |
| CLI 验证 | 每个工具的**白名单**正则表达式(非黑名单) |
| 路径遍历 | 阻止 `..`、`/etc/shadow`、`/root`、`.ssh`(上传目录被列入白名单) |
| 输出净化 | 剥离 ANSI 代码 + 控制字符 |
| 频率限制 | 60 秒内 20 次扫描 |
| 进程隔离 | 超时/中止时使用 `os.setsid` + 进程组终止 |
| 文件上传 | 净化文件名、安全目录、16MB 限制 |
## 已知限制
- Instagram/Facebook 阻止自动化检查 —— 即使使用 Tor
- 在所有 2500+ 个站点上运行 Maigret + Tor 速度很慢 —— 请使用 `--site` 进行定向
- Google Dorks 仅生成查询 —— 用户必须手动搜索
- PhoneInfoga 需要从 GitHub releases 单独安装
- PDF 需要 `weasyprint`(推荐)或 `wkhtmltopdf`
- WhatsApp/Telegram/Signal 会按设计从共享图片中移除元数据
- 仅支持 Linux —— 不支持 Windows |
## 免责声明
GhostTrace 仅供**授权的安全研究、渗透测试和教育目的**使用。
作者不对滥用行为承担责任。在对您不拥有的目标执行 OSINT 操作之前,请务必获得适当的授权。
**负责任地使用。尊重隐私。遵守您所在国家的法律。**
## 许可证
MIT 许可证 —— 见 [LICENSE](LICENSE)
**由 Alsartawi 用 ❤️ 构建**标签:API, ESC4, GitHub, OSINT, Python, 安全研究报告, 实时处理, 攻击面管理, 无后门, 风险评估