praxezz/Praxion.
GitHub: praxezz/Praxion.
Praxion 是一款跨平台 USB 恶意软件扫描工具,通过 YARA 规则、二进制启发式分析、ClamAV 与 VirusTotal 多引擎检测来自动扫描并隔离可移动驱动器中的威胁文件。
Stars: 0 | Forks: 0
# Praxion — 跨平台 USB 恶意软件扫描与清理工具
**Praxion** 会监视可移动 USB 驱动器,自动扫描存入其中的每个文件,并隔离任何恶意内容 —— 它将 YARA 规则、格式感知的二进制分析(PE/ELF/Mach-O)、模糊哈希、可选的 ClamAV 签名以及可选的 VirusTotal 查询结合在一个独立的 Python 脚本中。
```
██████╗ ██████╗ █████╗ ██╗ ██╗██╗ ██████╗ ███╗ ██╗
██╔══██╗██╔══██╗██╔══██╗╚██╗██╔╝██║██╔═══██╗████╗ ██║
██████╔╝██████╔╝███████║ ╚███╔╝ ██║██║ ██║██╔██╗ ██║
██╔═══╝ ██╔══██╗██╔══██║ ██╔██╗ ██║██║ ██║██║╚██╗██║
██║ ██║ ██║██║ ██║██╔╝ ██╗██║╚██████╔╝██║ ╚████║
╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝
```
## ✨ 功能
- **自动 USB 检测** —— 轮询新连接的可移动驱动器(可通过 `watchdog` 选择实时、事件驱动的扫描来代替轮询)。
- **YARA 规则引擎** —— 内置涵盖常见恶意软件模式的规则,并支持自定义规则。
- **跨平台二进制分析**
- 🪟 Windows:PE 头分析、可疑导入/API 检测 (`pefile`)
- 🐧 Linux:ELF 分析与恶意软件启发式检测
- 🍎 macOS:Mach-O 分析与恶意软件启发式检测
- 📜 跨平台脚本检测(Python、Node.js、shell、PowerShell、batch 等)
- **内置备用启发式检测** —— 扩展的可疑模式检测,即使没有 YARA/ClamAV 也能运行,因此 Praxion 绝不会“盲目”扫描。
- **模糊哈希** —— 纯 Python 实现的 CTPH 哈希(`ppdeep`,兼容 ssdeep),用于捕获高度相似/变种的恶意软件样本。
- **集成 ClamAV(可选)** —— 在 daemon 运行时使用 `clamdscan`(快速),或者回退到 `clamscan`(较慢,每个文件都会重新加载数据库);如果没有安装 ClamAV 也能正常工作。
- **集成 VirusTotal(可选)** —— 将可疑文件/哈希提交到 VirusTotal API 以获取第二意见。
- **带有证据记录的安全隔离** —— 恶意文件将被复制到隔离文件夹中,并附带 JSON 证据文件(包含检测原因、哈希值、时间戳),然后才会从 USB 驱动器中删除原文件。
- **有界并行扫描** —— 基于 `ThreadPoolExecutor` 的工作线程池,可快速扫描大型驱动器而不会使系统过载。
- **实时终端 UI** —— 基于 Rich 构建的颜色编码(红色/琥珀色)界面,显示依赖项状态、动画式的扫描进度指示器,以及退出时的会话摘要。
- **自愈依赖项** —— 首次运行时会检查并自动安装所需的安装包;如果无法安装,可选的依赖包会优雅降级。
- **内置测试模式** —— 生成一个包含所有支持平台的合成(无害)恶意软件样本文件夹,无需真实的恶意软件即可验证检测效果。
## 📸 工作原理
1. Praxion 启动,静默引导其自身的依赖项,然后显示依赖项/状态面板。
2. 它会检测当前连接的可移动驱动器,并开始在后台对每个驱动器进行扫描。
3. 然后它会监视新插入的驱动器(如果可用,通过 `watchdog` 实时监视;否则每隔 `POLL_INTERVAL` 秒轮询一次)。
4. 每个扫描的文件都会经过 YARA 规则、特定格式的启发式检测、内置备用扫描程序、ClamAV(如果已安装)以及可选的 VirusTotal 进行检查。
5. 被标记为恶意的文件将被隔离(与 JSON 证据文件一起复制)并从 USB 驱动器中删除;安全文件保持原样不动。
6. 按 `Ctrl+C` 停止 —— Praxion 将在退出前打印会话摘要(已扫描的文件、已删除的威胁、错误)。
## 🚀 快速开始
### 环境要求
- Python 3.8+
- Windows、macOS 或 Linux
### 安装
```
git clone https://github.com//praxion.git
cd praxion
pip install -r requirements.txt
```
### (可选)安装 ClamAV
如需添加基于签名的检测层,请参阅 **[CLAMAV_SETUP.md](CLAMAV_SETUP.md)** 获取针对特定操作系统的说明。
### 运行
```
python praxionz.py
```
插入 USB 驱动器 —— Praxion 会自动识别并开始扫描。
## 🧰 用法
```
python praxionz.py [--mode {run,test,debug,auto-delete}] [options]
```
| 标志 | 描述 |
|---|---|
| `--mode run` | 默认模式 —— 监视 USB 驱动器并实时扫描。 |
| `--mode test` | 在临时文件夹中生成合成(无害)恶意样本并进行扫描,以验证 Praxion 是否能正确检测。 |
| `--mode debug` | 启用详细调试日志并输出到 `scan_debug.txt`。 |
| `--mode auto-delete` | 隔离后自动删除原文件(无需确认)。 |
| `--poll-interval N` | 覆盖驱动器检测的轮询间隔,单位为秒(默认:2)。 |
| `--virustotal` | 启用对可疑文件的 VirusTotal 查询。 |
| `--vt-api-key KEY` | VirusTotal API 密钥(或设置 `VIRUSTOTAL_API_KEY` 环境变量)。 |
| `--vt-scan-timeout N` | VirusTotal API 超时时间(秒)(默认:30)。 |
### 示例
```
# 运行内置的 test suite 以确认一切正常
python praxionz.py --mode test
# 监控 USB drives,使用更快的 poll interval
python praxionz.py --poll-interval 1
# 启用 VirusTotal scanning,为可疑文件提供额外参考
export VIRUSTOTAL_API_KEY=your_key_here
python praxionz.py --virustotal
```
## 📁 Praxion 的数据存储位置
Praxion 会自动选择一个可写的应用程序目录(如果脚本文件夹可写则选择它,否则选择特定于操作系统的用户目录):
| 操作系统 | 备用位置 |
|---|---|
| Windows | `%LOCALAPPDATA%\Praxion` |
| macOS | `~/Library/Application Support/Praxion` |
| Linux | `~/.praxion` |
在该目录内:
```
Praxion/
├── logs/
│ ├── scan_log.txt # main activity log
│ ├── scan_debug.txt # verbose log (--mode debug)
│ ├── scan_history.txt # per-file scan history
│ └── threat_explanations.txt # human-readable reasons for each detection
└── suspicious/
├──
├── .evidence.json
└── report_.txt
```
这些内容都不会提交到代码仓库中 —— 参见 `.gitignore`。
## ⚙️ 依赖项
| 安装包 | 必需? | 用途 |
|---|---|---|
| `rich` | ✅ 必需 | 驱动整个终端 UI |
| `psutil` | ✅ 必需 | 跨平台驱动器/进程检测 |
| `yara-python` | ✅ 必需 | YARA 规则匹配引擎 |
| `colorama` | 可选 | 旧终端上的 ANSI 颜色回退支持 |
| `pefile` | 可选 | 深入的 Windows PE 分析 |
| `ppdeep` | 可选 | 模糊 (CTPH) 哈希 |
| `watchdog` | 可选 | 实时、事件驱动的扫描 |
| `vt-py` | 可选 | VirusTotal API 集成 |
| ClamAV (`clamscan`/`clamdscan`) | 可选,外部程序 | 基于签名的扫描层 —— 参见 [CLAMAV_SETUP.md](CLAMAV_SETUP.md) |
如果缺少所需的安装包,将在首次运行时自动安装。如果自动安装失败(例如没有互联网连接、平台没有预构建的 wheel),Praxion 会打印出需要运行的确切手动 `pip install` 命令。
## 🧪 测试
Praxion 包含一个独立的测试模式,可以生成合成的、**不具备实际功能**的恶意软件文件(伪造的 PE dropper、EICAR 风格的模式、可疑脚本、伪造的 ELF 二进制文件等)并对它们进行扫描 —— 这对于在代码更改后验证检测效果以及进行演示非常有用。
```
python praxionz.py --mode test
```
## 🗺️ 路线图构想
- [ ] 可配置的 YARA 规则目录(加载外部 `.yar` 文件)
- [ ] 导出 JSON/CSV 扫描会话以供 SIEM 摄取
- [ ] GUI/托盘图标前端界面
- [ ] 面向非技术用户的签名版本构建 (PyInstaller)
- [ ] 用于无头/服务器环境的 Docker 镜像
有其他想法?提交一个 issue!
## 🔒 安全
在 Praxion 本身发现了安全问题?请参阅 **[SECURITY.md](SECURITY.md)** 进行负责任的漏洞披露,而不是直接发布公开的 issue。
## ⚠️ 免责声明
Praxion 是一款为个人/教育用途而构建的启发式与签名辅助扫描程序。它**不是**经过认证的防病毒产品,不能保证检测出所有恶意软件。请始终维护正规、专用的防病毒/EDR 解决方案并进行数据备份 —— 应将 Praxion 视为可移动媒体的额外一层防御,而不是替代品。
在 `--mode test` 中生成的测试样本是无害的,无法执行或传播;它们的存在仅仅是为了测试 Praxion 的检测逻辑。
## 📄 许可证
基于 [MIT License](LICENSE) 发布 —— 版权所有 (c) 2025 Praveen K.
标签:ClamAV, DNS 反向解析, Python, Web 安全测试, YARA, 云资产可视化, 恶意软件扫描, 搜索语句(dork), 无后门, 终端防护, 逆向工具