服务器CPU突然飙到99%?老运维手把手教你排查挖矿病毒,看这篇就够了!

admin 2026-06-15 05:00:53 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档记录了2026年5月15日openEuler服务器遭遇kinsing挖矿病毒的完整应急响应过程。通过监控告警发现CPU占用99%后,运维人员立即断网隔离并保存现场证据,分析出病毒通过SSH弱密码暴力破解入侵,创建了定时任务和系统服务。文章详细展示了进程分析、网络连接追踪、恶意文件清除等实操步骤,并提供了修改SSH密码、安装防火墙等安全加固建议。 综合评分: 87 文章分类: 应急响应,恶意软件,安全运营,实战经验,安全意识


cover_image

服务器CPU突然飙到99%?老运维手把手教你排查挖矿病毒,看这篇就够了!

原创

刘军军 刘军军

运维星火燎原

2026年6月13日 00:00 山西

在小说阅读器读本章

去阅读

🚨 背景

时间:2026年5月15日环境:openEuler 22.03 LTS 服务器(生产环境)发现者:运维值班工程师影响范围:单台Web服务器


一、发现异常(09:15)

1.1 监控告警触发

# 收到Prometheus告警邮件:CPU使用率持续超过95%
Subject: [ALERT] High CPU Usage on web01 (98%)

# 登录服务器查看
[root@web01 ~]# top
top-09:16:23 up 2 days, 14:32,  1 user,  load average: 32.56, 31.89, 30.23
Tasks: 345 total,   5 running, 340 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99.8 us,  0.2 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8169348 total,   123456 free,  6890124 used,  1155768 buff/cache
KiB Swap:  4194300 total,    12348 free,  4181952 used.

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
3289 root      20   0   12.3g   1.2g    164 R 99.9 15.6  89:43.16 kinsing
3290 root      20   0    8.2g 898.4m    156 R 99.9 11.3  89:39.22 kinsing
3291 root      20   0    7.8g 856.2m    148 R 99.9 10.8  89:35.45 kinsing
3292 root      20   0    7.4g 812.1m    144 R 99.9 10.3  89:31.12 kinsing

1.2 初步判断

| 异常现象 | 判断结论 | | — | — | | 多个kinsing进程占用99% CPU | 可疑进程,可能是挖矿病毒 | | 系统负载高达32+ | 资源被恶意消耗 | | Swap分区几乎耗尽 | 内存资源紧张 | | 进程名kinsing | 已知的挖矿木马名称 |


二、应急响应(09:18)

2.1 隔离网络

# 立即断网,防止病毒传播
[root@web01 ~]# ifdown ens33
# 或使用iptables阻断出站连接
[root@web01 ~]# iptables -A OUTPUT -j DROP

# 通知运维团队
[root@web01 ~]# echo "web01疑似感染挖矿病毒,已断网隔离" | mail -s "紧急告警" [email protected]

2.2 保护现场

# 保存当前进程快照
[root@web01 ~]# ps aux > /tmp/ps_before.txt
[root@web01 ~]# top -bn1 > /tmp/top_before.txt

# 保存网络连接状态
[root@web01 ~]# netstat -antp > /tmp/netstat_before.txt
[root@web01 ~]# ss -antp > /tmp/ss_before.txt

# 保存系统日志
[root@web01 ~]# cp /var/log/messages /tmp/messages_backup
[root@web01 ~]# cp /var/log/secure /tmp/secure_backup
[root@web01 ~]# cp /var/log/cron /tmp/cron_backup

三、深入分析(09:25)

3.1 分析可疑进程

# 查看kinsing进程详细信息
[root@web01 ~]# ps aux | grep kinsing
root      328999.9 15.6 130058201289448 ?    R    07:46  89:43 /tmp/kinsing -c
root      329099.9 11.3 8734264920868 ?      R    07:46  89:39 /tmp/kinsing -c
root      329199.9 10.8 8237056876544 ?      R    07:46  89:35 /tmp/kinsing -c

# 查看进程启动路径
[root@web01 ~]# ls -la /tmp/kinsing
-rwxr-xr-x1 root root 8523776 Mar 1507:46 /tmp/kinsing

# 检查文件类型
[root@web01 ~]# file /tmp/kinsing
/tmp/kinsing: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped

# 检查文件哈希值
[root@web01 ~]# md5sum /tmp/kinsing
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6  /tmp/kinsing

[root@web01 ~]# sha256sum /tmp/kinsing
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef  /tmp/kinsing

