前言
在日常的应急工作中,经常遭遇挖矿病毒的案例,但是往往用ps,top等命令是看不到异常的,且即使kill掉进程和计划任务项往往过一会进程就会重新起来。这种情况往往是存在预加载恶意动态链接库的后门,其实网上有很多详细的文章去讲解这个技术,这里笔者也是为了插个眼。
概述
动态链接库预加载机制是系统提供给用户运行自定义动态链接库的一种方式,在可执行程序运行之前就会预先加载用户定义的动态链接库的一种技术。
原理
在网上有大佬已经做了总结,感兴趣的可以去看看:
https://www.freebuf.com/column/162604.html

1. 应用程序在通过系统接口调用内核时会预先加载动态链接库, 即使程序不依赖这些动态链接库,LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被加载。
2. 这个库里面主要包括两个内容:LD_PRELOAD和/etc/ld.so.preload
3. LD_PRELOAD用于预加载环境变量
4. /etc/ld.so.preload用于预加载配置文件
5. 默认情况下LD_PRELOAD和/etc/ld.so.preload无配置
6. 动态编译:不论程序依赖不依赖动态链接库,都会加载LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载,他们的优先级比LD_LIBRARY_PATH环境变量所定义的链接库查找路径的文件优先级高
7. 全局符号:全局符号介入指的是应用程序调用库函数时,调用的库函数如果在多个动态链接库中都存在,即存在同名函数,那么链接器只会保留第一个链接的函数,而忽略后面链接进来的函数,所以只要预加载的全局符号中有和后加载的普通共享库中全局符号重名,那么就会覆盖后装载的共享库以及目标文件里的全局符号。
注:这也是造成劫持的某种手段
8. 静态编译:不动态加载系统库文件,直接将程序所需要的各种文件全部集中到该软件平台中,这样就可以解决系统库文件被劫持,中了rootkit等导致连接、网络等被隐藏的情况,常用的工具如busybox