arif-offsec/vmsec
GitHub: arif-offsec/vmsec
针对 Kali Linux 虚拟机的一键式安全扫描与自动修复框架,集成十个开源检测模块,覆盖恶意软件、Rootkit、键盘记录器、C2 连接、配置审计等场景。
Stars: 3 | Forks: 0
```
██╗ ██╗███╗ ███╗███████╗███████╗ ██████╗
██║ ██║████╗ ████║██╔════╝██╔════╝██╔════╝
██║ ██║██╔████╔██║███████╗█████╗ ██║
╚██╗ ██╔╝██║╚██╔╝██║╚════██║██╔══╝ ██║
╚████╔╝ ██║ ╚═╝ ██║███████║███████╗╚██████╗
╚═══╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝
```
**VM 安全扫描器 — Kali Linux 版**
[](LICENSE)
[]()
[]()
[]()
## 什么是 vmsec?
**vmsec** 是一个完全开源的自动化安全扫描与修复工具,专为 **Kali Linux 虚拟机**打造。
它将由行业标准开源工具(ClamAV、rkhunter、chkrootkit、Lynis、AIDE、auditd 等)驱动的 **10 个扫描器模块** 集成到一个统一的工作流中,该工具具有以下功能:
1. **扫描**您的 VM,检测病毒、木马、恶意软件、rootkit、键盘记录器、间谍软件、后门、C2 连接、可疑进程、不安全配置等
2. **生成**一份全面且分类的报告(纯文本 + 交互式 HTML)—— 发现按 CRITICAL(严重)→ LOW(低)排序,建议按 MUST-DO(必做)→ OPTIONAL(可选)排序
3. **修复** —— 自动或手动修复发现的问题,随后自动或手动应用建议
## 快速开始
```
# 1. Clone 仓库
git clone https://github.com/arif-offsec/vmsec.git
cd vmsec
# 2. 运行 installer
sudo bash install.sh
# 3. 安装所有安全工具
sudo vmsec install
# 4. 运行你的首次 full scan
sudo vmsec scan
```
就是这样。vmsec 将执行扫描、生成报告,并引导您逐步修复发现的任何问题。
## 功能
| 功能 | 描述 |
|---|---|
| 🔍 **10 个扫描器模块** | 模块化、可独立运行的扫描器 |
| 🦠 **恶意软件检测** | 使用 ClamAV 并自动更新病毒库 |
| 🐛 **Rootkit 检测** | rkhunter + chkrootkit(两个独立的检测引擎) |
| ⌨️ **键盘记录器检测** | 进程监控、/dev/input 访问检查、LKM 检查 |
| 🌐 **网络扫描** | 开放端口、C2 连接、ARP 欺骗、DNS 劫持 |
| 📋 **Cron 审计** | 检测通过 cron 任务实现的恶意持久化 |
| 📁 **文件系统检查** | SUID/SGID 审计、AIDE 完整性检查、可疑文件检测 |
| 👤 **用户审计** | UID-0 后门、SSH 密钥、sudo 错误配置、空密码 |
| ⚙️ **服务审计** | 危险/不必要的服务、防火墙状态 |
| 📊 **双重报告** | 分类排序的文本报告 + 暗色主题的交互式 HTML 报告 |
| 🔧 **自动修复** | 安全的、按优先级排序的自动修复功能,并带有路径限制 |
| 🖱️ **手动修复** | 逐一交互式审查每个发现的问题 |
| 💡 **安全建议** | 自动应用 MUST-DO(必做)建议或逐条审查 |
| 📖 **Man 手册** | 完整的 `man vmsec` 文档 |
| ⚙️ **可配置** | 编辑 `conf/vmsec.conf` 以调整行为 |
## 所有命令
```
sudo vmsec install # Install all security tools
sudo vmsec update # Update all tools + definitions
sudo vmsec scan # Full scan (all 10 modules)
sudo vmsec scan --quick # Quick scan (ClamAV, rkhunter, processes, network)
sudo vmsec scan --module NAME # Run one specific module
vmsec report # Print last report to terminal
vmsec report --html # Open HTML report in browser
sudo vmsec fix --auto # Auto-fix all findings (CRITICAL first)
sudo vmsec fix --manual # Review and fix findings one by one
sudo vmsec suggest --auto # Auto-apply all MUST-DO suggestions
sudo vmsec suggest --manual # Review suggestions one by one
vmsec list-modules # List all scanner modules
vmsec version # Show version
man vmsec # Full manual page
```
## 扫描器模块
| 模块 | 使用的工具 | 检测内容 |
|---|---|---|
| `clamav` | ClamAV | 病毒、木马、恶意文件 |
| `rkhunter` | rkhunter | Rootkit、后门、隐藏文件 |
| `chkrootkit` | chkrootkit | Rootkit(不同引擎)、LKM、嗅探器 |
| `lynis` | Lynis | 完整系统审计、强化指数、配置警告 |
| `processes` | ps, lsof, unhide | 键盘记录器、加密货币挖矿程序、隐藏进程、可疑 LKM |
| `network` | ss, iptables, arp | 开放端口、C2 连接、DNS 劫持、ARP 欺骗、混杂模式 |
| `crontabs` | bash | 恶意 cron 持久化、反弹 shell、混淆命令 |
| `filesystem` | find, aide, stat | SUID/SGID、全局可写文件、最近修改的二进制文件、AIDE 完整性 |
| `users` | getent, passwd, sshd | UID-0 后门、空密码、NOPASSWD sudo、SSH 错误配置 |
| `services` | systemctl | 危险服务(Telnet/RSH/TFTP)、不必要的服务、缺失 auditd/fail2ban |
## 集成的开源工具
所有工具均免费、开源,并从 Kali 的官方 apt 仓库安装。
| 工具 | 许可证 | 功能说明 |
|---|---|---|
| **ClamAV** | GPL v2 | 病毒和恶意软件扫描器 —— 由 Cisco Talos 维护 |
| **rkhunter** | GPL v2 | Rootkit、后门和本地漏洞扫描器 |
| **chkrootkit** | 类 BSD | 具有不同检测引擎的 Rootkit 扫描器 |
| **Lynis** | GPL v3 | 由 CISOfy 开发的全面系统安全审计工具 |
| **AIDE** | GPL v2 | 文件完整性监控 —— 检测任何未经授权的更改 |
| **auditd** | GPL v2 | Linux 内核审计守护进程 —— 记录所有系统活动 |
| **UFW** | GPL v3 | Uncomplicated Firewall(简单防火墙)—— 管理 iptables 规则 |
| **fail2ban** | GPL v2 | 自动拦截暴力破解登录尝试 |
| **unhide** | GPL v3 | 检测被 rootkit 隐藏的进程 |
| **nethogs** | GPL v2 | 实时按进程显示网络带宽监控 |
| **ss / lsof / netstat** | GPL | 网络分析工具(Linux 内置) |
## 报告示例
扫描完成后,vmsec 会生成两个报告文件:
**文本报告**(`reports/vmsec_report_YYYY-MM-DD_HH-MM-SS.txt`):
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FINDINGS (CRITICAL → HIGH → MEDIUM → LOW)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
── CRITICAL ────────────────────────
[001] [CRITICAL] Module: clamav
Description : ClamAV detected: Trojan.Agent-12345
Location : /tmp/payload.elf
Fixable : yes
Fix command : shred -u -z '/tmp/payload.elf'
── HIGH ────────────────────────────
[002] [HIGH] Module: network
Description : Dangerous port 4444 is OPEN — known Metasploit listener
Location : port:4444
Fixable : yes
Fix command : fuser -k 4444/tcp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SUGGESTIONS (MUST → SHOULD → OPTIONAL)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[001] [MUST] Module: network
Suggestion : Enable UFW firewall
Command : ufw default deny incoming && ufw --force enable
```
**HTML 报告** —— 暗色主题的交互式页面,带有颜色编码的严重级别徽章,可在任何浏览器中查看。
## 修复流程
```
sudo vmsec scan
│
▼
Report generated
(txt + HTML)
│
▼
┌──────────────────────────┐
│ FINDINGS REMEDIATION │
│ [1] Auto (CRITICAL first│
│ [2] Manual (one by one) │
│ [3] Skip │
└──────────────────────────┘
│
▼
┌──────────────────────────┐
│ SUGGESTIONS │
│ [1] Auto (MUST-DO only) │
│ [2] Manual (one by one) │
│ [3] Skip │
└──────────────────────────┘
```
**自动修复安全规则:**
- 仅从以下目录自动删除文件:`/tmp`、`/var/tmp`、`~/Downloads`、`~/Desktop`、`~/.cache`
- 系统文件、二进制文件和配置文件**绝不**自动删除
- 所有操作都会记录到带有时间戳的日志文件中
- Kali 内置的渗透测试工具绝不会被标记为可自动移除对象
## 安装说明
### 方式 1:克隆并安装(推荐)
```
git clone https://github.com/arif-offsec/vmsec.git
cd vmsec
sudo bash install.sh
```
### 方式 2:一键安装
```
curl -fsSL https://raw.githubusercontent.com/arif-offsec/vmsec/main/install.sh | sudo bash
```
### 安装程序执行的操作
- 将文件复制到 `/opt/vmsec/`
- 创建 `/usr/local/bin/vmsec` 符号链接(以便您可以在任何位置运行 `vmsec`)
- 安装 man 手册(`man vmsec`)
- 将配置文件复制到 `/etc/vmsec/vmsec.conf`
- 创建 `/var/log/vmsec.log`
- 可选择运行 `vmsec install` 以安装所有安全工具
### 卸载
```
sudo bash uninstall.sh
```
## 配置说明
编辑 `/etc/vmsec/vmsec.conf`(全局)或 `conf/vmsec.conf`(本地):
```
# 每次扫描前更新 definitions (yes/no)
VMSEC_AUTO_UPDATE_DEFS="yes"
# 报告格式: txt | html | both
VMSEC_REPORT_FORMAT="both"
# 将系统二进制文件视为“最近修改”的天数
VMSEC_RECENT_DAYS="7"
```
## 系统要求
- **操作系统:** Kali Linux (2022+)、Parrot OS 或任何基于 Debian/Ubuntu 的发行版
- **权限:** 需要 root (sudo) 权限以进行扫描和修复
- **网络:** 首次安装工具和更新定义时需要网络连接
- **VM 软件:** VMware Workstation Pro、VirtualBox、QEMU/KVM 或任何虚拟机监控程序
## VMware 隔离设置(扫描前必读)
在 VM 内部运行 vmsec 只是防护工作的一半。请确保首先锁定您的 VMware 设置:
| VMware 设置 | 值 |
|---|---|
| 共享文件夹(选项选项卡) | 已禁用 |
| 复制/粘贴(客户机隔离) | 已禁用 |
| 拖放(客户机隔离) | 已禁用 |
| 网络适配器 | 仅主机模式或 NAT(绝不使用桥接模式) |
| USB 控制器 | 移除或限制 |
| 快照 | 在每次高风险会话前拍摄快照 |
还需将以下行添加到您的 `.vmx` 文件中:
```
isolation.tools.copy.disable = "TRUE"
isolation.tools.paste.disable = "TRUE"
isolation.tools.dnd.disable = "TRUE"
isolation.tools.hgfs.disable = "TRUE"
```
## 仓库结构
```
vmsec/
├── vmsec ← Main executable (entry point)
├── install.sh ← One-command installer
├── uninstall.sh ← Uninstaller
├── README.md
├── LICENSE ← GPL v3
├── CHANGELOG.md
├── lib/
│ ├── utils.sh ← Colors, logging, record_finding(), record_suggestion()
│ ├── config.sh ← Configuration loader
│ ├── installer.sh ← apt tool installation + post-install setup
│ ├── reporter.sh ← Text + HTML report generation
│ ├── remediator.sh ← Auto and manual remediation engine
│ └── suggester.sh ← Auto and manual suggestion engine
├── scanners/
│ ├── scan_clamav.sh ← ClamAV virus/malware scan
│ ├── scan_rkhunter.sh ← rkhunter rootkit scan
│ ├── scan_chkrootkit.sh ← chkrootkit rootkit scan
│ ├── scan_lynis.sh ← Lynis system audit
│ ├── scan_processes.sh ← Suspicious processes + keyloggers
│ ├── scan_network.sh ← Network + C2 + firewall
│ ├── scan_crontabs.sh ← Malicious cron jobs
│ ├── scan_filesystem.sh ← SUID/AIDE/filesystem integrity
│ ├── scan_users.sh ← User accounts + SSH + sudo
│ └── scan_services.sh ← Dangerous/unnecessary services
├── conf/
│ └── vmsec.conf ← Default configuration
├── man/
│ └── vmsec.1 ← Man page source
└── reports/ ← Generated reports saved here
```
## 许可证
**GPL v3** —— 永久免费开源。
有关完整文本,请参见 [LICENSE](LICENSE)。
## 免责声明
vmsec 按“原样”提供,仅用于教育和防御性安全目的。它不保证能检测出所有威胁。安全扫描结果可能包含误报,尤其是在预装了许多攻击性安全工具的 Kali Linux 上。在应用修复之前,请务必仔细审查结果。对于因滥用自动修复功能而造成的任何系统损坏,作者概不负责。
标签:AIDE, auditd, C2连接检测, chkrootkit, ClamAV, Cutter, DNS 解析, EDR, GPLv3, GPT, HTTP工具, Lynis, Mr. Robot, Python 3.9+, rkhunter, Web 安全测试, Web归档检索, 后门检测, 子域名变形, 安全基线, 安全扫描, 安全报告, 应用安全, 开源安全工具, 教学环境, 无线安全, 时序注入, 木马检测, 模块化设计, 漏洞管理, 终端安全, 网络安全审计, 脆弱性评估, 自动化修复, 自定义DNS解析器, 虚拟机安全, 逆向工程平台, 键盘记录器检测