maj-it/ai-network-observer

GitHub: maj-it/ai-network-observer

一个融合 Isolation Forest 机器学习与 Ollama 本地 LLM 的智能网络威胁检测系统,支持实时识别 DGA、C2、DNS 隧道等攻击并自动生成自然语言分析报告。

Stars: 3 | Forks: 0

# 🔒 AI Network Observer [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![Docker](https://img.shields.io/badge/docker-ready-brightgreen.svg)](https://www.docker.com/) **基于 AI 的智能网络威胁检测** - 网络安全硕士项目 结合了**机器学习**(Isolation Forest)和**LLM**(Ollama)的监控系统,用于实时自动检测网络威胁。 ## 🎯 功能 ### 自动检测 - **DGA Malware**:检测域名生成算法 - **C2 Beaconing**:识别命令与控制(Command & Control)通信 - **DNS Tunneling**:检测基于 DNS 的数据渗透 - **Port Scanning**:网络侦察 - **异常**:行为偏差 ### 技术栈 ``` Capture : Scapy / eBPF Analysis : Python 3.8+ ML Engine : scikit-learn (Isolation Forest) LLM : Ollama (llama3.2 / qwen2.5 / mistral) Storage : Neo4j + Elasticsearch Monitoring : Prometheus + Grafana Deploy : Docker Compose ``` ## 🎯 使用模式 ### 模式 1:仅 ML 检测(快速)⚡ - 5 分钟安装 - 通过 ML 进行异常检测 - 自动警报 - **无需 Ollama** **适用于:** 快速测试,资源有限 ### 模式 2:ML + LLM(完整)🧠 - ML 检测 + 深度 AI 分析 - 自然语言报告 - 修复建议 - **需要 Ollama** **适用于:** 深度分析,完整学习 ## 📦 安装 Ollama(仅限模式 2) ### Linux / WSL ``` # 1. 安装 Ollama curl -fsSL https://ollama.ai/install.sh | sh # 2. 选择并下载 LLM 模型 # 选项 A:llama3.2(推荐 - 性能/质量均衡) ollama pull llama3.2 # 选项 B:qwen2.5:3b(速度更快,占用 RAM 更少) ollama pull qwen2.5:3b # 选项 C:mistral(强大的替代方案) ollama pull mistral # 3. 启动 Ollama 服务 ollama serve & # 4. 验证安装 ollama list ``` ### macOS ``` # 选项 1:Homebrew brew install ollama # 选项 2:Application (https://ollama.ai) # 下载并安装应用 # 下载模型(根据您的资源选择) ollama pull llama3.2 # Recommandé (4.7 GB) # 或 ollama pull qwen2.5:3b # Plus léger (1.9 GB) # 或 ollama pull mistral # Alternatif (4.1 GB) # 启动 ollama serve & ``` ### Windows ``` # 1. 从 https://ollama.ai/download 下载 # 2. 安装应用程序(.exe) # 3. 打开 PowerShell 并下载模型: # 推荐选项 ollama pull llama3.2 # 或更轻量版本 ollama pull qwen2.5:3b # 或替代方案 ollama pull mistral ``` ### 模型比较 | 模型 | 大小 | 所需内存 | 速度 | 质量 | 推荐 | |--------|--------|-------------|---------|---------|----------------| | **llama3.2** | 4.7 GB | 8-16 GB | 中等 | ⭐⭐⭐⭐⭐ | **推荐** | | **qwen2.5:3b** | 1.9 GB | 4-8 GB | 快速 | ⭐⭐⭐⭐ | 配置较低的 PC | | **mistral** | 4.1 GB | 8-16 GB | 中等 | ⭐⭐⭐⭐⭐ | 备选方案 | ### 验证安装 ``` # 验证 Ollama 是否正常运行 curl http://localhost:11434/api/tags # 应返回: # {"models":[{"name":"llama3.2:latest",...}]} # 列出已安装的模型 ollama list # 测试模型 ollama run llama3.2 "Bonjour" ``` ## 🚀 快速入门 ### 模式 1:不使用 Ollama(推荐新手使用) ``` # 1. 克隆 git clone https://github.com/majflower/ai-network-observer.git cd ai-network-observer # 2. 配置 echo "ENABLE_LLM=false" > .env # 3. 启动 docker-compose up -d # 4. 验证 docker-compose ps ``` **✅ 2-3 分钟后即可查看结果** → `logs/alerts_*.json` ### 模式 2:使用 Ollama ``` # 1. 克隆 git clone https://github.com/majflower/ai-network-observer.git cd ai-network-observer # 2. 验证 Ollama(必须返回模型列表) curl http://localhost:11434/api/tags # 3. 配置 cat > .env << 'EOF' ENABLE_LLM=true OLLAMA_BASE_URL=http://localhost:11434 OLLAMA_MODEL=llama3.2 EOF # 如果您使用 qwen2.5 或 mistral,请更改 OLLAMA_MODEL: # OLLAMA_MODEL=qwen2.5:3b # 或 # OLLAMA_MODEL=mistral # 4. 启动 docker-compose up -d # 5. 验证 LLM 连接 docker-compose logs observer | grep -i ollama # 应显示:"✓ Connected to Ollama" ``` ## 📊 访问仪表板 ### Grafana(可视化) - **URL**:http://localhost:3000 - **登录信息**:admin / networksecurity - **仪表板**:Network Security Overview, ML Anomaly Detection ### Neo4j(网络图谱) - **URL**:http://localhost:7474 - **登录信息**:neo4j / networksecurity - **查询示例**: ``` MATCH (h:Host)-[r:DNS_QUERY]->(d:Domain) WHERE d.risk_score > 50 RETURN h, r, d LIMIT 25 ``` ### Prometheus(指标) - **URL**:http://localhost:9090 - **查询示例**:`network_packets_total` ⚠️ **重要提示**:在生产环境中请务必修改默认密码! ## 🧪 测试与验证 ### 模拟攻击(仅在隔离的虚拟机上进行 ⚠️) ``` # DGA Malware bash tests/simulate-dga.sh # C2 Beaconing bash tests/simulate-c2.sh # DNS Tunneling bash tests/simulate-dns-tunnel.sh # 验证检测结果 grep "DGA\|C2_BEACONING\|DNS_TUNNELING" logs/alerts_*.json ``` ## 🔧 常用命令 ``` # 启动所有服务 docker-compose up -d # 停止所有服务 docker-compose down # 实时日志 docker-compose logs -f observer # 服务状态 docker-compose ps # 重启服务 docker-compose restart observer # 查看警报 tail -f logs/alerts_*.json # 更改 LLM 模型(无需完全重启) # 1. 修改 .env:OLLAMA_MODEL=qwen2.5:3b # 2. 重启 observer:docker-compose restart observer ``` ## 📚 详细文档 - **[TESTING_GUIDE.md](TESTING_GUIDE.md)** - 完整测试指南 - **[ML_README.md](ML_README.md)** - 机器学习文档 ## ❓ 常见问题 **问:会使我的网络变慢吗?** 答:不会,采用被动监听,不进行拦截。 **问:这合法吗?** 答:合法,但仅限在您自己的网络/虚拟机上使用。切勿在未经授权的情况下使用。 **问:检测结果是 100% 可靠的吗?** 答:不是,这是一个辅助检测工具,不提供绝对保证。 **问:Observer 没有捕获到任何数据?** 答:请检查 `docker-compose.yml` 中的网络接口(`CAPTURE_INTERFACE` 行)。 **问:Ollama 连接被拒绝?** 答:请检查 Ollama 是否正在运行:`ps aux | grep ollama`,然后执行 `ollama serve &`。 **问:Grafana 显示为空?** 答:一开始是正常的,请等待 5-10 分钟的数据收集。 **问:该选择哪个 LLM 模型?** 答: - **8+ GB 内存** → llama3.2(推荐) - **4-8 GB 内存** → qwen2.5:3b(速度更快) - **备选方案** → mistral **问:安装后可以更换模型吗?** 答:可以!下载新模型(`ollama pull 模型名称`),修改 `.env` 文件,然后重启 observer。 ## 🔒 安全与生产部署 **⚠️ 本项目使用了用于演示的默认密码。** 在生产环境中,请务必修改它们: ``` # 在 docker-compose.yml 中 NEO4J_PASSWORD=VotreMotDePasseSecurise GF_SECURITY_ADMIN_PASSWORD=VotreMotDePasseSecurise ``` **Docker 特权模式**:网络捕获所需(CAP_NET_RAW)。 ## 🎓 学术背景 毕业设计 - 网络安全硕士 2026 **教学目标:** - ✅ 将 ML/LLM 集成应用于安全领域 - ✅ Docker 微服务架构 - ✅ 完整的监控技术栈(Prometheus, Grafana, Neo4j) - ✅ 高级威胁检测(DGA, C2, DNS Tunneling) ## 🤝 贡献 欢迎在 [GitHub](https://github.com/majflower/ai-network-observer/issues) 提交 Issue 和 Pull Request。 ## 📄 许可证 MIT License - 详见 [LICENSE](LICENSE) Copyright (c) 2026 MAJ (MAJFLOWER) ## 👤 作者 **MAJ (MAJFLOWER)** - 🎓 网络安全硕士 - 🎯 专业方向:AI 与网络威胁检测 - 🔬 毕业设计:AI Network Observer ## 📧 联系方式 - **GitHub**:[@majflower](https://github.com/majflower) - **LinkedIn**:[bflore-maj](https://www.linkedin.com/in/bflore-maj/) - **项目**:[ai-network-observer](https://github.com/majflower/ai-network-observer) ## 🔐 Keylogger 检测 AI Network Observer 集成了一个高级的 Keylogger 检测模块,通过分析网络流量来识别: - **键盘数据外泄**(Base64 编码,可疑模式) - **C2 通信**(Discord Webhooks, Telegram Bots, Pastebin) - **周期性自动流量**(定期数据外泄特征) **完整文档**:[docs/KEYLOGGER_DETECTION.md](docs/KEYLOGGER_DETECTION.md) **参考教程**:[Keylogger Python POC](https://lnkd.in/d9YeuEy8) ### 使用示例 ```python from src.detection.keylogger_detector import KeyloggerDetector detector = KeyloggerDetector() result = detector.analyze_payload(http_data) if result['is_suspicious']: print(f"⚠️ 检测到 Keylogger!风险值:{result['risk_score']}/10") ```
标签:AI安全, AI风险缓解, AMSI绕过, Apex, C2通信, Chat Copilot, DGA检测, DLL 劫持, DNS隧道, Docker, Docker Compose, Docker镜像, Elasticsearch, Grafana, Isolation Forest, LLM分析, LLM评估, MIT ATT&CK, Neo4j, Ollama, Python, Scapy, scikit-learn, 人工智能, 命令与控制, 大语言模型, 威胁检测, 安全报告, 安全运营, 安全防御评估, 异常检测, 扫描框架, 插件系统, 数据渗出, 数据统计, 无后门, 机器学习, 用户模式Hook绕过, 端口扫描, 网络安全监控, 网络安全项目, 网络流量分析, 自动化防御, 自定义请求头, 请求拦截, 赛博安全, 逆向工具, 驱动开发