3.2 分析网络连接

# 查看kinsing进程的网络连接
[root@web01 ~]# netstat -antp | grep kinsing
tcp        0      0192.168.1.100:45678    45.33.32.156:80        ESTABLISHED 3289/kinsing
tcp        0      0192.168.1.100:54321    104.238.153.171:443    ESTABLISHED 3290/kinsing
tcp        0      0192.168.1.100:33456    172.67.135.9:443       ESTABLISHED 3291/kinsing

# 查询这些IP地址归属
# 45.33.32.156 -> 美国DigitalOcean(已知矿池IP)
# 104.238.153.171 -> 美国Cloudflare(矿池代理)
# 172.67.135.9 -> 美国Cloudflare(矿池代理)

3.3 分析进程树

# 查看进程启动关系
[root@web01 ~]# pstree -p | grep kinsing
init(1)───systemd(1001)───kinsing(3289)───kinsing(3290)───kinsing(3291)───kinsing(3292)

# 查看父进程
[root@web01 ~]# ps -ef | grep kinsing | head -1
root      3289     19907:46 ?        01:30:12 /tmp/kinsing -c

# 父进程是init(PID 1),说明是通过系统服务或定时任务启动

3.4 检查定时任务

# 检查系统定时任务
[root@web01 ~]# crontab -l
* * * * * /tmp/kinsing -c > /dev/null 2>&1

# 检查系统级定时任务
[root@web01 ~]# ls -la /etc/cron.*
-rw-r--r--  1 root root    0 Mar 1507:45 /etc/cron.d/kinsing
-rw-r--r--  1 root root   64 Mar 1507:45 /etc/cron.daily/kinsing
-rw-r--r--  1 root root   64 Mar 1507:45 /etc/cron.hourly/kinsing
-rw-r--r--  1 root root   64 Mar 1507:45 /etc/cron.weekly/kinsing

# 查看恶意定时任务内容
[root@web01 ~]# cat /etc/cron.d/kinsing
* * * * * root /tmp/kinsing -c > /dev/null 2>&1

3.5 检查系统服务

# 检查可疑系统服务
[root@web01 ~]# ls -la /etc/systemd/system/
-rw-r--r--  1 root root   123 Mar 1507:45 kinsing.service

# 查看服务内容
[root@web01 ~]# cat /etc/systemd/system/kinsing.service
[Unit]
Description=Kinsing Service

[Service]
ExecStart=/tmp/kinsing -c
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

# 检查服务状态
[root@web01 ~]# systemctl list-unit-files | grep kinsing
kinsing.service                             enabled

3.6 检查SSH密钥和登录记录

# 检查SSH密钥是否被篡改
[root@web01 ~]# ls -la /root/.ssh/
-rw-r--r--  1 root root  409 Mar 1507:45 authorized_keys

# 检查新增的SSH密钥
[root@web01 ~]# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA... miner@attackerserver

# 检查登录失败记录
[root@web01 ~]# grep "Failed password" /var/log/secure | tail -20
Mar 1507:30:01 web01 sshd[1234]: Failed password for root from 203.0.113.50 port 12345 ssh2
Mar 1507:30:05 web01 sshd[1235]: Failed password for root from 203.0.113.50 port 12346 ssh2
...

# 检查成功登录记录
[root@web01 ~]# grep "Accepted password" /var/log/secure | tail -5
Mar 1507:35:22 web01 sshd[2048]: Accepted password for root from 203.0.113.50 port 45678 ssh2

3.7 分析入侵时间线

# 查看系统日志中的可疑活动
[root@web01 ~]# grep -E "Mar 15 07:3[0-9]" /var/log/messages
Mar 1507:35:22 web01 systemd: Started Session 123 of user root.
Mar 1507:36:15 web01 crond[567]: (root) RELOAD (/var/spool/cron/root)
Mar 1507:36:20 web01 systemd[1]: Started Kinsing Service.
Mar 1507:36:25 web01 kernel: [12345.678901] Out of memory: Kill process 1234 (nginx) score 123 or sacrifice child

四、定位入侵入口(10:00)

4.1 分析攻击链

攻击时间线:
1. 07:30 - 攻击者开始暴力破解SSH密码
2. 07:35 - 暴力破解成功,获得root权限
3. 07:36 - 创建定时任务和系统服务
4. 07:36 - 下载并执行挖矿程序
5. 07:45 - 系统负载急剧上升
6. 09:15 - 监控告警触发

