排查/proc/net网络后门的核心是发现本该有进程归属的连接却无对应pid,可从端口监听异常、原始套接字线索及/proc/net各文件逻辑矛盾三方面入手。

排查/proc/net下的网络后门,核心不是“找一个文件”,而是发现**本该有进程归属的连接却没对应PID**——这是隐藏后门最典型的破绽。新手可从三个关键入口入手:端口监听异常、原始套接字线索、以及/proc/net各子文件之间的逻辑矛盾。
看监听端口有没有“孤儿”
正常情况下,每个监听端口都应能查到归属进程。如果查不到,大概率被隐藏:
- 运行
ss -tunlp和netstat -tunlp对比输出。若某个端口在ss中显示 PID/Program,但在netstat中只显示-或空白,说明netstat可能被 LD_PRELOAD 劫持,而ss更可信 - 重点检查非标准端口(如 31337、4444、5555)和高编号端口(>60000),尤其是绑定在
0.0.0.0或公网 IP 上的 - 对可疑端口执行
lsof -i :PORT,若返回can't identify protocol或无 PID,就需深入/proc/net手动追踪
查 /proc/net/tcp 和 /proc/net/udp 的 inode 关联
这两个文件记录了所有 TCP/UDP 套接字,每行末尾的 inode 是关键索引。恶意进程即使隐藏了名字,也逃不过 inode 关联:
- 用
awk '{print $10}' /proc/net/tcp | sort -u提取所有唯一 inode(跳过首行) - 再遍历所有
/proc/[0-9]*/fd/目录,查找软链接指向socket:[INODE]的条目:for pid in /proc/[0-9]*; do [ -d "$pid/fd" ] && ls -l "$pid/fd/" 2>/dev/null | grep -q "socket:\[$inode\]" && echo "Found in $pid"; done - 若某个 inode 在
/proc/net/tcp中存在,但在所有/proc/*/fd/下都找不到匹配项,这就是隐藏后门的强信号
盯紧 /proc/net/packet 和 raw socket
普通服务极少用 raw socket,但后门常依赖它绕过防火墙和常规监控:
- 执行
cat /proc/net/packet,关注type列为0003(PACKET_RX_RING)或0002(PACKET_TX_RING)的条目 - 检查
uid列是否为非 0(即非 root 用户创建),且对应进程在ps aux中完全不可见 - 结合
lsof -i输出,若发现/proc/net/packet里有条目,但lsof没列出任何进程使用 raw socket,就要高度怀疑
顺手验证 /proc/net/unix 和 netlink
部分后门通过 Unix domain socket 或 netlink 与内核通信,不走网络协议栈,但也会留下痕迹:
-
/proc/net/unix中查看path列是否有非常规路径(如/tmp/.sock、/dev/shm/.ctl),再用find /tmp /dev/shm -name "*sock*" -o -name "*.ctl"反查文件是否存在 -
/proc/net/netlink通常只有内核和少数系统服务使用。若看到多个groups非零、pid为大数字(如 >10000)且无对应进程,可能是 rootkit 控制通道











