第一章Accessibility簡介
近期,360烽火實驗室發現一款濫用Accessibility的木馬,該木馬具有瀏覽器地址欄劫持、搜索劫持、桌面點擊劫持以及防卸載等系列惡意行為,本報告將結合我們對該木馬的分析,從Accessbility的設計初衷、技術發展、濫用情況等角度研究Accessibility的安全性。
一、 設計意義
依據Android官方文檔,考慮到一些用戶不能很好地使用Android設備,比如由于視力、身體、年齡方面的限制,造成閱讀內容、觸控操作、聲音信息等方面的獲取困難,因此Android提供了Accessibility特性和服務幫助用戶更好地使用Android設備。正由于這個介紹,在國內更普遍地被稱為無障礙或殘疾人模式。Accessibility的官方簡介內容如下圖,有興趣詳細了解該部分內容請參考官網詳解[1]。
圖1.1Accessibility官方簡介
二、 運行原理
Accessibility[2]相關服務以及接口在Android 1.6時期就已經被加入,其中以AccessibilityService組件作為入口,結合AccessibilityEvent,AccessibilityNodeInfo等關鍵類完成輔助功能(其中AccessibilityNodeInfo于Android 4.0加入)。
AccessibilityService是繼承了Service的抽象類,生命周期不由應用本身管理,而是由系統和用戶的顯式操作所控制,運行后當有AccessibilityEvent被發出時該服務會收到系統的回調。由于是由系統所啟動的組件,所以與一般Service有所區別,特別的地方在于滿足下面三點:
1)該Service需要權限android.permission.BIND_ACCESSIBILITY_SERVICE,該權限保證了只有系統能綁定調用該服務;
2)第二點,該Service需要action:android.accessibilityservice.AccessibilityService;
3)第三點,提供名為android.accessibilityservice的meta-data,且提供xml作為AccessibilityService的配置文件,配置文件聲明有該服務接收事件類型、反饋類型等內容。
三、 使用情況
依據Android官方的詳細介紹,開發者應該從自身應用出發,在增加視圖屬性如contentDescription等內容后,可以在不修改原有代碼邏輯的情況下使用戶體驗得到優化,如預裝在Android 設備上的屏幕閱讀器TalkBack[3],在沒有修改系統源碼的情況下,滿足了視力不足的用戶使用Android設備的需求。根據Android官方的說明,TalkBack會使用語音反饋描述用戶所執行的操作,以及告知用戶收到的提醒和通知,可以幫助視力水平較低的用戶順利進行手機的觸控、閱讀內容的進行。
在國內,Accessibility被更多地用于免ROOT自動安裝以及自動搶紅包功能的實現,免ROOT自動安裝可以優化用戶體驗,但自動搶紅包功能既沒有幫助有缺陷用戶更好的使用手機,也沒有提升用戶體驗,與Android官方的設計初衷已經背離,進入了灰色地帶的范疇,同時利用Accessibility進行的惡意行為也越來越多,需要引起足夠重視。
第二章Accessibility發展趨勢
2016年我們發現帶有Accessibility功能的樣本數量呈現爆發性增長,但很遺憾,Accessibility功能的使用卻與Android官方的初衷漸行漸遠。
2009年Android 1.6發布,早在7年前Accessibility就已經面世。然而,在數據分析當中卻發現,直至2012年才收錄有使用該技術的樣本,而且占樣本總數的比例極低,僅有0.015%,隨后兩三年的時間里Accessibility的使用比例仍然偏低,甚至于到2015年時占比仍不足0.5%,但是在2016年上半年里占比已經超過了2.6%,同時僅僅2016年上半年的樣本數量已經是2015年一整年樣本數量的3倍,相關的樣本數量及相關比例發展趨勢見圖2.1。
圖2.1 Accessibility樣本數量及占比趨勢
從數據角度進行分析,雖然在2015年里使用Accessibility的樣本數量已經突破了20萬,但是這個數字在樣本總數所占的比例仍不足0.5%,相當于每200個樣本當中才能勉強找出1個帶有Accessibility功能的樣本。因此,在一定程度上說,在Accessibility誕生的前六年里,該項服務的使用比例是符合谷歌預期的,正如谷歌官方的介紹,Accessibility是為了讓身體不便的用戶更好地使用手機,目標用戶群體比例較小,因而理想狀態樣本比例也應該相對較少。
對樣本增長狀況的研究,發現Accessibility樣本大致可以劃分為從一開始的合理利用時期,發展到用于提升用戶體驗,繼而轉向到灰色地帶,逐步背離了安卓谷歌的設計初衷。
一、 合理利用
上文提及了安卓官方對Accessibility的說明,那么如何才是對Accessibility的合理利用呢?這里不得不再次所提起屏幕閱讀器TalkBack,其可以作為無障礙應用的一個優秀范例,具體體現為下面三個方面:
1)目標用戶恰當。如設計意義中所介紹,Accessibility主要是面向于身體等方面存在殘疾或不足的用戶,而TalkBack則是直接面向視力存在障礙或不足的用戶;
2)更好地使用設備。安卓官方希望通過Accessibility提供多種方式的轉換,達到讓特殊用戶更好的使用手機的目的,在這一點上TackBack具體表現為給用戶提供了多方面的語言反饋,如觸摸、文字、輸入等多方面的語音提示,讓視力存在障礙或不足的用戶在操作手機當中得到可靠的幫助,使得用戶能無障礙地使用手機。
3)在不影響原有代碼情況下實現了功能擴展。這是Accessibility一個很優秀的特質,谷歌不需要在系統源碼當中修改或增加任何內容,只對外提供了Accessibility功能,就滿足了視力不足用戶對于使用手機的日常需求,達到不修改原有程序邏輯的情況下還優化了用戶體驗的目的。
可見,在上述三個方面的引導下,Accessibility應該是一個面向特殊人群的,對開發者友好的一個服務。
二、 提升體驗
需求是帶動開發者去了解學習新技術的一大動力,在2015年里,各大應用市場均提供了“免ROOT自動安裝”的功能選項,同時由于這個功能的推出,使得越來越多的開發者去探究了解Accessibility這項技術。
免ROOT自動安裝,又有“智能安裝”的說法。應用市場在沒ROOT權限的條件下,安裝或更新軟件時會彈出應用安裝界面,而用戶想要安裝或更新多個應用時,需要用戶多次主動去點擊安裝按鈕,造成用戶使用上的不便,免ROOT自動安裝正為了解決用戶希望免去反復的點擊操作這個需求而產生。雖然此功能沒有面向特殊人群而是面向了普遍用戶,但是免去了用戶更新軟件時反復操作,提升了用戶體驗。
以360手機助手作為一個范例,用戶手機即使沒有ROOT,開啟了360手機助手的輔助功能以后,也可以方便地進行應用的批量安裝、更新或卸載,不再需要用戶繁瑣地點擊安裝或卸載按鈕。
免ROOT自動安裝邏輯流程圖見圖2.2。
圖2.2 免ROOT自動安裝流程
三、 灰色地帶
免ROOT自動安裝是個提升用戶體驗的功能,但是自動搶紅包需求則是使得Accessibility的使用進入了灰色地帶。
不可否認,自動搶紅包是比免ROOT自動安裝更強烈的一個用戶需求,無論是企業還是個人開發者,都紛紛通過Accessibility去實現搶紅包的相關功能,這是Accessibility樣本數量的大幅度增長的一個重要原因。
回到Accessibility本身,將Accessibility服務用于自動搶紅包,既沒有面向特殊人群,也沒有提升用戶體驗,已經背離了安卓官方的設計意義,而且自動搶紅包軟件具有外掛屬性,會造成一定程度上的不公平現象,正如外掛軟件一樣難以判斷其好壞性質一樣,用于自動搶紅包功能的實現代表著Accessibility的使用已經進入灰色地帶。
自動搶紅包的邏輯流程圖見圖2.3。
圖2.3 自動搶紅包
通過流程圖的簡單對比,發現自動搶紅包的邏輯比免ROOT自動安裝更為復雜一些,結合時間前后的因素分析,免ROOT自動安裝功能的出現使得Accessibility已經有了一定的技術探索積累,為后面自動搶紅包技術發展提供了條件,同時因為自動搶紅包的需求遠遠強于免ROOT自動安裝功能的需求,所以即使自動搶紅包有著更為復雜的邏輯,也沒有阻擋更多的開發者去研究和開發自動搶紅包應用。
四、 肆意濫用
由于Accessibility的設計初衷只是面向于少數群體,長時間里屬于一個較冷門的功能,但是近兩年免ROOT自動安裝和自動搶紅包的出現,使得Accessibility進入了更多開發者的視野,不再被人們忽略,Accessibility樣本也從最開始的合理利用發展到用于提升用戶體驗,再到踩入了自動搶紅包這種灰色地帶。經過一定的發展以后,開發者容易發現Accessibility能做的事情不止這些,也給一些不懷好意的開發者或者木馬制作者提供了制作惡意軟件的切入點。
正如硬幣有正反兩面那樣,在Accessibility使用趨勢明顯上升的勢頭發生之時,是否也有木馬或者惡意軟件趁機混跡于其中呢?圖2.4是帶有Accessibility功能的惡意樣本數量統計。
圖2.4Accessibility惡意樣本數量統計
不難發現,隨著Accessibility使用的普及,Accessibility惡意樣本的數量也在增加,注意上圖中最后一列僅僅是2016年上半年的數量,換個維度,其實這個數量是2015年上半年的245.3%,接近于2015年同期的2.5倍!目前尚且樂觀的是,Accessibility惡意樣本的上升趨勢大大低于Accessibility總體樣本的增長,但是隨著Accessibility的普及,存在著出現新的肆意濫用的可能性,這次360烽火實驗室發現的瀏覽器劫持木馬便是一個例證。
第三章Accessibility濫用案例分析
一、 行為概述
(一) 誘導用戶開啟
360烽火實驗室最新發現的木馬“System Monitor”,該木馬表面偽裝成手機安全軟件,啟動后以安全軟件的界面誘導用戶啟動輔助功能以“完成安裝”,此處的頁面描述“Malware Protection”字樣由木馬設定,意在進一步誘導用戶相信其為一款安全軟件。再次進入輔助功能,點擊System Monitor后無法再進入上述開關頁面,而是自動回彈至設置頁面。
圖3.1 啟動木馬輔助功能截圖
(二) 防止被卸載
正常情況下,在系統設置 中的 應用 選項中可以查看應用信息,進而對程序進行卸載。
圖3.2 手機中的應用列表
圖3.3 點擊正常應用后跳轉頁面
圖3.4 點擊木馬System Monitor后跳轉頁面
可見,點擊正常軟件可以進入到“應用信息”頁面,可以對應用進行卸載和強行停止等操作,但如果點擊選中的木馬程序,則會跳轉到設置頁面而無法進入到該頁面,造成用戶無法正常卸載。
(三) 瀏覽器地址欄劫持
正常打開瀏覽器后的頁面如下圖
圖3.5 正常情況下打開瀏覽器截圖
安裝該惡意軟件后打開瀏覽器的頁面,會打開特定的網址,如下圖
圖3.6 中木馬后啟動瀏覽器截圖
點擊瀏覽器中的可點擊視圖,則一有定幾率觸發打開一個新的網址,如下圖
圖3.7 中木馬后點擊瀏覽器視圖后截圖
二、 運行邏輯
樣本在獲得Accessibility激活后,會接收到Accessibility事件,通過對事件當中的包名、文本信息、事件類型的綜合處理,實現了上述的惡意行為,樣本的大致運行邏輯如下圖。
圖3.8 木馬邏輯流程圖
三、 詳細分析
(一) 隱藏圖標
開啟該Service后,觸發隱藏圖標代碼
圖3.9 隱藏圖標代碼片段
(二) 自我保護
通過系統設置的包名以及事件中帶有的文本信息,判斷出用戶是否意圖在輔助功能當中關閉服務或試圖通過系統設置的應用進行卸載,然后通過啟動系統設置activity來跳轉,達到程序自我保護的目的。
圖3.10 自我保護代碼片段
通過“Force stop”關鍵字來判斷當前窗口是否存在被強制停止的可能,如果有,則跳轉到桌面。
圖3.11 跳轉桌面代碼片段
(三) 劫持搜索
通過區分不同的事件類型,根據包名對輸入法、瀏覽器、系統桌面進行搜索內容劫持跳轉。
1)三星輸入法
圖3.12 檢測三星輸入法代碼片段
2)瀏覽器
圖3.10 檢測瀏覽器代碼片段
3)系統桌面
圖3.10 檢測系統桌面代碼片段
其中系統桌面方面,無論用戶在二級菜單還是三級菜單,打開任意app是均會啟動瀏覽器并以打開app的名稱作為關鍵字進行搜索,日志例子如下
圖3.11 搜索關鍵字代碼片段
通過當前事件的包名和事件文本信息,隱藏自身程序的系統安裝界面。樣本還具有更新迭代版本的代碼,結合以下代碼理想下可以做到讓用戶感知不到版本更新
圖3.12 版本更新安裝代碼片段
獲得篩選用戶搜索內容并用自身網址進行搜索
圖3.13 google搜索示例
如果用戶使用谷歌搜索,則會將谷歌生成的網址信息進行篩選再進行自身的搜索進行搜索
圖3.14 再次進行搜索代碼片段
其中標紅的URL在瀏覽器地址跳轉里面會被使用
圖3.15 跳轉的網址鏈接代碼片段
第四章Accessibility安全預警
一、 濫用案例盤點
根據國內外相關安全報告,已被發現的Accessibility濫用情況主要歸類為三類情況:惡意安裝、廣告干擾和竊取信息。
(一) 惡意安裝
應用市場的“自動安裝功能”通過Accessibility實現了模擬用戶點擊的功能,同樣的技術也被黑產業有所利用,利用Accessibility的檢測視圖以及模擬點擊功能,進行惡意安裝,用戶即使發現也無可奈何[4]。同時,結合此次發現木馬的實現方式,可預見到會有自動安裝同時隱藏安裝界面行為的出現。
(二) 廣告干擾
Accessibility的功能,使得廣告的方式彈出方式更難以察覺、更具隱蔽性。如Doctor Web的報告Android adware “sets up” other programs[5]提及的Adware.AnonyPlayer.1.origin,會利用Accessibility獲取系統事件,等待用戶啟動白名單中的不含廣告的應用后進行廣告展示,達到迷惑用戶廣告出處的目的。
(三) 竊取信息
由于使用Accessibility時可以獲得用戶通知欄以及操作視圖里的內容,此功能可被用于竊取用戶數據。如Lookout的報告 Japanese malware abuses servicehelping the disabled use smartphones; spies on victims and steals LINE data[6]中,指出了有惡意軟件利用Accessibility進行LINE數據的竊取。
二、 安全預警
在Android 5.0以前,接口getRunningTasks常被惡意利用來制作各種欺詐或者劫持類軟件,但是由于Android5.0對該接口進行了安全性的改進,使得木馬作者在5.0以后的版本尋求另外的實現方式去達到原來的功能,其中通過Accessibility來實現便是其中一種方法,getRunningTasks和Accessibility的對比如下圖
圖4.1getRunningTasks和Accessibility比較
通過上述對比,結合此次發現的木馬,Accessibility在將來有可能成為替代getRunningTasks接口被用作劫持詐騙類木馬的常用手段。與此同時,通過對Accessibility相關功能的深入研究,發現利用該服務可以獲取到更多的細節信息,在將來可能會帶來更大的安全隱患。
在上述對比中,Accessibility需要用戶主動開啟服務,在國外已經發現通過懸浮窗來進行引導用戶開啟授權的樣本,在對Most Android Devices Prone to Accessibility Clickjacking Attacks[7]中所提及的樣本的分析研究發現,該樣本主要通過懸浮窗覆蓋和游戲引導的形式,在用戶不知情的情況引導用戶開啟服務。懸浮窗欺騙,加上前面木馬當中有偽裝欺騙,惡意開發者有可能正通過多種方法和手段完成惡意功能。
三、 濫用原因
通過對Accessibility相關技術和樣本的分析,發現Accessibility可以獲取用戶操作界面的信息、獲取用戶輸入信息甚至可以獲取到用戶操作手機的狀態,那么,Accessibility是如何從一個面向于特殊群體的服務逐漸變得被濫用的呢?應該有以下因素:
1)使用人群與權限控制的矛盾
Accessibility理想使用人群是殘障人士,殘障人士對手機操作具有特殊要求,使得Accessibility需要提供高度的自動化和十分簡易的操作接口,這一方面導致Accessibility服務的運行過程對于手機用戶來說幾乎是透明的;另一方面,使用人群的特殊又使得系統不能對Accessibility設置過于復雜的權限控制,使其容易被濫用。
2)用戶對Accessibility的認識不足
如果說起ROOT,相信能引起用戶的謹慎注意,但是設計到Accessibility,包括無障礙服務、輔助功能等詞語時,大多用戶沒有足夠的安全防護意識,甚至由于服務置于后臺,對用戶沒有交互,用戶難以察覺其存在,而導致用戶意識上的松懈。
由于Accessibility自身的設計意義使得系統權限管理難以做得復雜,同時用戶對其又沒有足夠的安全認識,形成了如今Accessibility被濫用的情況。
四、 總結
Android提供Accessibility的初衷是幫助用戶更好地使用手機,而今卻被用在各種不相關的功能上,甚至于利用該功能來進行惡意推廣等對用戶不友好的行為,這次發現的木馬更是對用戶手機的日常使用造成極大的不便。對比安卓官方提供該服務的初衷,Accessibility其實更像是個受委屈的孩子,為了更美好的事情而誕生,卻被“教”成了個壞孩子。
結合此次發現的木馬和上述報告,可以發現Accessibility被惡意利用的情況越來越多,進行的惡意行為也層出不窮。此次發現的木馬劫持了用戶瀏覽器,同樣的技術也可實現對任意Activity實行劫持,國內尚未出現類似木馬但需對此引起重視與預防。
在此提醒廣大用戶,不要輕易給未知來源的應用開啟輔助功能,以免遭受到手機的使用不正常或其他損失。
引用
[1]Android官方對于Accessibility的說明:
https://developer.android.com/guide/topics/ui/accessibility/index.html
[2]Android官方對于AccessibilityService的開發者文檔:
https://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
[3]Android官方對于TalkBack的幫助說明文檔:
https://support.google.com/accessibility/android/answer/6283677hl=zh-Hans&ref_topic=3529932
[4] 濫用Accessibilityservice自動安裝應用:
http://www.2cto.com/Article/201512/454365.html
[5]Android adware “sets up” other programs :
http://news.drweb.com/show/i=9716&c=9&lng=en&p=0
[6]Japanese malware abuses service helping the disabled use smartphones; spies onvictims and steals LINE data:
https://blog.lookout.com/blog/2015/07/01/androratintern/
[7]Most Android Devices Prone to Accessibility Clickjacking Attacks:
http://www.securityweek.com/most-android-devices-prone-accessibility-clickjacking-attacks
*企業賬號:360手機衛士,轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)