
Bad BPF項目深度解析探索7個惡意eBPF程序的攻擊原理與防御策略【免費下載鏈接】bad-bpfA collection of eBPF programs demonstrating bad behavior, presented at DEF CON 29項目地址: https://gitcode.com/gh_mirrors/ba/bad-bpfBad BPF是一個惡意eBPF程序集合利用eBPF在用戶態(tài)程序和內(nèi)核之間讀寫用戶數(shù)據(jù)的能力實施攻擊。本文將深入剖析該項目中的7個典型惡意eBPF程序揭示其攻擊原理并提供針對性的防御策略幫助系統(tǒng)管理員和安全愛好者有效防范eBPF帶來的安全威脅。一、eBPF技術(shù)與安全風(fēng)險概述eBPFExtended Berkeley Packet Filter技術(shù)允許在Linux內(nèi)核中運行沙箱化的程序無需重新編譯內(nèi)核或加載內(nèi)核模塊。這種靈活性使其在網(wǎng)絡(luò)監(jiān)控、性能分析等領(lǐng)域得到廣泛應(yīng)用但同時也被惡意攻擊者利用成為新型攻擊向量。Bad BPF項目展示了eBPF如何被濫用來實現(xiàn)進程隱藏、系統(tǒng)調(diào)用劫持、權(quán)限提升等惡意行為。1.1 eBPF攻擊的核心優(yōu)勢隱蔽性強eBPF程序運行在內(nèi)核空間傳統(tǒng)用戶態(tài)檢測工具難以發(fā)現(xiàn)權(quán)限高可直接訪問內(nèi)核數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)調(diào)用持久性好部分惡意eBPF程序可實現(xiàn)用戶態(tài)加載器退出后仍在后臺運行二、7個惡意eBPF程序的攻擊原理2.1 BPF-Dos阻止調(diào)試的拒絕服務(wù)攻擊BPF-Dos通過向所有嘗試使用ptrace系統(tǒng)調(diào)用的程序發(fā)送SIG_KILL信號阻止調(diào)試工具如strace正常工作。攻擊者可通過以下命令運行sudo ./bpfdos測試時運行strace /bin/whoami會被立即終止干擾安全人員對可疑進程的調(diào)試分析。2.2 Exec-Hijack進程執(zhí)行流劫持該程序攔截所有execve系統(tǒng)調(diào)用將進程創(chuàng)建請求重定向到/a文件。攻擊步驟如下編譯并復(fù)制劫持程序到根目錄make sudo cp ./bin/hijackee /a sudo chmod ugorx /a運行劫持程序sudo ./bin/exechijack所有新進程創(chuàng)建請求都會被重定向到/a程序?qū)崿F(xiàn)對系統(tǒng)執(zhí)行流的完全控制。2.3 Pid-Hide進程隱藏技術(shù)Pid-Hide通過掛鉤getdents64系統(tǒng)調(diào)用從/proc目錄中移除指定PID對應(yīng)的文件夾使ps等工具無法發(fā)現(xiàn)目標進程sudo ./pidhide --pid-to-hide 2222這種技術(shù)常被惡意軟件用于隱藏自身進程逃避系統(tǒng)管理員的檢測。2.4 Sudo-Add權(quán)限提升攻擊Sudo-Add通過攔截sudo讀取/etc/sudoers文件的操作動態(tài)修改文件內(nèi)容為低權(quán)限用戶添加sudo權(quán)限sudo ./sudoadd --username lowpriv-user攻擊原理是在sudo讀取文件時將第一行替換為lowpriv-user ALL(ALL:ALL) NOPASSWD:ALL #使sudo誤認為該用戶擁有無密碼sudo權(quán)限而實際文件內(nèi)容并未改變極具隱蔽性。2.5 Write-Blocker數(shù)據(jù)寫入攔截Write-Blocker攔截指定PID進程的所有寫操作返回虛假的寫入成功信息實際不寫入任何數(shù)據(jù)sudo ./writeblocker --pid 508該程序只攔截文件描述符大于2的寫操作保留標準輸入輸出使攻擊更難被發(fā)現(xiàn)。例如攔截rsyslogd進程會導(dǎo)致ssh登錄日志無法寫入/var/log/auth.log破壞審計追蹤能力。2.6 Text-Replace動態(tài)文本替換Text-Replace可實時替換指定文件中的文本內(nèi)容語法如下sudo ./textreplace --filename /path/to/file --input foo --replace bar典型惡意用途包括隱藏內(nèi)核模塊./textreplace -f /proc/modules -i joydev -r cryptd偽造MAC地址./textreplace -f /sys/class/net/eth0/address -i 00:15:5d:01:ca:05 -r 00:00:00:00:00:00注意輸入和替換文本必須長度相同避免引入空字符。2.7 Text-Replace2高級動態(tài)文本替換Text-Replace2在Text-Replace基礎(chǔ)上增加兩項關(guān)鍵功能運行時配置修改通過eBPF Maps動態(tài)更新目標文件和替換規(guī)則分離運行模式用戶態(tài)加載器退出后eBPF程序仍可在后臺運行分離運行方法sudo mount bpffs -t bpf /sys/fs/bpf ./textreplace2 -f /proc/modules -i joydev -r cryptd --detach停止程序需刪除BPF鏈接文件sudo rm -r /sys/fs/bpf/textreplace三、eBPF攻擊的防御策略3.1 內(nèi)核版本與配置加固使用Linux內(nèi)核5.8支持eBPF驗證器增強功能啟用內(nèi)核參數(shù)kernel.unprivileged_bpf_disabled1禁止非特權(quán)用戶加載eBPF程序限制/sys/kernel/btf/vmlinux訪問權(quán)限防止攻擊者獲取內(nèi)核類型信息3.2 運行時監(jiān)控與檢測定期使用bpftool檢查加載的eBPF程序bpftool prog list監(jiān)控/sys/fs/bpf目錄檢測異常BPF鏈接文件通過內(nèi)核跟蹤點監(jiān)控eBPF程序加載事件3.3 權(quán)限控制與審計嚴格限制CAP_BPF和CAP_PERFMON等相關(guān) capabilities實施最小權(quán)限原則避免不必要的root權(quán)限進程啟用內(nèi)核審計子系統(tǒng)記錄eBPF相關(guān)操作3.4 工具與技術(shù)防御使用eBPF-based安全工具如Falco、Tracee監(jiān)控異常eBPF活動部署內(nèi)核運行時保護LKRG等檢測異常系統(tǒng)調(diào)用鉤子定期更新系統(tǒng)和安全工具獲取最新eBPF漏洞補丁四、總結(jié)與展望Bad BPF項目展示了eBPF技術(shù)被惡意利用的多種可能性這些攻擊手法利用了eBPF的內(nèi)核級訪問能力和隱蔽性特點對系統(tǒng)安全構(gòu)成嚴重威脅。防御eBPF攻擊需要從內(nèi)核配置、權(quán)限控制、運行時監(jiān)控等多方面入手構(gòu)建多層次防御體系。隨著eBPF技術(shù)的不斷發(fā)展其安全邊界也在不斷演變。安全社區(qū)需要持續(xù)關(guān)注eBPF安全問題開發(fā)更有效的檢測和防護工具確保這一強大技術(shù)在安全可控的前提下發(fā)揮其優(yōu)勢。對于系統(tǒng)管理員而言了解eBPF攻擊原理和防御策略是保護系統(tǒng)免受新型攻擊的關(guān)鍵一步。參考資料項目源碼src/構(gòu)建腳本src/Makefile工具集tools/程序列表src/bpfdos.c、src/exechijack.c、src/pidhide.c等【免費下載鏈接】bad-bpfA collection of eBPF programs demonstrating bad behavior, presented at DEF CON 29項目地址: https://gitcode.com/gh_mirrors/ba/bad-bpf創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考