惡意軟件的完美掩護(hù):Docker容器

責(zé)任編輯:editor005

2017-08-05 21:55:57

摘自:E安全

研究人員發(fā)現(xiàn)一種新型攻擊途徑,可允許攻擊者濫用Docker API隱藏目標(biāo)系統(tǒng)上的惡意軟件,Docker API可被用于實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行與安全機(jī)制回避等目的。

研究人員發(fā)現(xiàn)一種新型攻擊途徑,可允許攻擊者濫用Docker API隱藏目標(biāo)系統(tǒng)上的惡意軟件,Docker API可被用于實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行與安全機(jī)制回避等目的。

作為開發(fā)人員群體當(dāng)中人氣極高的代碼測(cè)試方案,Docker能夠建立起一套完整的IT堆棧(包含操作系統(tǒng)、固件以及應(yīng)用程序),用以在容器這一封閉環(huán)境當(dāng)中進(jìn)行代碼運(yùn)行。盡管其結(jié)構(gòu)本身非常適合實(shí)現(xiàn)代碼測(cè)試,但容器技術(shù)亦可能被攻擊者用于在企業(yè)環(huán)境內(nèi)進(jìn)行惡意軟件感染。

在本屆于拉斯維加斯召開的2017美國(guó)黑帽大會(huì)上,Aqu Security公司研究人員Michael Cherny與Sagie Dulce指出,Aqua Security研究人員塞奇·杜爾塞曾提出這種概念驗(yàn)證(PoC)攻擊,并首次演示了這種技術(shù)。

研究人員們解釋稱,攻擊者不僅能夠在企業(yè)網(wǎng)絡(luò)之內(nèi)運(yùn)行惡意軟件代碼,同時(shí)亦可在過(guò)程當(dāng)中配合較高執(zhí)行權(quán)限。

在攻擊當(dāng)中,惡意一方往往會(huì)誘導(dǎo)受害者打開受控網(wǎng)頁(yè),而后使用REST API調(diào)用執(zhí)行Docker Build命令,借以建立起能夠執(zhí)行任意代碼的容器環(huán)境。通過(guò)一種名為“主機(jī)重綁定”的技術(shù),攻擊者能夠繞過(guò)同源政策保護(hù)機(jī)制并獲得底層Moby Linux虛擬機(jī)當(dāng)中的root訪問(wèn)能力。

如此一來(lái),攻擊者將能夠竊取開發(fā)者登錄憑證、在開發(fā)者設(shè)備上運(yùn)行惡意軟件或者將惡意軟件注入至容器鏡像之內(nèi),進(jìn)而在該容器的每一次啟動(dòng)當(dāng)中實(shí)現(xiàn)感染傳播。

杜爾塞表示,攻擊最終能在企業(yè)網(wǎng)絡(luò)中駐留持久代碼,由于這部分代碼運(yùn)行在Moby Linux虛擬機(jī)當(dāng)中,因此現(xiàn)有主機(jī)上的安全產(chǎn)品無(wú)法檢測(cè)主機(jī)上的持久性。

攻擊的多個(gè)階段

這種攻擊分多個(gè)階段進(jìn)行。首先,將運(yùn)行Docker for Windows的開發(fā)人員引誘到攻擊者控制的網(wǎng)頁(yè)(托管著特制JavaScript)。

JavaScript能繞過(guò)瀏覽器“同源策略”(Same Origin Policy,SOP)安全協(xié)議——現(xiàn)代瀏覽器上的數(shù)據(jù)保護(hù)功能。所謂同源,是指,域名,協(xié)議,端口相同。

杜爾塞指出,HTTP請(qǐng)求方法有限,包括GET、HEAD和POST。杜爾塞不僅使用未違反SOP保護(hù)的API命令,而且還在主機(jī)(將Git倉(cāng)庫(kù)作為C&C服務(wù)器)上創(chuàng)建一個(gè)Docker容器,由此托管惡意攻擊代碼。

DNS重綁定攻擊VS主機(jī)重綁定攻擊

