Linux进程隐藏

基础命令:

通过mount bind将空目录挂载到进程在

/proc中的虚拟目录(如/proc/PID),遮蔽真实进程信息。

//必须拥有 root 权限
隐藏进程:

1
2
1.mkdir -p spoof/fd
2.sudo mount -o bind spoof /proc/1196 (1196:PID)

清除隐藏,显示出来:

1
3.sudo umount /proc/1196; ps -aux | grep 1196  # 分号分隔两个命令

检查隐藏进程:

1
cat /proc/mounts

​ 可以发现有文件系统被挂载到了进程目录下。

命令解析:

mkdir -p spoof/fd

  • 作用:创建一个空目录结构,用于后续挂载到进程的虚拟文件目录。
  • 细节
    • mkdir -p:递归创建目录,若 spoof 目录已存在,则直接在其下创建 fd 子目录;若不存在,则先创建 spoof,再创建 fd
    • spoof/fd:目录名可自定义,但通常模拟进程的 文件描述符(FD)目录结构。在 Linux 中,每个进程在 /proc/PID/fd/ 下存储其打开的文件、网络连接等信息(如 socket、管道等)。
  • 目的:用空目录 spoof/fd 替代真实进程的 /proc/1196/fd/ 目录,使系统工具读取该进程的文件描述符时,只能看到空内容,从而隐藏进程的活动痕迹。

2. sudo mount -o bind spoof /proc/1196

  • 作用:将本地目录 spoof 绑定挂载到进程 1196 的 /proc/1196 目录下。
  • 关键参数
    • sudo:因涉及 /proc 系统目录的挂载,需 root 权限
    • -o bind:绑定挂载选项,用于将一个目录或文件挂载到另一个目录,使两者共享同一文件系统视图。
    • spoof:源目录(即第一步创建的空目录)。
    • /proc/1196:目标挂载点(进程 1196 在 /proc 中的虚拟目录)。
  • 原理
    • /proc/PID/ 是 Linux 内核为每个进程动态生成的虚拟目录,包含进程的元数据(如 cmdline 命令行、status 状态、fd/ 文件描述符等)。
    • 通过 bind mount 将空目录 spoof 挂载到 /proc/1196 后,原目录下的所有文件(如 fd/cmdline 等)会被 spoof 目录的内容遮蔽。由于 spoof 为空,系统工具读取 /proc/1196/ 时将无法获取真实进程信息。
  • 效果
    • 执行 ps -auxtop 等命令时,进程 1196 可能仍显示(因进程本身未终止),但无法获取其文件描述符、命令行参数等细节,甚至可能被部分工具过滤为 “僵尸进程” 或忽略。
    • 更隐蔽的场景:若 spoof 目录中包含伪造的文件(如通过 ln -s 创建虚假的 socket 文件),可进一步误导检测工具(例如模拟正常进程的文件描述符)。

隐藏原理与局限性

核心原理:利用 /proc 文件系统的挂载性

  • /proc虚拟文件系统,其内容由内核动态生成,并非物理存储。
  • 每个进程的 /proc/PID/ 目录允许通过 bind mount 覆盖,从而篡改进程信息的展示。
  • 这一特性被部分恶意软件用于隐藏自身(如 Rootkit),或被安全工具用于模拟进程环境进行测试。

局限性

  1. 权限要求:必须拥有 root 权限,普通用户无法执行此操作。
  2. 检测难度:
    • 可通过检查 /proc/mounts 发现异常挂载(如 grep "proc/[0-9]" /proc/mounts)。
    • 工具如 lsofstrace 可能仍能检测到进程的活动(因涉及内核态或更底层的系统调用)。
  3. 进程持续性:若进程重启或系统重启,挂载会失效,需重新操作。
  4. 影响范围:仅隐藏 /proc/PID/ 下的部分信息(如文件描述符),进程的 PID 仍可能在 ps 等工具中显示(取决于工具是否依赖 /proc/PID/status 等未被覆盖的文件)。

安全视角:防御与风险

攻击者用途

  • 恶意程序(如木马、后门)通过此方法隐藏自身进程,逃避安全软件的检测。
  • 结合其他 Rootkit 技术(如修改内核模块),可进一步绕过基于用户态工具的监控。

防御方法

  1. 监控 /proc/mounts

    定期检查是否有异常的

    1
    proc

    目录挂载(尤其是非系统默认的挂载点):

    1
    cat /proc/mounts | grep -vE "proc|sysfs|tmpfs"  # 过滤系统默认挂载,查看可疑条目
  2. 限制 root 权限
    避免普通用户拥有 sudo 权限,减少恶意程序执行此类操作的可能性。

  3. 使用内核级监控工具
    auditdsystemd-audit 监控 mount 命令的执行,或通过 SELinux/AppArmor 限制对 /proc 目录的挂载操作。

  4. 进程完整性检查
    使用 pstop 结合 lsofnetstat 交叉验证进程的文件描述符、网络连接等信息,确保无异常遮蔽。


Linux进程隐藏
http://example.com/2025/05/24/Linux进程隐藏/
作者
XCDH
发布于
2025年5月24日
许可协议