挖矿病毒排查分析

📅 2026/7/2 8:34:19
挖矿病毒排查分析
一、挖矿病毒概述1. 常见植入流程攻击者上传并执行恶意程序或脚本。恶意程序启动后可能会清理其他同类进程或竞争样本。下载或释放挖矿程序。写入权限维持与持久化机制确保重启后仍可运行。2. 排查方向典型危害CPU 拉满网络阻塞服务器卡顿存在可疑外联3. 分析定性思路可以从以下两个方向进行定性分析进程分析通过可疑进程找到对应文件再将样本上传到威胁情报平台分析。网络分析通过异常外联找到 URL 或 IP再提交到威胁情报平台分析。4. 应急处置思路总体流程分析入口点 → 切断入口点 → 排查并清理病毒程序重点检查重启生效项启动项、计划任务等入侵入口利用了什么漏洞或弱口令及时隔离主机阻断异常网络通信二、靶场案例1. Windows Server 2022 挖矿事件账号Administrator / zgsf123参考https://mp.weixin.qq.com/s/Z789QrPTAopCc7RftAK1QQ练习重点如何定性为挖矿事件处置挖矿服务及任务处置挖矿攻击入口点修复攻击入口点隐患2. Linux CentOS 挖矿事件账号root / 1qaz2wsx3edc参考https://mp.weixin.qq.com/s/OuzkbDRVqeNmH_kgptjwug练习重点如何定性为挖矿事件处置挖矿服务及任务处置挖矿攻击入口点修复攻击入口点隐患三、Linux基础排查命令1. 进程查看查看进程资源占用挖矿程序通常会持续占用大量 CPUtop查看外联进程情况挖矿病毒通常存在异常网络连接netstat -anpt根据 PID 查看具体执行命令从而定位可疑文件路径ps -f PID2. 启动项检查列出当前用户计划任务crontab -l编辑当前用户计划任务crontab -e3. 服务检查查看所有服务状态systemctl list-units --typeservice --all只看运行中的服务systemctl list-units --typeservice --staterunning查看已启用开机自启动的服务systemctl list-unit-files --typeservice --stateenabled重点关注伪装成系统组件的可疑名字例如systemd-updateupdatekswapdclean查看某个服务的详细状态systemctl status ServiceName查看服务日志journalctl -u systemd-update.service -xe查看最近一小时日志journalctl --since 1 hour ago -u systemd-update.service4. 服务清除示例# 1. 停止服务防止它自动重启 sudo systemctl stop systemd-update.service # 2. 禁用开机自启动 sudo systemctl disable systemd-update.service # 3. 删除服务文件 sudo rm -f /etc/systemd/system/systemd-update.service # 如果有 timer定时器也一起删除 sudo rm -f /etc/systemd/system/systemd-update.timer # 4. 重新加载 systemd 配置 sudo systemctl daemon-reload sudo systemctl reset-failed # 5. 删除恶意脚本和日志 rm -f ~/.config/systemd-update.sh ~/.config/mining.log # 6. 额外清理 cron防止双保险 ls -al /etc/cron.* crontab -l | grep -v systemd-update | crontab - # 或直接 crontab -r清空所有用户 cron谨慎使用四、模拟样本与排查练习下面以一个简单的模拟脚本进行排查练习。1. 挖矿模拟脚本#!/bin/bash # # 【三重保险】守护进程 Systemd Timer Cron 持久化 # 仅供应急响应学习和红蓝对抗使用 - 教育目的 # 模拟真实挖矿病毒的多层“杀不死”机制 # MINER_NAMEminer_payload.sh WATCHDOG_NAMEwatchdog_guard.sh SERVICE_NAMEsystem-update TIMER_NAMEsystem-update.timer MINER_PATH/usr/local/bin/$MINER_NAME WATCHDOG_PATH/usr/local/bin/$WATCHDOG_NAME SERVICE_FILE/etc/systemd/system/${SERVICE_NAME}.service TIMER_FILE/etc/systemd/system/${SERVICE_NAME}.timer LOG_FILE/var/log/system-update.log WATCHDOG_LOG/var/log/watchdog.log # 1. 自我复制 cp $0 $MINER_PATH 2/dev/null || true chmod x $MINER_PATH # 2. 创建主挖矿脚本假 CPU 负载 cat $MINER_PATH EOF2 #!/bin/bash LOG_FILE/var/log/system-update.log echo [] Simulated Monero mining started (fake only)... $LOG_FILE while true; do result0 for i in {1..800000}; do result$((result i * i % 1000000)) done HASHRATE$((RANDOM % 35 65)) echo $(date %Y-%m-%d %H:%M:%S) | Block mined! Hashrate: ${HASHRATE} KH/s | Wallet: fake_xmr_wallet_abc123 $LOG_FILE sleep 2 done EOF2 chmod x $MINER_PATH # 3. 创建守护进程Watchdog cat $WATCHDOG_PATH EOF3 #!/bin/bash MINER_PATH/usr/local/bin/miner_payload.sh WATCHDOG_LOG/var/log/watchdog.log while true; do if ! pgrep -f miner_payload.sh /dev/null; then echo [$(date %Y-%m-%d %H:%M:%S)] Miner died → restarting... $WATCHDOG_LOG nohup bash $MINER_PATH /dev/null 21 fi sleep 3 done EOF3 chmod x $WATCHDOG_PATH # 4. 创建 Systemd Service运行 Watchdog cat $SERVICE_FILE EOF [Unit] DescriptionSystem Update Service Afternetwork.target [Service] Typesimple ExecStart$WATCHDOG_PATH Restartalways RestartSec2 Userroot Nice10 [Install] WantedBymulti-user.target EOF # 5. 创建 Systemd Timer每 5 秒触发一次 cat $TIMER_FILE EOF [Unit] DescriptionSystem Update Timer (Watchdog) [Timer] OnBootSec5 OnUnitActiveSec5 AccuracySec1us [Install] WantedBytimers.target EOF # 6. 启用 Systemd 服务和 Timer systemctl daemon-reload systemctl enable --now $SERVICE_NAME.service systemctl enable --now $SERVICE_NAME.timer echo [] Systemd Service Timer 已启用 # 7. 添加 Cron 多重计划任务reboot 每分钟检查 # 用户级 cron (crontab -l 2/dev/null; echo reboot nohup $WATCHDOG_PATH /dev/null 21 ) | crontab - # 系统级 cron cat /etc/cron.d/system-update EOF */1 * * * * root nohup $WATCHDOG_PATH /dev/null 21 reboot root nohup $WATCHDOG_PATH /dev/null 21 EOF echo [] Cron 计划任务已添加reboot 每分钟 echo [] 三重保险安装完成Watchdog Timer Cron echo [] 现在开始模拟挖矿... # 立即启动一次 nohup bash $MINER_PATH /dev/null 21 echo echo 安装完成请用下面命令练习排查和清除 echo 2. 启动模拟脚本chmod x eval.sh ./eval.sh3. 自评估脚本#!/bin/bash # # 三重保险挖矿病毒清理彻底度自测评分脚本 # 专为 watchdog systemd timer cron 三重机制设计 # echo echo 三重保险挖矿病毒清理彻底度评分工具 echo 当前时间: $(date) echo SCORE0 MAX_SCORE100 ISSUES() echo [1/8] 检查用户态恶意进程... if pgrep -f miner_payload.sh|watchdog_guard.sh /dev/null; then echo × 发现残留恶意进程miner 或 watchdog ps aux | grep -E miner_payload|watchdog_guard | grep -v grep ISSUES(残留进程) else echo ✓ 无用户态恶意进程 ((SCORE 20)) fi echo [2/8] 检查 Systemd Service... if systemctl list-unit-files 2/dev/null | grep -q system-update.service; then echo × 发现残留 system-update.service systemctl status system-update.service 2/dev/null | cat ISSUES(残留 Service) else echo ✓ system-update.service 已清理 ((SCORE 15)) fi echo [3/8] 检查 Systemd Timer... if systemctl list-unit-files 2/dev/null | grep -q system-update.timer; then echo × 发现残留 system-update.timer systemctl status system-update.timer 2/dev/null | cat ISSUES(残留 Timer) else echo ✓ system-update.timer 已清理 ((SCORE 15)) fi echo [4/8] 检查核心恶意文件... FILES_FOUND0 for file in /usr/local/bin/miner_payload.sh /usr/local/bin/watchdog_guard.sh /var/log/system-update.log /var/log/watchdog.log; do if [ -f $file ]; then echo × 发现残留文件: $file ((FILES_FOUND)) ISSUES(残留文件) fi done if [ $FILES_FOUND -eq 0 ]; then echo ✓ 所有核心恶意文件已删除 ((SCORE 20)) fi echo [5/8] 检查 Crontab用户级 系统级... CRON_USER$(crontab -l 2/dev/null | grep -E watchdog_guard|miner_payload|system-update) CRON_SYS$(ls /etc/cron.d/system-update 2/dev/null) if [ -n $CRON_USER ] || [ -n $CRON_SYS ]; then echo × 发现残留 Cron 任务 crontab -l 2/dev/null | grep -E watchdog|miner [ -f /etc/cron.d/system-update ] echo 系统级 cron: /etc/cron.d/system-update ISSUES(残留 Cron) else echo ✓ Crontab 已完全清理 ((SCORE 15)) fi echo [6/8] 检查日志文件... if [ -f /var/log/system-update.log ] || [ -f /var/log/watchdog.log ]; then echo × 发现残留日志文件 ISSUES(残留日志) else ((SCORE 5)) fi echo [7/8] 检查 systemd 缓存残留... if systemctl list-unit-files --typeservice,timer 2/dev/null | grep -q system-update; then echo × systemd 仍有 system-update 相关单元缓存 ISSUES(systemd 缓存) else ((SCORE 5)) fi echo [8/8] 最终验证... echo echo echo 你的清理彻底度得分: **$SCORE / $MAX_SCORE** 分 if [ $SCORE -ge 90 ]; then echo ✅ 优秀清理非常彻底三重保险机制已被完全清除。 elif [ $SCORE -ge 75 ]; then echo ✅ 良好基本清理干净还有少量改进空间。 elif [ $SCORE -ge 60 ]; then echo ⚠️ 中等还有明显残留重点检查 service/timer 或 cron。 else echo ❌ 清理不彻底请重点处理 systemd 和文件残留。 fi if [ ${#ISSUES[]} -gt 0 ]; then echo echo 发现的问题 for issue in ${ISSUES[]}; do echo - $issue done fi echo echo 清理建议 echo 1. systemctl stop system-update.service system-update.timer echo 2. systemctl disable system-update.service system-update.timer echo 3. rm -f /etc/systemd/system/system-update.* echo 4. systemctl daemon-reload systemctl reset-failed echo 5. reboot 后再次运行本脚本验证 echo 五、实际排查过程记录1. 使用top定位可疑进程两个进程都比较可疑先查看第一个ps -f 5126发现是一个挖矿进程这里是通过日志方式模拟挖矿。尝试停止kill -9 5126看似停止后再查看另一个ps -f 5160同样可疑继续尝试停止kill -9 5160进程又被拉起说明存在守护机制。2. 检查守护进程与服务systemctl status 9687尝试停止服务systemctl stop system-update显示刚停止又被启动因此继续检查system-update.timersystemctl status system-update.timer该定时器相当于看门狗会持续监听服务状态一旦停止就再次拉起。先处理看门狗服务# 停止 systemctl stop system-update.timer # 取消自启动 systemctl disable system-update.timer # 查看状态 systemctl status system-update.timer # 删除服务 rm -rf /etc/systemd/system/system-update.timer再处理挖矿服务# 停止 systemctl stop system-update # 取消自启动 systemctl disable system-update # 查看状态 systemctl status system-update # 删除服务 rm -rf /etc/systemd/system/system-update3. 继续检查系统占用top4. 定位并删除核心脚本查看miner_payload.sh和watchdog_guard.sh说明miner_payload.sh主挖矿脚本watchdog_guard.sh守护进程脚本删除这两个脚本rm -rf /usr/local/bin/miner_payload.sh /usr/local/bin/watchdog_guard.sh随后 kill 掉相关进程进程恢复正常。5. 检查启动项与计划任务查看当前用户计划任务crontab -l编辑计划任务crontab -e查看隐藏定时目录ls -al /etc/cron.*删除恶意定时任务rm -rf /etc/cron.d/system-update立即杀掉所有相关进程防止 watchdog 继续拉起sudo pkill -9 -f miner_payload.sh sudo pkill -9 -f watchdog_guard.sh sudo pkill -f system-update清理日志文件rm -rf /var/log/system-update.log rm -rf /var/log/watchdog.log使用自评脚本检测六、题解 / 最终清理命令# 1. 强制杀死两个核心脚本的所有进程 sudo pkill -9 -f miner_payload.sh sudo pkill -9 -f watchdog_guard.sh # 2. 停止并禁用 systemd 相关服务防止 watchdog 被再次拉起 sudo systemctl stop system-update.service system-update.timer 2/dev/null || true sudo systemctl disable system-update.service system-update.timer 2/dev/null || true # 3. 删除服务文件 sudo rm -f /etc/systemd/system/system-update.* # 4. 删除这两个核心恶意脚本 sudo rm -f /usr/local/bin/miner_payload.sh sudo rm -f /usr/local/bin/watchdog_guard.sh # 5. 删除产生的日志 sudo rm -f /var/log/system-update.log sudo rm -f /var/log/watchdog.log rm -rf /var/log/system-update.log # 6. 清理 cron crontab -r sudo rm -f /etc/cron.d/system-update # 7. 清理 systemd sudo systemctl daemon-reload sudo systemctl reset-failed # 8. 最后再杀一次保险 sudo pkill -9 -f miner_payload|watchdog_guard|system-update echo 核心脚本已删除请重启机器后验证 echo ps aux | grep -E miner|watchdog七、结合 AI 巡检工具的排查记录使用 AI 巡检工具https://github.com/hzhsec/AI-Security-Agent配置好api后1. Payload你是一名具备 root 权限和 shell 执行能力的 Linux 应急响应助手。当前主机疑似感染挖矿病毒表现为 CPU 占用异常偏高。请直接进入实战模式自主排查异常进程、异常网络连接、可疑 systemd 服务、定时任务、启动项、可疑文件和持久化机制并基于证据逐项分析和清理。不要只给建议必须给出并执行完整命令。对于每一个恶意 systemd 服务必须严格按以下顺序清理systemctl stop → systemctl disable → 删除 service 文件 → systemctl daemon-reload。同时清理相关脚本、二进制、计划任务、启动项、守护脚本、下载器、残留日志、临时文件和隐藏文件避免删后复活。最后输出1. 感染概述2. 排查结果3. 恶意项分析4. 实际执行的清理命令5. 完整的一键清理脚本6. 详细的病毒原理报告。要求内容严谨、命令可复制、执行顺序规范、尽量无残留。2. 开始前3. 启动后