杜爾塞表示,Docker容器受限。如果想要訪問(wèn)整個(gè)Docker API,以便能運(yùn)行任何容器,例如對(duì)主機(jī)和底層虛擬機(jī)具有更多訪問(wèn)權(quán)的特權(quán)容器。為了實(shí)現(xiàn)該效果,Aqua研究人員創(chuàng)建了與“DNS重綁定攻擊”(DNS Rebinding Attack.)類似的“主機(jī)重綁定攻擊”(Host Rebinding Attack)技術(shù)。

DNS重綁定攻擊指的是,對(duì)手濫用DNS誘騙瀏覽器不執(zhí)行SOP。Aqua的主機(jī)重綁定攻擊針對(duì)Microsoft名稱解析協(xié)議實(shí)現(xiàn)同樣的目標(biāo),不過(guò)主機(jī)重綁定攻擊通過(guò)虛擬接口實(shí)現(xiàn),因此攻擊本身不會(huì)在網(wǎng)絡(luò)中被檢測(cè)到。

研究人員寫到,主機(jī)重綁定攻擊會(huì)將本地網(wǎng)絡(luò)上的主機(jī)IP地址重綁定到另一個(gè)IP地址,即與DNS重綁定類似。DNS重綁定是欺騙DNS響應(yīng)、控制域名或干擾DNS服務(wù),但主機(jī)重綁定攻擊則是欺騙對(duì)名稱解析協(xié)議(廣播的)的響應(yīng),例如NetBIOS和LLMNR。其結(jié)果是創(chuàng)建容器,使其在受害者Hyper-V虛擬機(jī)中運(yùn)行,共享主機(jī)網(wǎng)絡(luò),并執(zhí)行攻擊者控制的任意代碼。

研究人員解釋稱,具備能力針對(duì)Docker Daemon REST API執(zhí)行任何命令之后,他們能有效獲取底層Moby Linux虛擬機(jī)的Root訪問(wèn)權(quán)限。

下一步是利用Root權(quán)限執(zhí)行惡意代碼,同時(shí)在主機(jī)上保持持久性,并在虛擬機(jī)內(nèi)隱匿活動(dòng)。

生成“影子容器”

接下來(lái),需生成杜爾塞所謂的“影子容器”(Shadow Container)。當(dāng)虛擬機(jī)重啟時(shí),“影子容器”允許惡意容器下達(dá)保持持久性的指令。如果受害者重啟主機(jī)或只是重啟Docker for Windows,攻擊者將失去控制。為了解決這些問(wèn)題,他們提出采用“影子容器”技術(shù)獲取持久性和隱匿性。

為此,杜爾塞編寫了容器關(guān)閉腳本,以此保存他的腳本/狀態(tài)。當(dāng)Docker重啟時(shí),或Docker重置或主機(jī)重啟后,“影子容器”將運(yùn)行攻擊者的容器,保存攻擊腳本。這樣一來(lái),攻擊者便能在滲透網(wǎng)絡(luò)的同時(shí)保持隱匿性,以此執(zhí)行偵察活動(dòng)、植入惡意軟件或在內(nèi)部網(wǎng)絡(luò)中橫向活動(dòng)。

這種攻擊能實(shí)現(xiàn)攻擊者什么目的?

杜爾塞表示,通過(guò)這種攻擊可以訪問(wèn)內(nèi)部網(wǎng)絡(luò)、掃描網(wǎng)絡(luò)、發(fā)現(xiàn)開放端口、橫向活動(dòng),并感染其它設(shè)備,但還得找到方法感染本地容器鏡像,從而散布到整個(gè)企業(yè)Docker渠道中。

杜爾塞和Aqua Security研究負(fù)責(zé)人邁克爾·喬爾內(nèi)表示,他們今年年初通知了Docker這種攻擊途徑。

Docker承認(rèn)存在這個(gè)問(wèn)題,并表示這是由于先前所有Docker for Windows版本允許通過(guò)TCP/HTTP遠(yuǎn)程訪問(wèn)Docker。自此之后,Docker改變了默認(rèn)配置,關(guān)閉了HTTP端口,以此防止訪問(wèn)Docker Daemon。

緩解措施

專家給出的緩解措施包括,更新Docker for Windows,僅允許證客戶端訪問(wèn)暴露的端口,通過(guò)防火墻阻止Moby Linux虛擬機(jī)接口上的2375端口,以及在所有端點(diǎn)上禁用LLMNR和NetBIOS。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)