色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享一個(gè)使用BPF事件捕獲rootkit的案例

Linux閱碼場(chǎng) ? 來源:人人都是極客 ? 作者:許慶偉 ? 2022-07-13 09:03 ? 次閱讀

如今,云原生平臺(tái)越來越多的使用了基于eBPF的安全探測(cè)技術(shù)。這項(xiàng)技術(shù)通過創(chuàng)建安全的Hook鉤子探針來監(jiān)測(cè)內(nèi)部函數(shù)和獲取重要數(shù)據(jù),從而支持對(duì)應(yīng)用程序的運(yùn)行時(shí)做監(jiān)測(cè)和分析。Tracee是用于Linux的運(yùn)行時(shí)安全和取證的開源項(xiàng)目,它基于eBPF實(shí)現(xiàn),所以在安全監(jiān)測(cè)方面效果更加優(yōu)化。

在本文中,我們將探索控制eBPF事件的方法,并研究一個(gè)使用BPF事件捕獲rootkit的案例。Rootkit是一種存在于內(nèi)核中復(fù)雜類型的惡意漏洞攻擊,并將介紹Tracee用于檢測(cè)Syscall 鉤子的新特性,它實(shí)現(xiàn)了在內(nèi)核中使用eBPF事件的獨(dú)特方式。

eBPF: 不只是用來跟蹤

eBPF是一種Linux內(nèi)核技術(shù),它允許在不更改內(nèi)核源代碼或添加新模塊的前提下,在Linux內(nèi)核中運(yùn)行沙盒程序。因此,eBPF可以支持安全的Hook到事件上,而不會(huì)造成內(nèi)核崩潰的風(fēng)險(xiǎn)。

具體來說,eBPF程序使用內(nèi)核機(jī)制(如kprobes、kretprobes、Linux安全模塊(LSM) Hooks、uprobes和traceponits)來創(chuàng)建和設(shè)置鉤子,并加以驗(yàn)證代碼不會(huì)使內(nèi)核崩潰。eBPF有一個(gè)Verifier驗(yàn)證器,其目標(biāo)是確保eBPF程序安全運(yùn)行(而不是通過加載內(nèi)核模塊來與內(nèi)核交互,如果操作不當(dāng),會(huì)導(dǎo)致系統(tǒng)崩潰)。

攻擊者為何喜歡Hook內(nèi)核函數(shù)?

目前使用rootkit的復(fù)雜攻擊往往是針對(duì)內(nèi)核空間,這是因?yàn)楣粽咴噲D避免被安全防御方案,以及監(jiān)控用戶空間事件或分析基本系統(tǒng)日志的取證工具檢所測(cè)到。此外,在內(nèi)核空間中嵌入惡意軟件也會(huì)使得安全研究員和響應(yīng)團(tuán)隊(duì)更難找到它。惡意軟件越接近于底層,檢測(cè)起來就越困難。

下面,我們將看看TNT團(tuán)隊(duì)的例子,并查看他們是如何利用Diamorphine 這個(gè)rootkit,以及Tracee如何檢測(cè)到它。

內(nèi)核中的函數(shù)操作

攻擊者為了自身利益最大化,會(huì)尋找內(nèi)核級(jí)別的目標(biāo)函數(shù)。常用的一種方法是函數(shù)鉤子,旨在通過操縱內(nèi)核中的函數(shù)來隱藏惡意活動(dòng)。這樣做的原因是內(nèi)核函數(shù)執(zhí)行的是來自用戶空間的任務(wù)。如果它們被破壞,攻擊者即可控制所有用戶空間程序的行為。

當(dāng)攻擊者試圖Hook系統(tǒng)調(diào)用(syscall)函數(shù)時(shí),這就是函數(shù)鉤子的一個(gè)很好示例。這些高級(jí)內(nèi)核函數(shù)用于執(zhí)行來自用戶空間的任務(wù),Hook住它們主要目的是隱藏惡意行為。例如,攻擊者將getdents系統(tǒng)調(diào)用Hook起來,以隱藏用于列出文件命令(如ps、top和ls)的惡意文件和進(jìn)程。

