0
点赞
收藏
分享

微信扫一扫

LD_PRELOAD函数劫持


LD_PRELOAD函数劫持

2.3. LD_PRELOAD使用限制
                 这种方式虽然很酷,但却有一些限制。比如对于静态编译的程序是无效的。因为静态编译的程序不需要连接动态库的面的函数。而且,假如文件的SUID或SGID位被置1,加载的时候会忽略LD_PRELOAD(这是ld的开发者出于安全考虑做的)。

三.相关的隐匿技术

         3.1 Jynx-Kit

3.2 检查隐匿

参考文章:

Linux C/C++调试之一:利用LD_PRELOAD机制监控程序IO操作

参考文章:

动态连接的诀窍:使用 LD_PRELOAD 去欺骗、注入特性和研究程序

参考文章:https://www.linuxidc.com/Linux/2017-12/149841.htm

 

如何避免被Hook

(1).静态链接,把代码都静态链接入可执行程序.

(2).通过设置执行文件的setgid / setuid标志.在有SUID权限的执行文件,系统会忽略LD_PRELOAD环境变量.

也就是说,如果你有以root方式运行的程序,最好设置上SUID权限.

(3).在程序的开始检测LD_PRELOAD

 

Linux环境变量生效篇

效果:应用程序设置环境变量,使其全局生效,并且立即生效,应用程序卸载时,使其全局失效,并且立即失效。

情况:

1.多终端(多个xshell打开,如何使其全部同时生失效)

2.没有终端,在系统界面,如何使其立即生失效

 

 

export LD_PRELOAD=name指令在终端执行时,立即生效,但是放在脚本中,或者是多个脚本深度嵌套的环境中,不能够改变当前终端的环境变量,

 


https://zhidao.baidu.com/question/629814347405318804.html

https://zhidao.baidu.com/question/390458036073969725.html

http://www.169it.com/article/15909202685256535853.html

https://blog.51cto.com/carrie1314/1296298

 

尝试方法:

  1. 在生效时,根据系统启动时的环境变量加载流程,逐项进行设置,然后使其生效,查看效果
  2. 在失效时,根据系统启动时的环境变量加载流程,逐项进行设置,然后使其失效,查看效果

 

 

 

 

 

 

Bug修改:

  1. get_config_file_all和get_config_file函数中的perror一行去掉,不需要输出
  2. sent_study_process函数中增加判断,增加头文件unistd.h

 



 

 

 

 

 

  1. CentOS-3.10.0-862.el7.x86_64-V1.0-1.8-T-20190515153527.bin这个程序是bin包,不能使用source或者. 去执行,只能使用./

 

  1. 每一个进程只能改变当前进程内的环境变量,使其及时生效,无法改变其进程外的变量,需要重新加载
  2. 对于多个已经打开的终端,只能改变当前终端的环境变量,无法改变其他终端的变量,需要重新加载


 

举报

相关推荐

0 条评论