DaniaCiampalini/AIHoneypot
GitHub: DaniaCiampalini/AIHoneypot
基于行为指纹识别与 Isolation Forest 机器学习的智能蜜罐系统,用于检测和分类 AI Agent、机器人及自动化 HTTP 客户端。
Stars: 1 | Forks: 0
# AIHoneypot - AI Agent 检测系统
一个复杂的蜜罐系统,利用行为指纹识别和机器学习来检测和分类 AI Agent、机器人(bot)以及自动化 HTTP 客户端。
## 其他语言的文档
- [English](README.md)(当前)
- [Italiano](docs/README_IT.md)
- [Español](docs/README_ES.md)
- [Deutsch](docs/README_DE.md)
## 什么是蜜罐?
蜜罐是一种安全工具,旨在吸引和检测攻击者及未经授权的访问尝试。可以把它想象成一个诱饵系统,它对攻击者来说看起来很有价值,但实际上是被隔离和监控的。当有人试图闯入或访问禁区时,蜜罐会准确记录他们的行为。这有助于安全专业人员了解攻击模式并改进防御。
## 什么是行为指纹识别?
行为指纹识别是通过分析客户端与系统交互的 *方式*,而不是仅仅根据它请求的 *内容*,来识别是谁或什么在向您的系统发出请求的过程。例如:
- 人类浏览时不规律且缓慢;机器人则发出快速、重复的请求
- 真实的浏览器会发送特定的 Headers;爬虫通常会省略它们
- 人类按照逻辑流程访问页面;攻击者则以系统的模式探测已知漏洞
通过收集这些行为信号,AIHoneypot 可以区分合法用户、AI Agent、机器人和安全扫描器。
## 功能特性
- **流量模拟器**:生成真实的蜜罐流量以供测试
- 每 5 秒自动生成真实流量
- 每 30 秒进行攻击模拟
- 每 2 分钟产生突发流量波以进行压力测试
- 多种客户端类型(人类、机器人、AI Agent、扫描器)
- **数据库初始化**:使用历史数据预填充数据库
- 约 270 个初始威胁会话
- 7 天的历史模式
- 按严重程度分布的真实攻击(包括 SQL 注入和机器人扫描峰值)
- **行为指纹识别**:分析 HTTP 请求模式以区分人类和机器人
- **实时威胁日志**:将威胁会话持久化到 H2/PostgreSQL 数据库
- **REST API 仪表盘**:通过 HTTP 端点监控和分析检测到的威胁
- 基于规则分类和机器学习分类的对比统计
- 导出 CSV 以供离线分析
- 按客户端类型、严重程度和时间范围划分的威胁细分
- **会话跟踪**:关联来自同一会话的多个请求
- 特征工程:请求速率、请求间隔时间、URI 结构模式、Header 完整性评分
## 多层威胁分类
AIHoneypot 使用两层分类架构来高精度检测威胁:
### 第 1 层:基于规则的分类器
此层使用预定义的规则(启发式方法)来检测已知威胁。这就像拥有一位知道所有攻击迹象的专家安全分析师。
**工作原理:**
- 检测已知的机器人签名(User-Agent 模式)
- 识别缺失的 HTTP Headers(真实浏览器总是包含某些 Headers)
- 识别 AI Agent 模式(例如,GPT、Claude、LangChain)
- 发现安全扫描器工具(例如,Nikto、Burp)
- 触发可疑的时间模式(请求速度过快,不可能是人类)
- 检测对金丝雀陷阱(诱饵端点)的访问
**优势:** 快速、可解释、对已知威胁可靠
**局限性:** 无法检测到全新的攻击模式
### 第 2 层:Isolation Forest(机器学习异常检测)
此层使用无监督机器学习来检测 *异常* 行为,而无需预定义规则。可以将其理解为学习“正常”流量的样子,然后标记任何明显偏离它的内容。
**工作原理:**
- 分析从每个请求中提取的 12 个行为特征
- 从正常流量中学习基线模式
- 识别明显偏离基线的会话
- 可以检测到第 1 层规则未涵盖的新型攻击
- 无需每种可能攻击类型的示例即可运行
**优势:** 检测未知的攻击模式,适应新威胁
**局限性:** 可解释性不如规则(更难解释 *为什么* 某物被标记)
### 第 3 层:集成整合
结合这两层以克服各自的局限性。如果一个分类器可能漏掉攻击,另一个分类器则不太可能漏掉。
## 金丝雀陷阱
金丝雀陷阱是合法用户永远不应访问的诱饵端点。它们充当立即标记可疑活动的触发器:
- `/admin`、`/wp-admin` — 管理面板
- `/.env` — 配置文件
- `/config` — 设置
- `/api/internal` — 内部 API
- `/.git` — 版本控制
- `/backup` — 备份文件
访问任何金丝雀陷阱都会自动导致 CRITICAL(严重)级别的威胁分类,因为合法用户没有理由寻找这些内容。
## 架构
这是一个 Maven 多模块项目,结构如下:
```
AIHoneypot/
├── docs/ # Translated README files
├── scripts/ # Startup shell scripts
├── core/ # Domain models, interfaces, exceptions
├── collector/ # Signal collection layer (servlet filters and ML detector)
├── analyzer/ # Threat classification engine (Rules and Ensemble)
├── dashboard/ # REST API and statistics
└── honeypot/ # Main Spring Boot application + canary traps + traffic simulator
```
### 技术栈
- **后端**:Spring Boot 3.2.2, Java 17
- **数据库**:H2 (内存) 或 PostgreSQL
- **机器学习**:Weka Isolation Forest
- **构建**:Maven 多模块
### 模块依赖
```
honeypot (main)
├── dashboard
│ └── analyzer
│ └── core
├── collector
│ └── core
└── analyzer
└── core
```
## 快速入门
### 前置条件
- Java 17+
- Maven 3.8+
### 启动
#### 启动后端
```
cd honeypot
mvn spring-boot:run
```
应用程序将在 http://localhost:8080 上启动
### 访问点
- **API Swagger**:http://localhost:8080/swagger-ui.html
- **H2 控制台**:http://localhost:8080/h2-console
- **API 文档**:http://localhost:8080/api-docs
- **健康检查**:http://localhost:8080/actuator/health
## 核心领域类
### 核心模块
1. **ClientType** (枚举) - HUMAN_BROWSER, AI_AGENT, BOT_SCRAPER, SEARCH_ENGINE, SECURITY_SCANNER, UNKNOWN
2. **Severity** (枚举) - LOW, MEDIUM, HIGH, CRITICAL
3. **RawRequestSignals** - 原始 HTTP 请求数据
4. **ClassificationResult** - 威胁分类的输出
5. **ThreatClassifier** (接口) - 分类契约
### 收集器模块
1. **SessionStore** - 内存中的会话跟踪
2. **HttpServletSignalExtractor** - 从 servlet 请求中提取行为信号
3. **SignalCollectorFilter** - 拦截所有请求的 Servlet 过滤器
4. **IsolationForestAnomalyDetector** - 使用 Weka 进行无监督异常检测
### 分析器模块
1. **RuleBasedClassifier** - 启发式威胁检测
2. **EnsembleClassifier** - 结合多种检测方法的聚合分类器
3. **ThreatSession** - 用于持久化威胁的 JPA 实体
4. **ThreatLogService** - 用于将威胁记录到数据库的服务
### 蜜罐模块
1. **AIHoneypotApplication** - Spring Boot 主类
2. **CanaryController** - 陷阱端点处理器
3. **TrafficSimulator** - 真实的流量和攻击模拟
4. **DatabaseSeeder** - 初始数据填充
## API 端点
### 仪表盘 API
```
GET /api/dashboard/stats - Overall statistics
GET /api/dashboard/threats/recent - Recent threats
GET /api/dashboard/threats/last-hours - Threats in time range
GET /api/dashboard/stats/by-client-type - Count by client type
GET /api/dashboard/stats/by-severity - Count by severity
GET /api/dashboard/stats/top-ips - Top attacking IPs
GET /api/dashboard/export/csv - Export threats to CSV
GET /api/dashboard/health - Health check
```
## 配置
编辑 honeypot/src/main/resources/application.properties:
```
# Database (H2)
spring.datasource.url=jdbc:h2:mem:honeypotdb
# Threat detection 阈值
honeypot.threat.confidence-threshold=0.5
# 启用 canary trap
honeypot.canary.enabled=true
```
## 测试
跨所有模块运行测试:
```
mvn test
```
## 检测信号
系统分析这些行为信号以识别威胁:
- **时间**:请求间隔、会话持续时间、请求间的平均时间
- **Headers**:User-Agent 模式、缺失的 Accept Headers、Header 完整性评分
- **导航**:直接端点访问、缺失的 referer、路径深度
- **内容**:金丝雀陷阱触发、查询复杂性、可疑字符比例
- **网络**:IP 分析、请求速率
## 检测示例
```
{
"sessionId": "ABC123",
"timestamp": "2024-03-07T10:30:00Z",
"clientType": "AI_AGENT",
"confidence": 0.85,
"severity": "HIGH",
"isThreat": true,
"explanation": "AI agent User-Agent detected. Canary trap triggered. Missing Accept header.",
"triggeredFeatures": {
"canary_trap": true,
"ai_agent_user_agent": true,
"missing_accept_header": true
}
}
```
## 路线图
以下项目计划在未来版本中实现:
- **前端仪表盘**:基于 Web 的监控界面
- **扩展的金丝雀端点覆盖范围**,超越当前的核心列表
- **高级行为信号**,例如基于 JavaScript 的指纹识别
- **可解释性模块**,用于机器学习检测
- **分布式部署**,支持大规模蜜罐网络
## 许可证
该项目基于 MIT 许可证授权。
## 作者
**Dania Ciampalini**
**注意**:这是一个专为安全研究和监控设计的蜜罐系统。请负责任地部署,并确保遵守您所在司法管辖区的相关法律法规。
标签:AI代理检测, AI安全, AMSI绕过, Apex, Chat Copilot, CISA项目, Honeypot, JS文件枚举, SQL注入检测, WAF, 人工智能蜜罐, 域名枚举, 威胁检测, 密码管理, 异常行为分析, 异步传输, 恶意扫描器识别, 攻击模拟, 攻击者识别, 数据库初始化, 机器人检测, 机器学习, 流量模拟, 测试用例, 深度包检测, 爬虫检测, 爬虫识别, 网络安全, 网络安全分析, 网络流量分析, 自动化HTTP客户端识别, 自动化攻击检测, 行为指纹分析, 隐私保护, 驱动签名利用