eliyahydermalik/keylogger-detector

GitHub: eliyahydermalik/keylogger-detector

一款跨平台的 Python 键盘记录器检测工具,结合进程监控、签名匹配和机器学习异常检测来发现系统中的可疑按键窃听行为。

Stars: 1 | Forks: 0

# 🛡️ Keylogger 检测器

Keylogger Detector Banner

一个跨平台的 Python 网络安全工具,用于检测键盘记录器和可疑进程
结合使用进程监控、行为分析、签名匹配和机器学习异常检测技术。

Python 3.8+ Platform ML License Tests

## 📸 屏幕截图 ### 🐧 Linux — 完整扫描流水线 7 步检测流水线扫描所有正在运行的进程: Scan Pipeline ### 📊 扫描结果与威胁检测 包含威胁评分、扫描摘要和颜色标记进程表的详细扫描结果: Scan Results ### ✅ 测试套件 — 全部 6 项测试通过 包含伪键盘记录器检测的完整集成测试: Test Results ### 🧪 演示模式 快速演示,展示所有检测模块的运行情况: Demo Mode ### 📋 交互式 CLI 菜单 包含 9 个选项的功能丰富的交互式菜单: Interactive Menu ### 🪟 Windows 支持 在 Windows 11 PowerShell 上运行 Keylogger Detector,扫描注册表、键盘挂钩和服务: Windows Support ## ✨ 功能特性 ### 核心检测 - 🔍 **进程监控** — 使用 `psutil` 扫描所有正在运行的进程 - ⌨️ **键盘挂钩检测** — 识别访问输入设备的进程 - 🚀 **启动项扫描器** — 检查自启动位置以发现持久化威胁 - 🧬 **签名匹配** — 包含 30 多个已知键盘记录器签名的数据库 - 🤖 **ML 异常检测** — Isolation Forest 算法标记行为异常 - 🌐 **网络监控** — 检测可疑的出站连接(数据渗出) ### 用户界面 - 💻 **富文本 CLI** — 带有彩色表格、进度条、ASCII 字符画的精美终端界面 - 🖥️ **Tkinter GUI** — 可选的带有暗色主题的图形化仪表板 - 🔔 **警报系统** — 针对危险进程的控制台警报 + GUI 弹窗通知 ### 实用工具 - 📋 **日志生成** — 带有时间戳的滚动日志文件,记录所有检测到的威胁 - 📊 **CSV 导出** — 将扫描结果导出为 CSV 以供分析和报告 - ✅ **白名单管理器** — 信任已知良好的应用程序以减少误报 - 💀 **安全进程终止器** — 在安全检查后终止威胁(保护系统进程) - 📱 **Android 支持** — 通过 ADB 扫描 Android 设备上的间谍软件 ## 🔬 检测原理 检测器使用带有加权威胁评分的 **多层流水线**: ``` ┌─────────────────────────────────────────────────────────────┐ │ DETECTION PIPELINE │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Step 1: ENUMERATE → List all running processes (psutil) │ │ Step 2: WHITELIST → Skip trusted system processes │ │ Step 3: HEURISTIC → Analyze CPU, memory, paths, age │ │ Step 4: KEYBOARD → Check input device access │ │ Step 5: STARTUP → Cross-reference autostart entries │ │ Step 6: SIGNATURE → Match against known keylogger DB │ │ Step 6.5: NETWORK → Detect suspicious connections │ │ Step 7: ML MODEL → Isolation Forest anomaly detection │ │ │ │ → Calculate THREAT SCORE (0-100) per process │ │ → Alert if score ≥ 60 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 威胁评分 (0-100) | 因素 | 分值 | 描述 | |--------|--------|-------------| | 已知签名匹配 | +40 | 匹配已知键盘记录器数据库 | | 键盘设备访问 | +25 | 打开输入设备的句柄 | | 可疑关键词 | +20 | 进程名包含 'keylog'、'spy' 等 | | 可疑路径 | +15 | 从临时/隐藏目录运行 | | 已删除的二进制文件 | +15 | 可执行文件已被删除(隐藏行为) | | ML 异常 | +15 | 被 Isolation Forest 标记 | | 异常 CPU 占用 | +10 | 异常的 CPU 使用模式 | | 近期创建且活跃 | +10 | 具有高活动量的新进程 | | 可疑网络活动 | +10 | 向未知主机/端口发送出站数据 | | 启动项持久化 | +5 | 在自启动位置被发现 | | 无可见终端 | +5 | 无界面的后台进程 | **威胁等级:** - 🟢 **安全** (0-29):正常进程 - 🟡 **可疑** (30-59):需要调查 - 🔴 **危险** (60-100):可能是键盘记录器 — 建议采取行动 ## 📦 安装说明 ### 前置条件 - Python 3.8 或更高版本 - pip (Python 包管理器) ### 快速设置 ``` # 克隆仓库 git clone https://github.com/eliyahydermalik/keylogger-detector.git cd keylogger-detector # 创建虚拟环境 python3 -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # (可选)安装为 CLI 工具 pip install -e . ``` ### 依赖项 | 包 | 用途 | |---------|---------| | `psutil` | 进程和系统监控 | | `rich` | 带有颜色和表格的精美 CLI 输出 | | `PyYAML` | 配置文件解析 | | `scikit-learn` | ML 异常检测 (Isolation Forest) | | `numpy` | ML 的数值运算 | | `tkinter` | GUI 仪表板 (通常已预装) | ## 🚀 使用方法 ### CLI 模式 (默认) ``` # 交互式菜单(首次使用推荐) python -m keylogger_detector.main # 快速单次扫描 python -m keylogger_detector.main --scan # 实时连续监控 python -m keylogger_detector.main --monitor # 通过 ADB 扫描 Android 设备 python -m keylogger_detector.main --android ``` ### GUI 模式 ``` python -m keylogger_detector.main --gui ``` ### CLI 菜单选项 ``` ═══ Main Menu ═══ 1 🔍 Full System Scan — Run the complete 7-step detection pipeline 2 👁️ Real-Time Monitor — Continuous scanning at regular intervals 3 📋 View Scan Logs — Review recent detection logs 4 📱 Android Device Scan — Scan connected Android device via ADB 5 ✅ Manage Whitelist — Add/remove trusted applications 6 💀 Terminate Process — Safely kill a suspicious process by PID 7 📊 Export to CSV — Export scan results for reporting 8 ⚙️ Settings — View current configuration 9 ❌ Exit — Exit the application ``` ## 📁 项目结构 ``` keylogger-detector/ ├── README.md # This file ├── requirements.txt # Python dependencies ├── setup.py # Package setup (pip install -e .) ├── config.yaml # Detection thresholds & settings ├── LICENSE # MIT License ├── .gitignore # Git ignore rules │ ├── keylogger_detector/ # Main package │ ├── __init__.py # Package init & version │ ├── main.py # Entry point — orchestrates everything │ │ │ ├── detector/ # 🔍 Detection engines │ │ ├── process_monitor.py # psutil process scanning + heuristics │ │ ├── keyboard_hooks.py # Keyboard access detection │ │ ├── startup_scanner.py # Startup/autorun persistence scanner │ │ ├── signature_db.py # Known keylogger signature matching │ │ ├── anomaly_detector.py # ML Isolation Forest detection │ │ └── network_monitor.py # Suspicious network connection analysis │ │ │ ├── platform_support/ # 🖥️ OS-specific implementations │ │ ├── linux_utils.py # Linux: /proc, /dev/input, systemd, cron │ │ ├── windows_utils.py # Windows: Registry, Win32 API, tasks │ │ └── android_utils.py # Android: ADB-based scanning │ │ │ ├── ui/ # 🎨 User interfaces │ │ ├── cli_interface.py # Rich CLI with tables, colors, menus │ │ └── gui_alerts.py # Tkinter GUI dashboard + popups │ │ │ ├── utils/ # 🔧 Utilities │ │ ├── logger.py # Dual logging (console + rotating file) │ │ ├── csv_exporter.py # CSV export for scan results │ │ ├── whitelist.py # Whitelist management │ │ └── process_killer.py # Safe process termination │ │ │ └── data/ # 📄 Data files │ ├── known_signatures.json # 30 known keylogger signatures │ └── whitelist_default.json # Default trusted processes │ ├── tests/ # 🧪 Test suite │ ├── test_demo.py # Integration tests (6 tests) │ └── fake_keylogger.py # Safe test fixture (NOT malware) │ ├── screenshots/ # 📸 Demo screenshots │ ├── 01_banner_and_scan_pipeline.png │ ├── 02_scan_results_table.png │ ├── 03_test_results.png │ ├── 04_demo_mode.png │ ├── 05_interactive_menu.png │ └── 06_windows_scan_pipeline.png │ └── logs/ # 📋 Generated at runtime ``` ## ⚙️ 配置 编辑 `config.yaml` 以自定义检测行为: ``` detection: cpu_threshold: 50 # Flag processes above this CPU % memory_threshold: 200 # Flag processes above this MB scan_interval: 5 # Seconds between monitor scans threat_score_alert: 60 # Minimum score for alerts network_monitoring: true # Enable network analysis ml: enabled: true # Enable/disable ML detection contamination: 0.05 # Expected anomaly rate (5%) n_estimators: 100 # Number of isolation trees logging: level: INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL file: logs/keylogger_detector.log max_size_mb: 10 # Log rotation size ui: mode: cli # 'cli' or 'gui' show_safe_processes: false desktop_notifications: true csv: export_dir: logs/exports include_safe: false ``` ## 🧪 测试与演示 ### 运行演示 ``` # 展示所有模块的快速演示 python tests/test_demo.py --demo ``` ### 运行完整测试套件 ``` # 使用 pytest 运行全部 6 个测试 pytest tests/test_demo.py -v # 测试包括: # ✅ test_process_enumeration — 枚举所有运行中的进程 # ✅ test_process_analysis — 启发式威胁评分 # ✅ test_signature_database — 已知键盘记录器匹配 # ✅ test_whitelist — 白名单管理 # ✅ test_fake_keylogger_detection — 完整集成测试 # ✅ test_csv_export — CSV 导出功能 ``` ### 使用伪键盘记录器进行测试 ``` # 终端 1:启动安全测试进程 python tests/fake_keylogger.py --duration 60 # 终端 2:运行检测器 —— 它应该会标记出伪造的键盘记录器! python -m keylogger_detector.main --scan ``` ## 🖥️ 平台支持 | 平台 | 进程监控 | 键盘检测 | 启动项扫描 | 网络监控 | ML 检测 | |----------|:-:|:-:|:-:|:-:|:-:| | **Linux** | ✅ | ✅ `/dev/input` | ✅ XDG, systemd, cron | ✅ | ✅ | | **Windows** | ✅ | ✅ Win32 API | ✅ 注册表, 任务计划 | ✅ | ✅ | | **Android** | ✅ 通过 ADB | ✅ 输入法 | ✅ 包 | ⚠️ 有限 | ❌ | ### Linux 注意事项 - 完整的键盘检测需要 **root 权限** (`sudo`) - 如果没有 root 权限,检测功能仍可运行,但部分特性受限 - 扫描 `/dev/input/event*`、`/proc/*/fd`、systemd 服务、cron 任务 ### Windows 注意事项 - 需以 **管理员身份运行** 以获取对所有进程的完全访问权限 - 扫描 `HKCU\...\Run`、`HKLM\...\Run`、启动文件夹、任务计划程序 - 使用 Win32 API 进行键盘挂钩检测 ### Android 注意事项 - 需要在 PC 上安装 **ADB** (`apt install adb` 或通过 Android SDK) - 必须在设备上启用 USB 调试 - 扫描已安装的包、无障碍服务和输入法 - 对照 20 多个已知 Android 间谍软件包名进行检查 ## 🔧 各模块工作原理 ### 进程监控器 (`process_monitor.py`) 使用 `psutil` 枚举所有正在运行的进程,并提取:PID、名称、可执行路径、命令行、CPU/内存使用率、打开的文件、网络连接。应用 6 项启发式检查以计算威胁评分。 ### 键盘挂钩 (`keyboard_hooks.py`) **Linux**: 检查 `/proc/*/fd` 中指向 `/dev/input/event*` 键盘设备的文件描述符。如果 `/proc` 扫描失败,则回退到使用 `lsof`。 **Windows**: 使用 `ctypes` 和 Win32 API 检测 `SetWindowsHookEx` 键盘挂钩和隐藏窗口。 ### 签名数据库 (`signature_db.py`) 从 `known_signatures.json` 加载 30 个已知键盘记录器签名。匹配进程名称(精确匹配 +40 分)、安装路径(+35 分)以及命令行中的可疑关键词(+15 分)。 ### 异常检测器 (`anomaly_detector.py`) 使用 **scikit-learn 的 Isolation Forest** —— 一种无监督 ML 算法。为每个进程构建特征向量(CPU、内存、线程、打开的文件、连接、键盘访问、路径可疑度),并在当前系统快照上进行训练。异常进程是指那些行为不同于大多数的进程。 ### 网络监控器 (`network_monitor.py`) 检查每个进程的网络连接是否存在可疑活动:连接到已知 RAT 端口(4444、5555、31337 等)、出站到异常端口的连接,以及数据渗出模式。 ### 启动项扫描器 (`startup_scanner.py`) **Linux**: 扫描 `~/.config/autostart/`、systemd 用户服务、cron 任务以及用于后台进程启动的 shell RC 文件。 **Windows**: 扫描注册表 Run 键、启动文件夹和任务计划程序。 ## 📜 许可证 本项目采用 MIT 许可证授权。详情请参见 [LICENSE](LICENSE)。 ## ⚠️ 免责声明 本工具仅供 **教育和防御目的** 使用。作者不对任何滥用行为负责。在扫描非您所有的系统之前,请始终确保您已获得适当的授权。本工具 **不会**: - 记录任何按键 - 向外部服务器发送任何数据 - 安装任何后门或恶意软件 - 修改系统文件

为网络安全教育而用 🛡️ 制作
Keylogger Detector v1.0.0

标签:AMSI绕过, Android, Apex, DSL, GraphQL安全矩阵, Isolation Forest, MIT许可, Python, Scikit-learn, TLS, WSL, 反恶意软件, 威胁检测, 子域名枚举, 安全扫描器, 安全防护, 异常检测, 恶意代码分类, 无后门, 机器学习, 端点安全, 系统安全, 网络安全, 补丁管理, 进程分析, 逆向工具, 键盘记录器检测, 防御工具, 隐私保护