4.2 确认入侵方式

| 入口类型 | 证据 | 结论 | | — | — | — | | SSH暴力破解 | /var/log/secure中有大量失败尝试后成功登录 | ✅ 确认 | | 弱密码 | root密码为默认密码”admin” | ✅ 确认 | | 横向传播 | 暂未发现其他服务器感染 | ❌ 未确认 |


五、清除病毒(10:30)

5.1 停止挖矿进程

# 尝试正常终止进程
[root@web01 ~]# killall -SIGTERM kinsing

# 如果无效,强制终止
[root@web01 ~]# killall -9 kinsing

# 验证进程是否已停止
[root@web01 ~]# ps aux | grep kinsing || echo "kinsing进程已清除"
kinsing进程已清除

5.2 删除恶意文件

# 删除挖矿程序
[root@web01 ~]# rm -f /tmp/kinsing

# 删除定时任务
[root@web01 ~]# rm -f /etc/cron.d/kinsing
[root@web01 ~]# rm -f /etc/cron.daily/kinsing
[root@web01 ~]# rm -f /etc/cron.hourly/kinsing
[root@web01 ~]# rm -f /etc/cron.weekly/kinsing

# 删除用户定时任务
[root@web01 ~]# crontab -r

# 删除系统服务
[root@web01 ~]# rm -f /etc/systemd/system/kinsing.service
[root@web01 ~]# systemctl daemon-reload

5.3 清除SSH后门

# 备份并清理authorized_keys
[root@web01 ~]# cp /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bak
[root@web01 ~]# echo "" > /root/.ssh/authorized_keys

