最佳姿勢~如何繞過McAfee白名單限制【上】

來源:http://bbs.ichunqiu.com/thread-10492-1-1.html?from=ch

繞過McAfee系統(tǒng)底層應(yīng)用白名單的絕佳姿勢

原文來自exploit-db.com,由ichunqiu簽約作者prison翻譯發(fā)布

'''

前方高能,多字預(yù)警,這篇文章。。很長很長。。所以分兩部發(fā)。。。

本文屬于paper文獻類,干貨較多,翻譯水平有限,請多多指教。

手動鞠躬。

'''

1.摘要

本文介紹了SEC安全顧問實驗室對于驗證在McAfee控制下的應(yīng)用的安全性測試的研究結(jié)果。這個產(chǎn)品的一個例子是進一步為像SCADA的服務(wù)器環(huán)境或像工作站一樣對于系統(tǒng)安全性能有高需求的關(guān)鍵系統(tǒng)進行強化。程序白名單有什么卵用呢?簡單來說就像是澡堂子一樣,分男女浴室,女浴室當(dāng)然是不準(zhǔn)男生隨便亂進的。(當(dāng)然了總有能例外的人,這也是這篇文章要討論的事),在操作系統(tǒng)上也基本是這個概念?!颈径卧臎]有,原文解釋略刻板】這應(yīng)該可以防止惡意軟件的執(zhí)行,由此來防御更先進的持續(xù)威脅(APT)攻擊,McAfee應(yīng)用程序控制軟件就是這樣一個例子。它可以安裝在任意一個系統(tǒng)上,然而,他的主要功能是對基礎(chǔ)設(shè)施的嚴(yán)格保護,而且他還有一些額外的安全功能,包括讀寫保護和不同的內(nèi)存保護。

本次研究的是針對Windows下的McAfee(6.1.3.353版本)弱點缺陷檢查設(shè)計和實現(xiàn)。已經(jīng)確定了有幾種方法可以繞過McAfee控制的主要特征程序的白名單,由此來執(zhí)行未經(jīng)授權(quán)的代碼。不同的審計過程是現(xiàn)在最常見的攻擊方法。在大多數(shù)情況下,應(yīng)用程序最初的攻擊可以被攔截,但是,只要應(yīng)用程序改變一點點,它是有可能繞過保護來感染系統(tǒng)的。這些方案包括各種社會工程學(xué)攻擊和內(nèi)存損耗攻擊。McAfee攔截程序可以避免內(nèi)存泄漏攻擊(例如緩沖區(qū)溢出)。事實上,這些保護只針對典型的操縱系統(tǒng),如利用ASLR和DEP開發(fā)的新系統(tǒng)運行時則沒什么卵用。因為他們已經(jīng)包括了DEP和ASLP繞過方法。

已經(jīng)確定一些額外的設(shè)計缺陷和弱點可以用于繞過讀寫保護,另外內(nèi)核驅(qū)動程序中存在幾個濫用可以導(dǎo)致系統(tǒng)崩潰的漏洞。基礎(chǔ)設(shè)施的安全對于主要的應(yīng)用程序正常運行是至關(guān)重要的(比如定期去電廠檢查服務(wù)器的發(fā)熱情況)這樣的攻擊基本上可以導(dǎo)致很嚴(yán)重的問題。最后注意,McAfee還附帶一些非常過時的從1999年就可以利用的應(yīng)用程序控制組件。

2.引言

“McAfee的應(yīng)用控制軟件提供了對服務(wù)器,企業(yè)臺式機和固定設(shè)備對于未經(jīng)授權(quán)的程序和代碼的攔截提供了一種非常有效的方式,這種集中管理的白名單解決方案使用一個動態(tài)信任模型和比較創(chuàng)新的安全特性,阻止先進的持續(xù)攻擊--而不需要簽名更新或費時費力的列表管理”。

McAfee是一種通過白名單機制進一步對操作系統(tǒng)強化的應(yīng)用控制程序。這對保護重要的基礎(chǔ)設(shè)施非常有用?;A(chǔ)設(shè)施可能因為特別的可靠性和可用性和需求不符而不安裝更新。這種要求的例子經(jīng)常可以在SCADA環(huán)境不更新來避免從一個更新包的缺陷而感染中發(fā)現(xiàn)。理論上來說應(yīng)用不應(yīng)該阻止白名單上的可執(zhí)行程序,因此可以防止執(zhí)行攻擊者提供的代碼。產(chǎn)品主頁上可以找到以下引用:

“最大限度的減少修補,同時保護內(nèi)存--給你把部署補丁的時間推遲到常規(guī)補丁周期的時間,留有余地。此外。它可以防止白名單中的程序被通過被內(nèi)存緩沖區(qū)溢出攻擊Windows32和64位系統(tǒng)”

本文的目的是驗證上文中說過的研究結(jié)果,即如果由McAfee提供應(yīng)用程序的攔,得有多難才能夠繞過它。