通常,通過讀取系統(tǒng)調(diào)用表并獲取系統(tǒng)調(diào)用函數(shù)的地址來Hook他們。一旦獲得系統(tǒng)調(diào)用函數(shù)地址,攻擊者將保存原始地址,并試圖用包含惡意代碼的新函數(shù)覆蓋它。

攻擊者如何Hook內(nèi)核函數(shù)?

現(xiàn)在,讓我們研究一下攻擊者如何在真實(shí)環(huán)境下的網(wǎng)絡(luò)攻擊中劫持內(nèi)核函數(shù)。

為了Hook內(nèi)核函數(shù),必須首先獲得想要鉤住的對(duì)象訪問權(quán)。例如,它可以是保存所有系統(tǒng)調(diào)用函數(shù)地址的系統(tǒng)調(diào)用表。然后,保存函數(shù)的原始地址并覆蓋它。在某些情況下,由于當(dāng)前位置的內(nèi)存權(quán)限,還需要獲取CPU中控制寄存器的權(quán)限。

接下來是TNT團(tuán)隊(duì)使用Diamorphine隱藏加密的活動(dòng),這作為他們攻擊的一部分可以很好的解釋這樣的方法:

92d4cd9e-0240-11ed-ba43-dac502259ad0.png

使用內(nèi)存邊界技術(shù)檢測(cè)Syscall鉤子

現(xiàn)在我們已經(jīng)確定了攻擊者的動(dòng)機(jī)以及他們?nèi)绾涡薷膬?nèi)核行為,問題是,我們?cè)撊绾螜z測(cè)這種活動(dòng)? 明確的目標(biāo)是找到一種方法,以區(qū)分內(nèi)核中的原始內(nèi)部函數(shù)(或與核心內(nèi)核關(guān)聯(lián)的syscall)和新的內(nèi)核模塊代碼(或換句話說,被攻擊后的函數(shù))。

我們可以通過內(nèi)核的core_text邊界檢測(cè)來實(shí)現(xiàn)這一點(diǎn)。內(nèi)核中的內(nèi)存被分為幾個(gè)部分。其中一個(gè)是core_text段,它保存內(nèi)核中的原始函數(shù)。此部分注冊(cè)在特定的內(nèi)存映射區(qū)域中,該區(qū)域不受更改或操作的影響。此外,如果我們加載一個(gè)新的內(nèi)核模塊--也就是說,編寫一個(gè)新函數(shù)或覆蓋原始函數(shù)——這個(gè)新函數(shù)將寫入另一個(gè)專門為新函數(shù)保留的內(nèi)存區(qū)域。可以在下面的虛擬內(nèi)存映射中看到這一點(diǎn)。注意,分配給原始內(nèi)核代碼的地址范圍(文本部分,又名“核心內(nèi)核文本”)和分配給新內(nèi)核模塊的地址范圍是不同的。

92fbcd90-0240-11ed-ba43-dac502259ad0.png

因此,當(dāng)前的目標(biāo)是獲取一個(gè)系統(tǒng)調(diào)用地址,然后將其與內(nèi)核core_text邊界進(jìn)行比較,正如我們所看到的,core_text邊界表示原始內(nèi)核源的范圍。

使用Tracee檢測(cè)Syscall鉤子

現(xiàn)在,我們已經(jīng)了解了惡意軟件如何以及為什么以內(nèi)核函數(shù)為目標(biāo),以及如何檢測(cè)被鉤住的內(nèi)核函數(shù),接下需要知道如何使用eBPF來提取函數(shù)的地址。使用Tracee可以確定函數(shù)是否被鉤住,即使鉤子是在Tracee執(zhí)行之前放置的。

首先創(chuàng)建一個(gè)在用戶空間中觸發(fā)的BPF程序,并在內(nèi)核空間中捕獲相應(yīng)BPF事件。如果內(nèi)核程序需要來自用戶空間的信息,可以通過BPF映射來進(jìn)行傳遞。

例如在Tracee中創(chuàng)建一個(gè)事件,該事件將從系統(tǒng)調(diào)用表中獲取系統(tǒng)調(diào)用地址,接下來確認(rèn)系統(tǒng)調(diào)用是否被內(nèi)核模塊鉤住了。如果它被鉤住了,繼續(xù)將創(chuàng)建一個(gè)派生事件(由內(nèi)核另一個(gè)事件而創(chuàng)建的事件),它將提示系統(tǒng)調(diào)用鉤住的情況,如下:

