eliyahydermalik/keylogger-detector
GitHub: eliyahydermalik/keylogger-detector
一款跨平台的 Python 键盘记录器检测工具,结合进程监控、签名匹配和机器学习异常检测来发现系统中的可疑按键窃听行为。
Stars: 1 | Forks: 0
# 🛡️ Keylogger 检测器
### 📊 扫描结果与威胁检测
包含威胁评分、扫描摘要和颜色标记进程表的详细扫描结果:
### ✅ 测试套件 — 全部 6 项测试通过
包含伪键盘记录器检测的完整集成测试:
### 🧪 演示模式
快速演示,展示所有检测模块的运行情况:
### 📋 交互式 CLI 菜单
包含 9 个选项的功能丰富的交互式菜单:
### 🪟 Windows 支持
在 Windows 11 PowerShell 上运行 Keylogger Detector,扫描注册表、键盘挂钩和服务:
## ✨ 功能特性
### 核心检测
- 🔍 **进程监控** — 使用 `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)。
## ⚠️ 免责声明
本工具仅供 **教育和防御目的** 使用。作者不对任何滥用行为负责。在扫描非您所有的系统之前,请始终确保您已获得适当的授权。本工具 **不会**:
- 记录任何按键
- 向外部服务器发送任何数据
- 安装任何后门或恶意软件
- 修改系统文件
一个跨平台的 Python 网络安全工具,用于检测键盘记录器和可疑进程
结合使用进程监控、行为分析、签名匹配和机器学习异常检测技术。
### 📊 扫描结果与威胁检测
包含威胁评分、扫描摘要和颜色标记进程表的详细扫描结果:
### ✅ 测试套件 — 全部 6 项测试通过
包含伪键盘记录器检测的完整集成测试:
### 🧪 演示模式
快速演示,展示所有检测模块的运行情况:
### 📋 交互式 CLI 菜单
包含 9 个选项的功能丰富的交互式菜单:
### 🪟 Windows 支持
在 Windows 11 PowerShell 上运行 Keylogger Detector,扫描注册表、键盘挂钩和服务:
## ✨ 功能特性
### 核心检测
- 🔍 **进程监控** — 使用 `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, 反恶意软件, 威胁检测, 子域名枚举, 安全扫描器, 安全防护, 异常检测, 恶意代码分类, 无后门, 机器学习, 端点安全, 系统安全, 网络安全, 补丁管理, 进程分析, 逆向工具, 键盘记录器检测, 防御工具, 隐私保护