0

0

/ etc/ld.so.preload 被篡改导致所有进程加载恶意 so 的检测清理

冷漠man

冷漠man

发布时间:2026-01-21 14:31:45

|

408人浏览过

|

来源于php中文网

原创

/etc/ld.so.preload若存在且非空即高度可疑,需立即用绝对路径删除、清除隐藏属性、重建空文件并设644权限,再重启服务;其被篡改通常标志已提权,须同步溯源恶意so及持久化后门。

/ etc/ld.so.preload 被篡改导致所有进程加载恶意 so 的检测清理

/etc/ld.so.preload 是一个特殊的系统文件,用于指定在所有动态链接程序启动时**强制预加载**的共享库(.so 文件)。攻击者一旦写入恶意路径(如 /tmp/.x.so),即可实现对所有普通用户进程(包括 bash、ls、curl、ssh 等)的全局劫持,隐蔽性极强、危害极大。

如何快速检测是否被篡改

该文件本应为空或根本不存在。只要它存在且非空,就高度可疑:

  • 执行 ls -l /etc/ld.so.preload —— 查看是否存在、权限是否异常(如属主为 root 但可写)
  • 执行 cat /etc/ld.so.preload 2>/dev/null —— 若输出非空行(尤其含 /tmp、/dev/shm、/var/tmp 等临时目录路径),基本确认被植入
  • 执行 strace -e trace=openat,open,openat64 /bin/true 2>&1 | grep preload(需 strace)—— 可验证运行时是否真在读取该文件

立即清理与加固步骤

发现异常后,按顺序操作,避免清理过程中恶意 so 被再次加载:

LobeHub
LobeHub

LobeChat brings you the best user experience of ChatGPT, OLLaMA, Gemini, Claude

下载
  • 先用绝对路径执行清理:/bin/rm -f /etc/ld.so.preload(避免调用被劫持的 shell 内置或 alias)
  • 检查文件是否被硬链接或隐藏属性:lsattr /etc/ld.so.preload;若输出含 i(不可修改)或 a(仅追加),说明已被加锁,需先 chattr -ia /etc/ld.so.preload 再删
  • 确认删除后,用 touch /etc/ld.so.preload && chmod 644 /etc/ld.so.preload && chown root:root /etc/ld.so.preload 创建空文件并设最小权限(部分发行版要求存在且为空)
  • 重启关键服务(如 sshd、cron)或重启系统,确保所有进程脱离旧预加载上下文

溯源与关联排查要点

该文件被写入通常是提权后的结果,需同步排查:

  • 检查最近修改时间:stat /etc/ld.so.preload,比对系统日志(journalctl --since "2 hours ago" | grep -i "ld\.so\.preload\|chmod\|chattr"
  • 定位恶意 so 文件:根据 preload 中的路径(如 /tmp/.x.so),检查其创建时间、属主、大小,并用 filestrings 初步分析行为特征
  • 检查 crontab、systemd timers、.bashrc/.profile、/etc/cron.* 中是否藏有下载/写入该文件的命令
  • 运行 ps auxf --forestlsof -nP +L1,查找可疑进程或已删除但仍被占用的 so 文件

长期防护建议

防止再次被利用,不能只靠删文件:

  • 启用文件完整性监控(如 aide、samhain)定期校验 /etc/ld.so.preload 及关键系统文件
  • 在 SELinux 或 AppArmor 启用环境下,限制非特权进程对 /etc/ 目录的写入能力
  • 禁止 root 用户直接 SSH 登录,使用 sudo 代替;最小化 sudo 权限,禁用 NOPASSWD 全能权限
  • 定期审计 find /etc -type f -name "ld.so.preload" -lsfind /tmp /var/tmp /dev/shm -name "*.so" -ls 2>/dev/null

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

232

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

437

2024.03.01

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

432

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

175

2023.10.30

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

11

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

4

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号