聯通數字科技有限公司 張婧宇 毛 盾 唐昊同 張子田
隨著移動互聯網時代的到來,移動終端形成了一張舉世矚目的移動互聯網絡。其中安卓系統在智能終端系統中占有極高的比例,安卓應用程序日漸增多,其數量和種類呈現出指數式的增長,給人們的生活習慣和工作習慣帶來了前所未有的變化。隨著安卓應用的普及,其所存在的安全問題也成為用戶所關注的焦點。文章主要分析了等保合規下安卓操作系統的安全風險隱患,通過對安卓APP程序及數據兩個方面進行滲透測試來闡述安卓系統所面臨的風險點。
隨著信息技術的發展,移動互聯網已經滲透到社會的各個方面,并且產生了巨大的影響。安卓系統作為移動終端系統的重要組成部分,安卓APP安全成為關注的焦點。為進一步理解安卓APP安全認識,理解和明確安卓APP的網絡安全等級保護要求,本文對安卓框架、安卓APP所面臨的風險及安卓APP滲透測試進行了簡要分析和研究。
安卓系統在設計上劃分為不同層級,包括5層,分別是內核層(Kernal)、動態庫層(Libraries)、運行時層(Android Runtime)、框架層(Application Frame)和應用層(Applications)。分層結構如圖1所示。
安卓內核的底層是Linux內核,其作用是連通底層硬件與上層應用。并且內核層作為中間層面,可以對用戶隱藏底層的硬件結構并提供統一的服務。安卓內核包括核心部分和驅動部分,核心部分主要包括內存管理、電源管理、進程管理、網絡協議等功能。安卓內核集成了多種硬件驅動以適應不同型號的終端設備。

圖1 安卓系統架構
動態庫層包含安卓系統運行中的需要的各種動態庫文件,這些動態庫文件的作用是支撐上層各個組件的運行,以提供更好的服務,這些庫文件主要包括:C/C++相關庫、多媒體庫、LibWeb-Core、Surface Manager、SGL、3D libraries、FreeType、SQLite。
運行時層包含核心庫和ART(5.0系統之后,Dalvik虛擬機被ART取代)。核心庫集成了Java核心庫的大部份功能,使得開發者可以使用JAVA開發安卓應用。相較于傳統的JVM虛擬機,Dalvik虛擬機是專門為移動端應用定制的,并生成dex格式文件,以優化內存的使用。
應用框架層為開發人員提供了開發所需要的API,便于開發人員調用以快速開發自己的應用程序。應用框架層API為程序員提供了很好的重用性,使得yoghurt可以方便的替換程序組件。應用程序框架層包括:
(1)豐富而又可擴展的視圖(Views),可以用來構建應用程序,它包括列表(lists),網格(grids),文本框(text boxes),按鈕(buttons),甚至可嵌入的web瀏覽器。
(2)內容提供器(Content Providers)提供應用程序之間的共享功能,使得不同的應用程序之間可以進行數據共享。
(3)內容提供器(Content Providers)提供應用程序的資源訪問,例如圖片、本地字符串以及布局文件(layout files)。
(4)通知管理器(Notification Manager)使得應用程序可以在狀態欄中顯示自定義的提示信息。
(5)活動管理器(Activity Manager)用來管理應用程序生命周期并提供常用的導航回退功能。
使用JAVA語言編寫應用程序,應用程序由一個或者多個Activity組成,Activity活動代表了一個具有用戶界面的單一頁面,應用程序類似于電話、照相機、瀏覽器、微信等。
安卓系統具有開源的特殊性,終端廠商可以對操作系統進行定制以及修改。《全國移動App風險監測評估報告》(2020年3季度版)共計收錄Android應用318萬款,其中存在高危漏洞的比例接近95%,接近10%的App存在惡意行為,31.88%的App嵌入推送類的SDK。具體安全風險如下:裝在客戶端的軟件容易被反編譯未加殼保護的APK可以通過工具破解,植入木馬后門。攻擊者通過篡改和假冒官方應用的方式植入惡意代碼。安卓APP沒有審查依靠用戶對應用進行評分、查看用戶下載量、用戶舉報惡意軟件的方式對APP進行管理。APP對安全權限、隱私權限、其他權限具有控制權,80%用戶在安裝APP時賦予該應用的控制權限,直接默認授予APP相關權限,導致信息泄露。用戶安全意識薄弱,在陌生區域隨意登錄WLAN導致終端被植入惡意代碼、掃描二維碼存在惡意URL訪問惡意程序下載等威脅。
《信息安全技術網絡安全等級保護基本要求》(GB/T22239—2019)中除規定了網絡安全等級保護通用要求外,還補充了移動互聯安全測評擴展要求。移動互聯安全擴展要求針對移動終端、移動應用和無線網絡部分提出特殊安全要求,同時描述了移動應用所面臨的安全風險。
(1)訪問控制中要求:無線接入設備應開啟接入認證功能,并支持采用認證服務器認證或國家密碼管理機構批準的密碼模塊進行認證。
風險分析:無線接入設備不開啟接入認證功能,任何設備都可接入,占用網絡資源,訪問重要無形資產。
(2)入侵防范中要求:保證接入到無線網絡中的無線設備均為已授權的無線設備,保證接入無線網絡中的設備和終端均為授權終端,要求定位和阻斷非授權無線接入設備或非授權移動終端。
風險分析:無線設備不進行授權,用戶可以私搭亂建無線網絡,比如網絡中用戶自己搭建的非法wifi,或惡意搭建的wifi釣魚等,造成其他用戶信息泄露。
(3)移動應用管控中要求:保證移動終端應用軟件安裝與運行的可管可控,要求對移動終端管理客戶端的應用軟件安裝與運行的功能進行管理,要求對移動應用軟件使用指定的證書進行簽名,保證安裝文件的完整性。在移動終端管理系統中加入白名單,控制移動終端軟件的應用安裝范圍,僅允許白名單內的移動應用進行安裝、運行。
風險分析:不對移動終端管理客戶端的應用軟件安裝與運行的功能進行管理,則不能限制應用軟件開啟某些功能,造成信息泄露。移動應用軟件不使用指定的證書進行簽名,則不能保證安裝文件的完整性,造成應用被惡意用戶篡改。不設置白名單僅允許安裝企業建設的移動應用商店內的移動應用,用戶會安裝惡意應用。
(4)移動應用軟件開發中要求:保證移動業務應用軟件的安全性,要求對開發者進行基本的資格審查。保證移動業務應用軟件所采用的證書的合法性。
風險分析:不審查開發者的工作簡歷、技術能力、資格證書、項目實施情況等,不能有效保證開發者的水平。未要求采用國家移動業務應用軟件的簽名證書具有合法性,開發者有機會對應用進行惡意操作。

