Linux进程隐藏
基础命令:
通过mount bind将空目录挂载到进程在
/proc中的虚拟目录(如/proc/PID),遮蔽真实进程信息。
//必须拥有 root 权限
隐藏进程:
1 | |
清除隐藏,显示出来:
1 | |
检查隐藏进程:
1 | |
可以发现有文件系统被挂载到了进程目录下。
命令解析:
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 -aux、top等命令时,进程 1196 可能仍显示(因进程本身未终止),但无法获取其文件描述符、命令行参数等细节,甚至可能被部分工具过滤为 “僵尸进程” 或忽略。 - 更隐蔽的场景:若
spoof目录中包含伪造的文件(如通过ln -s创建虚假的 socket 文件),可进一步误导检测工具(例如模拟正常进程的文件描述符)。
- 执行
隐藏原理与局限性
核心原理:利用 /proc 文件系统的挂载性
/proc是 虚拟文件系统,其内容由内核动态生成,并非物理存储。- 每个进程的
/proc/PID/目录允许通过bind mount覆盖,从而篡改进程信息的展示。 - 这一特性被部分恶意软件用于隐藏自身(如 Rootkit),或被安全工具用于模拟进程环境进行测试。
局限性
- 权限要求:必须拥有 root 权限,普通用户无法执行此操作。
- 检测难度:
- 可通过检查
/proc/mounts发现异常挂载(如grep "proc/[0-9]" /proc/mounts)。 - 工具如
lsof、strace可能仍能检测到进程的活动(因涉及内核态或更底层的系统调用)。
- 可通过检查
- 进程持续性:若进程重启或系统重启,挂载会失效,需重新操作。
- 影响范围:仅隐藏
/proc/PID/下的部分信息(如文件描述符),进程的 PID 仍可能在ps等工具中显示(取决于工具是否依赖/proc/PID/status等未被覆盖的文件)。
安全视角:防御与风险
攻击者用途
- 恶意程序(如木马、后门)通过此方法隐藏自身进程,逃避安全软件的检测。
- 结合其他 Rootkit 技术(如修改内核模块),可进一步绕过基于用户态工具的监控。
防御方法
监控
/proc/mounts定期检查是否有异常的
1
proc目录挂载(尤其是非系统默认的挂载点):
1
cat /proc/mounts | grep -vE "proc|sysfs|tmpfs" # 过滤系统默认挂载,查看可疑条目限制 root 权限:
避免普通用户拥有sudo权限,减少恶意程序执行此类操作的可能性。使用内核级监控工具:
如auditd、systemd-audit监控mount命令的执行,或通过SELinux/AppArmor限制对/proc目录的挂载操作。进程完整性检查:
使用ps、top结合lsof、netstat交叉验证进程的文件描述符、网络连接等信息,确保无异常遮蔽。
Linux进程隐藏
http://example.com/2025/05/24/Linux进程隐藏/