挖矿处理

说明:本文档结合日常应急处置经验与现场一线操作流程,总结了针对 Linux 服务器被挖矿感染时的排查、取证、清理与加固全流程,可按业务场景取舍。为保证取证完整性,建议 从上到下 依序执行。


1 现场信息确认

  • 记录与备份
    • 整理告警信息、日志文件和检测报告,记录告警时间、文件指纹(MD5、SHA256)以及进程信息。
    • 对系统关键日志(如 syslogauth.log)进行备份,以便后续取证和分析。
  • 确认文件状态
    • 排查可疑可执行文件路径,标记“在磁盘/已被删除/仅在内存”。
    • 通过进程 ID <可疑进程 id> 进一步核实进程是否存在异常行为。

2 取证顺序与完整性 ⭐

如果业务允许,先取证,再清理

  1. 磁盘镜像

    # 将整个系统盘做块级镜像(示例)
    sudo dd if=/dev/sda of=/mnt/forensic/sda.img bs=16M status=progress
  2. 内存转储

    • 临时方案:gcore <pid> 转储单进程;
    • 系统方案:使用 LiME 内核模块或 avml 对整机内存取证。
  3. 只读挂载镜像,用 sha256sum 校验确保完整性后再进行后续分析。


3 查看隐藏进程

# Ubuntu/Debian
sudo apt-get install unhide -y
# CentOS/RHEL
sudo yum install unhide -y

# 扫描隐藏进程 ID
sudo unhide proc
# 扫描隐藏端口
sudo unhide tcp

4 详细验证文件信息

  1. 查看进程打开的文件句柄

    # 安装 lsof
    sudo apt-get install lsof -y # Debian 系
    sudo yum install lsof -y # RHEL 系

    lsof -p <可疑进程 id>
  2. 校验文件指纹
    若发现文件句柄指向了匿名 inode、memfd 或已删除文件,可:

    cat /proc/<可疑进程 id>/fd/<fd 编号> | md5sum
    cat /proc/<可疑进程 id>/fd/<fd 编号> | sha256sum

5 终止恶意进程

# 终止前查看进程详情
ps -fp <可疑进程 id>

# 强制结束并避免孤儿进程
sudo kill -9 <可疑进程 id>

# 再次确认
ps -p <可疑进程 id>

提示:若已完成内存转储,此操作不会影响取证。


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 off

    service --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 网络侧快速侦测与封堵 ⭐

# 查看实时外连
ss -tanp | grep -E 'ESTAB|SYN-SENT'

# 临时封禁矿池 IP
sudo iptables -I OUTPUT -d <ip> -j DROP
  • 检查 /etc/resolv.conf 是否被改写。
  • 使用 tshark -f "port 53" 监控 DNS 外呼。

9 深入检查持久化点 ⭐

持久化方式快速排查命令
systemd 替身服务`systemctl list-units –type service
内核模块注入`lsmod
用户级 ~/.config/autostartfind /home -type f -name '*.desktop'
SSH authorized_keys 后门grep -R "command=" /home/*/.ssh/authorized_keys
LD_PRELOAD 注入`env

10 Rootkit 探测

sudo rkhunter --check
sudo chkrootkit

若已启用 Kernel Lockdown / UEFI Secure Boot,可关注完整性校验失败日志。


11 资源消耗基线与监控

  • 部署 psacct/systemd-cgtop 收集历史 CPU / 内存曲线。
  • Linux ≥5.8 可用 bccbpftrace(如 runqlatopensnoop) 捕获高频系统调用;结合 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 后续安全加固与持续防御

  1. 全盘安全扫描:使用杀毒或 HIDS(如 Wazuh/OSSEC)对服务器做基线检查。
  2. 更新补丁 & 权限审查:及时修补内核和中间件漏洞;收紧高权限用户。
  3. 文件系统防护:将 /tmp/var/tmp/dev/shmnoexec,nosuid,nodev 方式重新挂载,配合 tmpreaper 定期清理。
  4. 强制访问控制:针对关键路径启用 SELinux/AppArmor,自定义拒绝规则阻断私自外联与未知可执行文件落地。
  5. YARA / HIDS 规则:上线自定义 YARA 规则或 NIDS/HIDS 代理,实时告警新落地样本。
  6. 流量检测:接入 IDS/IPS,或使用 Zeek + ELK/Graylog 对网络会话做长留存分析。
  7. eBPF 可观测:在生产机器上部署 Cilium/Tetragon 等 eBPF 安全探针,实时捕获可疑系统调用。

备注

  • 所有 <占位> 需替换成实际值;带 章节建议在生产上优先执行。
  • 处置完成后务必编写总结报告,纳入运维/安全变更流程,避免同类事件复发。