你的服务器CPU突然飙到100%,但top却看不到异常进程——这可能不是性能问题,而是黑客已经控制了你的系统。
2024年12月,某金融公司的运维团队发现数据库服务器响应变慢,检查top命令显示kworker进程占用90% CPU,但进一步分析发现,该进程并非真正的内核线程,而是一个伪装成系统进程的挖矿木马。更可怕的是,黑客已经清理了一部分日志,使得传统排查手段失效。
今天,我们就以这个真实案例为背景,带你一步步完成Linux服务器入侵排查与溯源取证,涵盖:
一、入侵迹象:你的服务器可能已被控制的5个信号
1. CPU/内存异常,但top看不到可疑进程
真实案例:某企业服务器kworker进程持续高负载,最终发现是内核级rootkit隐藏了挖矿程序。
排查方法:
使用静态编译的busybox替代系统命令(防止黑客替换ps、top)。
检查/proc目录,查看异常进程的exe链接(如/proc/1234/exe -> /tmp/.hidden/xmrig)。
2. 异常网络连接(外联矿池、C2服务器)
真实案例:黑客利用某国产路由器的漏洞,组建僵尸网络,持续对外发包。
排查方法:
netstat -antp 或 ss -tulnp(检查异常ESTABLISHED连接)。
使用tcpdump抓包分析(如tcpdump -i eth0 'host 1.2.3.4')。
3. 日志被删除或篡改
真实案例:某电商服务器/var/log/secure被清空,但journalctl仍能查到残留SSH爆破记录。
排查方法:
检查/var/log/下日志文件的修改时间(ls -alt /var/log/)。
使用last、lastb查看登录历史(即使/var/log/wtmp被删,部分数据仍可恢复)。
4. 新增可疑用户或SUID文件
真实案例:黑客创建kernelsys用户(UID=0),并赋予/bin/bash SUID权限,实现持久化。
排查方法:
cat /etc/passwd(检查异常用户)。
find / -perm -4000(查找所有SUID文件)。
5. 计划任务或启动项被修改
真实案例:某企业服务器被植入.x扫描工具,并通过/etc/rc.local实现开机自启。
排查方法:
crontab -l(检查当前用户的定时任务)。
ls -al /etc/cron.*(检查系统级定时任务)。
二、入侵溯源:黑客是如何进来的?
1. SSH弱密码爆破(最常见入口)
真实案例:某公司使用root:123456,黑客1秒破解,并横向渗透整个内网。
如何发现?
检查/var/log/secure(grep "Failed password" /var/log/secure)。
使用fail2ban或denyhosts自动封禁爆破IP。
2. Web应用漏洞(如Log4j、反序列化)
真实案例:某Java应用因未修复Log4Shell漏洞,被植入Linux.DDoS.Flood.L木马。
如何发现?
检查/var/log/tomcat/catalina.out(异常Java栈轨迹)。
使用rkhunter扫描Web目录中的恶意文件。
3. 供应链攻击(恶意软件包、镜像污染)
真实案例:某企业因使用第三方Yum源,导致systemd被替换为后门版本。
如何发现?
rpm -Va(验证RPM包完整性)。
对比关键二进制文件的MD5(如md5sum /usr/bin/ps)。
三、完整取证流程(实战案例)
案例背景:
某云服务器CPU持续100%,top显示kworker占用90%,但无异常进程。
步骤1:使用可信工具排查
下载静态编译的busybox:
wgethttps://busybox.net/downloads/binaries/1.35.0/busybox-x86_64 -O /tmp/busyboxchmod +x /tmp/busybox
检查进程:
/tmp/busyboxps aux |grep-v"\["# 过滤内核线程
发现异常:/usr/sbin/.sshd(非官方SSH守护进程)。
步骤2:分析网络连接
/tmp/busyboxnetstat-antp|grep ESTAB
发现:异常连接至45.67.89.1:443(矿池地址)。
步骤3:定位恶意文件
ls-al/proc/$(pidof .sshd)/exe # 查看进程真实路径
结果:/usr/sbin/.sshd -> /lib/libudev.so(恶意动态库)。
步骤4:检查持久化手段
cat/etc/rc.local # 发现添加了/lib/libudev.so &ls-al/etc/cron.hourly/ # 发现update.sh脚本
结论:黑客通过rc.local和cron实现双重持久化。
步骤5:修复与加固
清除后门:
rm-f/lib/libudev.so /etc/cron.hourly/update.shsed-i'/libudev.so/d' /etc/rc.local
修复漏洞:
加固系统:
安装fail2ban防爆破。
部署SELinux限制进程权限。
四、如何预防下一次入侵?
1. 基础防护
✅禁用SSH密码登录,改用密钥认证。
✅ 定期更新系统(yum update / apt upgrade)。
✅ 部署HIDS(如OSSEC、Wazuh)监控文件变更。
2. 高级防护
✅网络隔离:VLAN划分,限制SSH访问源IP。
✅ 日志集中管理:使用ELK Stack收集/var/log/*。
✅ 定期漏洞扫描:OpenVAS或Nessus检测未修复漏洞。
3. 应急响应预案
备份:定期快照关键数据(rsync + tar)。
演练:每季度模拟一次入侵,测试响应速度。
五、总结
Linux服务器被入侵后,快速发现、精准溯源、彻底清理是关键。
安全不是一次性的工作,而是持续的攻防对抗。通过这个指南,你可以:
从今天开始,检查你的服务器,别让黑客比你更了解它!