温馨提示×

ubuntu进程怎么隐藏

小樊
41
2026-09-30 23:07:55
栏目: 智能运维

在 Ubuntu(Linux)里“隐藏进程”要看你的目的和使用场景。下面分情况说明,不涉及恶意用途,只讲合法场景与技术原理。


一、普通用户:只是想“看不到”某些进程(不真正隐藏)

1. 用 ps / top 过滤

ps aux | grep -v process_name
top -p $(pgrep -d',' -v process_name)

这只是显示时过滤,进程依然存在。

2. 修改进程名(轻微伪装)

#include <stdio.h>
#include <unistd.h>

int main() {
    strcpy(argv[0], "systemd-user");
    while(1) sleep(1);
}

仅改变 ps 显示的命令名,仍可被 pkill、/proc 查到。


二、真正“隐藏进程”(系统级,需 root)

⚠️ 以下方法仅用于安全研究 / 渗透测试 / 防御学习,未经授权使用属违法。

方法 1:挂载空 proc 目录(最简单)

mount -o bind /empty /proc/1234

或:

unshare -p -m bash

在独立 PID namespace 中,进程对其他 namespace 不可见。


方法 2:修改 /proc 显示(rootkit 原理)

  • 劫持 getdents() 系统调用
  • 使用 LKM(Linux Kernel Module)隐藏进程
  • 工具示例(仅学习):
    • libprocesshider
    • diamorphine

示例(libprocesshider):

git clone https://github.com/gianlucaborello/libprocesshider
make
LD_PRELOAD=./libprocesshider.so ./your_program

方法 3:容器 / Namespace 隔离(合法推荐)

docker run -d --name hidden alpine sleep 1000

容器内进程在宿主机 ps 中可见,但在容器内不可见。


三、防御角度:如何发现隐藏进程

  • ls /proc | wc -l 与 ps -e | wc -l 对比
  • 使用 unhide
sudo apt install unhide
unhide proc
  • 检查 LD_PRELOAD、/etc/ld.so.preload
  • 检查内核模块:lsmod

四、合规建议

✅ 合法用途:

  • 安全测试
  • CTF
  • rootkit 研究
  • 隐私保护

❌ 非法用途:

  • 木马
  • 提权后隐藏
  • 入侵痕迹清除

如果你愿意,可以告诉我:

  • 你是防御还是研究
  • 是否 root
  • 是否允许 内核级操作

我可以给你更精确的方案。

0 踩