1. 程式人生 > 其它 >SpyDealer深度剖析:一個廣泛針對中國手機APP進行資訊竊取的惡意軟體

SpyDealer深度剖析:一個廣泛針對中國手機APP進行資訊竊取的惡意軟體

隨著Android智慧手機的普及和各種功能APP的流行,人們已越來越多地依賴智慧手機儲存處理個人和商務資訊,而這也成為了犯罪份子進行資訊竊取的隱蔽途徑。近日,Palo Alto Networks公司研究人員發現了一種高階Android平臺木馬惡意軟體 SpyDealer<點選閱讀原文檢視連結>,它能從40多個流行APP中收集個人隱私資訊,並可通過濫用安卓輔助功能實現對多種通訊APP敏感資訊竊取。此外,SpyDealer會利用一款商業root軟體獲取手機root許可權,以此進行更深入的隱私資料竊取。目前,該惡意軟體針對大量中國手機端流行APP開發了資訊竊取功能。

SpyDealer簡介

SpyDealer具備多種資訊竊取功能:

從40多種流行APP中收集個人隱私資訊,這些APP包括:微信、Facebook、WhatsApp、 Skype、Line、Viber、QQ、Tango、新浪微博、騰訊微博、安卓原生內建瀏覽器、火狐瀏覽器、歐朋瀏覽器、QQ郵箱、網易郵箱、淘寶、人人、飛信、遇見、百度網盤等; 利用安卓輔助服務功能對流行通訊和社交APP進行敏感訊息竊取,包括微信、 Skype, Viber、QQ等; 利用商業root軟體“Baidu Easy Root”root目標手機,實現持久駐留和感染控制; 收集大量詳細個人隱私資訊,包括:電話號碼、IMEI、IMSI、MMS、簡訊、通訊錄、賬戶、通話記錄、地理資訊、連線的WIFI資訊等; 以其他特定號碼自動接收呼入電話; 實現對目標手機的UDP、TCP和簡訊通道遠端控制; 全方位對受控手機使用者進行監控: 對電話通話和周圍環境進行錄音錄影 利用手機前置後置攝像頭進行隱蔽拍照 監控受控手機實時地理位置 截圖

目前,據我們所知,SpyDealer還未在谷歌應用商店出現過,也還不清楚其具體的感染方式,但有證據顯示SpyDealer通過被入侵的無線網路熱點對中國使用者發起攻擊感染。由於SpyDealer受所利用的root工具限制,其完全有效的感染裝置只涵蓋了Android2.2至4.4版本手機系統(全球1/4安卓使用量),針對之後的安卓版本,雖然SpyDealer能竊取大量資訊,但不能提權進行更進一步的入侵控制。

發現時間線

2017年6月,我們捕獲到了1046例SpyDealer樣本,分析顯示SpyDealer正處於活躍期,在野生網路環境中它有1.9.1、1.9.2和1.9.3三個版本。從1.9.3版本開始,SpyDealer中的配置檔案內容和字串常量都被加密和編碼,同時加入了一個竊取通訊APP訊息的輔助功能。據分析發現,這些樣本都以app名稱“GoogleService

”或“GoogleUpdate”進行偽裝,其樣本演變時間從2015年10月至2017年5月。另外,我們還發現早在2015年10月和2016年2月,就已有受感染使用者對該惡意軟體發起了一些討論。下圖左右示例分別為英文和中文社群討論截圖:

以下為Palo Alto Networks對該惡意軟體的技術分析:

服務啟動和配置

SpyDealer感染裝置之後,不會在桌面上出現任何icon圖示。但其實,它已經註冊了兩個廣播接收器(Broadcast Receivers)對裝置的啟動事件和網路連線進行監聽。只要一有此類廣播訊息,就會觸發SpyDealer關鍵服務AaTService啟動,之後,開始從惡意軟體中一個名為readme.txt的本地資原始檔中檢索配置執行資訊。

從該檔案第一行為一個遠端C2控制伺服器,第二行為行動網路中的惡意行為配置引數,第三行為無線網路中的惡意行為配置引數,這些配置引數也可以由攻擊者通過遠端C2通道進行更改操作。完整C2伺服器列表參見附件B。下表描述了部分操作行為:

