挖矿处理
说明:本文档结合日常应急处置经验与现场一线操作流程,总结了针对 Linux 服务器被挖矿感染时的排查、取证、清理与加固全流程,可按业务场景取舍。为保证取证完整性,建议 从上到下 依序执行。
1 现场信息确认
- 记录与备份
- 整理告警信息、日志文件和检测报告,记录告警时间、文件指纹(MD5、SHA256)以及进程信息。
- 对系统关键日志(如
syslog
、auth.log
)进行备份,以便后续取证和分析。
- 确认文件状态
- 排查可疑可执行文件路径,标记“在磁盘/已被删除/仅在内存”。
- 通过进程 ID
<可疑进程 id>
进一步核实进程是否存在异常行为。
2 取证顺序与完整性 ⭐
如果业务允许,先取证,再清理。
磁盘镜像
# 将整个系统盘做块级镜像(示例)
sudo dd if=/dev/sda of=/mnt/forensic/sda.img bs=16M status=progress内存转储
- 临时方案:
gcore <pid>
转储单进程; - 系统方案:使用 LiME 内核模块或
avml
对整机内存取证。
- 临时方案:
只读挂载镜像,用
sha256sum
校验确保完整性后再进行后续分析。
3 查看隐藏进程
# Ubuntu/Debian |
4 详细验证文件信息
查看进程打开的文件句柄
# 安装 lsof
sudo apt-get install lsof -y # Debian 系
sudo yum install lsof -y # RHEL 系
lsof -p <可疑进程 id>校验文件指纹
若发现文件句柄指向了匿名 inode、memfd 或已删除文件,可:cat /proc/<可疑进程 id>/fd/<fd 编号> | md5sum
cat /proc/<可疑进程 id>/fd/<fd 编号> | sha256sum
5 终止恶意进程
# 终止前查看进程详情 |
提示:若已完成内存转储,此操作不会影响取证。
6 隔离或清除恶意文件
隔离文件(推荐)
mv /path/<可疑文件> /root/quarantine/
删除并加锁
rm -f /path/<可疑文件>
touch /path/<可疑文件>
chattr +i /path/<可疑文件>
7 检查持久化与自启动配置
查看系统服务
systemctl list-units --type=service
查看 SysV Init 服务(
**service**
命令)# Debian/Ubuntu
service --status-all 2>&1 | grep '+'
ls /etc/init.d/
# CentOS/RHEL
chkconfig --list | grep -v offservice --status-all
将列出所有脚本,+
表示正在运行,可配合grep
过滤可疑脚本名。排查 cron/rc.local/systemd
crontab -l
ls /etc/cron*
ls /etc/rc.local
ls /etc/systemd/system/删除异常用户与组(可选)
sudo deluser <user>
sudo delgroup <group>
getent passwd <user>
8 网络侧快速侦测与封堵 ⭐
# 查看实时外连 |
- 检查
/etc/resolv.conf
是否被改写。 - 使用
tshark -f "port 53"
监控 DNS 外呼。
9 深入检查持久化点 ⭐
持久化方式 | 快速排查命令 |
---|---|
systemd 替身服务 | `systemctl list-units –type service |
内核模块注入 | `lsmod |
用户级 ~/.config/autostart | find /home -type f -name '*.desktop' |
SSH authorized_keys 后门 | grep -R "command=" /home/*/.ssh/authorized_keys |
LD_PRELOAD 注入 | `env |
10 Rootkit 探测
sudo rkhunter --check |
若已启用 Kernel Lockdown / UEFI Secure Boot,可关注完整性校验失败日志。
11 资源消耗基线与监控
- 部署
psacct
/systemd-cgtop
收集历史 CPU / 内存曲线。 - Linux ≥5.8 可用
bcc
、bpftrace
(如runqlat
、opensnoop
) 捕获高频系统调用;结合 Grafana + Prometheus 做可视化。
12 云与容器环境特有检查
云元数据 泄露:查
curl 169.254.169.254
调用痕迹。Docker/K8s
docker ps --no-trunc # 查异常镜像
kubectl get cronjob -A # K8s 恶意任务
kubectl get pod -o yaml | grep -i initContainer
13 账户与凭据治理
密码/密钥轮换:重置 API Token、SSH Key、云密钥,确保 MFA 启用。
sudoers
审计sudo grep -R "(NOPASSWD|ALL=ALL)" /etc/sudoers*
visudo -c
14 后续安全加固与持续防御
- 全盘安全扫描:使用杀毒或 HIDS(如 Wazuh/OSSEC)对服务器做基线检查。
- 更新补丁 & 权限审查:及时修补内核和中间件漏洞;收紧高权限用户。
- 文件系统防护:将
/tmp
、/var/tmp
、/dev/shm
以noexec,nosuid,nodev
方式重新挂载,配合tmpreaper
定期清理。 - 强制访问控制:针对关键路径启用 SELinux/AppArmor,自定义拒绝规则阻断私自外联与未知可执行文件落地。
- YARA / HIDS 规则:上线自定义 YARA 规则或 NIDS/HIDS 代理,实时告警新落地样本。
- 流量检测:接入 IDS/IPS,或使用 Zeek + ELK/Graylog 对网络会话做长留存分析。
- eBPF 可观测:在生产机器上部署 Cilium/Tetragon 等 eBPF 安全探针,实时捕获可疑系统调用。
备注
- 所有
<占位>
需替换成实际值;带⭐
章节建议在生产上优先执行。 - 处置完成后务必编写总结报告,纳入运维/安全变更流程,避免同类事件复发。