新聞中心
這篇文章給大家分享的是有關(guān)怎么用LES對Linux進(jìn)行滲透測試的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了朝陽免費建站歡迎大家使用!
工具介紹
為了完成滲透測試任務(wù)并兼容不同Linux發(fā)行版系統(tǒng),LES使用了大量的啟發(fā)式方法來實現(xiàn)其主要功能,同時為給定的Linux設(shè)備生成候選漏洞列表,以最大程度地降低假陽性以及誤報率。此外,出于工具實用性以及維護(hù)便利性開率,該工具還實現(xiàn)了以下特性:
1、子系統(tǒng)標(biāo)記,針對目前大部分流行的Linux發(fā)行版,其中包括Debian、Ubuntu、RHEL/CentOS。
2、用戶空間分析子系統(tǒng),完全支持基于deb和rpm的發(fā)行版系統(tǒng),部分支持其他發(fā)行版。
在LES的早期版本中,LES只會處理內(nèi)核版本,這種方式完全跳過了發(fā)行版版本的問題,大部分主要處理功能都通過Linux_Exploit_Suggester腳本來實現(xiàn)。但是這種方式并不是非常有效,因為容易出現(xiàn)誤報的問題,從而產(chǎn)生大量需要手動分析的漏洞。
隨著時間的推移,LES也得到了改進(jìn),并通過生成候選漏洞列表的方式來解決之前的問題:
1、 基于內(nèi)核版本生成初始漏洞列表;
2、 檢查每個漏洞的“標(biāo)簽”命中率;
3、 基于“附加檢查”舍棄不適用的漏洞利用;
4、 計算每個候選漏洞的內(nèi)部度量(“等級”),并根據(jù)計算對列表排序。
接下來,我們將一一進(jìn)行討論。
基于內(nèi)核版本生成初始漏洞列表
這是減少給定設(shè)備候選漏洞攻擊數(shù)量的第一步。LES會解析uname命令的輸出結(jié)果,并獲取準(zhǔn)確的內(nèi)核版本信息,然后再跟漏洞利用代碼中定義的版本信息進(jìn)行對比。例如:Reqs: pkg=linux-kernel,ver>=4.4,ver<=4.13,...
檢測標(biāo)簽匹配
為了降低假陽性,并進(jìn)一步減少候選漏洞數(shù)量,提升目標(biāo)系統(tǒng)的適用性,LES還引入了“標(biāo)簽”的概念。標(biāo)簽是描述內(nèi)核版本的簡單語句,并標(biāo)明給定的漏洞可以適用于這些系統(tǒng)版本,語句主要由正則表達(dá)式組成。例如:Tags: RHEL=6,RHEL=7{kernel:3.10.0-514.21.2|3.10.0-514.26.1}?!皹?biāo)簽”并不會舍棄候選漏洞列表中的實體數(shù)量,而是將更加適用的對象“往前放”。
舍棄不適用的漏洞
為了進(jìn)一步優(yōu)化候選漏洞列表,LES還引入了額外的參數(shù)要求(Reqs域)。在向LES中添加漏洞利用實體時,我們可以定義下列條件:
Reqs:pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y, \sysctl:kernel.unprivileged_userns_clone==1
上述條件表明內(nèi)核版本必須>3.2并且<=4.10.6,而且內(nèi)核的用戶命名空間功能還必須以CONFIG_USER_NS=y進(jìn)行編譯,并啟動該功能(sysctl:kernel.unprivileged_userns_clone==1)。
對于不常用的檢測情況,LES還提供了運行任意BASH命令的功能,以便研究人員查看漏洞是否適用于給定系統(tǒng)。例如:
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模塊是否已加載,并根據(jù)命令返回值(TRUE或FALSE)來判斷漏洞是否適用于該系統(tǒng)。
基于排名動態(tài)生成的漏洞排序列表
最后,LES會根據(jù)動態(tài)計算的等級(Rank)結(jié)果對列表中的現(xiàn)有漏洞及西寧排序,等級越高則在列表中的位置越靠前,也就是漏洞適用于給定系統(tǒng)的概率會越高。
Rank計算基于下列規(guī)則:
1、 針對普通漏洞的初始rank為1。
2、 針對優(yōu)秀漏洞的初始rank為5,例如dirtycow和eBPF_verifier等等。
3、 針對較差漏洞的初始rank為0,例如不穩(wěn)定的或不適用的漏洞。
4、 如果待測Linux發(fā)行版系統(tǒng)版本匹配其中一個標(biāo)簽,則Rank加2。
5、 如果待測Linux發(fā)行版系統(tǒng)版本正則表達(dá)式匹配其中一個標(biāo)簽,則Rank加5。
例如,LES針對dirtycow漏洞利用的Rank計算方式如下,運行版本為Ubuntu 16.04,內(nèi)核版本為4.4.0-21-generic:
Inital rank: 5Distribution version match: +2 to rankkernel version regex match: +5 to rankfinal rank: 12
功能介紹
接下來,我們一起看看如何使用LES吧!
基本使用場景下,所有的步驟都會按順序執(zhí)行來生成候選漏洞列表:
$./les.sh
--cvelist-file選項可以用來設(shè)置完整的CVE列表,如果目標(biāo)系統(tǒng)受其中漏洞影響的話,LES將會用其進(jìn)行測試,列表可以通過https://api-ksplice.oracle.com/api/1/update-list/生成:
$./les.sh --cvelist-file
在紅隊研究的過程中,我們還可以“間接”運行LES來對目標(biāo)(例如HIDS)執(zhí)行更加嚴(yán)格的監(jiān)控:
victim-host$dpkg -l > pkgsListing.txtpentester-host$./les.sh --uname "" --pkglist-filepkgsListing.txt
在對目標(biāo)設(shè)備進(jìn)行漏洞利用測試之前,我們通常還需要檢查目標(biāo)內(nèi)核是否使用了其他加固措施:
$./les.sh --checksec
工具快速下載
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh-O les.sh
感謝各位的閱讀!關(guān)于“怎么用LES對Linux進(jìn)行滲透測試”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
分享文章:怎么用LES對Linux進(jìn)行滲透測試
標(biāo)題URL:http://fisionsoft.com.cn/article/gicgio.html