Linux 与 Windows 系统挖矿程序清理
Linux与Windows系统挖矿程序深度清理指南:从排查到根治
一、挖矿程序的核心特征与危害
挖矿程序为实现持久化控制,常采用以下手段:
- 网络后门:与黑客C2服务器通信,持续接收指令
- 计划任务/自启动:通过crontab、systemd等实现开机自启
- SSH公钥植入:免密登录权限,反复植入恶意文件
- 文件劫持:修改
ld.so.preload
劫持系统命令,隐藏自身进程 - 系统账号创建:新建后门账号,长期控制主机
二、Linux系统挖矿全面清理方案
1. 紧急阻断网络通信(第一优先级)
目的:切断挖矿程序与黑客服务器的联系,防止数据泄露和进一步攻击。
# 查看当前网络连接(重点关注Foreign Address中的可疑IP)
netstat -antp# 阻断指定C2地址(需替换为实际可疑IP)
iptables -A INPUT -s 1.2.3.4 -j DROP
iptables -A OUTPUT -d 1.2.3.4 -j DROP
2. 清除计划任务(根治反复挖矿的关键)
挖矿程序常通过定时任务定期下载更新,需排查所有计划任务路径:
# 查看当前用户计划任务
crontab -l
# 查看指定用户计划任务(如root)
crontab -u root -l# 系统全局计划任务文件(重点检查以下路径)
ls -la /etc/crontab
ls -la /var/spool/cron/
ls -la /etc/cron.d/
ls -la /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/
操作:删除包含wget
、curl
下载挖矿程序或执行可疑脚本的任务行。
3. 排查与清除自启动服务
# 列出所有已启用的自启动服务
systemctl list-unit-files | grep enabled# 查看服务配置文件(替换<service_name>为实际服务名)
ls -al /etc/systemd/system/*.service
ls -al /usr/lib/systemd/system/*.service
cat /etc/systemd/system/<service_name>.service# 禁用并删除恶意服务(替换<service>为服务名)
systemctl disable <service>
rm /etc/systemd/system/<service>.service
rm /usr/lib/systemd/system/<service>.service# 传统启动脚本路径(适用于旧系统)
ls -al /etc/rc.local /etc/inittab /etc/rc.d/ /etc/init.d/
4. 清除SSH后门公钥
黑客常将公钥写入authorized_keys
实现免密登录:
# 检查当前用户和root的SSH公钥
cat ~/.ssh/authorized_keys
cat /root/.ssh/authorized_keys# 删除可疑公钥(示例:删除包含特定字符串的行)
sed -i '/cKtXBjj/d' ~/.ssh/authorized_keys
5. 修复.so劫持(隐藏进程的常见手段)
# 检查预加载的.so文件(正常应为空)
cat /etc/ld.so.preload# 清除劫持(恢复默认配置)
echo > /etc/ld.so.preload
6. 排查与删除恶意账号
# 通过日志查看新增账号记录
cat /var/log/audit/audit.log | grep useradd
cat /var/log/secure | grep 'new user'# 列出所有系统用户(检查是否有异常用户名)
cut -d: -f1 /etc/passwd# 查看用户目录创建时间(关注近期创建的账户)
stat /home/<username># 删除异常用户(以shaojiang99为例)
chattr -i /etc/passwd /etc/shadow
sed -i '/^shaojiang99:/d' /etc/passwd
sed -i '/^shaojiang99:/d' /etc/shadow
7. 对抗文件防修改属性(chattr保护)
部分挖矿程序会给关键文件设置i
属性(不可修改):
# 移除防修改属性(以passwd和crontab为例)
chattr -i /etc/passwd
chattr -i /etc/crontab
chattr -R -i /var/spool/cron/
8. 定位与终止挖矿进程
# 查看高CPU占用进程(-c显示完整命令行)
top -c
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more# 查看异常网络连接
netstat -antp# 获取进程文件路径(替换$PID为实际进程ID)
ls -al /proc/$PID/exe# 计算文件MD5(用于威胁情报查询)
md5sum /proc/$PID/exe# 终止进程并删除文件
kill -9 $PID
rm /path/to/malicious/file
三、特定挖矿家族深度清理案例
1. 伪装AliyunDuns的挖矿
# 排查自启动服务(包含xmrig、sysetmd等关键字)
grep -rlE "--donate-level|xmrig|/opt/sysetmd|A_li_yun_Duns" /etc/systemd/system/*
grep -rl "wget" /etc/cron.hourly/*# 删除恶意服务与计划任务
rm -f /etc/systemd/system/sysetmd.service
rm -f /etc/cron.hourly/0
chattr -i /etc/cron.hourly/0
2. Skidmap挖矿程序
# 清除恶意服务文件(注意清空文件内容或删除)
echo "" > /lib/systemd/system/systemd-cgroup.service
rm -f /usr/bin/systemd-cgroup
3. Cleanfda挖矿(修改系统命令)
# 恢复被篡改的命令(ps、top等)
mv /bin/ps.original /bin/ps
mv /bin/top.original /bin/top# 清除可疑计划任务
sed -i '/upat.sh/d' /etc/crontab
rm -rf /etc/upat.sh /tmp/upat.sh
四、Windows系统挖矿应急处理
1. 排查高CPU占用进程
# 实时监控CPU占用前15个进程
ps | sort -des cpu
While(1) {ps | sort -des cpu | select -f 15 | ft -a; sleep 1; cls}
2. 获取进程详细信息
# 查看进程路径与启动参数(替换xxx为PID)
wmic process where processid=xxx get processid,executablepath,commandline,name
3. 检查网络连接与hosts文件
# 查看指定端口连接(替换xxx为端口号)
netstat -ano | findstr xxx# 检查hosts文件(是否被添加矿池域名)
type C:\Windows\System32\drivers\etc\hosts
4. 清除计划任务
# 列出所有计划任务
schtasks /query
五、深度感染的终极解决方案
若手动清理无效(如病毒篡改系统内核、驱动),建议采取以下措施:
- 立即备份重要数据(避免清理过程中数据丢失)
- 重置服务器系统(Linux可通过镜像重建,Windows可恢复出厂设置)
- 重建后强化安全:
- 关闭不必要的端口(如SSH 22、远程桌面3389)
- 启用防火墙,仅允许必要服务通信
- 定期更新系统补丁,使用强密码策略
六、安全防护最佳实践
- 实时监控:使用
htop
、iftop
等工具监控资源与网络 - 日志审计:开启
auditd
记录系统关键操作 - 自动化脚本:编写定时任务检查计划任务、自启动服务的变更
- 威胁情报:定期将可疑文件MD5提交至VirusTotal等平台查询
通过以上步骤,可系统性排查并清除挖矿程序,同时结合安全防护措施防止再次感染。建议将关键操作记录日志,以便溯源和后续安全审计。