mehmetyasinuzun/Keyword-Hunter
GitHub: mehmetyasinuzun/Keyword-Hunter
一款基于 Go 的暗网威胁情报工具,通过多搜索引擎扫描和数据可视化帮助安全分析人员发现威胁、监控泄露并分析关联关系。
Stars: 2 | Forks: 0
# KeywordHunter - 网络威胁情报平台
KeywordHunter 是一款先进的 CTI(网络威胁情报)工具,可在暗网(Tor 网络)及各种开源情报渠道中执行基于关键字的扫描,对获取的数据进行关联处理,并为分析人员提供可视化展示。
本项目旨在帮助安全分析人员及早发现威胁、监控数据泄露,并梳理攻击者之间的关系。系统基于高性能的 Go 架构构建。
## 安装与运行
本项目提供两种运行方式。对于生产环境和快速测试,推荐使用 Docker。
### 方法一:使用 Docker 安装(推荐)
**环境要求:** Docker 20.10+ 及 Docker Compose v2+(或 `docker-compose` v1.29+)
#### 快速开始(3 个步骤)
```
git clone https://github.com/mehmetyasinuzun/Keyword-Hunter.git
cd Keyword-Hunter
mkdir -p data
cp .env.example data/.env
docker compose up -d --build
```
对于 Windows PowerShell:
```
git clone https://github.com/mehmetyasinuzun/Keyword-Hunter.git
cd Keyword-Hunter
New-Item -ItemType Directory -Path data -Force | Out-Null
Copy-Item .env.example data/.env -Force
docker compose up -d --build
```
#### 访问地址
| 组件 | 地址 | 备注 |
|---------|-------|--------|
| Web 界面 | `http://localhost:8080` | |
| 登录凭据 | `data/.env` 中的 `ADMIN_USER` / `ADMIN_PASS` | 默认示例:`admin` / `admin123` |
#### 运行的服务
```
keywordhunter-tor → Tor proxy (dahili: tor:9050)
keywordhunter-app → Go web sunucusu (dışa: 8080)
```
应用启动后,在建立 Tor 连接之前,搜索功能可能需要等待 **~10-30 秒**。
#### 环境变量参考
| 变量 | 默认值 | 说明 |
|----------|------------|----------|
| `ADMIN_USER` | — | **必填。** 登录用户名 |
| `ADMIN_PASS` | — | **必填。** 请选择一个强密码 |
| `TOR_PROXY` | `tor:9050` | Docker 内部的 Tor 地址(请勿修改) |
| `DB_PATH` | `/data/keywordhunter.db` | SQLite 数据库路径 |
| `WEB_ADDR` | `:8080` | 服务器监听地址 |
| `LOG_DIR` | `/data/logs` | 日志文件目录 |
| `LOG_LEVEL` | `info` | 日志级别:`debug` / `info` / `warn` / `error` |
| `SESSION_TTL_HOURS` | `24` | 会话有效期(1–720) |
| `RATE_LIMIT_RPS` | `12` | 每秒最大请求数(1–200) |
| `RATE_LIMIT_BURST` | `30` | 突发负载容忍度(1–500) |
| `WEB_SECURE_COOKIES` | `false` | 如果使用 HTTPS,请将其设为 `true` |
#### 常用命令
```
# 实时查看日志
docker compose logs -f
# 仅查看应用日志
docker compose logs -f app
# 查看容器状态
docker compose ps
# 停止(保留数据)
docker compose down
# 完全重置(数据库将被删除)
docker compose down -v
rm -rf ./data
# 更新后重新构建
docker compose up -d --build --force-recreate
```
#### 持久化数据
```
./data/
├── keywordhunter.db ← SQLite veritabanı (tüm bulgular)
├── .env ← /settings ekranından yapılan değişiklikler buraya yazılır
└── logs/ ← Uygulama logları
```
在 Docker 运行期间,源 env 文件是 `./data/.env`;根目录下的 `.env` 文件不适用于 Docker。
#### 故障排除
**容器无法启动:**
```
docker compose logs app
# 出现 "ADMIN_USER ve ADMIN_PASS zorunludur" 错误 → 请检查 .env 文件
```
**无法建立 Tor 连接:**
```
docker compose logs tor
# 如果 tor 服务没有 running:docker compose restart tor
```
**8080 端口被占用:**
```
# 在 .env 中设置 WEB_ADDR=:9090,然后在 docker-compose.yml 中
# 将 ports: 更新为 "9090:9090"
```
**健康检查:**
```
curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/login
# 如果返回 200,则系统准备就绪
```

