他們找到了繞過 SELinux 的方法

繞行

有效規避 SELinux 策略

去年五月底, 肖恩魚, 安全研究員 c共享信息和在他的博客中介紹了他發現的一種方法 繞過 SELinux 安全模塊。

在他的博客文章中,c他分享瞭如何繞過禁止加載內核模塊的演示, 在所研究的設備之一上以特定 SELinux 規則實現(未指定它是哪個設備以及問題對固件和發行版中的 SELinux 規則有多大影響)。

對於那些不知道的人 SELinux的 (Security Enhanced Linux)應該知道這個e它是 Linux 內核的安全模塊, 這提高了系統的安全性,並且在發生安全漏洞的情況下,可以防止它在整個系統中傳播。

SELinux 以三種模式工作; “禁用、許可和強制執行。” 在禁用模式下,SELinux 保持完全禁用狀態。 如果啟用了 SELinux,它將處於 Permissive 模式或 Executor 模式。 在寬容模式下,SELinux 只會監控交互。 在 Enforcing 模式下,SELinux 還會過濾與監控的交互。

它的安全剛性可以從使用 SELinux 的事實中理解,即使系統受到威脅,也無法訪問未授予訪問權限的文件。

已經非常膚淺地解釋了 SELinux,關於繞過 Sean Pesce 提到阻塞模塊 在涉及的 SELinux 規則中 依賴於限制對系統調用的訪問 有限模塊,它允許從文件加載模塊並用於諸如 插入.

我最近一直在關註一個未公開的基於 Linux 的設備作為個人周末項目。 使用一些我不會在這裡討論的簡單技術,我獲得了 root shell 訪問權限。 為避免洩露有關目標實現的不必要細節,本文中的文件名和 SELinux 上下文等信息已更改。

有人提到 因此,不一定必須禁用 SELinux,但為了避免很多複雜情況,加載自定義內核模塊“最好”。 但在這種情況下不是,因為為了繞過它,他分享說我首先決定使用腳本從設備的文件系統中克隆一個現有的內核模塊,並在 module_init 函數中進行了修補,該函數也可用於直接加載內核模塊從內存中的緩衝區。

連接到我的反向 shell,我很快意識到系統啟用了 SELinux。 雖然該策略不像您在典型 Android 設備上找到的標準策略那麼嚴格,但它足夠嚴格以阻止我做很多有用的事情(例如,掛載文件系統和訪問 /etc/ 中的文件) . 幸運的是,我能夠在 /tmp/ 中編寫和執行文件,所以我仍然可以輕鬆地創建和運行自定義工具。

他進一步提到有兩種不同的系統調用可用於加載內核模塊:int init_module 加載存儲在內存中的內核模塊,而 INT 有限模塊 從磁盤加載內核模塊。

有了這個,就可以利用加載內核模塊的可能性,這些模塊可以編譯為自定義模塊來做一些更高級的事情,並且通過必要的配置,可以獲得具有用戶空間訪問權限的內核的成功執行。

SELinux 上下文沒有被刪除; 相反,我們正在過渡到啟動任務上下文(一般來說,這個上下文可能有很少的限制,如果有的話)。

為了演示該方法, 準備了工作原型允許通過加載其模塊來執行內核級代碼 如果您對使用 SELinux 的系統的根訪問權限有限,則完全禁用 SELinux 保護。

最後,如果你有興趣能夠了解更多關於它的信息,你可以查看原始出版物中的詳細信息,網址為 以下鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。