在 Linux 中,“隐藏进程”通常指被 rootkit、恶意程序或人为手段隐藏的进程(比如劫持 ps/top、修改 /proc、钩子系统调用等)。查找隐藏进程需要多维度交叉验证,不能只依赖 ps。
下面按实用程度系统讲一下。
ps -ef
ps aux
top
htop
如果这里有异常进程,问题可能已经不复杂。
Linux 所有进程都在 /proc 下有目录:
ls /proc | grep '^[0-9]'
对比:
ps -e | awk '{print $1}' | sort -n > /tmp/ps.txt
ls /proc | grep '^[0-9]' | sort -n > /tmp/proc.txt
diff /tmp/ps.txt /tmp/proc.txt
✅ proc 有但 ps 没有 → 隐藏进程嫌疑
隐藏进程常篡改:
pstoplsofnetstatwhich ps
ls -l $(which ps)
rpm -V procps-ng # CentOS/RHEL
dpkg -V procps # Debian/Ubuntu
从干净系统拷贝,或使用:
busybox psbusybox topbusybox ps -ef
lsof(看进程打开的文件)lsof | grep deleted
strace 跟踪进程strace -p <PID>
systemtap / bpftrace(高级)可 Hook fork/execve,即使 ps 被改也能发现。
隐藏进程常开端口:
ss -antp
netstat -antp
对比:
cat /proc/net/tcp
如果 有端口但 ss/netstat 看不到进程 → 高度可疑。
rkhunterrkhunter --check
chkrootkitchkrootkit
unhide(专门找隐藏进程)unhide proc
unhide sys
unhide quick
如果系统可能已被完全控制:
/proc、/bin、/sbin、/lib| 方法 | 能否发现隐藏进程 |
|---|---|
| ps/top | ❌(可能被改) |
| /proc 对比 | ✅ |
| busybox | ✅ |
| ss/netstat | ✅ |
| unhide | ✅✅ |
| 内核工具 | ✅✅✅ |
你可以告诉我:
我可以给你一条可以直接复制执行的排查命令集。