Root和持久化駐留感染

SpyDealer利用兩種不同的root方法進行提權。其1.9.1和1.9.2版本使用商業root軟體Baidu Easy Root進行提權,具體操作如下:

在惡意程式自身的資料目錄中釋放一個名為sux的su檔案 檢查手機裝置root狀態,如果已是root許可權,則無需進行root提權操作 檢查是否存在/data/data//broot/raw.zip路徑檔案,該檔案包含所有root提權所需exploit。如果不存在,則惡意軟體從http[:]//yangxiu2014.0323.utnvg[.]com/apk/raw.zip下載,並從http[:]//yangxiu2014.0323.utnvg[.]com/apk/md5.txt執行一個md5檔案完整性校驗檢查 把下載的zip檔案解壓釋放到惡意程式目錄,依次執行所有內含exploit嘗試進行手機root提權 安裝busybox並重裝系統分析,以備以讀寫許可權執行後續的一系列shell命令

下載檔案raw.zip中包含Baidu Easy Root2.8.3的root提權exploit,如下圖所示:

下表列出了SpyDealer濫用的全部exploit漏洞。像在raw.zip中名為022d251cf509c2f0的可執行檔案exploit,在Baidu Easy Root中為gzip格式且名為fb_mem_root。

除此之外,SpyDealer還利用了另外一種root提權方法,這種方法僅對Andriod4.0到4.3有效,且所利用exploit未知:

1、從自身安裝目錄中向手機中釋放sux、getroot、logo.png和busybox_g1檔案; 2、拷貝以上釋放的sux、logo.png和busybox_g1到/data/data//app_bin目錄下; 3、生成內容如下圖所示的shell執行指令碼/data/data//app_bin/toor.sh 4、執行png和toor.sh獲得root許可權,之後,自動刪除logo.png和toor.sh。

root提權之後,SpyDealer開始實現持久化駐留操作。首先,向自身目錄下釋放一個名為powermanager的原生可執行程式:

該程式負責建立一個惡意軟體備份檔案/system/bin/update_1.apk,即使SpyDealer被解除安裝清除,powermanager將會把/system/bin/update_1.apk拷貝為/system/app/Update.apk,繼續以系統root許可權啟動惡意木馬程序,同時,SpyDealer核心服務AaTService也將重啟執行惡意行為。程式碼和實現如下圖所示:

C&C控制

SpyDealer能以多種通道與C2伺服器進行通訊和指令接收,這些通道包括簡訊(SMS)、UDP和TCP連線。我們一一來分析:

簡訊(SMS)方式C2控制

SpyDealer註冊了一個在預設訊息應用程式之上更高優先順序的廣播接收器,以對目標手機簡訊接收指令進行監聽,之後,對這些簡訊指令進行解析處理。每個簡訊指令都包含了一個指令序列和各種換行符分隔的引數引用。簡訊指令序列範圍從1到5,指令詳解如下表所示:

為了獲得基於GSM cell的地理位置資訊,SpyDealer利用了百度地圖介面來進行位置獲取。SpyDealer收集GSM cell id、地區碼和網路運營商,並把這些編碼資訊傳送至百度地圖服務獲取準確地理位置。利用這種方法,即使被控手機沒開啟GPS,但一樣可以被攻擊者進行定位。以下為SpyDealer呼叫百度地圖介面程式碼:

除利用以上列出的簡訊指令外,在以下兩種條件下,SpyDealer還可以對遠端C2伺服器IP進行更改:

收到的簡訊指令序列長度大於4,此時,其指令序列實際上就是遠端C2伺服器IP 收到的簡訊內容以字串“L112”開頭,遠端C2伺服器IP跟隨在後

在與C2伺服器的通訊中,如果SpyDealer收到1或2序列的簡訊指令,它將不會作出迴應。但當它收到 3、4或5序列的指令,它將會向遠端C2伺服器作出迴應。如收到指令序列5,它將會以格式“msg:repcall|”向遠端C2伺服器傳送一條訊息。由於所有接收簡訊都包含了簡訊指令,也就是說,攻擊者可以丟棄這些簡訊,或設定黑名單進行阻塞攔截。

