鐐銬之舞:美團安全工程師Black Hat USA演講

美團技術團隊發表於2018-09-14

背景

2018年8月9日,全球頂級安全會議——Black Hat USA在美國拉斯維加斯的曼德勒海灣會議中心落下了帷幕,這場盛會在全球黑客心中幾乎等同於“世界盃”和“奧斯卡”一樣的存在。這場一年一度的盛會已經有著21年的悠久歷史,也被公認為世界資訊保安行業的最高盛會之一。

作為在國內安全領域擁有多年的實戰經驗和技術積累的安全團隊,美團安全研究院再次受邀參加了本次盛會。在議題通過率不足20%的嚴苛篩選條件下,美團安全工程師Ju Zhu與小夥伴一起帶著本次演講的議題“Art of Dancing with Shackles: Best Practice of App Store Malware Automatic Hunting System”,榮登Black Hat USA 2018的國際舞臺。

講者介紹

Ju Zhu目前就職於美團基礎研發平臺/資訊保安中心/基礎研究組,擁有超過8年的安全研究經驗,其中6年左右時間都在從事高階威脅相關的研究,包括0Day、nDay和漏洞挖掘等等。Ju Zhu一直致力於使用自動化系統來Hunt野外的高階威脅,曾多次獲得CVE,並且多次受到Google、Apple、Facebook等廠商的致謝。他也多次作為Speaker受邀參加BlackHat、CSS等國內外的頂級安全會議。

議題解讀

Apple的iOS系統是所有流行作業系統中最安全的系統之一,正因為如此,也是黑客重要的攻擊目標和研究物件。雖然攻擊難度大,但一旦成功,所獲得的商業價值非常之高,所以iOS系統備受黑客“青睞”。

因為蘋果的商業模式比較特別,而且iOS系統並非開源系統,同時Apple高度重視安全,所以對iOS系統進行了周密的安全設計,這使iOS系統的安全性遠超其他作業系統。安全界對於大規模自動化捕獲該平臺的高階威脅,一直面臨困難和挑戰,同時當終端使用者遭受真正的APT攻擊(如PEGASUS)時,防禦檢測解決方案也無法獲得足夠的許可權來檢測深層攻擊,甚至都無法獲得足夠的資訊。

本議題正是在這個方向經過深入研究做了突破性的進展,成功設計出一套可大規模自動獲取應用樣本的Crawl系統,通過使用基於Raspberry Pi構建叢集實現了低成本、可擴充套件的安全沙箱自動分析系統,最終實現了自動化收集樣本並對樣本進行自動化安全分析的APT攻擊捕獲及分析系統。

首先,我們先來看一下這個系統的整體架構。

系統整體架構

實際上,整個iOS惡意軟體Hunt系統基本上分為兩個不同的部分:

  • 第一部分,是App Crawl系統,主要用於從App Store收集新發布或現有的應用程式。當然作為感染鏈源之一,還會收集來自第三方App Store甚至公共惡意軟體儲存庫(例如Virus Total)的應用程式以增強我們的惡意軟體資料庫。除應用程式外,其他潛在的惡意檔案型別(如Profile)也是我們的收集目標,(順便說一句,您可以參考我在BlackHat Asia 2018中關於”野外iOS Profile攻擊“的名為“Death Profile”的文章)。

  • 另一部分,是沙盒分析系統,主要是動態跟蹤應用程式行為,並根據規則決策引擎關聯行為日誌以給出最終結果。實際上,沙盒系統包含不同的型別,包括基於Frida的iOS真實裝置、ARM伺服器的使用者模式模擬(例如Raspberry Pi系統)以及完整的系統模擬VM。

系統構成

具體來說,整個系統主要由五個模組構成。

  1. 自動Crawl系統:自動化爬行及抓取各App應用市場的應用程式,包括App Store以及其他第三方市場,本系統中通過逆向分析成功的實現了自動化的使用者登入、購買及下載應用程式。
  2. App Crack系統:解密從App Store下載的應用程式,方便沙盒進行動態行為分析。
  3. 沙盒分析系統:突破傳統基於真機(iOS裝置)沙盒的系統設計,創新的使用了基於Raspberry Pi模式和QEMU模式,低成本、可擴充套件的叢集方式來實現動態監控應用程式的執行行為,例如File、Network、XPC、IOKit和Profiled等。
  4. 動態跟蹤行為系統:主要用來收集沙盒系統中所執行樣本的各種監控行為日誌。
  5. 決策引擎系統:基於開源的Nools系統,實時或非實時地根據監控日誌,來判斷樣本行為。

那麼,它們是怎麼有效的運轉起來的呢?

