排查LD_PRELOAD后门需检查环境变量、/etc/ld.so.preload文件、可疑.so库及内存映射进程,覆盖配置、文件、行为三层检测,重点识别函数劫持与异常路径。
排查 LD_PRELOAD 后门需从环境变量、系统配置文件、内存映射和可疑共享库四方面入手。它不依赖进程名或端口,而是通过函数劫持静默运行,容易被忽略。
检查 LD_PRELOAD 环境变量攻击者常通过 shell 配置文件或服务单元设置该变量:运行echo $LD_PRELOAD查看当前会话是否被设置
检查用户级配置:
grep -r "LD_PRELOAD=" ~/.bashrc ~/.bash_profile ~/.profile /etc/profile.d/ 2>/dev/null检查 systemd 服务:systemctl show --property=Environment --all 2>/dev/null | grep PRELOAD检查 cron 任务:crontab -l; ls /etc/cron.d/ | xargs -I{} cat /etc/cron.d/{},留意 export 或 env 命令检查 /etc/ld.so.preload 文件这是系统级预加载入口,优先级高于环境变量,一旦存在非空内容即高度可疑:执行ls -l /etc/ld.so.preload—— 正常应不存在,或为空且权限为-rw-r--r--、属主 root若存在,用cat /etc/ld.so.preload查看路径,常见恶意路径如/tmp/.x.so、/var/run/.b.so、/home/user/Nomal.so注意:该文件只认纯路径行,含空格、# 注释或无效字符会导致加载失败,但攻击者可能故意写入“看似无害”的路径干扰判断定位并分析可疑 .so 文件preload 中的路径指向的共享库才是实际后门载体:CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载对每个路径(如/home/user/Nomal.so
),先确认存在:
ls -la /home/user/Nomal.so验证是否为合法 ELF 共享对象:file /home/user/Nomal.so检查是否 hook 关键函数:readelf -Ws /home/user/Nomal.so | grep -E "(write|connect|socket|exec|system|popen)"
提取敏感字符串:
strings /home/user/Nomal.so | grep -i "flag\|sshlog\|nc\|tcp\|127.0.0.1\|key"若确认恶意,且未被占用,立即删除;若被进程占用(lsof /home/user/Nomal.so有输出),建议重启对应服务或整机查找已加载该库的活跃进程恶意 so 在进程启动时注入,不会出现在 ps 中,但会出现在内存映射里:扫描所有进程 maps:grep -l "/home/user/Nomal.so" /proc/[0-9]*/maps 2>/dev/null | cut -d'/' -f3对返回的 PID,查其真实身份:cat /proc/PID/cmdline | tr '\0' ' '和ls -l /proc/PID/exe重点关注 bash、sshd、crond、python 等常驻进程 —— 若它们映射了恶意 so,说明已被劫持,需 kill 并重启服务(如systemctl restart sshd)
不复杂但容易忽略