TCP 服務方式

SpyDealer通過在受控手機中建立一個監聽39568埠的TCP服務端,等待遠端C2伺服器指令。這些C2伺服器與受控手機的交流指令如下表所示:

而SpyDealer的響應資料將按以下位元組格式發出:

{0x35, 0x31, 0x64, 0x11, 0x09,, 0x09,}

由於對接收的簡訊指令無校驗機制,這意味著只要知曉受控手機IP地址,任何人都可以向其發起連線請求。

UDP/TCP客戶端

除了以上TCP服務端被動方式的C2通訊外,SpyDealer還會通過UDP/TCP通道主動向遠端C2伺服器請求命令。首先,它從本地配置檔案readme.txt中讀取C2 IP,利用另一個名為socket的本地配置檔案進行UDP/TCP協議通訊,該socket檔案中包含了90多個不同IP域名的C2伺服器(列表詳見附件B)。

C2伺服器向惡意軟體端傳送的指令資料使用微型加密演算法TEA進行加密,惡意軟體端收到指令後將會解密指令資料,執行深入解析處理。SpyDealer中的TEA加密演算法程式碼:

通過這種UDP/TCP協議通道,攻擊者可以對感染手機執行多達45種操作指令(詳見報告),指令行為涵蓋個人資訊收集、監聽監視和遠端程式碼執行等。

惡意軟體端向C2回送的資料也經TEA加密,另外,由於UDP的不可靠會話性質,為了解決通訊過程中資料丟失問題,SpyDealer在UDP頂層建立了一個有效會話層,並把所有原始資料分組,每組大小不超過1000位元組,這些分組資料最終將會輪流重複三次發出。為了讓C2服務端能識別恢復資料,這些分組資料在開頭都添加了一個特殊識別碼。各組資料格式如下:

MulPacketn<IMEI>n<UUID>n<#TotalGroups >n<CurrentGroupId>n<Dat

IMEI: 受控手機IMEI碼 UUID: 包含兩部分,第一部分為起始是0,每次加1的傳輸次數累加,當至10000000時重置為0重新開始。第三部分為當前的毫秒時間 TotalGroups: 分組資料數 CurrentGroupId: 從1開始的當前分組資料序列 Data: 實際傳輸資料

個人隱私資料收集

如前所述,SpyDealer結合root提權,使用多種方式收集資料,這些資料資訊涉及40多個流行APP中所含的社交通訊資訊、通訊資料、瀏覽器資訊、移動郵件客戶端資料等。以下列出了所有受影響APP應用,其中大部分為中國地區移動網際網路應用APP:

為了從以上APP中收集隱私資料,SpyDealer首先向目標APP目錄中釋放一個名為dealapp 的可執行程式,並利用root許可權拷貝為/system/bin/dealapp檔案,之後,該檔案就負責在目標APP中進行各類資訊資料收集。其所收集資料資訊,不只限於資料庫檔案,還包括配置檔案和其它特殊檔案。具體如下:

C2伺服器可以遠端對dealapp程式配置資訊進行實時更新或修改:

安卓輔助功能濫用

為了保護使用者資料資訊,越來越多的APP,尤其是流行的社交類APP,在資料儲存前都會進行加密操作。為了突破這個屏障,SpyDealer自1.9.3版本開始,便加入了一個額外的輔助服務功能,可以直接從手機系統介面獲取明文資料。下圖為該功能在目標APP包名中的相關配置:

本來,該輔助功能一般由使用者手動開啟,但在root提權之後,SpyDealer可以實現不與使用者互動的隱蔽開啟。下圖為SpyDealer的開啟命令:

開啟該功能後,SpyDealer主要對TYPE_NOTIFICATION _STATE_CHANGED和CONTENT_CHANGE_TYPE_SUBTREE兩個事件行為進行監聽,當有接收訊息時,手機將會發佈一個通知,而這也將觸發TYPE_NOTIFICATION _STATE_CHANGED事件。通常,人們會點選通知檢視訊息,這將觸發CONTENT_CHANGE_TYPE_SUBTREE事件行為。當有CONTENT_CHANGE_TYPE_SUBTREE事件行為時,SpyDealer將利用當前螢幕獲取明文訊息。儘管手機介面有訊息數限制,但SpyDealer持續的監控行為將會獲取完整的訊息資訊。收集動作完成後,SpyDealer會把這些訊息連同受害者手機IMEI、IMSI、包名和APP名等資料一起發回遠端C2控制伺服器。

實時監控

針對受控手機,SpyDealer具備多種手段進行實時監控,包括通話監錄、周圍環境監聽錄攝、隱蔽拍照、螢幕截圖和地埋位置獲取。它從C2端接收上述描述的各種C&C操作指令執行動作。

通話監錄和周圍環境音訊監聽

SpyDealer註冊了一個PhoneStateListener程式進行通話狀態監控,一旦通話處於啟用狀態,便會觸發錄音功能。最終,通話錄音資料被壓縮成zip格式儲存於為以下路徑檔案:

/sdcard/.tmp/audio/<phone_call date>.zip

之後,將會向C2端傳送形如“audionnn”的訊息。

除電話監錄外, SpyDealer還具備對周圍環境進行特定時間段的音訊監聽,監聽資料最終會被儲存為以下路徑檔案:

/sdcard/.tmp/environmentaudioaudio/.zip

超過7天以上的監聽監錄資料會被自動從/sdcard/.tmp/environmentaudioaudio目錄下刪除。

視訊錄攝

安卓系統中,當用戶進行視訊錄攝時就會進入預覽檢視模式,為了避免這種情況,SpyDealer故意設定了一個3.0dip * 3.0dip尺寸的非常小的預覽檢視,不易被使用者發現,如下程式碼實現:

開始錄攝後,每段視訊錄攝時間為10秒,最終資料被儲存為以下路徑檔案:

/data/data//files/cameravideo/.zip

錄攝完成後,如果有可用的網路連線,SpyDealer將向遠端C2端傳送形如“cameravideonnn”格式的訊息。

隱蔽拍照

為了像視訊錄攝一樣不引起使用者察覺,SpyDealer設定了一個0.100000024dip * 0.100000024dip尺寸的極小預覽檢視進行隱蔽拍照,攻擊者可以遠端設定前置攝像頭進行拍照。拍照檔案最終被儲存為以下路徑檔案:

/data/data//files/camerapic/camera_.jpg

成功拍照之後,將會向遠端C2端傳送形如“camerapicnnn”的訊息。

地埋位置資訊獲取

SpyDealer動態註冊了一個廣播接收器以監視受害者手機螢幕狀態,一旦螢幕處於鎖屏狀態,SpyDealer便開始通過GPS嘗試獲取手機地理位置資訊。另外,SpyDealer還註冊了一個位置監聽程序以跟蹤裝置位置,為了獲取移動裝置後的實時準確位置,該監聽程序每隔10秒或100米的移動距離就進行一次位置資訊獲取更新。如果有可用的網路連線,這些位置檔案資料會被以如下格式訊息傳送到遠端C2端。

LGPSnnnnn

如果網路連線不可用,它們將儲存在本地裝置中以待後續利用可用網路進行傳輸傳送。由於GPS狀態開啟時會在手機螢幕上顯示一個提示圖示,所以,為了避免使用者懷疑,SpyDealer只會在鎖屏狀態下利用GPS。

其它功能

除了上述強大的功能之外,SpyDealer還具備自動接聽來電和自動載入從遠端C2伺服器中下載的外掛。針對電話來電,SpyDealer能程序遠端配置接聽,模擬耳機插入狀態自動接聽來電,讓使用者無意識錯過一些重要來電。其實現程式碼如下圖所示:

總結

SpyDealer利用惡意業root軟體進行系統提權並實現持久化駐留感染,它採用多種機制來竊取移動裝置中的大量個人隱私資訊,並對40多個APP造成資訊洩露影響。另外,其通過三種C2通道和50多種操作指令對受害手機形成遠端控制,危害巨大。