系統執行流程

  • 首先,通過自動化爬蟲系統構建相應的登入、購買、下載操作,從iTunes伺服器抓取應用程式,併傳送給Crack系統。之後Crack系統將解密Apple的DRM,並生成可在越獄裝置和模擬器上執行的IPA檔案。
  • 然後,構建IPA執行環境暨沙盒分析系統,我們引入了兩個解決方案,第一個是傳統的在真正越獄裝置上分析這些應用程式;第二個是創新的使用了基於Raspberry Pi的模擬器叢集來執行並分析應用程式。
  • 最後,使用基於開源的Frida框架,經過定製化的開發,動態跟蹤每個IPA應用程式的行為,再通過決策引擎檢查IPA是否為惡意應用,是否可能存在APT攻擊。

下面,我們將基於各個模組的分解來詳談它們的運作模式。

首先,App Store應用程式的Crawl基本可以理解為iTunes協議的灰盒逆向工程。

經過研究,我們發現在PC主機上通過iTunes實現App Store Crawl的基本步驟包括以下幾個方面:

  • 第一步,是抓取目標應用的Meta資料,例如名稱、類別、大小等等。
  • 第二步,是使用Apple ID登入,購買產品,使用iTunes授權PC端,以滿足應用下載的要求,並將應用儲存到本地磁碟。這裡,我們必須使用很多技巧來征服App Store的反爬機制。
  • 最後一步,是破解下載的應用程式。由於App Store上的所有應用程式都由Apple打包,這顯然會阻止廠商基於安全方面的動靜態分析,因此需要將目標應用程式的執行時記憶體轉儲為普通程式碼。

因此,基於上面的流程,我們可以設計成以下架構。

自動Crawl & Crack系統架構

從架構圖來看,該系統實現的功能,包括應用程式Meta資訊Crawl、Apple ID登入、PC授權、iOS裝置授權、IPA簽名和安裝後的Crack。它實際上是一個基於iTunes Store應用程式的自動系統。

App Meta資訊Crawler負責獲取應用程式詳細資訊,包括下載URL和價格資訊。應用下載抓取工具可以通過這些網址自動下載應用。然後,這些應用程式將傳送到每個越獄裝置進行解密,這將用於以後的靜態和動態分析。

自動Crawl系統

對於Crawl系統,我們可以分為三個部分來運作。

  1. App Meta資訊Crawler:App Store是有區域限制的,即區域A的Apple ID無法下載區域B的應用程式。因此,針對不同區域,我們設計了不同的Spider。而獲得的Meta資訊,包含了App ID、下載地址、圖示和其他一些基本資訊。
  2. App下載Crawler:通過逆向分析多個二進位制檔案及通訊協議,構造Apple ID的登入及購買請求,可以自動化下載與“從iTunes客戶端下載的IPA檔案”相同的IPA檔案。
  3. 匯入DRM資料:上面下載的IPA檔案,實際上是不能直接安裝執行的,因為還缺少一個Sinf檔案,它是一個包含授權等資訊的DRM資料檔案。對於Apple來說,它們只為每個應用程式保留了一份Copy。當使用者購買App時,伺服器將動態生成DRM資訊,並將其放入應用程式購買的響應資料中傳送回來。之後iTunes或者App Store將負責把DRM資料重新打包到IPA檔案中。因此,我們僅需簡單地將之前獲得“Sinf資料”儲存並下載到IPA檔案中即可。

我們都知道,從App Store下載的App是加密的。這樣不利於我們使用越獄裝置和模擬器來分析行為,所以還需要對IPA進行解密。下面我們說一下,Crack系統的技術要點。

App Crack系統

如果使用者的帳戶從來沒有在iOS裝置上登入過,則它購買的App是無法在該裝置上執行的,即DRM保護。
如果在一臺裝置上,使用者登入了自己的帳戶,Apple會認為使用者授權此裝置,而使用該帳戶購買的一切應用程式則可安裝、也可執行。但是我們需要讓這一切變得自動化。

通過逆向“設定”程式,我們發現“StoreServices.framework”是用來管理賬戶資訊的,最後我們做了一個Tweak,並配合Undocument API實現了Apple ID登入過程。

我們有了大量待分析的樣本,下面的工作就是靜態和動態分析。業界對於靜態分析已經非常成熟,比如MachOView等等,這裡我們就不多介紹了。而動態分析,目前主要以基於Frida的系統居多。

Frida是一個功能強大且便攜的Hook系統,支援移動(例如iOS和Android)和PC系統(例如MacOS)。更重要的是,它允許在沒有配置和編譯的情況下根據指令碼(例如JavaScript)控制Hook點。所以說,它是目前最流行的動態分析框架系統。當然它們都必須依賴真機裝置。

