Linux下C程序的动态库注入方法 (linux下c 注入动态库)

动态库注入(Dynamic Linker Injection)是一种注入技术,是将动态库注入到程序中,前者成为程序的一个组成部分。通常,注入的动态库是由“黑客”编写的用于某些特殊目的的恶意代码。注入完成后,程序将会执行恶意代码,在未经授权的情况下执行窃取机密数据、篡改文件等操作。

专注于为中小企业提供做网站、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业四平免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

本文将介绍,并介绍如何防范动态库注入攻击。

一、注入原理

动态链接(Dynamic Linking)是指程序在运行时动态的加载所依赖的库文件,而不是运行前完成链接,将库文件打包成可执行文件。在程序运行过程中,动态链接器会依照一定的规则查找依赖库文件的路径,找到所需库文件,然后在运行时将其链接起来。

动态库注入就是将自定义的动态链接库注入到原进程的地址空间中,利用动态链接交叉链接的特性,使得程序在执行时从自定义库中读取需要的代码,以达到控制原进程的目的。这种技术被广泛应用于恶意代码的实现中。

二、注入方法分析

(一)注入库文件

要实现动态库注入攻击,习惯上我们会抓住运行中的一个程序,并将自定义动态库注入到进程的地址空间中。这种实现方式有以下几种:

1、将动态库文件覆盖掉被注入进程的同名动态库文件。

2、修改程序进程的Linker信息,使其在运行时链接我们的恶意动态库。

(二)动态链接攻击

动态链接攻击是指利用程序的动态链接特性来攻击程序。主要方式有以下几种:

1、运行时hook。

在程序的前面照下一段代码,以实现修改函数实现变量的方法:

“`

#define _GNU_SOURCE

#include

#include

int (*old_puts)(const char *s) = NULL;

int puts(const char *s)

{

if (!old_puts)

{

old_puts = (int (*)(const char *))dlsym(RTLD_NEXT, “puts”);

}

old_puts(“sizehammer”);

return old_puts(s);

}

“`

2、注入so文件执行hook,此方式是通过与钩子机制进行对抗。

3、修改程序PIC表(Procedure Linkage Table)中的函数指针地址。

需要注意的是,上述Hook方式实现的方法是在修改原有函数的功能实现,而很多注入方法是通过检测第二个参数的函数地址,发现当前函数不是通过dlsym实现的,然后使用LD_PRELOAD指定的so库getdlsym来实现独有的hook覆盖。

三、注入攻击防范

为了避免动态库注入攻击,我们可以采取以下防范措施:

1、强制要求所有用户的账号必须至少有一个非数字字符。

2、使用ASLR技术,kernel 2.6.34以上的版本支持”personality”设置,设置为”ADDR_NO_RANDOMIZE”或使用命令行工具”execq”来实现。

3、使用SecureExec来缓解动态库注入技术。

4、应用程序过程内部结构代码(如imports和exports)强制进行静态绑定。

相关问题拓展阅读:

  • linux下c++能使用c的头文件和动态库吗

linux下c++能使用c的头文件和动态库吗

可以的,c++是兼容c语言的,建议看一下c和c++的混编

确定可以,C/C++的借口能互相调用,但需要用extern “C”{ 你的接口声明 }。

这个肯定是可以的了

linux下c 注入动态库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux下c 注入动态库,Linux下C程序的动态库注入方法,linux下c++能使用c的头文件和动态库吗的信息别忘了在本站进行查找喔。

成都服务器租用选创新互联,先试用再开通。
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。物理服务器托管租用:四川成都、绵阳、重庆、贵阳机房服务器托管租用。

文章题目:Linux下C程序的动态库注入方法 (linux下c 注入动态库)
文章起源:http://www.csdahua.cn/qtweb/news40/394390.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网