931ea2e8-0240-11ed-ba43-dac502259ad0.png

先使用libbpfgo的helper來獲取系統(tǒng)調(diào)用表地址,并將其添加到事件內(nèi)核符號(hào)依賴項(xiàng)中。

注意,detect_hooked_sycalls事件是派生事件。這意味著在我們接收到系統(tǒng)調(diào)用的地址并檢查它們之后,我們將創(chuàng)建一個(gè)新的detect_hooked_sycalls事件。

93321468-0240-11ed-ba43-dac502259ad0.png

然后,我們將它與系統(tǒng)調(diào)用號(hào)一起傳遞,以便使用BPFMap檢查內(nèi)核空間。

934924dc-0240-11ed-ba43-dac502259ad0.png

為了檢查內(nèi)核空間中的那些系統(tǒng)調(diào)用,基于security_file_ioctl上的kprobe創(chuàng)建一個(gè)事件,它是ioctl系統(tǒng)調(diào)用的一個(gè)內(nèi)部函數(shù)。這樣我們就可以通過使用用戶空間的特定參數(shù)觸發(fā)系統(tǒng)調(diào)用來控制程序流,接下來用一個(gè)特定的命令觸發(fā)ioctl:

935f35b0-0240-11ed-ba43-dac502259ad0.png

此時(shí),在內(nèi)核空間中開始檢查ioctl命令是否相同,以及調(diào)用該系統(tǒng)調(diào)用的進(jìn)程是否為Tracee。這樣就可以驗(yàn)證只有當(dāng)用戶要求Tracee檢查時(shí)才會(huì)發(fā)生檢測(cè)的需求。

93845eda-0240-11ed-ba43-dac502259ad0.png

檢測(cè)代碼很簡(jiǎn)單,遍歷系統(tǒng)調(diào)用映射,通過使用READ_KERN()來獲取系統(tǒng)調(diào)用表的地址如下:

9392fc2e-0240-11ed-ba43-dac502259ad0.png

然后在用戶空間中,我們將這些地址與libbpfgo helpers進(jìn)行比較:

93a88378-0240-11ed-ba43-dac502259ad0.png

狩獵時(shí)間: 用eBPF檢測(cè)Diamorphine rootkit

現(xiàn)在,開始運(yùn)行Tracee,來看看它將如何檢測(cè)出Diamorphine rootkit。

使用insmod函數(shù)加載Diamorphine (.ko)的內(nèi)核對(duì)象文件。目標(biāo)是看看Tracee的探測(cè)結(jié)果。通常,在加載一個(gè)內(nèi)核模塊的情況下啟動(dòng)Tracee,如果選擇了detect_hooked_sycall事件,Tracee將發(fā)送一個(gè)hooked_sycalls事件,以確保系統(tǒng)沒有被破壞:

93b901da-0240-11ed-ba43-dac502259ad0.png

Tracee檢測(cè)到getdents和getdents64這些掛起的系統(tǒng)調(diào)用。TNT團(tuán)隊(duì)使用它們來隱藏大量加密活動(dòng)導(dǎo)致的CPU負(fù)載過高,以及通常用于從用戶空間發(fā)送命令來殺死進(jìn)程的kill函數(shù)。在這種情況下,rootkit使用kill -63作為用戶空間和內(nèi)核空間之間的通信通道。同樣,如果再次運(yùn)行Diamorphine和Tracee使用json輸出,參數(shù)將顯示Diamorphine的惡意鉤子:

93cac258-0240-11ed-ba43-dac502259ad0.png

如果運(yùn)行Tracee-rules,我們可以看到detect_hooked_sycall事件的新簽名:

93e596b4-0240-11ed-ba43-dac502259ad0.png

結(jié)論

現(xiàn)代攻擊者的目標(biāo)是包括內(nèi)核層的操作系統(tǒng)各個(gè)層級(jí),此外,由于開源項(xiàng)目(如Diamorphine)的流行,攻擊性網(wǎng)絡(luò)工具變得越來越容易獲得。因此,安全研究員需要提高自身的防御能力知識(shí),開發(fā)出合適的檢測(cè)方法。


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    594

    瀏覽量

    27409
  • rootkit
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    2713
  • BPF
    BPF
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    4009

