惡意軟件的完美掩護:Docker容器

Docker 軟件 編程語言 DNS E安全 E安全 2017-08-27
惡意軟件的完美掩護:Docker容器

關注E安全 關注網絡安全一手資訊

E安全8月5日訊 研究人員發現一種新型攻擊途徑,可允許攻擊者濫用Docker API隱藏目標系統上的惡意軟件,Docker API可被用於實現遠程代碼執行與安全機制迴避等目的。

作為開發人員群體當中人氣極高的代碼測試方案,Docker能夠建立起一套完整的IT堆棧(包含操作系統、固件以及應用程序),用以在容器這一封閉環境當中進行代碼運行。儘管其結構本身非常適合實現代碼測試,但容器技術亦可能被攻擊者用於在企業環境內進行惡意軟件感染。

惡意軟件的完美掩護:Docker容器

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

研究人員們解釋稱,攻擊者不僅能夠在企業網絡之內運行惡意軟件代碼,同時亦可在過程當中配合較高執行權限。

在攻擊當中,惡意一方往往會誘導受害者打開受控網頁,而後使用REST API調用執行Docker Build命令,藉以建立起能夠執行任意代碼的容器環境。通過一種名為“主機重綁定”的技術,攻擊者能夠繞過同源政策保護機制並獲得底層Moby Linux虛擬機當中的root訪問能力。

如此一來,攻擊者將能夠竊取開發者登錄憑證、在開發者設備上運行惡意軟件或者將惡意軟件注入至容器鏡像之內,進而在該容器的每一次啟動當中實現感染傳播。

杜爾塞表示,攻擊最終能在企業網絡中駐留持久代碼,由於這部分代碼運行在Moby Linux虛擬機當中,因此現有主機上的安全產品無法檢測主機上的持久性。

攻擊的多個階段

這種攻擊分多個階段進行。首先,將運行Docker for Windows的開發人員引誘到攻擊者控制的網頁(託管著特製JavaScript)。

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

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

DNS重綁定攻擊VS主機重綁定攻擊

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

DNS重綁定攻擊指的是,對手濫用DNS誘騙瀏覽器不執行SOP。Aqua的主機重綁定攻擊針對Microsoft名稱解析協議實現同樣的目標,不過主機重綁定攻擊通過虛擬接口實現,因此攻擊本身不會在網絡中被檢測到。

研究人員寫到,主機重綁定攻擊會將本地網絡上的主機IP地址重綁定到另一個IP地址,即與DNS重綁定類似。DNS重綁定是欺騙DNS響應、控制域名或干擾DNS服務,但主機重綁定攻擊則是欺騙對名稱解析協議(廣播的)的響應,例如NetBIOS和LLMNR。其結果是創建容器,使其在受害者Hyper-V虛擬機中運行,共享主機網絡,並執行攻擊者控制的任意代碼。

研究人員解釋稱,具備能力針對Docker Daemon REST API執行任何命令之後,他們能有效獲取底層Moby Linux虛擬機的Root訪問權限。

下一步是利用Root權限執行惡意代碼,同時在主機上保持持久性,並在虛擬機內隱匿活動。

生成“影子容器”

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

為此,杜爾塞編寫了容器關閉腳本,以此保存他的腳本/狀態。當Docker重啟時,或Docker重置或主機重啟後,“影子容器”將運行攻擊者的容器,保存攻擊腳本。這樣一來,攻擊者便能在滲透網絡的同時保持隱匿性,以此執行偵察活動、植入惡意軟件或在內部網絡中橫向活動。

這種攻擊能實現攻擊者什麼目的?

杜爾塞表示,通過這種攻擊可以訪問內部網絡、掃描網絡、發現開放端口、橫向活動,並感染其它設備,但還得找到方法感染本地容器鏡像,從而散佈到整個企業Docker渠道中。

杜爾塞和Aqua Security研究負責人邁克爾·喬爾內表示,他們今年年初通知了Docker這種攻擊途徑。

Docker承認存在這個問題,並表示這是由於先前所有Docker for Windows版本允許通過TCP/HTTP遠程訪問Docker。自此之後,Docker改變了默認配置,關閉了HTTP端口,以此防止訪問Docker Daemon。

緩解措施

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

05

E安全推薦文章

官網:www.easyaq.com

2017年8月

01

02

03

04

05

06

07

相關推薦

推薦中...