# 添加合法的SSH密钥
[root@web01 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... [email protected]" >> /root/.ssh/authorized_keys

# 重启SSH服务
[root@web01 ~]# systemctl restart sshd

5.4 修改密码

# 修改root密码(使用强密码)
[root@web01 ~]# passwd root
Changing password for user root.
New password: 输入强密码(至少12位,包含大小写字母、数字、特殊字符)
Retype new password: 确认密码
passwd: all authentication tokens updated successfully.

5.5 恢复网络

# 恢复网络连接(先确认安全后)
[root@web01 ~]# iptables -F OUTPUT
[root@web01 ~]# ifup ens33

# 验证网络
[root@web01 ~]# ping -c 3 8.8.8.8

六、系统加固(11:00)

6.1 关闭不必要的服务

# 查看运行中的服务
[root@web01 ~]# systemctl list-unit-files --type=service | grep enabled

# 关闭不必要的服务
[root@web01 ~]# systemctl disable bluetooth
[root@web01 ~]# systemctl disable cups
[root@web01 ~]# systemctl disable postfix

6.2 配置防火墙

# 配置firewalld
[root@web01 ~]# systemctl enable firewalld
[root@web01 ~]# systemctl start firewalld

# 允许必要的端口
[root@web01 ~]# firewall-cmd --add-service=ssh --permanent
[root@web01 ~]# firewall-cmd --add-service=http --permanent
[root@web01 ~]# firewall-cmd --add-service=https --permanent
[root@web01 ~]# firewall-cmd --reload

6.3 SSH安全加固

# 修改SSH配置
[root@web01 ~]# cat >> /etc/ssh/sshd_config << 'EOF'
# 禁止密码登录(使用密钥认证)
PasswordAuthentication no

# 禁止root远程登录
PermitRootLogin no

# 限制登录用户
AllowUsers ops admin

# 修改SSH端口
Port&nbsp;2222

# 限制认证尝试次数
MaxAuthTries&nbsp;3

# 启用公钥认证
PubkeyAuthentication&nbsp;yes
EOF

# 重启SSH服务
[root@web01 ~]# systemctl restart sshd

6.4 安装安全工具

# 安装fail2ban防止暴力破解
[root@web01 ~]# dnf install -y fail2ban
[root@web01 ~]# systemctl enable fail2ban
[root@web01 ~]# systemctl start fail2ban

# 配置fail2ban
[root@web01 ~]# cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled&nbsp;=true
port&nbsp;=ssh
filter&nbsp;=&nbsp;sshd
logpath&nbsp;=&nbsp;/var/log/secure
maxretry&nbsp;=3
bantime&nbsp;=3600
EOF

[root@web01 ~]# systemctl restart fail2ban

七、事后分析与报告(14:00)

7.1 入侵原因分析

| 原因 | 说明 | | — | — | | 弱密码 | root密码为默认值”admin”,极易被暴力破解 | | 开放SSH端口 | 22端口对公网开放,无访问限制 | | 未启用密钥认证 | 仅依赖密码认证 | | 未部署入侵检测 | 无fail2ban等防护措施 |

7.2 损失评估

| 类型 | 损失 | | — | — | | CPU资源 | 约2小时满负荷挖矿,影响业务服务 | | 内存/Swap | 大量内存被占用,导致部分服务OOM | | 网络带宽 | 持续向外连接矿池 | | 业务影响 | Web服务响应变慢,部分请求超时 |

7.3 改进措施

| 措施 | 负责人 | 完成时间 | | — | — | — | | 全服务器密码审计 | 运维组 | 3月16日 | | 部署fail2ban | 运维组 | 3月17日 | | 启用密钥认证 | 运维组 | 3月18日 | | 配置防火墙规则 | 网络组 | 3月19日 | | 部署EDR安全软件 | 安全组 | 3月25日 |

7.4 安全通告

【安全通告】关于web01服务器挖矿病毒入侵事件

一、事件概述
2024年3月15日09:15,监控系统告警显示web01服务器CPU使用率异常(98%),经排查确认感染挖矿病毒(kinsing)。

二、影响范围
- 受影响服务器:web01(192.168.1.100)
- 影响时间:约2小时(07:36-09:30)
- 业务影响:Web服务响应延迟增加

三、入侵原因
- SSH暴力破解成功(弱密码"admin")
- 未启用密钥认证
- 未部署入侵检测系统

四、处置措施
1. 已清除挖矿程序和相关定时任务
2. 已修改root密码为强密码
3. 已加固SSH配置(禁止密码登录、禁止root登录)
4. 已部署fail2ban防止暴力破解
5. 已配置防火墙规则

五、后续改进计划
1. 全服务器密码审计和更新
2. 统一启用SSH密钥认证
3. 部署企业级EDR安全软件
4. 加强安全监控和告警

六、责任人
- 发现人:张三(运维工程师)
- 处置人:李四(安全工程师)
- 审核人:王五(技术总监)

【运维部】
2024年3月15日

八、命令速查

8.1 应急响应命令

| 命令 | 作用 | | — | — | | top | 查看CPU和进程状态 | | ps aux | 查看所有进程 | | netstat -antp | 查看网络连接 | | ifdown eth0 | 断开网络 | | killall -9 <进程名> | 强制终止进程 |

8.2 取证分析命令

| 命令 | 作用 | | — | — | | file <文件> | 查看文件类型 | | md5sum <文件> | 计算文件哈希 | | pstree -p | 查看进程树 | | grep "Accepted password" /var/log/secure | 查看成功登录记录 | | crontab -l | 查看定时任务 |

8.3 清理命令

| 命令 | 作用 | | — | — | | rm -f /tmp/kinsing | 删除挖矿程序 | | rm -f /etc/cron.d/kinsing | 删除定时任务 | | systemctl disable kinsing | 禁用恶意服务 | | crontab -r | 删除用户定时任务 | | passwd root | 修改root密码 |


九、预防措施

9.1 密码安全

  • 使用至少12位的强密码(包含大小写字母、数字、特殊字符)
  • 定期更换密码(建议90天)
  • 禁止使用默认密码或弱密码

9.2 SSH安全

  • 禁用密码登录,仅使用密钥认证
  • 禁止root用户远程登录
  • 修改SSH默认端口(如2222)
  • 限制允许登录的用户列表

9.3 防火墙配置

  • 仅开放必要的端口
  • 限制SSH访问来源IP
  • 配置出站规则,禁止访问已知恶意IP

9.4 监控告警

  • 配置CPU使用率告警(阈值建议>80%)
  • 配置异常进程检测
  • 配置网络流量异常告警
  • 定期检查系统日志

9.5 安全审计

  • 定期检查定时任务
  • 定期检查系统服务
  • 定期检查SSH密钥
  • 定期更新系统补丁

十、总结

本次挖矿病毒入侵事件的主要原因是弱密码缺乏安全防护措施。通过及时发现和快速响应,成功清除了病毒并加固了系统。后续需要从密码管理访问控制安全监控三个方面加强安全防护,防止类似事件再次发生。



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:运维星火燎原 刘军军 刘军军《服务器CPU突然飙到99%?老运维手把手教你排查挖矿病毒,看这篇就够了!》

评论:0   参与:  0