在 Debian(以及其他 Linux 发行版)上,“隐藏进程”通常指被 rootkit、恶意程序或特殊技术隐藏的进程。查找隐藏进程需要结合多种方法,从用户态到内核态逐步排查。
下面按由浅入深的方式说明。
先确认进程是否只是“没看到”,而不是被隐藏:
ps aux
ps -ef
top
htop
查看 /proc:
ls /proc | grep -E '^[0-9]+$'
如果 /proc 里有某个 PID,但 ps 看不到,说明可能被隐藏。
for pid in /proc/[0-9]*; do
pid=${pid#/proc/}
if ! ps -p "$pid" >/dev/null; then
echo "隐藏进程可能: $pid"
cat /proc/$pid/cmdline
fi
done
unhide(最常用)专门检测隐藏进程和端口。
sudo apt install unhide
sudo unhide proc
sudo unhide sys
输出示例:
Found HIDDEN PID: 1234
rkhunter(rootkit 检测)sudo apt install rkhunter
sudo rkhunter --check
重点看:
chkrootkitsudo apt install chkrootkit
sudo chkrootkit
lsmod
查看异常模块:
modinfo <模块名>
查看已加载模块痕迹:
cat /proc/modules
lsmod vs /sys/modulels /sys/module
若 lsmod 看不到,但 /sys/module 有,可能模块被隐藏。
隐藏进程常监听端口:
sudo netstat -antup
sudo ss -antup
若发现端口但无对应进程 → 高度可疑。
Volatility(内存取证)适合已怀疑被入侵:
用 Debian Live USB 启动:
/proc、/bin、/sbin 是否被篡改ps、top 二进制getdents()(隐藏 /proc)ptrace 或 LD_PRELOAD如果确认有隐藏进程:
如果你愿意,可以告诉我:
我可以给你更针对性的排查步骤。