新聞中心
動態(tài)庫注入(Dynamic Linker Injection)是一種注入技術(shù),是將動態(tài)庫注入到程序中,前者成為程序的一個組成部分。通常,注入的動態(tài)庫是由“黑客”編寫的用于某些特殊目的的惡意代碼。注入完成后,程序?qū)?zhí)行惡意代碼,在未經(jīng)授權(quán)的情況下執(zhí)行竊取機(jī)密數(shù)據(jù)、篡改文件等操作。

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)四平免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
本文將介紹,并介紹如何防范動態(tài)庫注入攻擊。
一、注入原理
動態(tài)鏈接(Dynamic Linking)是指程序在運(yùn)行時動態(tài)的加載所依賴的庫文件,而不是運(yùn)行前完成鏈接,將庫文件打包成可執(zhí)行文件。在程序運(yùn)行過程中,動態(tài)鏈接器會依照一定的規(guī)則查找依賴庫文件的路徑,找到所需庫文件,然后在運(yùn)行時將其鏈接起來。
動態(tài)庫注入就是將自定義的動態(tài)鏈接庫注入到原進(jìn)程的地址空間中,利用動態(tài)鏈接交叉鏈接的特性,使得程序在執(zhí)行時從自定義庫中讀取需要的代碼,以達(dá)到控制原進(jìn)程的目的。這種技術(shù)被廣泛應(yīng)用于惡意代碼的實現(xiàn)中。
二、注入方法分析
(一)注入庫文件
要實現(xiàn)動態(tài)庫注入攻擊,習(xí)慣上我們會抓住運(yùn)行中的一個程序,并將自定義動態(tài)庫注入到進(jìn)程的地址空間中。這種實現(xiàn)方式有以下幾種:
1、將動態(tài)庫文件覆蓋掉被注入進(jìn)程的同名動態(tài)庫文件。
2、修改程序進(jìn)程的Linker信息,使其在運(yùn)行時鏈接我們的惡意動態(tài)庫。
(二)動態(tài)鏈接攻擊
動態(tài)鏈接攻擊是指利用程序的動態(tài)鏈接特性來攻擊程序。主要方式有以下幾種:
1、運(yùn)行時hook。
在程序的前面照下一段代碼,以實現(xiàn)修改函數(shù)實現(xiàn)變量的方法:
“`
#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文件執(zhí)行hook,此方式是通過與鉤子機(jī)制進(jìn)行對抗。
3、修改程序PIC表(Procedure Linkage Table)中的函數(shù)指針地址。
需要注意的是,上述Hook方式實現(xiàn)的方法是在修改原有函數(shù)的功能實現(xiàn),而很多注入方法是通過檢測第二個參數(shù)的函數(shù)地址,發(fā)現(xiàn)當(dāng)前函數(shù)不是通過dlsym實現(xiàn)的,然后使用LD_PRELOAD指定的so庫getdlsym來實現(xiàn)獨有的hook覆蓋。
三、注入攻擊防范
為了避免動態(tài)庫注入攻擊,我們可以采取以下防范措施:
1、強(qiáng)制要求所有用戶的賬號必須至少有一個非數(shù)字字符。
2、使用ASLR技術(shù),kernel 2.6.34以上的版本支持”personality”設(shè)置,設(shè)置為”ADDR_NO_RANDOMIZE”或使用命令行工具”execq”來實現(xiàn)。
3、使用SecureExec來緩解動態(tài)庫注入技術(shù)。
4、應(yīng)用程序過程內(nèi)部結(jié)構(gòu)代碼(如imports和exports)強(qiáng)制進(jìn)行靜態(tài)綁定。
相關(guān)問題拓展閱讀:
- linux下c++能使用c的頭文件和動態(tài)庫嗎
linux下c++能使用c的頭文件和動態(tài)庫嗎
可以的,c++是兼容c語言的,建議看一下c和c++的混編
確定可以,C/C++的借口能互相調(diào)用,但需要用extern “C”{ 你的接口聲明 }。
這個肯定是可以的了
linux下c 注入動態(tài)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux下c 注入動態(tài)庫,Linux下C程序的動態(tài)庫注入方法,linux下c++能使用c的頭文件和動態(tài)庫嗎的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽、重慶、貴陽機(jī)房服務(wù)器托管租用。
文章標(biāo)題:Linux下C程序的動態(tài)庫注入方法 (linux下c 注入動態(tài)庫)
轉(zhuǎn)載源于:http://m.fisionsoft.com.cn/article/ccicepp.html


咨詢
建站咨詢
