Android Cerberus 惡意樣本分析

2020-04-07   巴比特

編者按:此前我們曾經就Android Cerberus惡意木馬翻譯整理了一些相關技術資料,與此同時,北京鏈安的安全技術人員對該木馬的樣本進行了專業和細緻的分析,完成了一篇詳盡的技術文章,非常適合安卓客戶端開發者、安全技術人員閱讀了解。

本文首發於FreeBuf,FreeBuf是國內領先的網際網路安全新媒體,同時也是愛好者們交流與分享安全技術的社區,其投稿類文章均需要經過對應領域專家的審稿認可後方可通過。本文在FreeBuf投稿後,經過了其指定專業人員的審稿,最終得以發布也體現了本文的技術含量和價值,希望對業內人士有所幫助。

本文在FreeBuf的連結請點擊「閱讀原文」

Android Cerberus 惡意樣本分析 惡意樣本特徵 流程概覽 內存解密新 dex 地區白名單 隱藏圖標 定時觸發保活廣播 計步機制觸發與 C2 伺服器通信 更新攻擊命令 忽略電池優化 竊聽簡訊消息 激活設備管理員 啟動後台服務 誘導啟用無障礙服務 請求竊聽簡訊所需的權限 啟動設備鎖 更新輔助服務狀態到 payload 無障礙服務 木馬傳播機制 總結 參考文章

Android Cerberus 惡意樣本分析

前段時間網上流傳 Android 平台 Cerberus 木馬家族出現了新的變種,在網上找了一番沒有找到新變種的木馬樣本反而找到了 2019 年 6 月披露的一批樣本,這裡挑選了其中一個樣本深入的分析下看看 Cerberus 木馬的工作機制。

Cerberus 木馬的詳細介紹可以閱讀之前發的文章:https://mp.weixin.qq.com/s/UewBO4RgTlh9vBKzqYXEcQ

惡意樣本特徵

樣本名稱:Flash Player

應用包名:com.uxlgtsvfdc.zipvwntdy

SHA-256:728a6ea44aab94a2d0ebbccbf0c1b4a93fbd9efa8813c19a88d368d6a46b4f4f

流程概覽

惡意樣本的執行流程大概如下:

內存解密新 dex

Android 應用程式必須在 AndroidManifest.xml 文件中聲明其使用的服務、廣播接收器和活動組件才能使用它們。在反編譯 Cerberus 惡意樣本中很明顯能看到其使用的服務、廣播接收器和活動等組件並不在主 dex 文件中,所以這裡基本可以判斷其核心 dex 文件是在內存中動態解密的。

通過在內存搜索匹配 dex 文件特徵並轉儲內存中解密後的 dex 獲取木馬的核心代碼。

地區白名單

惡意樣本在解密釋放新的 dex 文件後判斷當前感染者所在國是否在白名單中,如果在白名單中則不執行惡意行為。

白名單國家名單有:烏克蘭、俄羅斯、白俄羅斯、塔吉克、烏茲別克、土庫曼、亞塞拜然、亞美尼亞、哈薩克、吉爾吉斯、摩爾多瓦等。

隱藏圖標

如果感染者不在白名單國家則惡意軟體將進一步執行,其通過禁用入口組件來實現隱藏圖標使其在手機桌面上不可見來規避感染者卸載惡意應用。

定時觸發保活廣播

惡意軟體通過在清單文件中註冊高頻的系統廣播事件以及定時讓系統時鐘發送自身廣播事件實現了一個簡單的保活機制使其能持續的活動在系統中。

計步機制觸發與 C2 伺服器通信

在保活廣播接收器組件中,實現了一個簡單的計步器來觸發木馬與 C2 伺服器的通信。

更新攻擊命令

計步數量達到閥值後,啟動 HBOxMrf 木馬服務拉取 C2 伺服器的攻擊命令,C&C 伺服器地址為:http://94.156.77.32/gate.php目前服務已經無法正常訪問

客戶端與 C2 伺服器交互流程如下:

