備收爭議的 Hacking Team 被駭 ! 流出資料中發現 Flash零時差漏洞攻擊程式

以協助執行監控任務,出售間諜程式給各國政府與執法單位而備受爭議的Hacking Team公司,近日遭到攻擊,總量近400GB的公司內部文件與資料被公開。曾表示不跟極權國家做生意,以販售號稱合法攔截通訊工具給政府和執法機構的義大利公司Hacking Team, 始終沒有正式公布與他們合作單位的名單,在此次洩露的文件中,包含了Hacking Team的客戶資料、財務文件、合約、內部E-mail郵件,根據International Business Time報導,使用其提供的程式的國家包含:
埃及、依索比亞、摩洛哥、奈及利亞、蘇丹、智利、哥倫比亞、厄瓜多、洪都拉斯、墨西哥、巴拿馬、美國、亞塞拜然、哈薩克斯坦、馬來西亞、蒙古、新加坡、韓國、泰國、烏茲別克斯坦、越南、澳大利亞、賽普勒斯、捷克、德國、匈牙利、義大利、盧森堡、波蘭、俄羅斯、西班牙、瑞士、巴林、阿曼、沙烏地阿拉伯、阿拉伯聯合大公國。

alert 病毒警訊

趨勢科技在這些檔案中發現了Hacking Team所開發的攻擊工具,目前發現的3款攻擊程式中,有兩款鎖定Flash Player的安全漏洞,一款鎖定Windows核心漏洞,且當中只有一個Flash漏洞曾被揭露。

另一款Flash零時差漏洞被Hacking Team描述為「最近4年來最完美的Flash漏洞」。在文件中發現了針對此一漏洞概念性驗證攻擊程式,它會影響各大瀏覽器及Flash Player 9以後的版本,包含最新的Adobe Flash 18.0.0.194在內。

事實上這個Flash漏洞,先前已經有幾個漏洞使用這種 valueOf 伎倆,包括被用在 Pwn2Own 2015的 CVE-2015-0349。

 

圖1、Hacking Team對漏洞的描述

 

Adobe Flash Player漏洞資訊

外洩的資料中包含一個可以啟動Windows計算機的Flash零時差概念證明碼(POC)以及一個帶有真正攻擊shellcode的正式版本。

在POC中有一個說明文件詳述了這個零時差漏洞(如下圖所示)。它指出該漏洞可以影響Adobe Flash Player 9及更新的版本,而且桌面/Metro版本的IE、Chrome、Firefox和Safari都會受到影響。外部報告指出最新版本的Adobe Flash(版本18.0.0.194)也受到影響。

圖2、Hacking Team對漏洞的描述

Adobe 也承認了這項漏洞並發布了安全公告。這份安全公告證實此漏洞已列入 CVE 資料庫當中,編號為 CVE-2015-5119。Adobe 安全公告更確認今日「所有」使用中的 Flash Player 版本都存在這項漏洞。

所有 Flash Player 使用者皆應立即下載最新修正程式,否則將有危險。Adobe 已經釋出修正程式APSB15-16,強烈建議盡更新。本月稍早我們即指出 Flash Player 遭漏洞攻擊套件鎖定的頻率越來越高,而這樣的趨勢似乎沒有轉變的跡象。

根本原因分析

說明文件還介紹了該漏洞的根本原因。這是一個ByteArray類別的Use-After-Free(UAF)漏洞:

  • 當你有一個ByteArray物件ba,並將其給值ba[0]=Object,它會呼叫此物件的valueOf函數
  • valueOf函數可以被覆寫,所以能夠變更物件valueOf函數中的ba
  • 如果你重新分配valueOf函數內的ba記憶體,就會導致UAF,因為ba[0]=Object會儲存原本的記憶體,並且在valueOf函數被呼叫後使用。

正式版漏洞攻擊碼分析

