新聞中心
Linux是一款非常流行的操作系統(tǒng),擁有眾多的用戶和開(kāi)發(fā)者。為了保障Linux系統(tǒng)的安全性,開(kāi)發(fā)者們采用了許多技術(shù)手段,其中最重要的是linux l hook技術(shù)。本文將從什么是Linux L Hook技術(shù)、其原理、應(yīng)用場(chǎng)景以及如何使用Linux L Hook技術(shù)等方面來(lái)探究這種技術(shù)。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供靖江網(wǎng)站建設(shè)、靖江做網(wǎng)站、靖江網(wǎng)站設(shè)計(jì)、靖江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、靖江企業(yè)網(wǎng)站模板建站服務(wù),十年靖江做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
一、什么是Linux L Hook技術(shù)
L(Linux Security Modules),中文可以翻譯成“Linux安全模塊”,是Linux內(nèi)核實(shí)現(xiàn)安全和訪問(wèn)控制的一個(gè)框架,通常采用訪問(wèn)控制列表(ACL)的方式實(shí)現(xiàn),以實(shí)現(xiàn)對(duì)文件、網(wǎng)絡(luò)等資源的安全管理。然而,由于Linux的內(nèi)核非常龐大,因此它不能包含所有的L實(shí)現(xiàn),這時(shí)候就需要一個(gè)掛鉤(hook)的技術(shù),即“Linux L Hook技術(shù)”。
簡(jiǎn)單來(lái)說(shuō),Linux L Hook技術(shù)使得開(kāi)發(fā)者們可以在Linux內(nèi)核中添加自定義的模塊來(lái)擴(kuò)展訪問(wèn)控制能力,從而增強(qiáng)系統(tǒng)的安全性和可控性。也可以讓開(kāi)發(fā)者能夠使用眾多的開(kāi)發(fā)庫(kù)和應(yīng)用程序接口。
二、Linux L Hook技術(shù)的原理
在Linux內(nèi)核中,任何的安全模塊都必須符合Linux Security Modules(L)的API規(guī)范:只有在其API規(guī)范下才能進(jìn)行操作。L API則可以兩種方式來(lái)實(shí)現(xiàn):靜態(tài)鏈接和動(dòng)態(tài)鏈接。
靜態(tài)鏈接:將L模塊的對(duì)象代碼直接鏈接到內(nèi)核中,這些模塊就可以在內(nèi)核中直接運(yùn)行。
動(dòng)態(tài)鏈接:將L模塊的動(dòng)態(tài)庫(kù)加載到內(nèi)核中,并將其所依賴的庫(kù)與內(nèi)核中的其他部分進(jìn)行鏈接,這需要內(nèi)核支持動(dòng)態(tài)鏈接的機(jī)制。
無(wú)論是靜態(tài)鏈接還是動(dòng)態(tài)鏈接,Linux L Hook技術(shù)都提供了一種方便的方法來(lái)擴(kuò)展訪問(wèn)控制能力。
三、應(yīng)用場(chǎng)景
Linux L Hook技術(shù)在實(shí)際應(yīng)用中經(jīng)常被用于實(shí)現(xiàn)以下幾個(gè)方面的訪問(wèn)控制:
1、Linux網(wǎng)絡(luò)安全
Linux L Hook技術(shù)通??梢杂糜诹髁靠刂?,比如在特征識(shí)別、過(guò)濾、網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)等方面,可以讓開(kāi)發(fā)者們自定義特定的防火墻規(guī)則,從而實(shí)現(xiàn)對(duì)特定網(wǎng)絡(luò)流量的控制和管理。
2、重要文件和目錄保護(hù)
在Linux L Hook技術(shù)的幫助下,系統(tǒng)管理員可以更加細(xì)致地指定哪些用戶或進(jìn)程可以訪問(wèn)特定文件或目錄,從而保護(hù)重要文件和目錄,防止被非法或攻擊者訪問(wèn)或篡改。
3、內(nèi)核模塊安全
Linux L Hook技術(shù)可以在內(nèi)核空間處得到很好的大規(guī)模應(yīng)用,比如防止內(nèi)核模塊被惡意代碼篡改或覆蓋。
4、虛擬機(jī)的安全
L Hook技術(shù)可以解決在虛擬化環(huán)境下,安全性及訪問(wèn)控制層面的問(wèn)題。通過(guò)在虛擬機(jī)內(nèi)添加自定義的安全模塊來(lái)確保虛擬機(jī)的安全,使得用戶可以更加放心地使用虛擬機(jī)。
四、如何使用Linux L Hook技術(shù)
對(duì)于開(kāi)發(fā)人員而言,使用Linux L Hook技術(shù)并不是非常困難。以下是在Linux內(nèi)核中使用L Hook技術(shù)的大致步驟:
1、編寫Linux L模塊程序。
2、將Linux L模塊編譯成可加載的內(nèi)核程序。
3、將Linux L模塊加載到Linux內(nèi)核。
4、對(duì)應(yīng)用程序進(jìn)行測(cè)試并對(duì)其進(jìn)行適當(dāng)?shù)呐渲?,以便與開(kāi)發(fā)環(huán)境的缺陷進(jìn)行匹配。
5、定時(shí)對(duì)Linux L模塊進(jìn)行檢查和更新。
當(dāng)然,如果開(kāi)發(fā)者使用的是已經(jīng)有現(xiàn)成的Linux L Hook技術(shù)的代碼,他們可以很容易地將代碼集成到自己的程序中。這也是開(kāi)發(fā)人員喜歡使用Linux L Hook技術(shù)的原因之一。
對(duì)于Linux系統(tǒng)而言,安全性是非常重要的。而Linux L Hook技術(shù)是一種非常安全且可靠的技術(shù)手段,可以幫助開(kāi)發(fā)者們擴(kuò)展訪問(wèn)控制能力,提高系統(tǒng)的安全性和可控性。隨著網(wǎng)絡(luò)和信息技術(shù)的快速發(fā)展,Linux L Hook技術(shù)已經(jīng)成為了Linux系統(tǒng)中不可或缺的一部分。
相關(guān)問(wèn)題拓展閱讀:
- 什么是HOOK技術(shù)
- LINUX對(duì)shell命令的攔截
什么是HOOK技術(shù)
HOOK技術(shù)是Windows消息處理機(jī)制的一個(gè)平臺(tái),應(yīng)用程序可以在上面設(shè)置子程序以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進(jìn)程所創(chuàng)建的。當(dāng)消息到達(dá)后,在目標(biāo)窗口處理函數(shù)之前處理它。鉤子機(jī)制允許應(yīng)用程序截獲處理window消息或特定事件。
鉤子實(shí)際上是一個(gè)處宏如大理消息的程序段,通過(guò)系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒(méi)有到達(dá)目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控橡肆制權(quán)蔽豎。這時(shí)鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。
擴(kuò)展資料:
Hook原理
Hook技術(shù)無(wú)論對(duì)安全軟件還是惡意軟件都是十分關(guān)鍵的一項(xiàng)技術(shù),其本質(zhì)就是劫持函數(shù)調(diào)用。但是由于處于Linux用戶態(tài),每個(gè)進(jìn)程都有自己獨(dú)立的進(jìn)程空間,所以必須先注入到所要Hook的進(jìn)程空間,修改其內(nèi)存中的進(jìn)程代碼,替換其過(guò)程表的符號(hào)地址。在Android中一般是通過(guò)ptrace函數(shù)附加進(jìn)程,然后向遠(yuǎn)程進(jìn)程注入so庫(kù),從而達(dá)到監(jiān)控以及遠(yuǎn)程進(jìn)程關(guān)鍵函數(shù)掛鉤。
Hook技術(shù)的難點(diǎn),并不在于Hook技術(shù),初學(xué)者借助于資料“照葫蘆畫瓢”能夠很容易就掌握Hook的基本使用方法。如何找到函數(shù)的入口點(diǎn)、替換函數(shù),這就涉及了理解函數(shù)的連接與加載機(jī)制。
從Android的開(kāi)發(fā)來(lái)說(shuō),Android系統(tǒng)本身就提供給了我們兩種開(kāi)發(fā)模式,基于AndroidSDK的Java語(yǔ)言開(kāi)發(fā),基于AndroidNDK的NativeC/C++語(yǔ)言開(kāi)發(fā)。所以,我們?cè)谟懻揌ook的時(shí)候就必須在兩個(gè)層面上來(lái)討論。
對(duì)于Native層來(lái)說(shuō)Hook的難點(diǎn)其實(shí)是在理解ELF文件與學(xué)習(xí)ELF文件上,特別是對(duì)ELF文件不太了解的讀者來(lái)說(shuō);對(duì)于Java層來(lái)說(shuō),Hook就需要了解虛擬機(jī)的特性與Java上反射的使用。
LINUX對(duì)shell命令的攔截
樓主,shell 接收到一個(gè) 非內(nèi)部命令 (如 ls, find)時(shí),不是把命令提交給內(nèi)核的,這個(gè)概念是錯(cuò)誤的。 shell 應(yīng)該是 fork 出一個(gè)進(jìn)程,這個(gè)子進(jìn)程調(diào)用 exec* 系列系統(tǒng)調(diào)用 (比如 execlp 等)來(lái)載入腔余l(xiāng)s, find等可執(zhí)行程序執(zhí)行, 而此時(shí)的shell進(jìn)程本身會(huì) 通過(guò) wait 系統(tǒng)調(diào)用等待子進(jìn)程完成。
由上可見(jiàn),一個(gè)進(jìn)行攔截的地方可以放在 exec 系列調(diào)用中,exec是實(shí)現(xiàn)在 glibc 里的,所以你只要下載 glibc (或者你們系統(tǒng)使用的 libc )的源碼,在 exec 調(diào)用中加入你的攔截代碼。 編譯修改后的glibc,伍旁滾替換系統(tǒng)中的glibc即可。
另外要注意的是,除了shell,其他程序也可能使用 fork+exec 來(lái)執(zhí)行啟指某些命令,如果不想攔截這種情況,在攔截時(shí)需判斷一下當(dāng)前進(jìn)程的父或祖進(jìn)程,看看是否是shell進(jìn)程。
最后,glibc實(shí)在是太重要了,是所有程序的基礎(chǔ),改動(dòng)需小心。
我覺(jué)得更好的方法是寫一個(gè)bash的殼,直接替換系統(tǒng)里的bash。在殼里做你的攔截和分發(fā)饑納。只是不知道你的設(shè)計(jì)是否允許你這么做。
這種做法比在kernel里攔截方便多了。對(duì)模此script調(diào)用也有效。
不能做bash的殼,那就只有改bash了??戳讼耣ash的源碼,execute_cmd.c里下面的call flow應(yīng)該符合你的需要吧。加點(diǎn)自己的代碼就OK了。
execute_simple_command => execute_disk_command => shell_execve
我還能想到的就是改libc的庫(kù)了。直接把execv的代碼替換成自己的版本。不過(guò)這里麻煩的就是你還要搞清是bash調(diào)你的還是其他應(yīng)用程序調(diào)你的。爛碼沒(méi)
0x80軟中斷?你面臨的困難和改libc一樣。而且這時(shí)你只有簡(jiǎn)陋的武器,還是在應(yīng)用層改吧。
shell作為操作系統(tǒng)的外殼,是不能進(jìn)行攔截的 謝數(shù)山謝
這我還真的沒(méi)聽(tīng)過(guò)過(guò)…只知道shell接搭亮收命令知畢寬來(lái)調(diào)用,
你確定可以攔截?
估計(jì)得改 linux 內(nèi)核源碼了。。。。。。呵呵
同樓上,哈哈,你要是實(shí)在想要就鍵盤記錄。。。
關(guān)于linux l hook的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)建站主營(yíng):成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動(dòng)網(wǎng)站開(kāi)發(fā)制作等網(wǎng)站服務(wù)。
網(wǎng)頁(yè)名稱:探究LinuxLHook技術(shù)(linuxlhook)
分享網(wǎng)址:http://fisionsoft.com.cn/article/ccesece.html


咨詢
建站咨詢