原文標(biāo)題:利用eBPF探測(cè)Rootkit漏洞

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在雙絞線線路上捕獲1394個(gè)事件

    電子發(fā)燒友網(wǎng)站提供《在雙絞線線路上捕獲1394個(gè)事件.pdf》資料免費(fèi)下載
    發(fā)表于 09-29 09:41 ?0次下載
    在雙絞線線路上<b class='flag-5'>捕獲</b>1394<b class='flag-5'>個(gè)</b>事件

    是德DSOX4032A示波器波形捕獲

    在電子工程領(lǐng)域,示波器是不可或缺的工具之。而其中,是德DSOX4032A示波器以其卓越的性能和精準(zhǔn)的測(cè)量能力備受青睞。今天,我們就來深入了解下是德DSOX4032A示波器的波形捕獲率。
    的頭像 發(fā)表于 08-30 15:38 ?282次閱讀
    是德DSOX4032A示波器波形<b class='flag-5'>捕獲</b>率

    OPA857設(shè)計(jì)個(gè)光脈沖捕獲的前端遇到的疑問求解

    問題描述: 按照工程需求,需要設(shè)計(jì)個(gè)光脈沖捕獲的前端。我采用的方法是利用OPA857+THS4521進(jìn)行對(duì)光信號(hào)放大,然后用THS4521差分輸出的路送比較器。光傳感器是光電二極
    發(fā)表于 08-30 06:00

    工業(yè)自動(dòng)化領(lǐng)域解決方案 利用Profishark工具捕獲EtherCAT報(bào)文

    ProfiShark是款高性能的報(bào)文捕獲工具,專為工業(yè)網(wǎng)絡(luò)設(shè)計(jì),特別適用于EtherCAT報(bào)文的捕獲與分析。通過高分辨率時(shí)間戳、100%高保真流量捕獲、TSN支持及PoE直通功能
    的頭像 發(fā)表于 07-05 14:01 ?356次閱讀
    工業(yè)自動(dòng)化領(lǐng)域解決方案 利用Profishark工具<b class='flag-5'>捕獲</b>EtherCAT報(bào)文

    XMC1302 CCU8如何使用內(nèi)部函數(shù)調(diào)用捕獲/解除捕獲

    數(shù)字電源中的 XMC1302 CCU8,如何使用內(nèi)部函數(shù)調(diào)用捕獲/解除捕獲
    發(fā)表于 05-24 07:55

    示波器如何捕獲和分析IIC波形?

    示波器捕獲和分析IIC(集成電路間通信)波形是項(xiàng)重要的電子測(cè)量任務(wù),特別是在嵌入式系統(tǒng)和微控制器的調(diào)試過程中。
    的頭像 發(fā)表于 05-20 15:08 ?3190次閱讀

    示波器如何捕獲單次波形?

    示波器是種用于觀察和分析電信號(hào)波形的電子測(cè)量?jī)x器。在某些測(cè)試場(chǎng)景中,需要捕獲并分析單次出現(xiàn)的波形,比如在故障診斷、分析瞬態(tài)響應(yīng)或測(cè)試高速且不重復(fù)的事件時(shí)。
    的頭像 發(fā)表于 05-17 18:06 ?1769次閱讀

    進(jìn)行STM32 PWM輸入捕獲遇到的疑問求解

    我在進(jìn)行STM32PWM輸入捕獲的時(shí)候直有個(gè)疑問,希望各位大神能給我解決下。 100:復(fù)位模式 – 選中的觸發(fā)輸入(TRGI)的上升沿
    發(fā)表于 05-17 06:13

    TSN抓包工具解密:數(shù)據(jù)包捕獲,為什么選Profishark?

    網(wǎng)絡(luò)流量涉及訪問和記錄通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)。捕獲網(wǎng)絡(luò)流量有多種原因和用例。圖1:捕獲網(wǎng)絡(luò)流量的原因和用例01網(wǎng)絡(luò)故障排除和診斷第一個(gè)原因是網(wǎng)絡(luò)故障排除和診斷。網(wǎng)絡(luò)無法運(yùn)行
    的頭像 發(fā)表于 04-29 08:04 ?600次閱讀
    TSN抓包工具解密:數(shù)據(jù)包<b class='flag-5'>捕獲</b>,為什么選Profishark?

    在使用個(gè)定時(shí)器捕獲兩路PWM的頻率時(shí),中斷函數(shù)應(yīng)該如何配置呢?

    在使用個(gè)定時(shí)器捕獲兩路PWM的頻率時(shí),中斷函數(shù)應(yīng)該如何配置呢?? 我采用如下的方式去獲取,但得到的PWM信號(hào)的占空比其中有路為200,
    發(fā)表于 03-22 06:39

    用CCU6捕獲個(gè)波形的上升沿,當(dāng)這兩個(gè)波形同時(shí)出現(xiàn)上升沿的時(shí)候,是怎么觸發(fā)中斷的啊?

    CCU6只有個(gè)中斷函數(shù),我用CCU6捕獲個(gè)波形的上升沿,當(dāng)這兩個(gè)波形同時(shí)出現(xiàn)上升沿的時(shí)候,是怎么觸發(fā)中斷的啊?是
    發(fā)表于 02-22 07:41

    TIM的外部捕獲怎么用?

    有知道,TIM的外部捕獲是什么意思,有什么用,具體怎么用,有示例不?謝謝!
    發(fā)表于 02-19 07:44

    TLE9854單片機(jī)的MON引腳,可以捕獲PWM,獲取周期和占空比嗎?

    我現(xiàn)在想捕獲12V的個(gè)PWM,MON引腳可以捕獲PWM嗎
    發(fā)表于 02-02 13:02

    鎖相環(huán)同步帶與捕獲帶有區(qū)別嗎?

    鎖相環(huán)同步帶與捕獲帶有區(qū)別嗎? 鎖相環(huán)(簡(jiǎn)稱PLL)同步帶和捕獲帶是鎖相環(huán)中兩個(gè)重要的工作模式,它們?cè)诠δ芎蛻?yīng)用上存在些區(qū)別。 1. 定義和原理: - 鎖相環(huán)同步帶:同步帶是鎖相環(huán)的
    的頭像 發(fā)表于 01-31 11:31 ?1489次閱讀

    TCPWM輸入脈寬捕獲數(shù)據(jù)異常的原因?

    您好,最近嘗試使用TCPWM實(shí)現(xiàn)脈寬捕獲的時(shí)候遇到了奇怪的問題,我將通道配置成了捕獲模式,并且配置CC0為上升沿捕獲,CC1為下降沿捕獲,但觀察實(shí)際值卻是CC0和CC1
    發(fā)表于 01-18 07:42
    主站蜘蛛池模板: 美女扒开腿让男生桶爽免费APP | 两性午夜色视频免费网站| 和尚扒开双腿蹂躏| 人妖干美女| 青柠在线观看视频在线| 日本全彩黄漫无遮挡| 国产成人啪精视频精东传媒网站| 打卡中国各地奋斗第一线| 国产精品96久久久久久AV网址| 国产色婷亚洲99精品AV在线| 久久国产主播福利在线| 嫩小xxxxbbbb| 手机看片国产免费| 亚洲日韩有码无线免费| 2012中文字幕在线动漫电影| xxxxhd17欧美老师| 国产精品三级在线观看| 久久AV喷吹AV高潮欧美| 欧美精品华人在线| 色偷偷91综合久久噜噜| 亚洲精品m在线观看| 2020国产成人精品视频人| 被高跟鞋调教丨vk| 国产日韩欧美三级| 恋夜影视列表免费安卓手机版| 日韩精品无码久久一区二区三| 亚洲国产在线99视频| 91国在线啪精品一区| 国产超碰精久久久久久无码AV| 禁漫H天堂免费A漫| 内射一区二区精品视频在线观看| 天天躁夜夜踩很很踩2022| 在线观看视频一区| 成人毛片在线播放| 精品国产乱码久久久久久免费流畅 | 甜性涩爱dvd| 伊人精品国产| 幺妹视频福利视频| brazzers欧美孕交| 国产亚洲精品97在线视频一| 蜜桃传媒在线观看入口|