接下來,我們來介紹一下傳統的基於真機(iOS裝置)的沙盒系統。

沙盒分析系統

傳統的基於真機(iOS裝置)沙盒系統

從上圖來看,這種基於Frida實現真機(iOS裝置)沙盒系統的工作流程主要包括以下幾個方面:

  • 首先,給iOS裝置配置Frida,目的是為了進行行為跟蹤;
  • 然後,Frida控制器模組將在iOS裝置上觸發樣本執行,或者其他任何操作(例如:安裝配置檔案,使用瀏覽器訪問網站等),並跟蹤感興趣的系統行為;
  • 最後,將行為日誌收集到主機端,該日誌將成為決策引擎系統的輸入,它會根據需要,實時或非實時地判斷樣本行為。

雖然Frida一直是App動態檢測的主流,但是如果我們需要檢測大量樣本或者大量Case時,則會出現嚴重瓶頸,因為面臨大量的真機(iOS裝置)投入,而且成本、擴充套件性都是致命問題,所以我們創新的使用了低成本Raspberry Pi來替代它,併成功的實現了虛擬化、叢集化。

基於Raspberry Pi的iOS虛擬機器

在虛擬化方面,我們實現了一個動態載入器,它可以載入iOS可執行檔案,並重新實現了System Library和Framework,以保證iOS可執行檔案能夠正常執行等等。

這樣我們就可以輕鬆動態監控Mach-O的行為,並將這些日誌提交給決策引擎,以確定該應用程式是否為惡意軟體,甚至是否是APT攻擊的一個Chain等等。

如果希望利用現有的伺服器來運維,我們也可以將其移植到QEMU中執行。

通過這種“低成本硬體模擬器”的設計,每天都可以自動化掃描大量的樣本,從而節省了成本,並提升了可擴充套件性,提高了樣本的檢測效率。

這種高效的沙盒分析系統,必然會產生大量的分析日誌,所以,我們需要一種高效能、高實時性的規則決策引擎系統來做最後的判斷處理。

決策引擎系統

Nools是一個基於Rete並使用JavaScript實現的規則引擎推理系統。它可以支援連續日誌輸入時的實時判斷模式,而且用其編寫的決策規則,具有強靈活性和可移植性,使得我們對於樣本的檢測獲得了高可用性。

總結

一直以來,業界對於“iOS大量樣本檢測實現自動化Hunt高階威脅”都沒有很好的實踐,而我們已經證明了基於自動抓取、安全沙箱自動分析系統以及iOS虛擬化的高階威脅Hunt系統的可行性。而這樣大量的樣本檢測Case和日誌,也為以後我們引入AI系統提供了必要條件。

關於美團安全

美團點評集團安全部的大多數核心開發人員,擁有多年網際網路以及安全領域實踐經驗,很多同學參與過大型網際網路公司的安全體系建設,其中也不乏全球化安全運營人才,具備百萬級IDC規模攻防對抗的經驗。安全部也不乏CVE“挖掘聖手”,還有很多受邀在Black Hat等國際頂級會議發言的講者,當然還有很多漂亮的運營妹子。

目前,美團點評安全部涉及的技術包括滲透測試、Web防護、二進位制安全、核心安全、分散式開發、大資料分析、安全演算法等等,同時還有全球合規與隱私保護等策略制定。我們正在建設一套百萬級IDC規模、數十萬終端接入的移動辦公網路自適應安全體系,這套體系構建於零信任架構之上,橫跨多種雲基礎設施,包括網路層、虛擬化/容器層、Server 軟體層(核心態/使用者態)、語言虛擬機器層(JVM/JS V8)、Web應用層、資料訪問層等,並能夠基於大資料+機器學習技術構建全自動的安全事件感知系統,努力打造成業界最前沿的內建式安全架構和縱深防禦體系。

隨著美團點評的高速發展,業務複雜度不斷提升,安全部門面臨更多的機遇和挑戰。我們希望將更多代表業界最佳實踐的安全專案落地,同時為更多的安全從業者提供一個廣闊的發展平臺,並提供更多在安全新興領域不斷探索的機會。

美團安全2018秋季招新開始啦!這裡有資料安全、Web安全、移動安全、IT安全、滲透測試、安全研究、隱私保護合規、產品研發等十餘個熱門崗位歡迎你的加入,詳情戳這裡。簡歷請投至 zhaoyan17@meituan.com

鐐銬之舞:美團安全工程師Black Hat USA演講

相關文章