vu1Art1st/SilverFoxHunter

GitHub: vu1Art1st/SilverFoxHunter

针对「银狐」木马等快速换壳攻击基础设施的威胁情报采集、关联与追踪平台,通过分层建模锁定稳定连接件实现持续归因。

Stars: 0 | Forks: 0

# 猎狐系统 · Fox Hunting System 银狐团伙通过大量**仿冒下载页面**(伪装成物流查询、Apple Music、办公软件、券商、VPN、AI 工具等) 诱导受害者下载木马,这些前台域名**当天现做现用、更换极快**,单纯封域名收效甚微。 本系统不盯着变化最快的那一层,而是沿着 **壳 → 线 → 包** 从易变到持久逐层下沉, 抓住相对稳定的"连接件"来关联与追踪,并以**差异事件流**的形式只推送有意义的变化。 - **壳(Shell / 前台)**:仿冒页面域名、题材、标题 —— 变化最快。 - **线(Line / 控制线)**:控制接口 `api.php`、`download_link`、分析 ID、下载路径 —— 跨壳复用。 - **包(Package / 载荷)**:MSI / 内嵌 PE;完整哈希秒级轮换,但**结构骨架**持久。 ## ✨ 功能特性 - **三层追踪**:壳/线/包分层建模,逐层下沉锁定稳定连接件。 - **多时钟关联**:CT(CertSpotter)、RDAP/WHOIS、DNS(DoH)、URLScan 四源交叉判断域名真实"年龄"与用途。 - **连接件归因**:控制接口 / 分析 ID / 秒级注册 / 共享项加权打分,多强连接件同时命中才确认关联。 - **稳定区哈希**:去尾字节 SHA-256 + imphash + 内嵌 PE + OLE 结构,锁定生产骨架,区分"纯轮换"与"结构换代"。 - **差异事件流**:只推变化,按 `high / pending / watch` 分级并落到不同处置渠道。 - **Web 仪表盘**:六个标签页(总览水位 / 前台 / 控制线 / 载荷 / 关联图 / 事件流),免构建静态托管。 - **混合数据源**:每个采集器可独立在 `mock`(回放)/ `live`(真实源)间切换。 ## 🚀 快速开始 前置:安装 [uv](https://docs.astral.sh/uv/)(Python 环境与依赖管理工具),Python ≥ 3.10。 # 1. 安装依赖(uv 自动创建 .venv 并按 uv.lock 还原) uv sync # 2. 启动服务(首次为空库会自动种子回放, 复原 7·23 水位) uv run uvicorn liehu.main:app --host 127.0.0.1 --port 8010 # 3. 浏览器打开仪表盘 # http://127.0.0.1:8010 —— Web 仪表盘 # http://127.0.0.1:8010/docs —— OpenAPI 交互文档 ### 常用操作 # 只看静态回放数据、关闭后台分级调度器 $env:LIEHU_SCHEDULER="0"; uv run uvicorn liehu.main:app --port 8010 # 重新生成/重放种子数据(复原 7·23 水位) uv run python -m liehu.seed # 分析逻辑变更后, 清空并重放种子(让持久化的事件/分类反映最新算法) uv run python scripts/reset_seed.py # 运行测试 uv run pytest -q ## 🖥️ 仪表盘导览 | 标签页 | 深链 | 内容 | |--------|------|------| | 总览水位 | `#overview` | 统计卡 + 战役 / 当天分类 / 题材 / 事件优先级图表 + 数据源模式与起点 IOC | | 前台 · 壳 | `#frontends` | 按战役 / 当天分类 / 题材过滤的前台卡片网格 | | 控制线 · 线 | `#controls` | 控制接口分时时间线(download_link 从分离到合流、NXDOMAIN 标红) | | 载荷 · 包 | `#payloads` | 按 `structure_id` 归组的结构骨架对比(MSI 大小 / imphash / 稳定区哈希 / OLE / WiX) | | 关联图 | `#graph` | 力导向渲染"壳→线→包"连接件关系,可按战役过滤 | | 事件流 | `#events` | 差异卡列表,按优先级着色 / 过滤 | 顶栏"▶ 触发一轮追踪"按钮调用 `POST /api/campaigns/trigger` 手动执行一次完整追踪周期。 标签页支持 `#hash` 深链,可直接收藏 / 分享,例如 `http://127.0.0.1:8010/#graph`。 ## 🔌 API 一览 所有读接口前缀 `/api`,直接查询 SQLite。完整 schema 见 `/docs`。 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/stats` | 总览水位:总数、战役/当天分类/题材分布、事件优先级、数据源模式、起点 IOC | | GET | `/api/frontends` | 前台状态卡(壳),支持 `campaign` / `day_class` / `theme` / `limit` 过滤 | | GET | `/api/frontends/{domain}` | 单个前台详情 | | GET | `/api/controls` | 控制端采样列表,支持 `control_api` / `limit` | | GET | `/api/controls/timeline` | 按控制接口聚合的采样时间线 | | GET | `/api/payloads` | 载荷观测列表 | | GET | `/api/payloads/compare` | 按 `structure_id` 归组的结构骨架对比 | | GET | `/api/events` | 差异事件流(渲染为差异卡),支持 `priority` / `event_type` / `limit` | | GET | `/api/errors` | 采集错误账本 | | GET | `/api/campaigns/graph` | 壳→线→包关系图(ECharts nodes+links+categories),支持 `campaign` | | POST | `/api/campaigns/trigger` | 手动触发一次完整追踪周期 | | GET | `/health` | 健康检查 | ## ⚙️ 配置(环境变量) | 变量 | 默认 | 说明 | |------|------|------| | `LIEHU_SCHEDULER` | `1` | 是否在启动时运行后台分级调度器(`0` 关闭,仅看静态回放) | | `LIEHU_URLSCAN_MODE` | `mock` | URLScan 采集器模式 `mock` / `live` | | `LIEHU_CERTSPOTTER_MODE` | `mock` | CertSpotter 采集器模式 | | `LIEHU_RDAP_MODE` | `mock` | RDAP/WHOIS 采集器模式 | | `LIEHU_DOH_MODE` | `mock` | DNS(DoH)采集器模式 | | `LIEHU_CONTROL_MODE` | `mock` | 控制接口采集器模式 | | `LIEHU_PAYLOAD_MODE` | `mock` | 载荷解析采集器模式 | | `URLSCAN_API_KEY` | — | URLScan live 模式所需 API Key | | `CERTSPOTTER_API_KEY` | — | CertSpotter live 模式所需 API Key | **混合模式**:默认全 mock(零外部依赖);可单独将某采集器切到 live 并提供对应 API Key,其余仍走 mock。例如: $env:LIEHU_URLSCAN_MODE="live"; $env:URLSCAN_API_KEY=""; uv run uvicorn liehu.main:app --port 8010 分级采集节奏(前台 300s / 控制 180s / DNS 600s / CT 1800s / 载荷 300s)见 [`config.py`](src/liehu/config.py)。 ## 🗂️ 项目结构 chat-1/ ├── pyproject.toml / uv.lock # uv 项目与锁定依赖 ├── README.md # 本文件 ├── src/liehu/ │ ├── config.py db.py models.py # 配置 / 数据层 / 领域模型 │ ├── mock/dataset.py # 7·23 水位复原数据集 │ ├── collectors/ # 采集层(6 采集器 + base + 工厂) │ ├── analysis/ # 分析层(dedup / correlation / stablehash / diff, 纯函数) │ ├── tracker.py scheduler.py alerting.py # 编排 / 调度 / 告警 │ ├── seed.py # 种子回放 │ ├── routers/ # API 路由 │ ├── main.py # FastAPI 装配 + 静态托管 │ └── web/ # 仪表盘(index.html + assets/) ├── tests/ # pytest 单元 + 集成 ├── scripts/reset_seed.py # 清空并重放种子的运维脚本 ├── docs/DESIGN.md # 系统设计文档 └── wiki/ # 项目 Wiki(见下) ## 🧪 测试与验证 uv run pytest -q # 34 passed 覆盖分析层纯函数(去重 / 多时钟分类 / 连接件置信度 / 稳定区哈希 / 差异引擎)与 API 集成(TestClient 验证 143 前台、noah=111 / fezhx=32、关联图三层、优先级过滤、载荷骨架)。 **复原的 7·23 水位**:143 前台(noah 111 / fezhx 32)、291 差异事件 (`NEW_FRONTEND` 143 + `FIRST_PUBLIC` 143 + `ROUTE_MERGE` 1 + `CONTROL_CHANGE` 1 + `PAYLOAD_STRUCTURAL_CHANGE` 1 + `PAYLOAD_ROTATION` 2)、关系图边 290,与原文一致。 ## 📚 文档 - **[项目 Wiki](wiki/Home.md)** —— 方法论、架构、数据模型、API、仪表盘、配置、测试的完整导航。 - **[系统设计文档](docs/DESIGN.md)** —— 详尽的分层设计与取舍说明。 ## 🛠️ 技术栈 Python ≥ 3.10 · FastAPI + uvicorn · APScheduler · httpx · pefile + olefile · SQLite(标准库 + WAL)· 原生 HTML/CSS/JS + ECharts 5(CDN,免构建)· pytest · uv 管理。
标签:DNS 反向解析, Python, 域名收集, 威胁情报, 安全规则引擎, 安全运营, 开发者工具, 扫描框架, 攻击面追踪, 无后门, 网络信息收集, 自动化分析, 跨站脚本, 运行时操纵, 逆向工具, 配置审计