排查SO劫持伪装的隐藏监听服务,核心是识别“本不该监听却在监听”的服务,需检查/etc/ld.so.preload、LD_PRELOAD/LD_LIBRARY_PATH环境变量,用busybox/ss/strace验证真实监听行为,并通过/proc/PID/maps定位已加载恶意库的进程。

排查SO劫持伪装的隐藏监听服务,核心是识别“本不该监听却在监听”的服务——它不靠新进程名或独立端口暴露自己,而是让正常服务(如sshd、nginx)在加载恶意.so后,悄悄开启额外监听行为。常规ss -tulnp能看到端口,但进程名仍显示为合法服务,极易被忽略。
查预加载配置:/etc/ld.so.preload 是最高危入口
该文件若被写入任意.so路径,所有动态链接程序(包括sshd、crond、bash)启动时都会强制加载它:
- 运行
ls -l /etc/ld.so.preload—— 正常系统应提示“No such file”,若存在且大小非零(如 28 字节),立即检查内容 - 执行
cat /etc/ld.so.preload 2>/dev/null—— 输出类似/tmp/.logd.so、/var/run/ldhook.so或含随机字符的路径,基本确认被篡改 - 注意:即使路径指向不存在的文件,只要文件存在且可读,系统仍会尝试加载;攻击者常利用这点制造干扰,需结合进程行为交叉判断
盯住环境变量:LD_PRELOAD 和 LD_LIBRARY_PATH 的异常值
这两个变量优先级高于系统配置,常被注入到服务启动环境中,影响特定进程而非全局:
- 检查当前会话:
env | grep -E "(LD_PRELOAD|LD_LIBRARY_PATH)",留意是否含/tmp、/dev/shm、./等可疑路径 - 检查 systemd 服务定义:
systemctl cat sshd 2>/dev/null | grep -A2 "Environment=",看是否有Environment="LD_PRELOAD=/var/tmp/hook.so"类配置 - 检查 shell 初始化文件:
grep -r "LD_PRELOAD\|LD_LIBRARY_PATH" ~/.bashrc /etc/profile.d/ 2>/dev/null,特别注意用export持久化设置的行
验证真实监听行为:绕过劫持命令,直击内核接口
一旦SO劫持生效,ss -tulnp 和 netstat 的输出可能已被过滤或伪造,必须用未被劫持的工具验证:
- 用 busybox 执行底层网络命令:
busybox ss -tuln(不带-p),对比与原ss -tuln的端口差异;若 busybox 多出一个 4444 端口而原命令没有,说明该监听正被隐藏 - 用 strace 跟踪真实系统调用:
strace -e trace=bind,listen -f -s 256 /usr/sbin/sshd -D 2>&1 | grep -E "bind|listen",观察是否出现非常规地址绑定(如bind(3, {sa_family=AF_INET, sin_port=htons(5555), sin_addr=inet_addr("0.0.0.0")}, 16)) - 直接读取内核接口:
cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | awk '{print $2,$10}' | while read ip_port state; do [ "$state" = "0A" ] && echo "$(echo $ip_port | sed 's/.*://; s/[^0-9]//g')"; done | sort -u,提取所有 ESTABLISHED 和 LISTEN 状态的端口号,再反查对应 PID
定位已加载的恶意库:从进程内存映射入手
即使删了.so文件,只要进程仍在运行,劫持就持续有效。关键要找到哪些PID已加载可疑库:
- 假设发现可疑库
/tmp/.x.so,运行:grep -l "/tmp/.x.so" /proc/[0-9]*/maps 2>/dev/null | cut -d'/' -f3,返回一串 PID - 对每个 PID,执行:
cat /proc/PID/cmdline | tr '\0' ' '查启动命令,ls -l /proc/PID/exe看执行文件,cat /proc/PID/status | grep -E "Name:|PPid:"看进程名和父进程 - 若发现
sshd进程映射了/tmp/.x.so,且其 cmdline 显示/usr/sbin/sshd -D,说明该 sshd 已被注入;此时 kill 并重启服务(systemctl restart sshd)才能清除劫持

















