如何使用LES對Linux進行滲透測試研究

2019-06-22 42538人圍觀 系統安全

*本工具僅供技術分享、交流討論,嚴禁用于非法用途。

a.png

寫在前面的話

LES安全工具由Z-Labs開發并負責維護,可幫助安全測試人員以及安全分析專家在對Linux設備進行紅隊測試/滲透測試的過程中尋找關鍵漏洞。在這篇文章中,我將介紹這款工具的運行機制,并教會大家如何高效地使用LES。

工具介紹

為了完成滲透測試任務并兼容不同Linux發行版系統,LES使用了大量的啟發式方法來實現其主要功能,同時為給定的Linux設備生成候選漏洞列表,以最大程度地降低假陽性以及誤報率。此外,出于工具實用性以及維護便利性開率,該工具還實現了以下特性:

1、子系統標記,針對目前大部分流行的Linux發行版,其中包括Debian、Ubuntu、RHEL/CentOS。

2、用戶空間分析子系統,完全支持基于deb和rpm的發行版系統,部分支持其他發行版。

在LES的早期版本中,LES只會處理內核版本,這種方式完全跳過了發行版版本的問題,大部分主要處理功能都通過Linux_Exploit_Suggester腳本來實現。但是這種方式并不是非常有效,因為容易出現誤報的問題,從而產生大量需要手動分析的漏洞。

隨著時間的推移,LES也得到了改進,并通過生成候選漏洞列表的方式來解決之前的問題:

1、 基于內核版本生成初始漏洞列表;

2、 檢查每個漏洞的“標簽”命中率;

3、 基于“附加檢查”舍棄不適用的漏洞利用;

4、 計算每個候選漏洞的內部度量(“等級”),并根據計算對列表排序。

接下來,我們將一一進行討論。

基于內核版本生成初始漏洞列表

這是減少給定設備候選漏洞攻擊數量的第一步。LES會解析uname命令的輸出結果,并獲取準確的內核版本信息,然后再跟漏洞利用代碼中定義的版本信息進行對比。例如:Reqs: pkg=linux-kernel,ver>=4.4,ver<=4.13,…

檢測標簽匹配

為了降低假陽性,并進一步減少候選漏洞數量,提升目標系統的適用性,LES還引入了“標簽”的概念。標簽是描述內核版本的簡單語句,并標明給定的漏洞可以適用于這些系統版本,語句主要由正則表達式組成。例如:Tags: RHEL=6,RHEL=7{kernel:3.10.0-514.21.2|3.10.0-514.26.1}。“標簽”并不會舍棄候選漏洞列表中的實體數量,而是將更加適用的對象“往前放”。

舍棄不適用的漏洞

為了進一步優化候選漏洞列表,LES還引入了額外的參數要求(Reqs域)。在向LES中添加漏洞利用實體時,我們可以定義下列條件:

Reqs:pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y, \

sysctl:kernel.unprivileged_userns_clone==1

上述條件表明內核版本必須>3.2并且<=4.10.6,而且內核的用戶命名空間功能還必須以CONFIG_USER_NS=y進行編譯,并啟動該功能(sysctl:kernel.unprivileged_userns_clone==1)。

對于不常用的檢測情況,LES還提供了運行任意BASH命令的功能,以便研究人員查看漏洞是否適用于給定系統。例如:

Reqs:pkg=linux-kernel,ver>=4.4.0,ver<=4.4.0,cmd:grep -qi ip_tables/proc/modules

在上述場景中,命令“grep -qi ip_tables /proc/modules”主要用來判斷ip_tables模塊是否已加載,并根據命令返回值(TRUE或FALSE)來判斷漏洞是否適用于該系統。

基于排名動態生成的漏洞排序列表

最后,LES會根據動態計算的等級(Rank)結果對列表中的現有漏洞及西寧排序,等級越高則在列表中的位置越靠前,也就是漏洞適用于給定系統的概率會越高。

Rank計算基于下列規則:

1、 針對普通漏洞的初始rank為1。

2、 針對優秀漏洞的初始rank為5,例如dirtycow和eBPF_verifier等等。

3、 針對較差漏洞的初始rank為0,例如不穩定的或不適用的漏洞。

4、 如果待測Linux發行版系統版本匹配其中一個標簽,則Rank加2。

5、 如果待測Linux發行版系統版本正則表達式匹配其中一個標簽,則Rank加5。

例如,LES針對dirtycow漏洞利用的Rank計算方式如下,運行版本為Ubuntu 16.04,內核版本為4.4.0-21-generic:

Inital rank: 5

Distribution version match: +2 to rank

kernel version regex match: +5 to rank

final rank: 12

功能介紹

接下來,我們一起看看如何使用LES吧!

基本使用場景下,所有的步驟都會按順序執行來生成候選漏洞列表:

$./les.sh

–cvelist-file選項可以用來設置完整的CVE列表,如果目標系統受其中漏洞影響的話,LES將會用其進行測試,列表可以通過https://api-ksplice.oracle.com/api/1/update-list/生成:

$./les.sh --cvelist-file <cve-listing-file>

在紅隊研究的過程中,我們還可以“間接”運行LES來對目標(例如HIDS)執行更加嚴格的監控:

victim-host$dpkg -l > pkgsListing.txt

pentester-host$./les.sh --uname "<uname-a-from-victim>" --pkglist-filepkgsListing.txt

在對目標設備進行漏洞利用測試之前,我們通常還需要檢查目標內核是否使用了其他加固措施:

$./les.sh --checksec

工具快速下載

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh-O les.sh

項目地址

LES:【GitHub傳送門

* 參考來源:mzet,FB小編Alpha_h4ck編譯,轉載請注明來自FreeBuf.COM

取消
Loading...

特別推薦

推薦關注

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 重庆百变王牌走势图