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

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

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

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 重庆百变王牌走势图 老版江西同城乐南昌麻将 天乐红中麻将 甘肃11选5 360 20选8旋转矩阵软件 信誉好的棋牌游戏有哪些 体彩排五近100期 江西11选5走势图前三表 河北十一选五的走势 哈尔滨麻将红中满天飞 陕西11选5开奖信息 广州快乐十分 股票行情分析方法 香港股市行情查询 兼职网络赚钱 富贵捕鱼手机下载 云南快乐十分技巧