當失控的預裝行為以非正當手段伸向行貨機時_北京鼎開預裝刷機資料統計apk(rom固化版)分析

wyzsk發表於2020-08-19
作者: 路人甲 · 2014/03/16 10:37

作者:395B5B28E44BAAE80F68968A88ADC6CAD702851B

0x00 背景


本報告僅代表個人觀點,與所在公司、所屬團隊、所在職務無關。因考慮人身安全,本節選由wooyun知識庫代為匿名釋出;全文待諮詢相關人士後再決定是否公佈。

2013年8月,在一大型電商網購聯想A820t(屬移動定製機型號)行貨後,發現預裝應用出現了異常:按道理,該機器本應有可解除安裝的移動預裝應用,但實際上並沒有,而多出了許多無法解除安裝的其它應用。經過技術分析,發現和鼎開存在關聯。在接下來的數週內,連續或零散進行了實體店和網路調查,並形成了約50頁報告並持續反饋給CNVD。

2013年9月後,該事件連同報告移交由CNCERT和CNVD處置;2014-2-14,ANVA進行初步處置披露(http://www.anva.org.cn/webInfo/show/1181);2014-3-15,央視315晚會進行了部分曝光。本文為本報告的技術部分和普通使用者處理方法節選。

本報告致謝如下人員:CNCERT、CNVD 相關工作人員;dex2jar、apktool、jdgui作者;大型城市公共交通系統(地鐵、巴士、縣際班車等);手機實體店員工;其它在網路上進行相關主題討論和問題諮詢的網友。

本報告不希望成為新一輪口水戰的起點,更希望成為每個參與網際網路事業的人員反思自身的一個驛站——在這場搶佔移動網際網路使用者和入口的大戰中,每個人都有罪過。

0x01 應用名稱、版本、許可權演化歷史、渠道區分


com.android.tunkoo.scan一般被放置於/system/app/目錄下,故而這類被惡意刷機的的行貨無法對其解除安裝。其名稱具有偽裝性,目前已經發現兩個。

應用名稱 版本號 檔案sha1值
SystemScan 1.1 1485f3944756655ff23361ee7f4ab0ace9f110c1
SystemServer 1.2 43cc56679117fcc58d1b1f2515ff163f26301026

表:com.android.tunkoo.scan版本歷史

這兩個版本的apk均以“DINGKAI.RSA”簽名, openssl列印資訊均一樣。以簽名頒發者“beijing dingkai”為關鍵詞搜尋,初步認為是北京鼎開聯合資訊科技有限公司。

兩者所申請的許可權如下,其中 “SystemServer”作為高版本,比“SystemScan”多申請了聯絡人和簡訊讀取許可權。從Android 3.1開始,應用要接收Android廣播(比如開機自動啟動),必須要讓使用者至少執行一次,並且沒有在設定中“強制停止”;但com.android.tunkoo.scan被放置於/system/app,因此即使沒有入口讓使用者啟動過,也可以無視該規定,作為系統應用自動開機執行。

enter image description here

表:com.android.tunkoo.scan所申請的許可權列表和演化

為了區分不同的刷機渠道,每個com.android.tunkoo.scan中的AndroidManifest.xml中,使用友盟SDK的UMENG_CHANNEL欄位定義了刷機ROM標識字串,同時還有一個SHOP_ID欄位標識推廣渠道id。

enter image description here

圖:兩個樣本的AndroidManifest.xml值

0x02 上報分析


概述

com.android.tunkoo.scan除了使用友盟SDK作簡單渠道統計外,還有一套自己的上報機制,主要目的是持續監測使用者行為並進行上報。為了逃避快速沙箱檢測,com.android.tunkoo.scan組合使用定時器(Alarm)、廣播(Broadcast)和服務(Service)機制,對監測行為進行了延後或輪訓;為了阻止手工快速分析,這些上報資訊在手機儲存和傳送到伺服器中,均運用了不同的對稱加密方法和金鑰。

透過對傳送加密前的日誌進行分析,相關的上報內容被分成三大類發往不同的統計介面。

第一類為手機基礎資訊上報,上報時機為插入SIM卡且每次連線網路。上報內容有:

A. 手機硬體資訊:手機型號、手機WIFI MAC地址
B. 運營商識別資訊:IMEI、IMSI(若有插入SIM卡)、手機號碼
C. 手機軟體基礎資訊:安卓版本號、root情況
D. 手機軟體列表資訊:已安裝應用列表
E. 鼎開刷機標識:ROMID、shop_id、device_IOS

第二類為使用者使用行為資訊上報,上報時機為每次連線網路、或手機開機兩小時後每兩小時。上報內容有:

A. 運營商識別資訊:運營商資訊
B. 手機上網執行資訊:上網型別、歷史上網ip 
C. 手機軟體執行資訊:正在執行的應用列表、曾經連線過網路的應用和流量
D. 手機軟體其它資訊:安裝解除安裝應用歷史
E. 定位資訊:透過網路定位獲取使用者的地理座標

第三類僅存在於“SystemServer”,為特定資訊挖掘上報,上報時機為每次連線網路、或手機開機兩小時後每兩小時。上報內容有:

A. 15個簡訊關鍵詞命中計數
B. 11個聯絡人關鍵詞命中計數
C. 手機QQ應用資訊:使用該手機登入過的QQ號、所有QQ聯絡人的頭像圖片檔名、所有QQ群的頭像圖片檔名

以下詳細講解其上報時機、格式和運作機制。

手機基礎資訊上報

這是預裝統計最基礎的內容上報,依據各種條件判斷,上報到以下url中的其中一個:

http://x.xxxx.com/api.aspx?t=1 (“SystemScan”、“SystemServer”)
http://xxxxxxx.xxxx.com/?p=daoda3 (“SystemServer”)
http://x.xxxx.com/api.aspx?t=6 (“SystemScan”)
http://xxxx.xxxx.com/rec.aspx?t=0&iszip=false (SystemScan,SystemServer)

一條完整的上報統計格式如下:

ROMID={ROMID}||device_IOS={device_IOS}||device_IMEI={device_IMEI}||MAC={MAC}||os_Version={ os_Version }||shop_id={ shop_id }||device_IMSI={device_IMSI}||device_Model={device_Model}||device_Number={device_Number}||device_app_list={device_app_list}||nettype={nettype}||isrooted={isrooted}||postdataindex={postdataindex}||allsendindex={ allsendindex}||TIME1={TIME1}||TIME2={TIME2}||TIME3={TIME3}||

enter image description here

表:手機基礎資訊上報欄位名含義和示例值

主要的上報邏輯有:

1. 在開機後,週期性檢測手機是否插入SIM卡(TelephonyManager.getSimState() != SIM_STATE_ABSENT)。如果條件不成立,則潛伏不執行(即使存在wifi連線)。
2. 插入SIM卡後,如果發現有網路連線(GPRS/WiFi等),並且距離上一次傳送已經超過10分鐘,則在連線後傳送一個統計心跳維持包。該心跳包僅包含ROMID、IMEI、MAC三個欄位資訊,其餘欄位均賦值為null。一個日誌資訊如下(敏感資訊已用示例值替代):
3. 如果期間有安裝或者解除安裝過應用,會在下一次連線上網路後傳送完整統計包,此時心跳包內所有null值均被替換為完整資訊。此處上報的手機個人敏感資訊最為詳細。一個日誌資訊如下(敏感資訊已用示例值替代):
4. 如果週期內統計傳送失敗,會延長時間重試3次,延長時間分別為2分鐘、20分鐘、2小時。

使用者使用行為資訊上報

這是持續跟蹤使用者使用行為並進行上報的機制。依據不同版本,上報到以下url中的其中一個:

http://xxxxxxx.xxxx.com/?p=caiji3(“SystemServer”)
http://x.xxxx.com/api.aspx?t=3(“SystemScan”)

當使用者點選連線網路(GPRS/WiFi)、或手機開機兩小時後每兩小時,都會進行一次這樣的上報。如果上報失敗,會將待上報的內容,以數字編號檔案形式存入“/data/data/com.android.tunkoo.scan/files/s”目錄,並在後續邏輯中按檔案順序重新上報。故如果使用者頻繁開關機、或者長時間待機,會在此目錄積累大量的待上報內容。

enter image description here

圖: 使用者使用行為上報資訊快取檔案

一條上報統計示例如下,根據上報時間時採集到不同的使用者行為,會有所變化:

TIME=2013-09-20 18:27:05||IOS=com.android.tunkoo.scan_3_8c81a411||IMEI=477777777777777||IMSI=83333333333333333333||SHOPID=8798||ROMID=8798_201308111529_471.0||MAC=00:0d:08:07:c6:a5||MODEL=Lenovo A820t||IP=172.0.0.1||LA=0||LO=0||APPUSE=com.speedsoftware.rootexplorer,d2481498,2013-09-20 18:25:53,2013-09-20 18:26:26&&||APPFLOW=||NETTYPE=,WIFI,net,2013-09-20 18:25:51,2013-09-20 18:26:26&&||APPINSTALL=||IP=172.0.0.1,2013-09-20 18:25:51&&||

enter image description here

表:使用者使用行為上報欄位名含義和示例值

由於每種使用者行為的頻率不一樣,故部分引數的行為採集頻率(定時器設定間隔)、儲存位置並不一致。

enter image description here

表:使用者使用行為上報部分欄位名的採集頻率、目的和存放位置

特定資訊挖掘上報(僅存在於SystemServer)

這是“SystemServer”新增的資訊上報類別,為此該版本新增請求許可權“android.permission.READ_CONTACTS”(讀取聯絡人)和“android.permission.READ_SMS”(讀取簡訊)。當使用者點選連線網路(GPRS/WiFi)、或手機開機兩小時後每兩小時,都會進行一次上報檢測,若檢測到兩次上報之間大於5小時,則向http://xxxxxxx.xxxx.com/?p=xincaiji3 進行一次上報。

一條上報統計示例如下:

IMEI=477777777777777||MAC=00:0d:08:07:c6:a5||MODEL=Lenovo A820t||Contact=1,0,0,0,0,0,0,0,0,0,0,||MSGSend=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,||MSGRec=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,||NumberFoldList=555555,||_HDList=AEEE,BEEE,||_THDList=KEEE,LEEE,

enter image description here

表:特定資訊挖掘上報欄位名含義和示例值

該上報有兩個關鍵要點:

  1. 該上報涉及讀取手機聯絡人和簡訊這兩個強隱私資訊,但只是進行關鍵詞計數上報,而沒有上報具體內容。

    其中對聯絡人列表進行掃描時,使用11個關鍵詞進行包含匹配測試並計數:“老婆、寶貝、孩子、女兒、兒子、老公、老爸、老媽、爸爸、媽媽、老師”。 比如說,如果Contact上報的內容為“1,0,0,0,0,0,0,0,0,0,0,”,則表示所有聯絡人中,有1個號碼的聯絡人名稱包含“老婆”這個詞,其它關鍵詞均沒有命中。 而對傳送簡訊和接收簡訊的掃描中,除了上面11個聯絡人關鍵詞之外,還新增了4個關鍵詞專門匹配簡訊內容:“先生、女士、消費、還款”。 比如說,如果MSGRec上報的內容為“0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,”,則表示自上次上報新接收的簡訊中,有3條簡訊內容包含“先生”這個詞,其它關鍵詞均沒有命中。

  2. 該上報非常關注手機QQ軟體在sdcard的目錄資訊。

由於手機QQ執行時的檔案較多,難以放到/data對應的應用目錄下,故這些檔案都放到了sdcard目錄下。但sdcard目錄允許被任何應用讀取,故導致可被“SystemServer”掃描相關目錄並上報。猜測這個目的是為了嘗試收集該手機使用者的QQ使用習慣和使用者喜好。

enter image description here

圖:“SystemServer”掃描手機QQ目錄獲取所有登入過的QQ號

enter image description here

圖:“SystemServer”掃描手機QQ的聯絡人頭像快取檔名列表

enter image description here

圖:“SystemServer”掃描手機QQ的群頭像快取檔名列表

0x03 危害和查殺情況


com.android.tunkoo.scan的危害主要在於持續監測和上報,洩露了使用者各種隱私資訊和行為。在這個過程中由於大量使用定時器掃描和進行網路連線,故會持續消耗電量和網路流量;特別的,如果沒有申請運營商流量套餐又誤用GPRS上網,將會出現扣費問題。另外在某些情況下,可能會由於大量的掃描,引起系統緩慢和失去響應。

enter image description here

圖:百度知道中有關“SystemScan”流量問題的提問

對com.android.tunkoo.scan的查殺情況,則進行了兩次驗證。第二次驗證為2013-9,在測試機上進行了“SystemServer”(原版apk)查殺測試,仍然無法檢出。截圖從左到右:騰訊手機管家(病毒庫20130922B)、金山毒霸(庫檔案版本2013.9.12.1947 + 啟發掃描)、LBE(病毒庫20130918.f)、360(病毒庫20130922B)。此處對手機毒霸有個疑問,那就是無論掃描結果中的“耗電軟體”(後臺自啟動應用列表)、還是應用行為管理,均找不到“SystemServer”應用可供管理或禁用。

enter image description here

圖:2013-9在測試機上對“SystemServer”的查殺情況

0x04 鼎開的行貨刷機手段


鼎開的惡意刷機,是在/system/vendor/operator/app/內的應用全部刪除(此目錄下的定製應用可被使用者解除安裝),再在/system/app內放入無法解除安裝的應用。

enter image description here

圖:聯想A820t惡意刷機前後/system/vendor/operator/app/目錄對比。左:S115廠商包;右:問題手機

enter image description here

圖:高階手機預裝聯盟服務流程

在新浪微博搜尋中,以“鼎開 刷機”進行搜尋的結果顯示,鼎開似乎成為了行貨刷機的公開幕後渠道,日刷機量至少5萬,其最初的主要目標是三星行貨(但後來也許也兼營其它品牌,比如聯想),並且可能有大型網際網路公司的參與。而這些資訊,至少從去年底就開始存在,但並沒有引起很大的反響。

enter image description here

enter image description here

enter image description here

圖:微博上搜尋“鼎開 刷機”資訊

根據百度搜尋的結果,鼎開至少從2012年開始,在智聯招聘、趕集網、58同城等網站釋出不同地區的招聘資訊,比如廣東深圳的rom編輯人員(2013-08-22),還有河南鄭州(2012-05-29)、河北石家莊(2013-08-22)、廣東深圳(2013-08-05)等地的安卓系統刷機操作專員,其中明顯提到,刷機的操作流程需要有“拆包-封包”等破壞和偽造行貨包裝完整性的行為。

enter image description here

圖:鼎開在石家莊招聘安卓系統刷機操作專員,其中提到的刷機流程

根據遊戲葡萄的文章,除了鼎開之外還有其它的刷機公司,分佈在不同的品牌和價位;至於刷機方法,已有一整套成熟的自動化工具。

enter image description here

圖:刷機公司的工具

綜合以上資訊,可以看到失控的預裝行為,早已經以非正當的方式,伸向了已漸趨理性、並且消費者一貫信賴的行貨機。而從鼎開的合作模式和刷機操作來看,可以肯定渠道出現問題的可能性極大——有某些渠道商非法聯合刷機商,私自拆開行貨包裝重刷一遍,刷完後用行貨的封條縫合,外觀上沒看出動過,以此欺騙下游渠道商和終端使用者。這樣的行為已經明顯損害了購買行貨的消費者權益。

0x05 基於網路和實體店的感染情況與分佈調查


為了摸清楚受鼎開刷機所影響的範圍和分佈情況,從2013年8月開始,針對城鄉結合部區域進行了持續一週的實體店調查,在後續的週末中,也斷續進行零散調查;同時在這個過程中,針對性進行網路搜尋。

調查的結果如下:

1. 無論線上電商購買還是線下實體店購買,都有可能購買到被鼎開或其他刷機商惡意刷機的聯想或三星行貨。
2. 網路購物中,幾乎所有知名電商,都或多或少存在以“行貨正品”的形式銷售被刷機手機。
3. 實體店調查中,有銷售鼎開刷機的手機店,其區域分佈廣泛,且發現存在其它形式(非鼎開)的刷機。
4. 每部被惡意刷機的預裝應用列表,隨刷機時間、手機型號和推廣渠道的不同而不同。這其中確實有大型網際網路公司參與其中。
5. 如果一部運營商定製型號行貨被刷機,不明就裡的消費者會更大機率怪罪運營商、手機制造商,而不是真正的刷機商。

0x06 普通使用者的解決方法


為了讓使用者確定自己是否遭受鼎開刷機,作者開發了一個“應用安裝資訊報告”(com.example.forensics.systemapp)。該應用可安裝在Android 2.2及以上機器,在進入應用後點選“收集…”按鈕並稍候。如果結果中出現“[重要提示!]發現疑似鼎開刷機的證據”、並且下面列出的安裝包中出現“com.android.tunkoo.scan”或者“com.easyandroid.widgets”等(暫不判斷是否為系統應用),那麼恭喜你,很大機率中招了……

enter image description here

圖:“應用安裝資訊報告”執行結果

enter image description here

表:“應用安裝資訊報告”的結果資料夾含義

中招的解決之道,簡單的方法是在設定中停用“SystemScan”或者“SystemServer”;但唯一最徹底的方法是重新刷機,如果對刷機不熟悉,最好帶上發票,直接找當地的售後服務網點進行。即便自己懂得刷機,也需要做好個人資料(比如手機通訊錄、簡訊等)的備份,同時也要承擔操作失誤而變磚、或者因為root/刷機計數增加等而失去保修的風險。另外:

1. 如果手機是MTK晶片的話,會容易出現因為MTK手機晶片特性而導致刷機後丟失IMEI號、手機SN號、wifi mac地址、藍芽mac地址等這些手機唯一特徵值的問題,從而引發系統問題,故建議使用紙筆或電子檔案備份好以上手機唯一特徵值。
2. 三星安卓手機會檢查手機是否在官方行貨狀態,包括是否沒有 root、是否為官方 recovery 等。一旦發現不符合條件,系統狀態將會從“官方”變成“定製”狀態。這種改變的結果,會導致失去保修資格。另外, 三星安卓手機存在一個刷機計數器(ODIN 刷機介面中的“CUSTOM BINARY DOWNLOAD”), 當使用者自行刷機時,計數器加 1並在開機介面顯示黃色感嘆號告警,這樣的結果同樣是失去質保。

在刷機之外,消費者也可以積極做好和最終購買渠道的售後溝通和投訴,如有必要,也可考慮向手機制造商舉報這個購買渠道存在問題。

對於還沒有購買手機的使用者而言,如果無法承受網購所帶來的風險,那麼去實體店購買的時候,一定要到當地知名的正規連鎖店購買,並且仔細考察店內各種展示機裡面的應用列表,如發現存在有疑問的應用,應及時諮詢;在購買時,仔細檢驗包裝,開機後檢查應用列表是否有問題,並提防基於門店的渠道安裝。當然比起網購,實體店由於種種原因,價格會比較貴——尤其是一款有一段上市時間的手機,此時網上的價格會比實體零售店的價格差距,很有可能會拉得非常大。

如果對自己網購能力有信任,那麼請務必不要貪圖小便宜,同時認真看網購評價,尤其是中差評,有可能會看出一些端倪。

0x07 附錄:關於利用刷機方式植入“手機預裝馬” 進行使用者資訊竊取的情況通報(2014-2-14)(節選)


透過對該手機預裝馬進行持續監測,截至2014年1月CNCERT發現全國範圍內感染該手機預裝馬的使用者數達2167148個。感染使用者按照區域分佈和運營商分佈情況分別如圖2和圖3所示。

enter image description here

圖2 感染“手機預裝馬”使用者按照區域分佈情況

enter image description here

圖3 感染“手機預裝馬”使用者按照運營商分佈情況

目前,CNCERT已協調域名註冊商中國萬網對“手機預裝馬”所用於採集使用者資訊的3個伺服器域名x.xxxx.com,xxxxxxxxxx.xxxx.com,xxxxxx.xxxx.com進行停止解析處理,並協調電信增值企業網宿科技對伺服器所使用的IP地址進行停止接入處理。

由於“手機預裝馬”在執行時具有明顯特徵,安卓手機使用者可透過檢查當前手機程式資訊中是否含有名為“com.android.tunkoo.scan”的“SystemScan”程式,如果含有該程式則說明手機中已被植入“手機預裝馬”,使用者須及時解除安裝“SystemScan”應用。

enter image description here

圖4 “手機預裝馬”所執行的惡意程式資訊

同時使用者可以透過由CNCERT負責日常運營的中國反網路病毒聯盟ANVA(www.anva.org.cn)[email protected][email protected]資訊,以便CNCERT開展處置工作。

檢測APK:com.example.forensics.systemapp.zip

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章