趨勢科技研究人員發現了第一個攻擊 Dirty COW漏洞的Android 惡意軟體: AndroidOS_ZNIU,已有超過30萬款Android程式夾帶ZNIU。目前超過40個國家偵測到該惡意軟體,主要出現在中國和印度, 但美國、日本、加拿大、德國和印尼也有受害者。直到本文撰寫時,有超過5000名 Android 使用者被感染。在惡意網站上有超過1200隻偽裝成色情和遊戲的應用程式,夾帶能夠攻擊 Dirty COW漏洞rootkit的ZNIU惡意應用程式。
2016年首次曝光的Dirty COW為藏匿於Linux的提權漏洞(CVE-2016-5195),可允許駭客取得目標系統上的root權限。漏洞被發現在Linux平台,包含Redhat和使用了Linux核心的Android。針對Android的Dirty COW攻擊一直到近日才出現,猜測攻擊者花了許多時間來開發能夠在主要設備上穩定執行的漏洞攻擊碼。
圖1:藏有ZNIU的色情應用程式
趨勢科技在去年製作過Dirty COW的概念證明(POC)程式,並且發現所有版本的Android作業系統都有此漏洞,不過ZNIU對Dirty COW漏洞的攻擊只限於ARM/x86 64位元架構的Android設備。另外,最近的這波攻擊可以繞過SELinux來植入後門程式,而 PoC程式只能修改系統的服務程式碼。
趨勢科技監視了6個 ZNIU rootkit,其中4個是Dirty COW漏洞攻擊碼。另外兩個是KingoRoot(一個rooting應用程式)及Iovyroot漏洞攻擊碼(CVE-2015-1805)。ZNIU使用KingoRoot和Iovyroot是因為它們可以破解ARM 32位元CPU的設備,而這是Dirty COW rootkit所做不到的。
感染流程
ZNIU惡意軟體經常偽裝成色情應用程式埋伏在惡意網站上,誘騙使用者點擊安裝。一但執行,ZNIU會跟C&C伺服器進行通訊。如果有可更新的程式碼,它會從C&C伺服器取得並載入系統。同時會利用Dirty COW漏洞來提升本地端權限,解除系統限制和植入後門,為未來遠端控制攻擊鋪路。
圖2:ZNIU感染鏈
進入設備主畫面後,惡意軟體會取得用戶電信業者的資訊,偽裝成設備所有人,利用基於簡訊的支付服務與電信業者進行交易。透過受害者的行動設備,ZNIU背後的操作者可以利用電信業者的付費服務獲利,有個案例是將款項轉至某個位於中國的虛設公司。當交易結束後,惡意軟體會刪除設備上的交易訊息,不留下電信業者和惡意軟體操作者間的交易紀錄。如果是中國以外的電信業者,就不會進行交易,但是惡意軟體還是可以攻擊系統漏洞來植入後門。
圖3:從惡意軟體送給電信業者的交易請求
每月人民幣20元小額交易,避免驚動受害者
根據趨勢科技的分析,惡意軟體似乎只針對使用中國電信商的用戶。而且僅管惡意軟體操作者可以設定更高金額來從漏洞攻擊獲得更多金錢,但還是刻意的將每筆交易故意設為小額(每個月20元人民幣或3美元)來避免被發現。
圖4:SMS交易截圖
因為如果其他應用程式要取用設備簡訊功能時,Android作業系統會強制進行使用者互動來取得權限,ZNIU需要最高權限才能完成攻擊。惡意軟體還需要植入後門和遠端載入其他的惡意程式碼來繼續從受害者身上獲利。
仔細檢視ZNIU Rootkit
ZNIU rootkit可以透過獨立廣播接收器(BroadcastReciver)來整合進惡意應用程式。
圖5:ZNIU的程式碼片段
惡意軟體可以輕易地將rootkit注入第三方應用程式而不改變其他元件。這種做法被認為有助於大規模的散播惡意軟體。
惡意軟體操作者會加密並封裝ZNIU的惡意程式碼來加以保護,好不被靜態逆向工程破解。經過進一步地研究,趨勢科技發現一旦使用者將設備連上網路或插入電源,就會透過廣播接收器(broadcastreceiver)來啟動漏洞攻擊。然後惡意軟體就會直接傳送並執行惡意原生程式碼。
圖6:ZNIU本機程式碼
ZNIU原生程式碼的主要工作如下:
- 收集設備的型號資訊。
- 從遠端伺服器取回合適的rootkit。
- 解密漏洞攻擊碼。
- 逐一觸發漏洞攻擊碼,檢查結果並刪除漏洞攻擊碼檔案。
- 回報漏洞攻擊成功或失敗。
圖7:ZNIU網路活動
遠端漏洞攻擊伺服器網址及客戶端和伺服器間的通訊也都有加密。但解密後就可以進一步地發現惡意漏洞攻擊伺服器的詳細資料,揭露出其網域和伺服器是位在中國。惡意漏洞攻擊伺服器的連結可以在附錄中找到。
圖8:後端的漏洞攻擊管理伺服器
下載完成後,rootkit的“exp*.ziu”會用ZLIB來解壓到“exp*.inf”。
圖9:ZLIB解壓縮一個ziu檔案
rootkit需要的所有檔案被裝入一個.inf檔案,並使用由“ulnz”開頭的檔名,裡面包含數個ELF或腳本檔案。
Figure 10: Structure of the inf file
The ZNIU rootkit can arbitrarily write to vDSO (virtual dynamically linked shared object), which exports a set of kernel space functions to the user space so that applications perform better. The vDSO code runs in a kernel context, which does not have a SELinux limit.
ZNIU uses public exploit code to write shellcodes to vDSO and create a reverse shell. Then it patches the SELinux policy to disarm restrictions and plant a backdoor root shell.
圖10:inf檔案的結構
ZNIU rootkit可以隨意寫入vDSO(虛擬動態共享物件),它會匯出一組核心空間函式到使用者空間,好讓應用程式表現更好。vDSO程式碼在核心執行環境運行而不受SELinux的限制。
ZNIU採用公開的漏洞攻擊碼來將shellcodes寫入vDSO並建立反向殼層(reverse shell)。然後它會修補SELinux政策來解除限制和植入後門。
圖11:Dirty COW修補vDSO程式碼
解決方案
使用者應該只安裝來自Google Play或受信任第三方應用程式商店的軟體,並且使用行動安全解決方案(如趨勢科技行動安全防護)來封鎖會攻擊Dirty COW的威脅從應用程式商店被安裝。使用者還可以聯繫設備廠商或電信業者來取得此漏洞的修補程式。
趨勢科技的行動應用程式信譽評比服務(MARS)使用業界領先的沙箱和機器學習技術來涵蓋Android和iOS威脅。可以保護使用者對抗惡意軟體、零時差和已知漏洞攻擊、隱私外洩和應用程式漏洞。
企業用戶也應該考慮安裝解決方案,如趨勢科技的行動安全防護企業版具備了設備管理、資料保護、應用程式管理、合規管理、配置設置等功能,讓企業可以在隱私和安全與BYOD計畫所帶來的靈活性和加倍生產力間取得平衡。
ZNIU相關雜湊值(SHA256)、套件名稱和應用程式標籤的入侵指標(IoC)列表可以在此附錄中取得。
趨勢科技進一步觀察發現有超過30萬筆帶有ZNIU惡意軟體的惡意應用程式,其中超過14萬有獨特的標籤。我們還發現部分樣本的應用程式標籤將混淆的符號和字元插入名稱中。這種做法是為了避免被偵測。這些樣本的附錄可以在此取得。
@原文出處:ZNIU: First Android Malware to Exploit Dirty COW Vulnerability
作者:Jason Gu、Veo Zhang和Seven Shen(行動威脅反應小組)