数字医学与健康大会DMHC——美创与您相约古都金陵
2025-08-12
美创科技打造县域医疗灾备新标杆|神木市医院 HIS 系统数据库分钟级切换演练实录
2025-07-02
百万罚单警示!DCAS助力金融机构筑牢数据安全防线,实现监管合规
2025-06-20
2025中国互联网产业年会丨《中国互联网产业绿色算力发展倡议》正式发布
2025-02-07
美创用户专访 | 精细化管理:医疗行业数据分类分级的策略与实践
2025-01-10
存储域
数据库加密 诺亚防勒索访问域
数据库防水坝 数据库防火墙 数据库安全审计 动态脱敏流动域
静态脱敏 数据水印 API审计 API防控 医疗防统方运维服务
数据库运维服务 中间件运维服务 国产信创改造服务 驻场运维服务 供数服务安全咨询服务
数据出境安全治理服务 数据安全能力评估认证服务 数据安全风险评估服务 数据安全治理咨询服务 数据分类分级咨询服务 个人信息风险评估服务 数据安全检查服务7)恢复
攻击者在执行所有的攻击操作时,往往会在系统上留下大量的行为日志,因此在这一阶段,攻击者会对记录自身痕迹的所有日志进行处理,或删除或混淆,从而消灭证据,逃避追踪。
本系列文章基于美创科技入侵生命周期1.0架构,细分个阶段攻击者的常用攻击手段,并对相关攻击手段的具体实施方式进行逐一剖析,为安全防御建设提供有力知识补充和反制准备。
常用的LD_PRELOAD劫持攻击流程如下:
LD_PRELOAD本身是一个环境变量,用于指定动态库的加载地址,一个程序调用时动态库的加载优先级最高,一般情况下,其加载顺序为
LD_PRELOAD > LD_LIBRARY_PATH >/etc/ld.so.cache > lib > /usr/lib
程序的链接分为静态链接和动态链接,静态链接就是把所有所引用的函数或变量全部地编译到可执行文件中。动态链接则不会把函数编译到可执行文件中,而是在程序运行时动态的载入函数库,也就是运行链接。因此,对于动态链接,必然存在一个动态链接库。
动态链接库的好处在于一旦动态库的函数发生变化,对于可执行程序来说是透明的,可执行程序无需重新编译。而对于静态链接的程序来说,函数库中一个小小的改动需要整个程序的重新编译、发布。
对于linux,使用的是glibc,有一个叫libc.so.6的文件,几乎所有linux下命令均会使用该动态链接库,其中有标准C的各种基本函数,对于gcc而言,默认情况下,所编译的程序都是对标准C函数的链接,都是通过动态链接方式来链接libc.so.6这个函数库。
这里我们通过编译测试文件进行演示
Random.c文件,模拟正常的应用程序文件,内容如下:
#include
#include
#include
int main(){
srand(time(NULL));
int i = 10;
while(i--)printf("%d
",rand()%100);
return 0;
}
gcc -o random random.c
编译生成可执行文件random,该文件生成随机10个数字。
ldd查看此时该程序的链接库
这时候我们自己重新自定义一个rand函数
unrandom.c
int rand(){
return 66;
}
生成链接库
gcc -shared -fPIC unrandom.c -o unrandom.so
将链接库通过export命令写入LD_PRELOAD变量,再次执行并查看链接库,此时自编译的unrandom.so链接库已经成功执行,
当取消该环境变量时
unset LD_PRELOAD
一切正常。
当unrandom.so为恶意链接库时,则会执行相关恶意代码。因此很多病毒程序通过这种方法,隐藏自身以躲避安全检测。
在/etc/ld.so.preload 文件中也可看到预先加载的动态链接库。