Angler和Nuclear漏洞攻擊包整合Pawn Storm的Flash漏洞攻擊碼

當說到漏洞攻擊包,最重要的就是時間。漏洞攻擊包通常都會包入最新或零時差的漏洞攻擊碼,好盡可能地攻擊更多尚未更新的受害者。趨勢科技發現有兩個漏洞正被漏洞攻擊包當作目標,其中之一被用在最近的Pawn Storm Flash零時差漏洞攻擊

從10月28日開始,趨勢科技發現這兩個漏洞被 Angler和Nuclear漏洞攻擊包當作目標。(第二個漏洞是Flash的漏洞,直到版本18.0.0.232都存在;我們目前正在與Adobe確認此漏洞的CVE編號)

 

圖1、Angler漏洞攻擊包中CVE-2015-7645的截圖(點擊放大)

圖2、Nuclear漏洞攻擊包中CVE-2015-7645的截圖(點擊放大)

圖3、Angler漏洞攻擊包中第二個漏洞的截圖(點擊放大)

 

Diffie-Hellman協定被惡意使用

趨勢科技最新的研究確認此兩個漏洞攻擊包惡意使用了Diffie-Hellman金鑰交換協定,跟之前的用法有些許不同。這次是用來隱藏自己的網路流量並繞過某些安全產品。

這些改變試圖讓研究人員想分析它們的金鑰交換時更加困難。Angler漏洞攻擊包對其Diffie-Hellman協定的用法做出以下改變。它們在之前比較明確而清晰的程序中加入一些混淆處。

 

  1. 不再從客戶端發送gp給伺服器。相對地,它送出ssid來確認gp的配對。
  2. 隨機金鑰K是128字元而非16字元。使用128字元的金鑰使得想解開原始資料變得更加困難。

 

圖4、Diffie-Hellman協定,使用ssid來識別g,p配對 繼續閱讀

新的棘手問題:Pawn Storm零時差攻擊如何閃過Java的點擊播放(Click-to-Play)保護

 

趨勢科技在幾個月前披露Pawn Storm(典當風暴)使用當時尚未被發現的零時差Java漏洞(CVE-2015-2590)進行攻擊。在當時,我們注意到另一個漏洞被用來繞過Java的點擊播放(Click-to-Play)保護。這第二個漏洞(CVE-2015-4902)現在已經被Oracle在每季定期更新中修復,這要歸功於趨勢科技的發現。

點擊播放(Click-to-Play)要求使用者在執行Java應用程式前點擊它通常會顯示的地方。它會詢問使用者是否真的確定自己要執行Java程式碼。

繞過點擊播放(Click-to-Play)保護讓惡意Java程式碼可以在不顯示任何警告視窗下執行。這對Pawn Storm來說非常有用,因為它在今年初使用針對這些漏洞的攻擊碼來對北大西洋公約組織(NATO)成員和白宮進行針對性攻擊。Pawn Storm本身以頻繁使用零時差攻擊而知名:最近它被發現將Adobe Flash未修補的漏洞用在其攻擊的一部分。(此漏洞已經被Adobe修復。)

當我們私下披露此漏洞時,Oracle承認有此漏洞。用來繞過這種保護的方法很巧妙;在我們徹底討論此漏洞前先讓我們討論一些背景資料。

Oracle提供Java網路啟動通訊協定(JNLP)技術來讓需要遠端伺服器上資源的應用程式可以在客戶端桌面上啟動。它可以用來部署applet或web start應用程式。在此攻擊中,攻擊者利用JNLP來部署applet。

 

要實現這做法,Java提供了目錄服務讓Java軟體客戶端透過名稱發現和查找物件。這就是所謂的JNDI(Java命名和目錄介面)。這種機制是Java遠端程序呼叫的基礎,稱為RMI(遠端方法調用)。JNDI有些基本概念和此攻擊有關,即:

  • Context – 一組名稱和物件的綁定。換言之,Context物件可以解析一個物件的名稱。這個物件有數種類型;RegistryContext是其中之一。
  • ContextFactory – context物件的工廠(factory),其為呼叫者建立Context物件。RegisterContextFactory是建立ContextFactory物件的工廠(factory)。

 

下圖顯示此攻擊是如何運作:

 

圖1、如何繞過點擊播放(Click-to-Play)

 

攻擊者需要完成三件事以進行攻擊:

  1. 攻擊者將圖2中的HTML碼加到一個惡意網站。
  2. 攻擊者建立具備公開IP地址的RMI註冊伺服器。
  3. 攻擊者建立另一個同樣具備公開IP地址Web伺服器來儲存惡意Java程式碼。
圖2.、HTML碼插入到一個惡意網站

 

 

下面是攻擊進行的過程:

 

  1. 在受害者的電腦上瀏覽器程序產生(fork)出exe程序(Java客戶端的一部分)來請求惡意網站上的init.jnlp。這由圖2內的HTML碼所造成(Java網路啟動通訊協定用一個.jnlp檔案來透過Java Web Start技術來啟動Java程式碼。)

 

  1. 惡意網站傳回jnlp。讓我們來看看此檔案的內容:
圖3、init.jnlp的內容

繼續閱讀