Mahmoud-AlNajjar47/keylogger-detection-lab

GitHub: Mahmoud-AlNajjar47/keylogger-detection-lab

一个结合键盘记录器攻击模拟与 SIEM 检测规则的教育实验室,帮助蓝队团队练习终端威胁的检测与分析。

Stars: 0 | Forks: 0

# 🔐 键盘记录器检测实验室 ## ⚠️ 免责声明 本项目**严格用于教育和授权的安全测试目的**。 在未经**明确书面许可**的情况下在任何系统上运行此软件,均属于违反计算机欺诈法律的违法行为(例如:埃及网络犯罪法第 175/2018 号、CFAA、计算机滥用法)。 作者对任何滥用行为**不承担任何责任**。 ## 📋 概述 本实验室演示了针对常见终端威胁的完整攻击检测生命周期: | 组件 | 描述 | |---|---| | `src/keylogger.py` | 基于 Python 的键盘记录器(红队模拟) | | `src/log_analyzer.py` | 蓝队日志解析器和关键词警报器 | | `detection/splunk_rules.spl` | 6 条 Splunk SPL 检测查询语句 | | `detection/wazuh_rules.xml` | 5 条具有关联性的 Wazuh 自定义规则 | ## 🎯 MITRE ATT&CK 映射 | 战术 | 技术 | ID | |---|---|---| | Collection | Input Capture: Keylogging | T1056.001 | | Exfiltration | Exfiltration Over Alternative Protocol | T1048 | | Persistence | Boot/Logon Autostart: Registry Run Keys | T1547.001 | ## 🔴 红队 – 键盘记录器功能 - 带有时间戳和活动窗口上下文的**击键捕获** - 启动时的**剪贴板捕获** - **按应用程序记录**(了解你当前正在哪个应用中输入) - 通过 SMTP 的**电子邮件外泄模拟**(可配置的时间间隔) - 采用 **JSON-lines 输出**格式,方便 SIEM 采集 - 带有定期刷新的**磁盘持久化** ### 运行(仅在隔离的实验室 VM 中) ``` pip install -r requirements.txt python src/keylogger.py # 按 ESC 停止 ``` ### 日志输出示例 (`keylog.json`) ``` {"timestamp": "2024-11-01T10:23:45Z", "host": "LAB-PC", "os": "Windows 10", "window": "Google Chrome", "key": "p"} {"timestamp": "2024-11-01T10:23:45Z", "host": "LAB-PC", "os": "Windows 10", "window": "Google Chrome", "key": "a"} {"timestamp": "2024-11-01T10:23:46Z", "host": "LAB-PC", "os": "Windows 10", "window": "Google Chrome", "key": "[CLIPBOARD: hunter2]"} ``` ## 🔵 蓝队 – 检测与分析 ### 1. 日志分析器(本地) ``` python src/log_analyzer.py --file keylog.json ``` 输出内容包括: - 会话时间线(主机、OS、开始/结束时间) - 按应用程序划分的击键明细 - 剪贴板捕获事件 - 敏感关键词命中(password、token、api_key 等) - 还原的输入文本 ### 2. Splunk 检测规则 文件:`detection/splunk_rules.spl` | 规则 | 检测目标 | 严重程度 | |---|---|---| | Rule 1 | 加载 pynput / keyboard hook 的 Python 进程 | HIGH | | Rule 2 | 来自非邮件进程的出站 SMTP | MEDIUM | | Rule 3 | 写入磁盘的键盘记录文件 | HIGH | | Rule 4 | 通过 Windows API 实现的底层 keyboard hook | CRITICAL | | Rule 5 | Registry Run key 持久化 | HIGH | | Rule 6 | 10 分钟内 Hook + SMTP 的关联性 | CRITICAL | ### 3. Wazuh 自定义规则 文件:`detection/wazuh_rules.xml` — 部署至 `/var/ossec/etc/rules/local_rules.xml` | Rule ID | Level | 检测目标 | |---|---|---| | 100100 | 12 | 命令行中的 pynput / keyboard API | | 100101 | 12 | 磁盘上创建的键盘记录文件 | | 100102 | 10 | 来自非邮件进程的意外 SMTP | | 100103 | 13 | Registry Run key 持久化 | | 100104 | 15 | **关联性:同一主机上的 Hook + SMTP(10 分钟内)** | ## 🏗️ 架构 ``` Attacker endpoint │ ├── keylogger.py ← T1056.001: captures keystrokes + clipboard │ ├── Writes keylog.json to disk → triggers Rule 100101 (Wazuh) / Rule 3 (Splunk) │ └── SMTP email every 5 min (optional) → triggers Rule 100102 (Wazuh) / Rule 2 (Splunk) │ Sysmon (on endpoint) │ ├── Event 1 (Process Create) → Rule 100100 ├── Event 3 (Network Conn) → Rule 100102 ├── Event 11 (File Created) → Rule 100101 └── Event 13 (Registry Set) → Rule 100103 │ SIEM (Splunk / Wazuh) │ └── Correlation Rule 100104 / SPL Rule 6 └── Alert → SOC Analyst ``` ## 🔍 SOC 分析师将如何调查此事 1. **初始警报**:Wazuh Rule 100104 (level 15) 触发 → 创建工单 2. **分类筛选**:检查 `agent.name`、`win.eventdata.image`、`win.eventdata.commandLine` 3. **关联查询**:搜索该主机在过去 24 小时内的所有活动 4. **证据收集**: - 哪些应用程序成为了目标? - SMTP 连接是否成功?(检查防火墙日志) - 键盘记录器是否已持久化?(检查 registry/autorun) 5. **遏制**:隔离主机,终止进程,移除持久化键 6. **IOCs**:`keylogger.py` 的哈希值、SMTP 目标 IP、registry key 路径 ## 🛠️ 实验室设置建议 | 组件 | 工具 | |---|---| | 受害端 VM | Windows 10 (VirtualBox / VMware) | | 终端遥测数据 | Sysmon + Wazuh agent | | SIEM | Wazuh Manager 或 Splunk(免费试用版) | | 网络隔离 | Host-only adapter(无互联网连接) | ## 📁 项目结构 ``` keylogger-detection-lab/ ├── src/ │ ├── keylogger.py # Malware simulation │ └── log_analyzer.py # Blue-team log parser ├── detection/ │ ├── splunk_rules.spl # Splunk SPL queries │ └── wazuh_rules.xml # Wazuh custom rules ├── requirements.txt └── README.md ``` ## 🧠 关键要点 - 键盘记录器可以通过**进程行为**、**文件系统事件**和**网络异常**来检测——而不仅仅是依靠特征码 - **关联规则**(结合多个微弱信号)可以显著减少漏报 - 结构化的 JSON 日志可使 SIEM 采集和分析速度显著提升 - 相同的 Sysmon event ID(1、3、11、13)能够覆盖键盘记录器之外的大量恶意软件行为 *作为 SOC 检测工程项目集的一部分而构建。所有测试均在隔离的实验室环境中进行。*
标签:Python, SIEM检测规则, Wazuh, 无后门, 网络安全, 逆向工具, 键盘记录, 隐私保护