### 方法二:手动安装(Windows/Linux)
如果您想进行开发或在不使用 Docker 的情况下运行:
1. 环境要求:
- Go 1.24 或更高版本
- Tor Browser(需在后台运行并监听 9150 端口)
- 由于编译时设置了 CGO_ENABLED=0,因此不需要 GCC
2. 编译与启动:
为 Windows 用户提供了现成的脚本。该脚本会清理旧的编译文件并重启项目:
copy .env.example .env
# 在 .env 文件中编辑 ADMIN_USER 和 ADMIN_PASS 的值
build_and_run.bat
## 模块与功能
该应用程序由 5 个主要模块组成,用于管理情报生命周期。
### 1. Dashboard(概览)
系统的指挥中心。提供当前执行操作的实时摘要。左侧的统计面板显示数据库中的数据总量,右侧的图表则根据威胁的严重程度(Level 1-5)分析其分布情况。

### 2. 搜索引擎(Hunter Search)
以目标为导向的情报收集模块。借助 Regex(正则表达式)支持,分析人员可以构建复杂的查询。
- **多来源:** 同时扫描通过 Tor 验证为实时可访问的所有活跃暗网搜索引擎(已失效/废弃的引擎会被定期清理)。
- **过滤:** 仅检索特定日期范围内或特定格式(例如:信用卡 BIN 码)的数据。

### 3. 发现结果(Results)
这是处理和列出收集到的原始数据的区域。每个结果都会根据其来源、发现时间及内容摘要进行排列。分析人员可以在此处剔除无关数据,或将关键数据标记为“案件”(Case)。

### 4. 关系分析(Graph Intelligence)
文本数据的可视化呈现。专门用于识别有组织犯罪团伙或相互关联的数据泄露事件。
#### 可视化模式
根据分析类型,提供 3 种不同的视图模式:
**1. Radial View(聚焦分析):** 以选定的节点为中心,以圆形方式分布其关联关系。

**2. Tree View(层级分析):** 以树状结构展示数据之间的父子关系。

**3. Network View(自由聚类):** 关系紧密的数据会相互吸引(Force-Directed)。

#### 操作菜单
分析人员可以右键点击任何节点以访问详细的操作菜单(深入挖掘、复制、隐藏等)。

### 5. 分析中心(Analytics)
将操作数据转化为战略情报的场所。
- **时间分析:** 显示攻击或泄露在特定时间段/日期内密集程度的时间轴。
- **来源分布:** 通过饼图显示哪些市场或论坛更为活跃。

### 6. 设置中心(Runtime Config)
通过 `.env` 管理平台设置的控制面板(`/settings`)。
- **可管理配置:** 管理员信息、rate-limit、会话 TTL、Tor/DB/Web 地址。
- **实时生效:** rate-limit 设置一旦保存便会立即应用。
- **安全性:** API POST 操作中启用了 CSRF 保护,并激活了基于 IP 的 rate-limit。
### 7. 通知中心(`/scheduled`)
用于为新发现配置 webhook 通知的界面。
- **Webhook 支持:** 与 Slack、Discord、Teams 或任何 HTTP webhook 集成。
- **阈值设置:** 通过设定最低严重性级别,防止发送不必要的通知。
- **实时 Feed:** 可以在此界面上实时监控过去 N 小时内的新发现。

该模块的目的是将关键发现自动传输给团队使用的系统,而无需等待人工检查。
#### 有什么作用?
- 将威胁情报实时推送到 Slack、Discord 或 Teams 频道。
- 仅发送高于您设定的严重性级别的发现,从而减少噪音。
- 缩短 SOC/SecOps 团队的事件响应时间。
#### 建议的使用流程
1. 开启 `启用通知` 选项。
2. 在 Webhook URL 字段中输入目标系统的 URL。
3. 根据您的操作需求选择 `最低严重性级别`(通常为 3 及以上)。
4. 点击 `保存` 使设置永久生效。
5. 当有新发现时,系统会以 JSON payload 的形式向相应的 webhook 地址发送 POST 请求。
6. 您可以通过 `最新发现 Feed` 区域快速查看哪些发现已触发了通知。
#### 应用场景?
- 在 SIEM/SOAR 的数据对接线路中作为第一道告警层。
- 向 Incident response 团队实时通报优先级较高的威胁。
- 在蓝队行动中用于向轮班团队发送自动通知。
## 技术架构
- **Backend:** Go (Golang) - Gin Framework
- **数据库:** SQLite(配合 Gorm ORM)
- **Frontend:** HTML5, CSS3, Vanilla JavaScript
- **数据采集:** Colly(Scraping Framework)及 Tor Proxy
- **可视化:** Chart.js 及 D3.js
## 法律免责声明
本软件专为网络安全专家和研究人员开发。严禁用于未经授权访问系统或从事任何非法活动。用户有责任在法律允许的范围内使用本工具。
**版本:** v0.9
**开发者:** Mehmet Yasin Uzun
标签:Docker, ESC4, EVTX分析, Go, OSINT, Ruby工具, 威胁情报, 安全防御评估, 实时处理, 开发者工具, 日志审计, 暗网监控, 请求拦截