# mining-detector **Repository Path**: dennyellen/mining-detector ## Basic Information - **Project Name**: mining-detector - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-30 - **Last Updated**: 2026-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🛡️ 跨平台挖矿病毒自动检测工具 (Mining Malware Detector) 本项目提供了一套针对 **Linux** 和 **Windows** 系统的自动化脚本,用于检测系统中可能存在的加密货币挖矿病毒(Cryptojacking)。脚本基于常见的挖矿程序特征(进程名、网络连接端口、文件路径、持久化机制)进行多维度扫描,并可选集成 VirusTotal 威胁情报 API 进行 IP 信誉验证。 ## 📋 项目背景 根据《整治虚拟货币"挖矿"活动自查表》要求,本工具帮助企业和个人用户快速排查联网设备中的挖矿活动,覆盖以下场景: - 办公网电脑端深度检查 - 服务器端安全审计 - 容器和云环境检测 - 威胁情报关联分析 ## 📂 项目结构 ```text . ├── README.md # 项目说明文档 ├── detect_linux.sh # Linux 系统检测主脚本 (Bash) ├── detect_windows.ps1 # Windows 系统检测主脚本 (PowerShell) └── 通知.txt # 挖矿活动自查要求和检测方法参考 ``` ## ✨ 主要功能 ### 🔍 双平台完整覆盖 两个脚本均覆盖以下 **10 大核心检测维度**: #### 1. **🔍 可疑进程检测** - 扫描 CPU 占用率前 20 的进程 - 匹配常见挖矿程序关键字(`xmrig`, `miner`, `ethminer`, `kworkerx`, `systemd-helper`, `ccminer`, `cgminer`, `cpuminer`, `nicehash`, `coinminer` 等) - (Windows) 额外检测位于临时目录 (`Temp`) 的高 CPU 进程 - (Linux) 检测异常进程路径(`/tmp`, `/var/tmp`, `/dev/shm`) #### 2. **🌐 网络连接检测** - 监测连接到常见矿池端口(`3333`, `4444`, `5555`, `7777`, `8888`, `9999`, `33333`)的 `ESTABLISHED` 连接 - 关联显示对应的进程名称和 PID - 提取所有外连 IP 地址进行威胁情报比对 - (Linux) 支持 `ss` 和 `netstat` 双命令兼容 - (Windows) 使用 `Get-NetTCPConnection` 和 `netstat` 双重检测 #### 3. **📁 文件系统检测** - 递归扫描可疑目录查找挖矿相关文件 - **Linux**: `/tmp`, `/var/tmp`, `/dev/shm`, `/usr/bin`, `/usr/lib` - **Windows**: `$env:TEMP`, `C:\Windows\Temp`, `AppData\Local\Temp`, `AppData\Roaming` - 检测隐藏文件(.开头或 Hidden 属性) - (Windows) Prefetch 预读取文件分析 - (Windows) 最近 7 天修改的可疑可执行文件 - (Linux) 异常大文件检测(>5MB) #### 4. **⏱️ 持久化机制检测** - **Linux**: - 用户 `crontab` 定时任务 - 系统级 `/etc/crontab`, `/etc/cron.d/*`, `/etc/cron.daily/*`, `/etc/cron.hourly/*` - `at` 任务队列 - **Windows**: - 所有计划任务(`schtasks` 和 `Get-ScheduledTask`) - PowerShell 相关计划任务专项检测 #### 5. **⚙️ 系统服务/启动项检测** - **Linux**: - `systemd` 服务名称及配置文件内容扫描 - `/etc/rc.local` 和 `/etc/rc.d/rc.local` 启动脚本 - `/etc/init.d/` 初始化脚本 - **Windows**: - 注册表启动项(`HKLM/HKCU Run`, `Wow6432Node`) - 启动文件夹(Startup 目录) - Windows 服务检测 #### 6. **👤 用户账户检测** - **Linux**: - UID=0 的异常账户 - 最近登录记录(`last` 命令) - SSH 授权密钥检测(`authorized_keys`) - **Windows**: - 本地用户列表(`net user` 和 `Get-LocalUser`) - 管理员组成员检测 #### 7. **📝 日志检查** - **Linux**: - 系统日志(`journalctl`, `/var/log/syslog`, `/var/log/messages`) - 认证日志(`/var/log/auth.log`, `/var/log/secure`) - 命令历史记录(`.bash_history` 中的 `wget`/`curl` 下载痕迹) - **Windows**: - 安全事件日志(事件 ID: 4624, 4625, 4720, 4726, 4738) - 系统错误和警告事件 - PowerShell 操作日志 #### 8. **🔧 WMI 持久化检测 (Windows)** - WMI 事件消费者(`__EventConsumer`) - WMI 进程信息扫描 - 检测通过 WMI 实现的隐蔽持久化 #### 9. **🛡️ 防火墙和驱动检测 (Windows)** - 可疑防火墙规则(放行矿池连接) - 非系统驱动检测(Rootkit 迹象) - Hosts 文件篡改检测 #### 10. **🌐 高级环境检测** - **浏览器扩展**: Chrome 和 Firefox 恶意扩展检测 - **Docker 容器**: 容器状态和资源占用检查 - **WSL 子系统**: Windows Subsystem for Linux 中的挖矿进程 - **Kubernetes** (Linux): Pod、CronJob 资源占用检测 - **性能监控**: CPU 使用率实时监控 - **风扇转速** (Linux): 硬件温度异常检测 #### 11. **🕵️ 威胁情报比对 (可选)** - 自动提取可疑网络连接中的远程 IP - 调用 **VirusTotal API v3** 查询 IP 信誉分数 - 自动过滤内网 IP(`127.x`, `10.x`, `192.168.x`, `172.16-31.x`) - *注意:此功能需要配置有效的 API Key* ## 🚀 快速开始 ### 1. Linux 系统(包括信创 UOS、麒麟 V10 等) **前置要求:** - 需要 `root` 权限以获取完整的网络和进程信息 - 建议安装 `curl` 和 `jq` 以支持威胁情报功能 - 可选依赖:`docker`(容器检测)、`kubectl`(K8s 检测)、`sensors`/`ipmitool`(硬件监控) **运行步骤:** ```bash # 1. 赋予执行权限 chmod +x detect_linux.sh # 2. 以 root 身份运行 sudo ./detect_linux.sh ``` **输出示例:** ``` === Linux系统挖矿病毒检测报告 === 生成时间: 2026-05-26 11:00:00 主机名: server01 当前用户: root ========================================== --- [1/8] 进程检测 --- [1.1] CPU占用前20进程: [警告] 可疑进程: PID=1234 CPU=95.2% CMD=/tmp/xmrig --donate-level=1 ... 报告已保存至: linux_mining_report_20260526_110000.txt ``` ### 2. Windows 系统(办公电脑和服务器) **前置要求:** - 必须以 **管理员身份** 运行 PowerShell - PowerShell 执行策略需允许运行脚本 **运行步骤:** 1. 右键点击 PowerShell,选择 **"以管理员身份运行"** 2. 切换到脚本目录并执行: ```powershell cd "C:\Users\ssd\Desktop\网络安全\2026\挖矿检测" Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\detect_windows.ps1 ``` **输出示例:** ``` [2026-05-26 11:00:00] [INFO] === Windows系统挖矿病毒检测 === [2026-05-26 11:00:00] [INFO] 当前用户: Administrator | 时间: 2026-05-26 11:00:00 --- [1/10] 进程检测 --- [2026-05-26 11:00:01] [WARNING] 可疑进程: xmrig.exe (PID: 5678) [2026-05-26 11:00:01] [WARNING] 原因: 名称匹配(xmrig), 位于Temp目录 | CPU: 120.5 分钟 ... 报告已保存至: windows_mining_report_20260526_110000.txt ``` ## ⚙️ 配置威胁情报 (VirusTotal) 默认情况下,威胁情报检测功能是禁用的。如需启用: 1. 前往 [VirusTotal](https://www.virustotal.com/) 注册并获取免费的 Public API Key 2. 打开脚本文件编辑: - **Linux**: 编辑 detect_linux.sh - **Windows**: 编辑 detect_windows.ps1 3. 找到顶部配置区域,将占位符替换为你的真实 API Key: **Linux 配置:** ```bash VT_API_KEY="你的_VirusTotal_API_Key" ``` **Windows 配置:** ```powershell $VT_API_KEY = "你的_VirusTotal_API_Key" ``` ## 📊 检测指标说明 ### 常见挖矿进程名称 | 进程名 | 说明 | |--------|------| | `xmrig` | Monero 挖矿程序 | | `minerd` / `cpuminer` | CPU 挖矿程序 | | `ccminer` | NVIDIA GPU 挖矿程序 | | `cgminer` | ASIC/GPU 挖矿程序 | | `ethminer` | Ethereum 挖矿程序 | | `kworkerx` | 伪装系统进程的挖矿程序 | | `systemd-helper` | 伪装 systemd 的挖矿程序 | | `java` / `python` / `perl` | 被利用的合法进程 | ### 常见矿池端口 | 端口 | 说明 | |------|------| | 3333 | Stratum 协议默认端口 | | 4444 | NiceHash 常用端口 | | 5555 | 挖矿常用端口 | | 7777 | 挖矿常用端口 | | 8888 | 挖矿常用端口 | | 9999 | 挖矿常用端口 | | 33333 | 挖矿常用端口 | ### 常见藏匿路径 **Linux:** - `/tmp/`, `/var/tmp/`, `/dev/shm/` - `/usr/bin/`, `/usr/lib/` - `~/.config/`, `~/.cache/` **Windows:** - `C:\Windows\Temp\` - `C:\Users\\AppData\Local\Temp\` - `C:\Users\\AppData\Roaming\` ## 📋 检测流程参考 根据《整治虚拟货币"挖矿"活动自查表》,建议按以下流程排查: ### 办公网电脑端排查 1. **任务管理器检查**: `Ctrl+Shift+Esc` 查看 CPU/GPU 占用 2. **已安装软件核查**: 控制面板 → 程序和功能 3. **网络连接检测**: ```cmd netstat -ano | findstr "3333 4444 5555 8888 9999" ``` 4. **运行本脚本进行全面深度检测** ### 服务器端排查 1. **后台任务及定时任务**: 检查 crontab / 计划任务 2. **临时目录清理**: 检查 `/tmp` 或 `C:\Windows\Temp` 3. **资源监控**: CPU、带宽异常跑满立即排查 4. **云服务器配置核查**: 清理可疑植入脚本 5. **运行本脚本进行自动化全面检测** ## ⚠️ 注意事项 1. **误报处理**: - `java`, `python`, `perl` 等通用进程名可能会触发警报,请结合完整命令行参数和路径进一步判断 - 某些合法软件(如开发工具、数据库)也可能使用高位端口,请确认远程 IP 是否为已知矿池 - systemd 相关进程在 Linux 中是正常的,需结合具体路径和行为判断 2. **性能影响**: - 文件递归扫描在大型目录下可能耗时较长,脚本已设置最大深度限制(Linux: `-maxdepth 3`) - 建议在业务低峰期运行脚本 - Windows Prefetch 分析和最近文件扫描可能较慢 3. **隐私安全**: - 威胁情报检测会将可疑 IP 发送至 VirusTotal - 如果处于高度保密环境,请勿配置 API Key 或手动断开网络后运行基础检测 - 生成的报告文件包含系统敏感信息,请妥善保管 4. **权限要求**: - Linux 必须以 `root` 运行才能获取完整网络和进程信息 - Windows 必须以管理员身份运行 PowerShell - 部分高级检测(如 Docker、K8s)需要相应组件已安装 5. **兼容性**: - Linux 脚本兼容主流发行版(Ubuntu, CentOS, Debian, Rocky Linux 等) - 支持信创系统(UOS、麒麟 V10) - Windows 脚本支持 Windows 10/11 和 Windows Server 2016+ ## 📄 许可证 本脚本仅供网络安全学习、系统维护和企业合规自查使用,请勿用于非法用途。 ## 📞 技术支持 如发现脚本问题或有改进建议,请参考 `通知.txt` 中的详细检测方法,或联系企业网络安全团队。 --- **最后更新**: 2026-05-26 **版本**: v2.0 (完整增强版) ```