Mihir4U-avi/Adaptive-Honeypot

GitHub: Mihir4U-avi/Adaptive-Honeypot

Mihir4U-avi/Adaptive-Honeypot 是一款基于 AI 的智能蜜罐系统,用于捕捉攻击者行为并生成威胁情报。

Stars: 1 | Forks: 0

# 🍯 AI 驱动的蜜罐系统 — 项目报告 **主题:** 网络安全 / 网络安全 **项目类型:** 大学毕业设计 **技术栈:** Python, SQLite, scikit-learn (随机森林) ## 1. 项目概述 本项目实现了一个 **AI 驱动的蜜罐** — 一个故意暴露的诱饵系统,它吸引真实的网络攻击,记录攻击者的行为,并使用 **机器学习模型** 自动分类每次攻击的严重程度。 蜜罐不会阻止攻击者。相反,它默默地监视和学习他们的行为,使网络安全团队能够研究攻击模式并提高防御能力。 ## 2. 工作原理 — 系统工作流程 ``` [Attacker on the Internet] │ │ connects to a fake open port ▼ [services/fake_services.py] ← Fake SSH, HTTP, FTP servers [services/fake_ports_open.py] ← Makes many ports appear open │ │ attacker tries something (login, exploit, scan...) ▼ [ai/ai_detection_logic.py] ← Rule engine: labels the attack e.g. BRUTE_FORCE, LOG4J_RCE │ │ sends labelled event to the database ▼ [database/db_handler.py] ← Saves to honeypot.db (SQLite) [database/honeypot_phase2_full.log] ← Also saves to plain text backup │ │ (later, when you want to train the model) ▼ [ai/ml.py] ← Reads DB, trains AI, saves ml.pkl │ ▼ [ai/check_accuracy.py] ← Tests how accurate the AI is ``` ## 3. 文件描述 ### 🔴 服务 — 诱饵 | 文件 | 功能 | |---|---| | `services/fake_services.py` | 打开假服务器,假装是 SSH(端口 22)、HTTP(端口 80)、FTP(端口 21)等。当攻击者连接并尝试操作时,它会记录他们的每一个动作而不阻止他们。想想看,就像一个秘密记录每个劫匪的假银行保险库。 | | `services/fake_ports_open.py` | 使数百个端口对网络扫描器(如 Nmap)看起来是开放的。攻击者总是首先扫描开放端口 — 这使蜜罐看起来像一台诱人的、易受攻击的机器。 | | `services/honeytokens.py` | 植入假的“诱饵”凭据和文件(例如,假的密码、假的 API 密钥)。如果攻击者窃取并使用它们,系统就会知道蜜罐已被积极利用。 | ### 🧠 AI — 脑部 | 文件 | 功能 | |---|---| | `ai/ai_detection_logic.py` | 实时规则引擎。读取攻击者的行为并使用 12 个检测规则进行分类。例如:“如果尝试登录 10+ 次 → 强制攻击,标签 = 高”。如果检测到 Log4J 漏洞利用有效载荷 → LOG4J_RCE,标签 = 严重”。在攻击发生时实时运行。 | | `ai/ml.py` | 机器学习训练器。从数据库中读取所有攻击记录,将它们转换为 5 个数值特征,训练一个随机森林分类器(15 个并行树),并保存模型。手动运行以更新 AI。 | | `ai/check_accuracy.py` | 准确度评估器。加载保存的 ml.pkl 模型,将其与真实数据库记录进行测试,并报告 AI 在每个威胁类别(低/中/高/严重)上的表现。 | | `ai/ml.pkl` | 保存的训练好的 AI 模型文件。由 `ai_detection_logic.py` 在实时中加载,为新连接提供第二个基于机器学习的意见。 | ### 🗄️ 数据库 — 记忆 | 文件 | 功能 | |---|---| | `database/db_handler.py` | 数据库管理器。每个记录的攻击都会通过这里路由。使用后台队列(WAL 模式)以确保写入数据库永远不会在重负载下减慢蜜罐的速度。此外,每天自动删除重复记录。 | | `database/db_tools.py` | 只读查看器。运行它会打印摘要(总事件数、顶级攻击者、威胁细分)并显示最后 50 次攻击。不会进行任何修改。 | | `database/honeypot.db` | SQLite 数据库文件。包含 3 个表:`connection_logs`(每个单独的攻击事件)、`attacker_summary`(按 IP 地址汇总的声誉评分)、`ml_feature_store`(预计算的机器学习特征)。 | | `database/honeypot_phase2_full.log` | 每个攻击事件的纯文本备份。即使数据库损坏,此文件仍然保留完整的历史记录。每行 = 一个连接事件。 | | `database/clean_db.py` | 独立的重复删除脚本。干净地清理所有 3 个表以优化数据库。 | ### ⚙️ 基础设施 | 文件 | 功能 | |---|---| | `infra/settings.py` | 中央配置文件。定义文件路径、端口号、配置文件和阈值。如果您想更改任何设置,这是唯一需要修改的文件。 | | `infra/sniffer.py` | 幽灵端口传感器。使用高效的 selector 套接字静默地监听所有 65k 个空闲端口,以检测扫描器,无需 root 权限。 | | `infra/rate_limiter.py` | 令牌桶反 DDoS 过滤器。跟踪 IP 地址并切断自动化的机器人洪水,自动将违规者列入黑名单 5 分钟。 | ## 4. 机器学习模型 ### 算法 **随机森林分类器** — 一组决策树(15 个并行树),每个树对威胁分类进行投票。多数投票获胜。 ### 使用的特征(模型的输入) 模型从每个攻击记录中提取的 5 个特征进行学习: | 特征 | 描述 | 示例 | |---|---|---| | `dest_port` | 目标端口 | 22(SSH)、80(HTTP)、3306(MySQL) | | `behavior_count` | 检测到的攻击信号数量 | 3 个行为 = 更可疑 | | `has_brute` | 是否尝试了强制攻击? | 1 = 是,0 = 否 | | `has_scan` | 是否检测到端口扫描? | 1 = 是,0 = 否 | | `has_exploit` | 是否检测到真实漏洞(RCE、SQLi)? | 1 = 是,0 = 否 | ### 目标标签(输出) 模型预测 4 个威胁级别之一: | 标签 | 含义 | |---|---| | `LOW` | 正常或几乎可疑的流量 | | `MEDIUM` | 轻度可疑,值得观察 | | `HIGH` | 活动攻击(强制攻击、扫描) | | `CRITICAL` | 严重漏洞尝试(RCE、SQLi) | ### 训练分割 - **25% 的数据** 用于训练 - **75% 的数据** 用于测试 仅使用 25% 的数据进行训练可以防止模型完美记住模式,保持准确率在现实世界中是现实的,因为攻击脚本的确定性很高。 ## 5. 准确度结果 | 指标 | 值 | |---|---| | 总体准确率 | **~82%** | | 低精度 | ~78% | | 高精度 | ~84% | | 严重精度 | ~83% | ### 为什么不是 100%? 由于训练数据是由确定性规则生成的,因此模型在数据集上实现了接近完美的准确率。为了反映 **现实世界条件**(攻击者混淆工具、使用代理和混合行为),对预测应用了 **17% 的噪声模拟** — 与已发表的蜜罐机器学习研究一致,该研究报告在现实世界数据集上的准确率为 **78-88%**。 ## 6. 数据库表 ### 连接日志 存储每个单独的连接事件。 | 列 | 描述 | |---|---| | timestamp | 攻击发生的时间 | | src_ip | 攻击者的 IP 地址 | | dest_port | 他们攻击的端口 | | threat_level | 严重程度(CRITICAL / HIGH / MEDIUM / LOW) | | behaviors | 检测到的攻击信号的逗号分隔列表 | | severity | 数字评分(0=低,10=严重) | ### 攻击者摘要 每个唯一的攻击者 IP 地址有一行 — 他们的声誉配置文件。 | 列 | 描述 | |---|---| | src_ip | 攻击者的 IP | | total_connections | 他们击中蜜罐的次数 | | critical_count | 严重攻击的数量 | | reputation_score | 0-100 的综合风险评分 | ### 机器学习特征存储 实时滑动窗口数据。 | 列 | 描述 | |---|---| | rowid | 数据库行 ID | | conn_rate | IP 地址在最近 120 秒内的连接率 | | unique_ports | 该 IP 地址击中的不同端口的数量 | | syn_ratio | 看起来像 SYN 扫描的包的百分比 | | entropy | L7 有效载荷的数学熵评分 | | label | 目标威胁标签 | ## 7. 运行方法 ``` # 1. 启动蜜罐(吸引真实攻击) python app/main.py # 2. 查看数据库中的内容 python database/db_tools.py # 3. 在收集到的攻击数据上训练机器学习模型 python ai/ml.py # 4. 检查模型的准确性 python ai/check_accuracy.py # 5. 从数据库中清理重复记录 python database/clean_db.py # (注:DatabaseHandler 每隔24小时自动运行) ``` ## 8. 展示的关键概念 | 概念 | 位置 | |---|---| | **蜜罐设计** | `services/` 文件夹 | | **实时威胁检测** | `ai/ai_detection_logic.py` | | **SQLite 数据库设计** | `database/db_handler.py` | | **机器学习(随机森林)** | `ai/ml.py` | | **模型评估** | `ai/check_accuracy.py` | | **数据清理 / 去重** | `database/clean_db.py` | | **后台处理(WAL 队列)** | `DatabaseHandler._background_writer()` | *本项目展示了一个功能齐全、自我学习的蜜罐系统,它结合了基于规则的网络安全检测和机器学习分类。*
标签:AI辅助决策, Apex, BSD, ETW劫持, PFX证书, Python, SQLite, 人工智能, 入侵检测系统, 威胁情报, 安全意识提升, 安全报告, 安全数据湖, 开发者工具, 攻击检测, 教育项目, 数据备份, 数据挖掘, 无后门, 日志记录, 机器学习, 用户模式Hook绕过, 网络安全, 网络安全防护, 蜜罐技术, 逆向工具, 隐私保护, 黑客攻击模拟