最可靠方式是通过ls -l /proc/pid/exe检查符号链接目标路径,若指向/tmp、/dev/shm等非常规目录,或显示(deleted)、路径不存在、含随机字符串,则高度可疑;需联动ppid、cmdline、environ等交叉验证。

检查 /proc/PID/exe 软链接是识别进程是否被恶意替换或伪装成系统进程的有效手段。该路径指向进程可执行文件的绝对路径,Linux 内核会将其维护为一个符号链接——正常情况下应指向真实、合法的二进制文件(如 /usr/bin/bash 或 /bin/systemd);若指向异常路径、不存在的文件、临时目录(如 /tmp/、/dev/shm/)、或被篡改的路径,则极可能为恶意程序伪装。
确认进程真实路径是否可信
对任意可疑 PID(例如 PID 1234),执行:
ls -l /proc/1234/exe
观察输出中的目标路径。重点关注以下几类风险情况:
一个OA雏形,主要是完成项目进程管理的功能。 主要实现: 1。新建项目,设定到期时间,如果超过时间自动转为过期项目。 2。过期项目自动提醒,可自定义设定提醒时间或设定几天一次提醒。 3。自己建立的项目只有自己和超级用户有操作权限。 3。重要的项目可设为重要,有醒目标记,如不想被别人看到的项目可以设为独享,此项目只有自己和管理员可以看到。 4。新项目建立人自动显示为登陆时的用户名,可指定多负责人,如
- 指向
/tmp/xxx、/dev/shm/xxx、/var/tmp/xxx等非常规执行目录 - 目标路径不存在(显示
No such file or directory或末尾带(deleted)) - 指向看似系统路径但实际为硬链接或 bind mount 混淆(需进一步用
readlink -f解析真实路径) - 路径中含随机字符串、base64 片段或明显混淆命名(如
igfxCUIService.exe这类仿冒名)
批量筛查异常 exe 链接
可在安全加固巡检脚本中加入如下逻辑,自动标记高危进程:
- 遍历
/proc/[0-9]*/exe,排除内核线程(comm为kthreadd等)和已知安全守护进程 - 对每个
exe执行readlink -f获取真实路径,再比对是否属于白名单目录(如/bin/、/usr/bin/、/usr/lib/systemd/等) - 检查真实路径的 inode 是否与原
/proc/PID/exe的 stat 结果一致(防止通过unshare --user+mount --bind绕过) - 记录所有指向非白名单路径、或
readlink -f失败的 PID 及其命令行(/proc/PID/cmdline)供人工复核
结合其他维度交叉验证
单靠 /proc/PID/exe 不足以 100% 判定恶意性,需联动验证:
- 比对
/proc/PID/status中的PPid:若父进程为bash或sh但自身伪装成systemd,存在可疑启动链 - 检查
/proc/PID/environ是否含异常环境变量(如LD_PRELOAD指向可疑 so 文件) - 查看
/proc/PID/maps中是否加载了非常规内存映射(如匿名私有段过大、含可执行堆) - 核对
md5sum或sha256sum与官方包管理器记录(rpm -V或dpkg --verify)是否一致
防御建议:运行时防护增强
除事后检查外,可前置加固:
- 启用内核参数
kernel.yama.ptrace_scope=2防止非 root 进程 ptrace 注入或篡改其他进程的exe - 部署 eBPF 工具(如 Tracee、Falco)监控
execve系统调用,实时告警非白名单路径的执行行为 - 限制
/tmp和/dev/shm的noexec挂载选项,阻断从这些位置直接执行代码 - 定期校验关键系统进程的
/proc/PID/exe并告警漂移(如sshd某次突然指向/tmp/.X11-unix/xxx)