第二節(jié)描述了能夠繞過白名單實現(xiàn)任意代碼執(zhí)行的各種方法。第一個描述了通過技術(shù)獲取所謂的“基本代碼執(zhí)行”,這說明一個基本形式的代碼是否具有代碼執(zhí)行的能力。第二部分闡述了一些基本的執(zhí)行代碼可以在繞過白名單時變成完整的代碼執(zhí)行,這也同樣包含了McAfee提供的內(nèi)存安全保護以及攻擊者如何繞過的問題。第三部分闡述的概念是如何做到如何在運行著McAfee的微軟系統(tǒng)上進行繞過UCA(用戶賬戶控制)。

第三節(jié)用來理解讀寫保護概念和怎樣通過一些簡單的方法來繞過這些保護機制實現(xiàn)任意代碼執(zhí)行,第四節(jié)描述了內(nèi)核驅(qū)動程序以及它們產(chǎn)生的影響,最后一張給出了研究的結(jié)論。

3.繞過代碼執(zhí)行保護機制

McAfee應(yīng)用控制主要的安全功能就是攔截未經(jīng)授權(quán)的執(zhí)行代碼。因此,第一步是演示如何繞過這個功能,在下面的討論中,獲取完整的代碼執(zhí)行的總體目標(biāo)主要分為三個部分。

第一步是實現(xiàn)基本的代碼執(zhí)行,也就是某種非?;镜拇a執(zhí)行。比如說具有啟動白名單程序中的具體參數(shù)的能力。第二步是用基本的代碼執(zhí)行完整執(zhí)行代碼,也就是可以構(gòu)成任意代碼執(zhí)行(shellcode)。這一階段是完全繞過McAfee的代碼執(zhí)行保護機制。

最后但不是必要的一步是繞過用戶賬戶控制(UCA)在管理員賬戶的情況下執(zhí)行代碼執(zhí)行。這只是在如果需要攻擊管理員賬戶的情況下,否則的話另外兩個步驟用普通賬戶就夠了。

3.1基本代碼執(zhí)行

3.1.1濫用未經(jīng)檢查的文件類型:HTA和JS

McAfee主要攔截不在白名單中的類似于.bat,.com,.vbs(有很多這種類型的可執(zhí)行文件類型后綴,凡此種種不一而足)后綴的可執(zhí)行文件,然而另一種非常常見的方法是使用黑名單機制,在這么一個使用黑名單的情況下很可能會漏掉一些文件類型或文件擴展,因此就無法驗證。

這恰恰是由McAfee來檢測的。在這種特殊情況下不檢查HTML程序(HTA),可以隨意浪。從Wscript使用run方法。Shell對象可以啟動在系統(tǒng)上的其他白名單應(yīng)用以方便后期的攻擊。惡意的hta文件可以感染到受害者的電子郵件或者是U盤(利用簡單的社會工程學(xué)攻擊),如果受害者打開了文件。代碼開始執(zhí)行,并進一步感染系統(tǒng)。

在分析過程中發(fā)現(xiàn)了另一個沒有審核的文件類型,不可信的JScript文件執(zhí)行也不驗證,因此可以被攻擊者利用。要啟動另外一個程序,可以使用和上文中所說相同的代碼。最常見的攻擊場景是利用ActiveXObject腳本進行攻擊。FileSystemObject是用來將一個可執(zhí)行文件(病毒)寫到硬盤后,利用wscript.shell啟動可執(zhí)行文件。但是,因為白名單的限制,所以這個文件不會被執(zhí)行而是會被攔截下來。本章的第二部分討論的技術(shù)就是用來實現(xiàn)完整的代碼執(zhí)行。這個技術(shù)需要具有運行白名單應(yīng)用程序和對一些特定的參數(shù)修改的功能。這些都完全可以用JS或者HTA,此外,惡意軟件在JS/HTA文件中進行操作是完全有可能的。

當(dāng)然了,其他的一些沒有過濾的文件也同樣有可能存在任意命令執(zhí)行。

3.1.2快捷方式

