Br1an6/BoreSight
GitHub: Br1an6/BoreSight
BoreSight 是一款取证 CLI 工具,通过被动时间序列关联和机器学习技术判定多个匿名账号是否由同一人操控。
Stars: 1 | Forks: 0
# BoreSight

[](https://www.gnu.org/licenses/gpl-3.0)
[](#平台支持)
BoreSight 是一款取证 CLI 工具,旨在执行被动时间序列关联,并对不同的公开时间戳数据集进行行为对齐。它能识别活跃/非活跃周期等重叠模式,以辅助情报收集与分析。
## 功能
- **异步网络引擎**:通过线程安全的代理轮换和动态 User-Agent 注入,实现强韧的数据集抓取。
- **时间关联引擎**:使用 Pandas 进行高性能的时间聚合,将原始时间戳简化为 24 小时行为画像。使用 **机器学习技术**,如 **核密度估计 (KDE)**,来平滑稀疏数据;并使用 **推土机距离**,精确对齐轻微偏移的作息时间。同时计算统计方差、余弦相似度以及连续 TF-IDF Jaccard 系数。
- **批量角色聚类 (1对多)**:提供目标数据集,并将其与包含多个数据集的整个目录进行比对,根据 Wasserstein 距离排行榜自动识别最可能的关联身份。
- **智能体编排**:由 LangGraph 和 LLM 驱动的确定性分析工作流,用于生成结构化的取证情报简报,包括对用户时区和地理位置的估计。
- **活动热力图**:生成色彩丰富、强度映射的终端 24x7 矩阵可视化图,方便快速浏览数据集的活动节奏。
- **原生 MCP 支持**:内置 FastMCP 服务器 (`boresight/mcp_server.py`),允许 Claude Code 等 AI 助手和其他智能体通过 Model Context Protocol 原生运行分析。
## 智能体工作流
BoreSight 利用基于 **LangGraph** 构建的确定性状态机来提取、处理和验证取证报告。可选的验证循环在最终确定简报之前,使用 LLM 反思来验证统计声明。
Kernel Density Estimation] KDE --> CalcMetrics[Calculate Statistics
Wasserstein Distance, Cosine, TF-IDF Jaccard] end CalcMetrics --> Brief[Correlation Agent Node
LLM Brief Generator] Brief --> Validate{Validation Enabled?} Validate -->|No| End([Generate Report & Map]) Validate -->|Yes| QA[Validation Agent Node
QA LLM Review] QA --> Decision{Is Report Valid?} Decision -->|Yes| End Decision -->|No| MaxRetries{Max Retries Exceeded?} MaxRetries -->|No - Retry with QA Feedback| Brief MaxRetries -->|Yes| End ```
## 安装说明
请确保你安装了 Python 3.10 或更高版本。
```
# Clone the repository
git clone
cd BoreSight
# 创建并激活 virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
# 以 editable mode 安装该 tool
pip install -e .
```
## 使用说明
BoreSight 提供了直观的 CLI。因为我们将其作为包安装,所以你可以直接在任何地方使用 `boresight` 命令运行它(而不是 `python main.py`):
```
# cp .env.example .env # 将 .env.example 复制为 .env 并更新 API keys。
boresight --dataset-a "sample_data/mock_a.json" --dataset-b "sample_data/mock_b.json" --proxies "proxies.txt"
```
### 使用模拟数据进行测试
你可以通过生成模拟用户活动日志来轻松测试关联引擎。运行内置的模拟数据脚本:
```
python scripts/generate_mock_data.py
```
这将在 `sample_data/` 目录中创建三个数据集。
- **高相关性测试(相同时区):**
`boresight --dataset-a sample_data/mock_a.json --dataset-b sample_data/mock_b.json`
- **低相关性测试(不同时区):**
`boresight --dataset-a sample_data/mock_a.json --dataset-b sample_data/mock_c.json`
### Flags
- `--dataset-a`:主数据集的路径或 URL。
- `--dataset-b`(可选):用于 1 对 1 关联的辅助数据集的路径或 URL。
- `--dataset-dir`(可选):包含数据集 JSON 文件的目录路径,用于 1 对多批量关联。BoreSight 将对它们进行评分,并在最匹配的结果上运行 LLM 图谱。
- `--proxies`(可选):包含代理 endpoint 的文本文件路径(每行一个)。
- `--no-ai`(可选):完全禁用 LLM 简报生成。仅输出统计 ML 指标和 24x7 活动热力图。
- `--validate / --no-validate`(可选):启用或禁用生成简报的自我验证(覆盖 `VALIDATION_ENABLED`)。
- `--validation-retries`(可选):最大验证重试次数(覆盖 `VALIDATION_MAX_RETRIES`)。
- `--validator-provider`(可选):用于验证的 LLM 提供商(覆盖 `VALIDATOR_PROVIDER`)。
- `--validator-model`(可选):用于验证的 LLM 模型(覆盖 `VALIDATOR_MODEL`)。
## 生态系统 Pipeline (OSINT 集成)
虽然像 [Blackbird](https://github.com/p1ngul1n0/blackbird) 这样的足迹搜集工具在枚举目标*在哪些地方*拥有账号方面表现出色,但 **BoreSight** 需要实际的行为时间戳才能进行关联。
我们在 `scripts/` 目录中提供了适配器脚本,以帮助弥合这一差距。包含的适配器有:
- **GitHub**:抓取公开事件。
- **Reddit**:通过公开的免认证 API 抓取用户评论。
- **HackerNews**:通过 Algolia 的公开搜索 API 抓取用户活动。
- **DEV.to**:从 Forem/DEV.to API 抓取已发布的文章。
- **Wikipedia**:使用 MediaWiki API 提取编辑时间戳。
- **GitLab**:解析用户 ID 以提取公开事件。
- **Twitter(X)**:需要 API Bearer token 才能通过 v2 API 获取推文时间戳。
例如,要将用户的 GitHub 活动抓取为 BoreSight 兼容的数据集:
```
# 将公开的 GitHub 事件抓取到 dataset 中
python scripts/github_adapter.py --username torvalds --output dataset_a.json
```
## 环境变量
BoreSight 的关联智能体支持多个 LLM 提供商。你可以使用 `LLM_PROVIDER` 变量来配置提供商(默认为 `openai`)。
### 通用 AI 设置
- `LLM_PROVIDER`:设置为 `openai`、`gemini`、`anthropic`(或 `claude`)或 `ollama`。
- `LLM_MODEL`:覆盖所选提供商的默认模型(例如 `gpt-4o`、`gemini-1.5-flash`、`claude-3-5-sonnet-20240620`、`llama3`)。
### 验证与反思设置(可选)
BoreSight 支持可选的验证和反思循环,使用验证器 LLM 对生成的简报进行自我验证。
- `VALIDATION_ENABLED`:设置为 `true` 以启用自我验证(默认为 `false`)。
- `VALIDATION_MAX_RETRIES`:验证失败时的最大更正尝试次数(默认为 `3`)。
- `VALIDATOR_PROVIDER`:验证步骤的 LLM 提供商(默认为 `LLM_PROVIDER` 的值)。
- `VALIDATOR_MODEL`:用于验证的特定模型(例如 `gpt-4o` 或 `claude-3-5-sonnet-20240620`)。我们建议使用高性能模型以获得最佳效果。
### 特定提供商的密钥
- `OPENAI_API_KEY`:当 `LLM_PROVIDER=openai` 时必填。
- `GOOGLE_API_KEY`:当 `LLM_PROVIDER=gemini` 时必填。
- `ANTHROPIC_API_KEY`:当 `LLM_PROVIDER=anthropic` 或 `LLM_PROVIDER=claude` 时必填。
- `OLLAMA_BASE_URL`:Ollama 的可选配置(默认为 `http://localhost:11434`)。
## License
本项目采用 GNU General Public License v3.0 授权。有关详细信息,请参阅 `LICENSE` 文件。
### ⚠️ 免责声明
```
BoreSight is intended strictly for educational, research, and authorized defensive security optimization purposes.
The usual disclaimers apply: the author of BoreSight is entirely exempt from liability for any damages, service disruptions, or privacy complications resulting directly or indirectly from the functional execution of this program. The developer bears NO responsibility for the specific target context or any subsequent misuse of these scripts.
By executing this software, you explicitly acknowledge and accept that any resulting system crashes, data loss, network throttling, or platform account suspensions are solely your responsibility.
```
[](https://ko-fi.com/I3I81RWCLP)
BoreSight 是一款取证 CLI 工具,旨在执行被动时间序列关联,并对不同的公开时间戳数据集进行行为对齐。它能识别活跃/非活跃周期等重叠模式,以辅助情报收集与分析。
## 功能
- **异步网络引擎**:通过线程安全的代理轮换和动态 User-Agent 注入,实现强韧的数据集抓取。
- **时间关联引擎**:使用 Pandas 进行高性能的时间聚合,将原始时间戳简化为 24 小时行为画像。使用 **机器学习技术**,如 **核密度估计 (KDE)**,来平滑稀疏数据;并使用 **推土机距离**,精确对齐轻微偏移的作息时间。同时计算统计方差、余弦相似度以及连续 TF-IDF Jaccard 系数。
- **批量角色聚类 (1对多)**:提供目标数据集,并将其与包含多个数据集的整个目录进行比对,根据 Wasserstein 距离排行榜自动识别最可能的关联身份。
- **智能体编排**:由 LangGraph 和 LLM 驱动的确定性分析工作流,用于生成结构化的取证情报简报,包括对用户时区和地理位置的估计。
- **活动热力图**:生成色彩丰富、强度映射的终端 24x7 矩阵可视化图,方便快速浏览数据集的活动节奏。
- **原生 MCP 支持**:内置 FastMCP 服务器 (`boresight/mcp_server.py`),允许 Claude Code 等 AI 助手和其他智能体通过 Model Context Protocol 原生运行分析。
## 智能体工作流
BoreSight 利用基于 **LangGraph** 构建的确定性状态机来提取、处理和验证取证报告。可选的验证循环在最终确定简报之前,使用 LLM 反思来验证统计声明。
点击展开 Agentic 工作流图表
``` graph TD Start([Start CLI]) --> Ingest[Ingest & Parse Data] Ingest --> Analyze[Pattern Analyzer Node] subgraph "Analytics Engine (ML & Stats)" Analyze --> KDE[KDE SmoothingKernel Density Estimation] KDE --> CalcMetrics[Calculate Statistics
Wasserstein Distance, Cosine, TF-IDF Jaccard] end CalcMetrics --> Brief[Correlation Agent Node
LLM Brief Generator] Brief --> Validate{Validation Enabled?} Validate -->|No| End([Generate Report & Map]) Validate -->|Yes| QA[Validation Agent Node
QA LLM Review] QA --> Decision{Is Report Valid?} Decision -->|Yes| End Decision -->|No| MaxRetries{Max Retries Exceeded?} MaxRetries -->|No - Retry with QA Feedback| Brief MaxRetries -->|Yes| End ```
标签:ESC4, OSINT, 时序分析, 身份识别, 逆向工具