1. 异常现象服务器CPU飙升至100%的诡异事件那天凌晨3点我的手机突然被运维监控系统的告警短信轰炸——某台生产服务器的CPU使用率持续半小时维持在98%。睡眼惺忪地连上服务器后top命令显示的结果却让我瞬间清醒系统显示CPU空闲率高达80%但实际响应速度慢得像老牛拉车。这种明显的矛盾现象正是挖矿病毒最典型的伪装手段。通过htop工具进一步排查发现一个名为ddns的进程正在疯狂吞噬CPU资源。更诡异的是这个进程在常规的top视图里就像穿了隐身衣只有加上-a参数才能看到它的真面目。此时查看/var/tmp目录发现多出了几个可疑的隐藏文件夹ls -la /var/tmp drwxr-xr-x 2 root root 4096 Jul 15 03:15 .crypto drwx------ 3 root root 4096 Jul 15 03:17 .systemd-private2. 攻击溯源Redis未授权访问漏洞的致命代价通过查看/var/log/secure日志发现大量来自境外IP的异常登录尝试。但真正让我后背发凉的是在redis日志中发现的记录cat /var/log/redis/redis.log ... Accepted 123.456.789.123:54321 ... Client closed connection ... CONFIG SET dir /var/spool/cron ... CONFIG SET dbfilename root攻击者利用Redis未授权访问漏洞通过以下步骤完成了入侵连接暴露在公网的Redis服务6379端口修改Redis持久化目录到系统定时任务路径写入恶意定时任务实现持久化下载挖矿程序并隐藏进程3. 系统命令被篡改一场猫鼠游戏当我尝试用常规方式清理病毒时发现多个系统命令已被动过手脚3.1 top命令的狸猫换太子file /usr/bin/top /usr/bin/top: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped正常的top命令应该带有调试信息这个明显是被替换的版本。通过strings命令分析发现其中包含过滤特定进程名的代码逻辑。3.2 chattr命令的神秘消失which chattr /usr/bin/chattr: No such file or directory攻击者故意删除了这个关键命令防止我们解除文件锁定。我从另一台安全服务器拷贝了chattr二进制文件但执行时又遇到libc库版本不兼容的问题。最终通过静态编译版本才解决问题wget http://mirror.centos.org/centos/7/os/x86_64/Packages/.../e2fsprogs-static-1.42.9-19.el7.x86_64.rpm rpm2cpio e2fsprogs-static-1.42.9-19.el7.x86_64.rpm | cpio -idmv4. 深度清理斩草除根的操作指南4.1 解除文件锁定三步走恢复chattr命令如上所述解除关键文件锁定chattr -ia /etc/passwd chattr -ia /etc/shadow chattr -ia /etc/crontab清理被篡改的命令rpm -Vf /bin/ps /bin/top /usr/bin/netstat4.2 清理病毒驻留点# 挖矿程序本体 rm -rf /var/tmp/.crypto /tmp/.X11-unix # 定时任务 crontab -r rm -f /etc/cron.d/zzh /var/spool/cron/root # SSH后门 chattr -ia /root/.ssh/authorized_keys echo /root/.ssh/authorized_keys4.3 进程与用户清理# 结束挖矿进程 pkill -9 ddns pkill -9 kworkerds # 删除恶意用户 userdel lsb groupdel cryptogroup # 检查异常sudo权限 visudo5. 系统加固从亡羊补牢到未雨绸缪5.1 Redis安全配置# 禁用危险命令 rename-command FLUSHALL rename-command CONFIG # 启用认证 requirepass YourSuperStrongPassword123! # 绑定内网IP bind 127.0.0.1 10.0.0.0/85.2 文件系统防护# 关键目录监控 yum install auditd auditctl -w /usr/bin/ -p wa -k system_binaries auditctl -w /etc/cron.d/ -p wa -k cron_jobs # 防止特权提升 chmod 750 /usr/bin/chattr /usr/bin/sudo5.3 网络层防护# 封禁矿池IP iptables -A OUTPUT -p tcp -d xmr.f2pool.com -j DROP # 启用基础监控 yum install sysstat sar -u 1 10 # CPU使用率监控这次事件让我深刻体会到安全防护就像洋葱必须层层设防。即使是一个小小的Redis配置疏忽也可能导致整个系统沦陷。现在我的运维checklist里永远多了一条任何暴露在公网的服务必须像保护银行密码一样保护它的访问权限。
从Redis漏洞到系统沦陷:一次挖矿病毒入侵的深度溯源与清除实录
1. 异常现象服务器CPU飙升至100%的诡异事件那天凌晨3点我的手机突然被运维监控系统的告警短信轰炸——某台生产服务器的CPU使用率持续半小时维持在98%。睡眼惺忪地连上服务器后top命令显示的结果却让我瞬间清醒系统显示CPU空闲率高达80%但实际响应速度慢得像老牛拉车。这种明显的矛盾现象正是挖矿病毒最典型的伪装手段。通过htop工具进一步排查发现一个名为ddns的进程正在疯狂吞噬CPU资源。更诡异的是这个进程在常规的top视图里就像穿了隐身衣只有加上-a参数才能看到它的真面目。此时查看/var/tmp目录发现多出了几个可疑的隐藏文件夹ls -la /var/tmp drwxr-xr-x 2 root root 4096 Jul 15 03:15 .crypto drwx------ 3 root root 4096 Jul 15 03:17 .systemd-private2. 攻击溯源Redis未授权访问漏洞的致命代价通过查看/var/log/secure日志发现大量来自境外IP的异常登录尝试。但真正让我后背发凉的是在redis日志中发现的记录cat /var/log/redis/redis.log ... Accepted 123.456.789.123:54321 ... Client closed connection ... CONFIG SET dir /var/spool/cron ... CONFIG SET dbfilename root攻击者利用Redis未授权访问漏洞通过以下步骤完成了入侵连接暴露在公网的Redis服务6379端口修改Redis持久化目录到系统定时任务路径写入恶意定时任务实现持久化下载挖矿程序并隐藏进程3. 系统命令被篡改一场猫鼠游戏当我尝试用常规方式清理病毒时发现多个系统命令已被动过手脚3.1 top命令的狸猫换太子file /usr/bin/top /usr/bin/top: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped正常的top命令应该带有调试信息这个明显是被替换的版本。通过strings命令分析发现其中包含过滤特定进程名的代码逻辑。3.2 chattr命令的神秘消失which chattr /usr/bin/chattr: No such file or directory攻击者故意删除了这个关键命令防止我们解除文件锁定。我从另一台安全服务器拷贝了chattr二进制文件但执行时又遇到libc库版本不兼容的问题。最终通过静态编译版本才解决问题wget http://mirror.centos.org/centos/7/os/x86_64/Packages/.../e2fsprogs-static-1.42.9-19.el7.x86_64.rpm rpm2cpio e2fsprogs-static-1.42.9-19.el7.x86_64.rpm | cpio -idmv4. 深度清理斩草除根的操作指南4.1 解除文件锁定三步走恢复chattr命令如上所述解除关键文件锁定chattr -ia /etc/passwd chattr -ia /etc/shadow chattr -ia /etc/crontab清理被篡改的命令rpm -Vf /bin/ps /bin/top /usr/bin/netstat4.2 清理病毒驻留点# 挖矿程序本体 rm -rf /var/tmp/.crypto /tmp/.X11-unix # 定时任务 crontab -r rm -f /etc/cron.d/zzh /var/spool/cron/root # SSH后门 chattr -ia /root/.ssh/authorized_keys echo /root/.ssh/authorized_keys4.3 进程与用户清理# 结束挖矿进程 pkill -9 ddns pkill -9 kworkerds # 删除恶意用户 userdel lsb groupdel cryptogroup # 检查异常sudo权限 visudo5. 系统加固从亡羊补牢到未雨绸缪5.1 Redis安全配置# 禁用危险命令 rename-command FLUSHALL rename-command CONFIG # 启用认证 requirepass YourSuperStrongPassword123! # 绑定内网IP bind 127.0.0.1 10.0.0.0/85.2 文件系统防护# 关键目录监控 yum install auditd auditctl -w /usr/bin/ -p wa -k system_binaries auditctl -w /etc/cron.d/ -p wa -k cron_jobs # 防止特权提升 chmod 750 /usr/bin/chattr /usr/bin/sudo5.3 网络层防护# 封禁矿池IP iptables -A OUTPUT -p tcp -d xmr.f2pool.com -j DROP # 启用基础监控 yum install sysstat sar -u 1 10 # CPU使用率监控这次事件让我深刻体会到安全防护就像洋葱必须层层设防。即使是一个小小的Redis配置疏忽也可能导致整个系统沦陷。现在我的运维checklist里永远多了一条任何暴露在公网的服务必须像保护银行密码一样保护它的访问权限。