lsof可精准定位非标准路径可疑进程句柄,需root权限+sudo执行,结合+D扫描/tmp等隐蔽目录、DEL过滤已删除文件、grep排除可信路径,并通过/proc/PID/fd和cmdline交叉验证。

直接用 lsof 查非标准路径下的可疑进程句柄,关键不是“绕过隐藏”,而是精准定位+权限配合+路径过滤。Linux 中所谓“隐藏进程”通常指不驻留 /bin、/usr/bin 等常规路径的二进制(如临时目录、/tmp、/dev/shm、用户家目录深层路径),或已删除但仍被进程占用的文件(DEL 状态)。只要进程在运行,lsof 就能列出其打开的句柄——前提是权限足够。
确认权限:必须用 root 或具备 cap_sys_ptrace 的用户
普通用户无法查看其他用户的进程打开的文件(尤其是 root 或系统服务),更看不到已删除文件的路径残留。非 root 运行 lsof 会大量漏报:
- 用
sudo lsof是最稳妥方式 - 若无 sudo 权限,可检查是否拥有
cap_sys_ptrace:getcap $(which lsof),但多数发行版默认不赋予 - 注意:容器环境需进入对应命名空间或使用
nsenter配合宿主lsof
聚焦非标准路径:用 +D 或 -d 过滤可疑位置
lsof 不支持正则路径匹配,但可通过递归扫描目录或按文件描述符类型缩小范围:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 扫描常见隐蔽路径:
sudo lsof +D /tmp +D /dev/shm +D /var/tmp +D $HOME/.local/share(+D会递归列出该目录下所有被打开的文件及所属进程) - 重点检查“已删除但仍在用”的句柄:
sudo lsof | awk '$4 ~ /^[0-9]+[uw]/ && $9 ~ /DEL$/ {print}',这类常是恶意程序覆盖自身二进制后的痕迹 - 排除标准路径干扰:结合
grep -v过滤掉常见可信路径,例如:sudo lsof | grep -vE '^COMMAND|/usr/bin|/bin|/sbin|/lib|/etc' | grep -E '\.so$|\.py$|\.sh$|/tmp/|/dev/shm/'
关联进程行为:从句柄反推可疑性
仅看路径不够,要结合打开的资源类型判断异常:
- 网络连接异常:用
sudo lsof -i -P -n查看监听端口,关注非 root 用户监听高位端口(如 31337)、绑定0.0.0.0却无对应服务配置 - 隐藏配置/凭证文件:搜索打开的
.env、config.json、id_rsa等敏感文件,尤其在/tmp或/dev/shm下 - 内存映射可疑 ELF:
sudo lsof -p PID -o -F n | grep '\.so\|\.elf\|a.out',再用readelf -h /proc/PID/fd/N(N 为 fd 编号)验证是否为有效可执行头
补全线索:结合 /proc 手动验证
lsof 输出中的 NAME 列有时显示为 REG、DEL 或空,此时需手动查 /proc/PID/fd/:
- 列出某进程所有 fd:
ls -la /proc/PID/fd/,符号链接目标即真实路径(即使已删除,链接仍显示原路径+(deleted)) - 读取被删二进制内容(仅限调试):
cp /proc/PID/fd/N /tmp/recovered_bin,再用file和strings分析 - 检查进程命令行是否伪装:
cat /proc/PID/cmdline | tr '\0' ' ',对比lsof显示的 COMMAND 是否被篡改(如显示为bash实际是恶意载荷)

















