监控/proc/net目录变化本身不能直接识别后门,但它是发现异常网络行为最可靠的第一道线索,因所有真实套接字连接必须经内核暴露于此,而用户态工具可能被劫持;重点排查/proc/net/{tcp,udp,packet,unix}中“存在但无归属”的inode、raw socket、非常规路径及动态突增痕迹。

监控 /proc/net 目录变化本身不能直接“识别”后门,但它是发现异常网络行为最可靠的第一道线索——因为所有真实套接字连接都必须经由内核暴露在此,而用户态工具(如 netstat、ps)可能被劫持,/proc/net 却很难被完全隐藏。
盯住三类文件的“存在但无归属”现象
后门进程常绕过进程列表,但无法抹除其网络连接在 /proc/net/ 中的记录。重点不是“有没有”,而是“有没有对应进程”:
-
/proc/net/tcp 和 /proc/net/udp:每行末尾第10列是 inode 号。运行
awk 'NR>1 {print $10}' /proc/net/tcp | sort -u提取所有唯一 inode,再用find /proc/[0-9]*/fd/ -lname "socket:[<inode>]" 2>/dev/null</inode>反查归属。若某个 inode 在 tcp/udp 中存在,却在所有/proc/*/fd/下都找不到软链接,就是强可疑信号 -
/proc/net/packet:普通服务极少使用 raw socket。执行
cat /proc/net/packet,关注 type 列为0002(TX)或0003(RX ring)的条目;若 uid 非 0 且对应 PID 在ps aux或ls /proc/[0-9]*中完全不可见,需立即深入 -
/proc/net/unix:检查 path 列是否含非常规路径,如
/tmp/.sock、/dev/shm/.ctl。再反向执行find /tmp /dev/shm -name "*.sock" -o -name "*.ctl",确认文件是否真实存在且权限异常(如属 root 却由 nobody 创建)
用时间差抓动态植入痕迹
后门启动瞬间会在 /proc/net 留下“突增”痕迹,比静态扫描更易捕获:
- 先运行一次基线采集:
cp /proc/net/{tcp,udp,packet,unix} /tmp/net-baseline-$(date +%s) - 间隔 30–60 秒后再次采集,用
diff对比:diff /tmp/net-baseline-* | grep "^>" - 重点关注新出现的监听行(state=0A 表示 LISTEN)、新增的 raw socket 条目、或 unix socket 中突然多出的非常规 path —— 这些往往是后门刚建立通信通道的瞬间快照
交叉验证端口与进程名的不一致
攻击者常让监听端口“有形无主”,或让进程名“有名无实”:
- 对每个监听端口(如 :1080),分别运行
ss -tulnp | grep :1080和netstat -tulnp | grep :1080。若 ss 显示 PID 57704,而 netstat 显示-或空白,说明 netstat 被 LD_PRELOAD 劫持,ss 更可信 - 拿到 PID 后,检查
ls -l /proc/57704/exe是否指向真实二进制;cat /proc/57704/cmdline | tr '\0' ' '是否与ps输出一致;若 cmdline 是/bin/bash\x00但 ps 显示为sshd,大概率进程名已被篡改 - 用
lsof -i :1080辅证:若返回can't identify protocol或空输出,而ss明确显示该端口正在监听,这就是典型后门特征
顺手检查 netlink 和异常绑定地址
部分高级后门通过 netlink 与内核交互,或故意绑定到易被忽略的地址:
-
cat /proc/net/netlink正常只应有少量条目(内核、systemd、udev 等)。若出现多个 uid 非 0 的条目,或 pid 字段指向不存在的进程号,需结合ls /proc/<pid></pid>验证 - 过滤监听地址:
ss -tuln | grep -E '0.0.0.0:|:::|127.0.0.1:'。重点排查绑定在0.0.0.0(全网可访问)或公网 IP 上的非标端口(如 31337、4444、5555),尤其是无对应知名服务的端口 - 对可疑端口,用
ss -tulpn | grep PORT查 PID,再用readlink /proc/<pid>/exe</pid>看路径是否在/tmp、/dev/shm、/var/tmp等临时目录 —— 这类路径几乎等同于恶意载荷