如果以上的技術(shù)必須以某種方式發(fā)送給受害者的話,可以通過一些不同的渠道來完成。例如通過E-mail,網(wǎng)絡(luò)分享或者通過U盤粘貼上去。如果是用U盤的話有一個更好的方法,USB協(xié)議還支持一些其他的設(shè)備,比如USB鍵盤,USB鼠標(biāo)或者是USB集線器。一個惡意的U盤可以將自己偽裝為一個USB集線器(內(nèi)部協(xié)議偽裝,不是換包裝啊各位?。缓髮SB鍵盤和它連接起來。然后很快就可以通過它來使用鍵盤發(fā)送特定的按鍵,比如發(fā)送Windows鍵+R鍵可以打開運行對話框(Windows上基本的快捷鍵)。然后就可以通過U盤來。。。(嘿嘿嘿你懂得,反正就是干壞事辣),不過要實現(xiàn)這么猥瑣的事情還是需要比較高的門檻,因為受害者需要插入U盤來執(zhí)行你的文件。這種攻擊不能夠直接通過McAfee來預(yù)防。但是在這里提起來是因為這也是一種比較猥瑣的繞過方法。

3.1.3 Pass The Hash(一種攻擊方法名稱,真不是我偷懶QAQ)

另一個比較常見的攻擊場景是:攻擊者已經(jīng)進入了系統(tǒng)的內(nèi)部網(wǎng)絡(luò)。然后使用Pass The Hash的方法進一步攻克其他組件。如果內(nèi)網(wǎng)主機的管理員賬號密碼相同,那么可以通過pass the hash遠程登錄到任意一臺主機,操作簡單、威力無窮。然后就可以發(fā)送命令在遠程系統(tǒng)上執(zhí)行辣~\(≧▽≦)/~。Metasploit中包含了對這種攻擊有用的模塊,當(dāng)然了,系統(tǒng)中裝了McAfee的可能不吊它。這種骯臟的py交易的內(nèi)幕是:模塊首先將所有命令寫入到一個.bat后綴的可執(zhí)行文件中,然后再執(zhí)行它。因為.bat文件在白名單中是被禁止的,所以這種攻擊也就沒什么卵用了。即使如此,這在實際的攻擊場景中這只是無謂的抗?fàn)幗K究要被被強行推倒滴。通過修改模塊的一行代碼實現(xiàn)直接調(diào)用所提供的命令。

在下一章我們將會給出一個執(zhí)行惡意命令的完整執(zhí)行代碼。

3.1.2完整代碼執(zhí)行

典型的用例就是通過所有現(xiàn)有程序的白名單確定正確的操作以此來工具系統(tǒng)的安全,這種方法存在的問題是攻擊者可能在白名單中任意加入程序。PowerShell和它的可執(zhí)行文件”powershell.exe”被安裝在所有的新系統(tǒng)中就是這樣一個例子。如果系統(tǒng)默認(rèn)將這種程序列入白名單的話,就可以由攻擊者來執(zhí)行。McAfee應(yīng)用控制檢查的流程是,如果攻擊者試圖啟動PowerShell腳本(一種以.ps1為后綴的文件),只允許白名單內(nèi)的腳本可執(zhí)行。然而,道高一尺魔高一丈,這么嚴(yán)密的保護下還是有可能利用powershell.exe.比如通過以下命令來啟動calc.exe是有可能的:

[Bash shell]純文本查看復(fù)制代碼

?

1

powershell.exe –nop –windows hidden –noni –commandcalc.exe

另一種方法是使用encodedCommand參數(shù),使用此參數(shù)可以啟動復(fù)雜的腳本。以下是PowerShell腳本編碼的命令:

[Bash shell]純文本查看復(fù)制代碼

?

1

2

3$cmd = ‘calc.exe’

$bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)

[Convert]::ToBase64String($bytes)

Base64編碼輸出可以用來從PowerShell調(diào)用calc.exe.下面的是一個編碼命令啟動calc.exe的例子:

[Bash shell]純文本查看復(fù)制代碼

?

1

powershell.exe -enc YwBhAGwAYwAuAGUAeABlAA==

通過PowerShell啟動已經(jīng)在白名單中的程序不會很強大,然而,PowerShell會的姿勢多著呢。他可以從Windows庫中訪問和調(diào)用一些公開的像CreateThread()或者VIrtualAlloc()之類的函數(shù)。結(jié)合功能分配額外的內(nèi)存在當(dāng)前進程中開啟一個新的進程來存儲shellcode.

上述技術(shù)可用于利用惡意參數(shù)啟動PowerShell(見“代碼執(zhí)行”章),一個技術(shù)是否適合使用取決于具體的攻擊方向,系統(tǒng)配置和實際情況。

PowerShell是一個默認(rèn)在白名單中可以被攻擊者濫用的一個例子,這同樣說明白名單中很有可能有其他類似的可以被濫用程序存在。調(diào)試器是一個例子,因為它們可以在白名單進程開啟的情況下寫shellcode代碼。其他的例子是像Python和Perl一樣的腳本解釋器,因為它們可以開始執(zhí)行shellcode。在這兩種情況下可以為完成PowerShell指定完整的參數(shù)。Python是使用C的 -c ,Perl是使用的 -e 參數(shù)去執(zhí)行腳本中指定的參數(shù)。

請注意(敲黑板d=====( ̄▽ ̄*)b),這是非常有可能滴,這樣的白名單應(yīng)用的存在可以被攻擊者濫用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,917評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 今晚學(xué)到了成甲老師解讀的微習(xí)慣,大有相見恨晚之情,故立即行動,先記上幾筆。 目前培養(yǎng)的微習(xí)慣 每天1個深蹲 完成情...
    靴希夨掠閱讀 197評論 0 3
  • 連聽歌都變得這么故事化,每聽一首,都要浮想聯(lián)翩想出很多美好的凄慘的惋惜的動人的的各種偶像劇情節(jié)。偶像劇,戒不...
    年少模樣閱讀 263評論 0 0

友情鏈接更多精彩內(nèi)容