记一次挖矿病毒的溯源
字数 886 2025-08-10 08:28:24

Linux挖矿病毒溯源与清理实战指南

1. 挖矿病毒初步识别

症状表现

  • Web服务异常卡顿
  • CPU占用率高达99%
  • 网络连接数较少(区别于DDoS攻击)
  • 通过top命令查看无明显高占用进程(可能存在进程隐藏)

2. 排查隐藏进程

/proc目录分析

/proc是虚拟文件系统,包含系统内核和运行进程信息:

  • 数字命名子目录代表运行中的进程
  • 包含进程状态、内存使用、打开文件列表等信息

Python检测脚本

import os

def get_max_pid():
    pid_list = [int(pid) for pid in os.listdir('/proc') if pid.isdigit()]
    return str(max(pid_list))

def get_existing_process_ids(max_pid):
    process_ids = []
    for pid in range(1, int(max_pid) + 1):
        if os.path.exists('/proc/' + str(pid)):
            process_ids.append(str(pid))
    return process_ids

def get_ps_aux_process_ids():
    process_ids = []
    output = os.popen('ps aux').read()
    lines = output.split('\n')
    for line in lines[1:]:
        if line.strip():
            pid = line.split()[1]
            process_ids.append(pid)
    return process_ids

max_pid = get_max_pid()
existing_process_ids = get_existing_process_ids(max_pid)
ps_aux_process_ids = get_ps_aux_process_ids()

for pid in existing_process_ids:
    if pid not in ps_aux_process_ids:
        print('Hidden PID {}'.format(pid))

注意:可能检测到大量僵尸进程,需进一步筛选

3. 网络连接分析

关键命令

netstat -antp

常见挖矿特征

  • 连接可疑IP(如案例中的47.130.146.28)
  • 关联域名(如log.softgoldinformation.com)
  • 常见矿池关联:moneroocean、xmrig等

临时处置措施

  • 限制服务器只允许访问国内IP
  • 阻断与矿池的连接可降低CPU占用

4. 入侵途径分析

常见入口点

  • Redis未设置密码且暴露在公网
  • 其他常见漏洞:弱口令、未修复的漏洞等

Redis安全检查

ps aux | grep redis
# 尝试空密码连接
redis-cli -h <IP>

5. 清理与补救措施

关键检查点

  1. 定时任务检查
cat /etc/crontab
  1. 临时目录检查
ls -la /tmp
ls -la /var/tmp
  1. 用户账户检查
cat /etc/passwd
ls -la /root/.ssh/
  1. 全盘扫描
clamscan -r /

清理脚本示例

#!/bin/sh
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