觸發UAF漏洞後,它會破壞Vector.<unit>長度來達到讀寫程序中任意記憶體的能力。一旦具備這能力,漏洞攻擊碼可以進行以下動作:

  • 搜尋程序內dll的基址,然後找到VirtualProtect位址
  • 找到包含在ByteArray內的shellcode位址
  • 呼叫VirtualProtect來將shellcode記憶體改變成可執行。
  • 在AS3程式碼中有定義一個名為Payload的空靜態函數。
  • 找到Payload函數物件位址,然後找到Payload函數物件所包含的真實函數程式碼位址。
  • 用shellcode位址覆寫真正函數程式碼位址
  • 呼叫AS3內的靜態函數Payload,這將導致呼叫了shellcode
  • Shellcode被執行後,重置靜態函數位址。

我們可以看到這種漏洞攻擊方式能夠用覆寫一個靜態函數程式碼位址的方式來繞過控制流防護(Control Flow Guard)

趨勢科技已經能夠立即保護使用者免於此一威脅而無需任何更新。趨勢科技Deep Discovery中所包含帶有腳本分析引擎的沙箱技術可以用來偵測此行為所造成的威脅。趨勢科技企業安全套裝軟體內端點防護產品的瀏覽器漏洞防護功能可以在使用者連到帶有此漏洞攻擊碼的網頁時加以封鎖。瀏覽器漏洞防護可以對抗針對瀏覽器或相關外掛程式的漏洞攻擊。

 

Windows 核心漏洞
此漏洞存在於 Open Font Type Manager (開放字型管理程式) 模組,也就是 ATMFD.dll,由 Adobe 所提供。這個 DLL 在系統中是以核心模式 (Kernel Mode) 執行,因此駭客可利用這個漏洞來提升自己的權限而不被沙盒模擬分析防禦機制所發現。

揭開漏洞的面紗

此漏洞的根源很簡單,當應用程式呼叫某些 GDI API (也就是:GDI32!NamedEscape) 的函式時,可以指定要用來處理字型資料的驅動程式。而 ATMFD.dll 就是這樣一個字型驅動程式。然而,當該模組在處理字型資料時,會因為一個帶正負號數字的延展問題 (signed number extending) 而導致緩衝區溢位。

用一段簡單的程式碼來說明這個漏洞的原理:


圖 3:簡化的漏洞程式碼

帶正負號的數字延展問題出現在第 5 行。當 i 原本是 0x8000 時,一指定到 index 這個變數上就會變成 0xffff8000 (原因是 i 的資料類型是 short,而 index 的類型是 int,而從 short 變成 int 必須延展) 。如此一來,第 6 行程式碼的條件式就會成立,因為 index 是一個很小的負數。而第 8 行的 index*2+6 同樣也會是個負數,因此 buffer_base[index*2+6] 會指向 buffer_base 這個緩衝區之前的某個位置 (而非指向緩衝區內)。

在漏洞攻擊程式碼當中,由於要載入字型緩衝區中的內容是由駭客所設計的,因此駭客可利用這個漏洞來將特殊內容寫入緩衝區前方。

趨勢科技Deep Security的漏洞防護可以利用以下DPI規則來保護使用者的系統免於相關漏洞攻擊:

 

  • 1006824 – Adobe Flash ActionScript3 ByteArray Use After Free漏洞

 

有關這起資料外洩的更多資訊和其他漏洞攻擊細節,請參閱未修補的 Flash Player 漏洞以及其他 Hacking Team 資料外洩事件當中發現的概念驗證攻擊 (Unpatched Flash Player Flaw, More POCs Found in Hacking Team Leak)。未來若有更進一步的消息,我們將陸續更新這篇文章。

相關文章:

◎原文參考來源:

Unpatched Flash Player Flaw, More POCs Found in Hacking Team Leak作者:Peter Pi(威脅分析師)A Look at the Open Type Font Manager Vulnerability from the Hacking Team Leak|   作者:Jack Tang (威脅分析師)

想了解更多關於網路安全的秘訣和建議,只要到趨勢科技粉絲網頁 或下面的按鈕按讚

《提醒》在粉絲頁橫幅,讚的右邊三角形選擇接收通知新增到興趣主題清單,重要通知與好康不漏接