1.首先拉取 C2 伺服器下發的攻擊命令。

2.如果響應命令為 ||no|| 則註冊到 C2 伺服器成為肉雞設備

3.如果命令包含 ||youNeedMoreResources|| 則下載 payload 並保存到 data/data/包名/apk/system.apk 文件中。

4.更新攻擊命令到 payload 等待完成攻擊。

忽略電池優化

Cerberus 木馬除了定時觸發保活廣播,還通過將自己加入電池優化白名單中來增強持續在系統中執行惡意活動的可能。

竊聽簡訊消息

保活廣播接收器同時也在接收簡訊消息類型的系統廣播,當收到此類型廣播時則讀取出簡訊內容和發信人並保存到配置文件中,為後續執行惡意活動竊取簡訊消息做準備。

激活設備管理員

Cerberus 木馬除了通過隱藏圖標的方式防止感染者卸載自身外,還通過激活設備管理員權限來防止感染者卸載自身,同時也為了防止其他安全軟體查殺卸載 Cerberus 木馬。

啟動後台服務

誘導啟用無障礙服務

Cerberus 木馬的所有敏感操作都嚴重依賴於無障礙服務的啟用,其通過循環拉起 「啟用無障礙服務介面」 來誘導感染者對其進行無障礙服務授權。

請求竊聽簡訊所需的權限

請求竊取簡訊消息和聯繫人所需的權限。

啟動設備鎖

根據 lockDevice 標記執行設備鎖操作。

更新輔助服務狀態到 payload

無障礙服務

無障礙服務啟用後通過監控介面元素,模擬點擊介面授權按鈕來完成權限的自我授權和設備管理員的激活操作。同時監控介面活動是否正在進行安全掃描、是否正在卸載惡意軟體來避免木馬被查殺和卸載。包括監控介面是否打開目標活動,將其通知給 payload 完成介面劫持攻擊操作。

在無障礙服務中模擬點擊激活按鈕,完成激活設備管理員防止被用戶卸載,也為後續鎖定設備提供權限支撐。

監控介面是否在 Google Play 保護機制掃描介面,如果是則發送回退事件防止被查殺。

監控當前前台活動發送到 payload 執行相關攻擊操作。

木馬傳播機制

Cerberus 木馬的作者曾在 Twitter 上表明,其傳播採用釣魚網站以 Flash Player 的形式進行傳播來誘導用戶下載安裝惡意木馬。建議用戶在網站下載應用時應特別注意網站的真實性和安全性避免被釣魚或劫持攻擊Android Cerberus 惡意樣本分析Android Cerberus 惡意樣本分析

總結

Cerberus 惡意木馬通過字符串混淆、執行流混淆、動態加載代碼、動態解密字符串和實現了一個簡單的計步器機制來對抗安全人員的分析工作。同時利用了 Android 無障礙服務的螢幕監控功能,通過監控手機螢幕內容的改變事件,模擬點擊危險權限授權按鈕進行自我授權、監控用戶的安全掃描和卸載行為進行自我保護以及監控前台應用活動介面完成對目標的劫持攻擊。

對於本次分析遺憾的是由於 C2 伺服器的關閉導致無法獲取到核心的 payload 代碼和相關惡意指令,從而無法進行更加全面的分析木馬的攻擊機制。但 payload 想要完成攻擊終究還是依賴於無障礙服務的啟用,我相信 Cerberus 木馬家族的新變種也會依賴於該功能,所以建議在日常使用 Android 設備時應謹慎啟用設置中的無障礙服務開關。

Cerberus 仍是目前較為活躍的 Android 平台新型木馬,其作者通過租賃的方式進行盈利,同時在黑市和 Twitter 上宣傳木馬內容從而吸引惡意活動參與者購買此木馬。

此類木馬危害極大,普通用戶在下載相關軟體時請首先確認網站的真實性,確保軟體來源的可靠性防止被釣魚攻擊下載到此類惡意軟體。

參考文章