while [ 1 ]
do
    killall /tmp/*
    killall /var/tmp/*
    
    # 清理恶意定时任务
    crontab -l | sed '/195.3.146.118/d' | crontab -
    crontab -l | sed '/cf.sh/d' | crontab -
    crontab -l | sed '/xms/d' | crontab -
    crontab -l | sed '/kwork.sh/d' | crontab -
    crontab -l | sed '/cyberium/d' | crontab -
    crontab -l | sed '/newdat/d' | crontab -
    
    # 清理常见挖矿进程
    ps aux | grep -v grep | grep 'javaupDates' | awk '{print $2}' | xargs -I % kill -9 %
    ps aux | grep -v grep | grep 'givemexyz' | awk '{print $2}' | xargs -I % kill -9 %
    ps aux | grep -v grep | grep 'dbused' | awk '{print $2}' | xargs -I % kill -9 %
    ps aux | grep -v grep | grep 'kdevtmpfsi' | awk '{print $2}' | xargs -I % kill -9 %
    ps aux | grep -v grep | grep 'kinsing' | awk '{print $2}' | xargs -I % kill -9 %
    
    # 清理下载工具进程
    ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep 'wget' | awk '{print $2}' | xargs -I % kill -9 %
    ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep 'curl' | awk '{print $2}' | xargs -I % kill -9 %
    ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep 'urlopen' | awk '{print $2}' | xargs -I % kill -9 %
    
    # 其他常见挖矿进程
    pgrep JavaUpdate | xargs -I % kill -9 %
    pgrep kinsing | xargs -I % kill -9 %
    pgrep donate | xargs -I % kill -9 %
    pgrep kdevtmpfsi | xargs -I % kill -9 %
    pgrep trace | xargs -I % kill -9 %
    pgrep sysupdate | xargs -I % kill -9 %
    pgrep mysqlserver | xargs -I % kill -9 %
    
    # 高CPU占用进程处理
    p=$(ps auxf|grep solrd|awk '{if($3>=60.0) print $2}')
    name=""$p
    if [ -z "$name" ]
    then
        pkill solrd
        ps aux | grep -v grep | grep -v 'java|redis|weblogic|solr|mongod|mysql|oracle|tomcat|grep|postgres|confluence|awk|aux|sh' | awk '{if($3>60.0) print $2}' | xargs -I % kill -9 %
        nohup /tmp/.solr/solrd &>>/dev/null &
        sleep 30
        nohup /tmp/.solr/genshin &>>/dev/null &
        sleep 30
    else
        :
    fi
done

最终清理步骤

  1. 删除临时目录脚本
rm -rf /tmp/*.sh
  1. 加固Redis
  • 设置密码认证
  • 限制访问IP

6. 挖矿病毒脚本分析

典型行为模式

  1. 清除竞争对手:先kill掉其他挖矿进程
  2. 设置持久化:添加定时任务
  3. 下载执行:根据系统架构下载对应恶意程序
  4. 自我清理:清除自身痕迹

常见下载源

如案例中的http://94.103.87.71/

7. 预防措施

  1. 服务配置原则
  • 避免直接复制网络教程中的不安全配置
  • 参考官方文档进行安全配置
  1. Redis安全建议
  • 必须设置强密码
  • 禁止公网暴露
  • 启用防火墙限制访问
  1. 持续监控
  • 定期检查CPU使用率异常
  • 监控异常网络连接
  • 建立基线行为模型
  1. 安全意识
  • 开发人员安全培训
  • 建立安全配置规范
  • 重要变更安全评审

8. 验证清理效果

清理后观察一段时间(建议24小时):

  • CPU占用率是否恢复正常
  • 是否重新出现可疑进程
  • 网络连接是否仍有异常

如问题重现,说明存在残留后门,需进行更彻底的排查。

Linux挖矿病毒溯源与清理实战指南 1. 挖矿病毒初步识别 症状表现 Web服务异常卡顿 CPU占用率高达99% 网络连接数较少(区别于DDoS攻击) 通过 top 命令查看无明显高占用进程(可能存在进程隐藏) 2. 排查隐藏进程 /proc目录分析 /proc 是虚拟文件系统,包含系统内核和运行进程信息: 数字命名子目录代表运行中的进程 包含进程状态、内存使用、打开文件列表等信息 Python检测脚本 注意:可能检测到大量僵尸进程,需进一步筛选 3. 网络连接分析 关键命令 常见挖矿特征 连接可疑IP(如案例中的47.130.146.28) 关联域名(如log.softgoldinformation.com) 常见矿池关联:moneroocean、xmrig等 临时处置措施 限制服务器只允许访问国内IP 阻断与矿池的连接可降低CPU占用 4. 入侵途径分析 常见入口点 Redis未设置密码且暴露在公网 其他常见漏洞:弱口令、未修复的漏洞等 Redis安全检查 5. 清理与补救措施 关键检查点 定时任务检查 临时目录检查 用户账户检查 全盘扫描 清理脚本示例 最终清理步骤 删除临时目录脚本 加固Redis 设置密码认证 限制访问IP 6. 挖矿病毒脚本分析 典型行为模式 清除竞争对手 :先kill掉其他挖矿进程 设置持久化 :添加定时任务 下载执行 :根据系统架构下载对应恶意程序 自我清理 :清除自身痕迹 常见下载源 如案例中的 http://94.103.87.71/ 7. 预防措施 服务配置原则 避免直接复制网络教程中的不安全配置 参考官方文档进行安全配置 Redis安全建议 必须设置强密码 禁止公网暴露 启用防火墙限制访问 持续监控 定期检查CPU使用率异常 监控异常网络连接 建立基线行为模型 安全意识 开发人员安全培训 建立安全配置规范 重要变更安全评审 8. 验证清理效果 清理后观察一段时间(建议24小时): CPU占用率是否恢复正常 是否重新出现可疑进程 网络连接是否仍有异常 如问题重现,说明存在残留后门,需进行更彻底的排查。