排查linux隐蔽管道或socket连接的关键是绕过劫持工具,直接检查/proc/net/unix、/proc/net/packet、/proc/[pid]/fd等内核接口,比对路径、inode、uid与进程一致性,重点关注非常规路径、非root uid的raw socket、匿名pipe/socket及抽象命名空间socket异常。

排查Linux系统中通过管道或Socket建立的隐蔽连接,关键在于绕过被劫持的用户态工具,直接检查内核暴露的原始接口,并比对进程、文件描述符与通信端点之间的逻辑一致性。这类连接往往不走标准网络协议栈,也不依赖常规端口监听,因此不能只看netstat或ss的输出。
查/proc/net/unix中的异常Unix域Socket
Unix domain socket(UDS)常被后门用于进程间隐蔽通信,路径可能伪装成临时文件或系统路径:
- 运行
cat /proc/net/unix,重点关注path列:非常规路径如/tmp/.sock、/dev/shm/.ctl、/var/run/.log需立即标记 - 用
find /tmp /dev/shm /var/run -name "*sock*" -o -name "*.ctl" -o -name ".log" 2>/dev/null反向确认对应文件是否存在且权限异常(如属非root用户但可写) - 检查
ino(inode)列是否重复或为0——重复inode可能表示多个进程复用同一socket;ino=0通常代表匿名socket,需结合lsof -U进一步验证
盯紧/proc/net/packet和raw socket通信
原始套接字(raw socket)能绕过Netfilter和常规连接跟踪,是C2通信常见通道:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 执行
cat /proc/net/packet,筛选type为0003(PACKET_RX_RING)或0002(PACKET_TX_RING)的条目 - 检查
uid列:非0 UID(尤其是普通用户)创建的raw socket,且在ps aux或lsof -i中完全不可见,高度可疑 - 对比
lsof -i | grep RAW输出,若/proc/net/packet有记录但lsof无对应进程,说明该socket已被隐藏
追踪/proc/[pid]/fd下的匿名管道与socket链接
恶意进程常通过pipe()或socketpair()创建匿名通信通道,不绑定地址,但会在文件描述符中留下痕迹:
- 遍历所有
/proc/[0-9]*/fd/目录:for pid in /proc/[0-9]*; do [ -d "$pid/fd" ] && ls -l "$pid/fd/" 2>/dev/null | grep -E "(pipe|socket)" | grep -v "deleted"; done - 关注软链接目标含
pipe:[或socket:[但无对应name字段的条目——这表示匿名管道或未命名socket - 对可疑PID,查看
/proc/PID/status中PPid是否异常(如父进程不是systemd或shell),再用cat /proc/PID/cmdline确认启动参数是否被清空或异常
交叉验证netlink与抽象命名空间socket
部分高级后门使用netlink或抽象Unix socket(abstract namespace)规避监控:
- 运行
cat /proc/net/netlink,正常系统通常只有少量条目(如udev、systemd-journald);若出现大量UID非0、dst_port为非常规值(如1337、9999)的连接,需深入分析 - 抽象socket路径以
@开头(如@/tmp/agent),ss -x -a可列出,但ls -l /proc/*/fd/中显示为socket:[@xxx];若发现此类路径却无法nc -U连通或无对应进程,即为可疑信号 - 结合
strace -p PID -e trace=socket,connect,sendto,recvfrom 2>&1 | grep -E "(AF_NETLINK|AF_UNIX|SOCK_RAW)"动态捕获可疑系统调用