圖2 測試結果

圖3 測試結果

圖4 測試結果

圖5 測試結果
安卓APP滲透測試是通過人工分析的方式,對Android客戶端應用進行安全評估和漏洞檢測,評估其抵御被黑客惡意篡改的能力、抵御敏感信息泄露的能力、抵御竊取賬戶密碼的能力和抵御通信過程被黑客入侵的能力,幫助發現Android客戶端應用存在的安全隱患,更好的保證Android客戶端的安全性。
隨著手機app的大量普及,Android應用開發的日漸完善,Android移動端應用的安全性也日益提高。但在開發過程中,依然存在著大量程序漏洞,可以被攻擊者利用。例如,Activity組件安全漏洞、BroadcastReceive組件安全漏洞、Services組件安全漏洞、ContentProvider組件安全漏洞、Dex源代碼反編譯、反編譯二次打包等。利用專業APP審計工具Drozer對客戶端進行自動化檢測,明確攻擊面。在針對某app進行測試,結果如圖2所示。
發現activities組件暴露4個攻擊面,查看Activity暴露的組件,結果如圖3所示。
嘗試直接啟動聊天模塊,能繞過登錄界面訪問相應服務,存在越權漏洞。結果如圖4所示。
App在運行過程中,同樣存在著大量程序漏洞,可以被攻擊者利用。例如,輸入記錄保護、屏幕錄像保護、進程注入保護、Activity劫持保護等。在手工測試的過程中,可以通過動態測試的方式對Android運行時安全進行測試。在針對某app進行測試時,將惡意軟件安裝至測試機,運行目標APP,觀察劫持界面的彈出情況。結果如圖5所示。
結束語:本文針對安卓框架、安卓APP所面臨的風險及安卓APP滲透測試進行了簡要分析和研究。下一步應繼續安卓APP滲透測試進行持續跟蹤和研究,具體工作可圍繞以下幾點開展:(1)深化對于網絡安全等級保護2.0體系的理解,既要針對安全測評通用要求進行系統分析,又要結合在實際滲透測試過程中發現的Android應用漏洞進行深入解讀和學習。(2)加強Android應用安全測評能力建設,通過人才培養、技術培訓等方式,形成Android應用滲透測試能力儲備,并在項目開展過程中不斷鍛煉和提升隊伍。(3)做好Android應用工具儲備,特別是網絡流量處理工具、通用逆向分析工具等。(4)加強技術交流,積極與Android應用開發人員和移動端開發從業人員進行交流,了解領域新技術、新動態、新趨勢等。