移動APP漏洞自動化檢測平臺建設

前言:本文是《移動APP客戶端安全筆記》系列原創文章中的第一篇,主要講的是企業移動APP自動化漏洞檢測平臺建設,移動APP漏洞檢測發展史與前沿技術,APP漏洞檢測工具與平臺,以及筆者的一些思考。希望能對移動App自動化漏洞檢測感興趣的同學有所幫助,限于筆者技術水平與文章篇幅,有些內容暫沒有逐一詳細分析,后續我爭取多學習多分享,在此也歡迎大家指點和交流。

一、國內Android App漏洞檢測發展簡史
1.1石器時代 (2007-2011)

關鍵詞:反編繹,人工審計

  • 2007年11年,Google正式發布了Android操作系統,2011年12月,Google發布了Android 2.3版本,Android 應用市場App數量突破10萬個,隨著Android系統的完善及Android設備數量的增加,Android超過塞班成為主流智能手機操作系統。與此同時,一些安全研究人員已經敏感的嗅到了Android客戶端安全可能會成為未來的安全熱點之一,不少傳統的二進制安全研究人員開始轉戰移動安全。
  • 這個時間段國內對Android安全問題的關注主要集中在惡意App分析與檢測,App逆向與破解以及Android系統Root。對于Android客戶端安全問題剛主要集中在信息泄露,敏感權限使用的方面,通常使用反編繹工具分析APK源碼,然后進行人工審計。
Paste_Image.png

圖1 使用JD-GUI分析APK反編繹后的Java代碼

1.2農業時代 (2012-2014)

關鍵詞:自動化審計、靜態分析、動態分析

  • 2012到2014年間,Google發布了Android4.0-5.0系統,此間爆出不了不少Android 相關漏洞,比如影響深遠的Webview遠程代碼執行漏洞,HTTPS中間人漏洞,讓越來越多的安全研究人員的焦點慢慢轉向Android App客戶端本身的安全漏洞挖掘上來。
    國內一些廠商也開始研發自己Android App自動化審計系統,其中最早的對外發布的騰訊金剛審計系統算是國內這類產品的鼻祖之一,其早期版本在功能上實現了Android App自動化靜態分析與簡單的動態分析,審計點包括:明文保存敏感信息,文件權限問題,日志信息泄露,組件權限問題,明文傳輸,拒絕服務等。
  • 此時遇到Android APP自動化審計遇到的主要問題有:1.靜態分析主要依賴于關鍵詞匹配,如果缺少上下文分析與可達性分析,開發者正好自定義了一個相同關鍵詞的函數,或者存在漏洞的代碼根本沒有調用到,則會產生誤報。2、大多Android App的代碼與UI是緊密交互的,如果動態分析部分只進行了簡單安裝啟動App與自動隨機點擊,無法覆蓋App大部分界面與功能,則無法覆蓋更多的應用執行路徑,產生有效業務數據,容易導致漏報。
Paste_Image.png

圖2 金剛審計系統主界面

1.3工業時代 (2015-至今)

關鍵詞:模糊測試、污點分析、通用脫殼、UI自動化遍歷

  • 從2015年開始,360捉蟲獵手(現改名為360顯微鏡),阿里聚安全等開放的在線Android App漏洞檢測平臺的出現讓開發者和安全研究者更加方便的進行漏洞審計,一些開源在線檢測平臺的出現(如MobSF)也降低了定制化APP漏洞審計系統的開發門檻。同時模糊測試,污點分析,通用脫殼,UI自動化遍歷等學術界與工業界技術也開始被應用到移動App漏洞審計中。下面簡單談談幾種技術在Android App漏洞檢測領域的應用,如果有讀者感到興趣的話后續再做詳細分享。
    1.3.1 Android App Fuzzing
  • 一般而言Fuzzing技術常用于二進制漏洞挖掘,在移動安全領域常見于挖掘系統組件漏洞(如libstagefright),文件解析類應用漏洞(如adobe reader,視頻播放器)及第三方組件漏洞,常使用的工具有:
  • peach/afl/honggfuzz,以及DroidFuzzer)/ MFFA等框架,為了提升成功率,通常可將幾種工具與框架組件使用,如AFL+PEACH+MFFA。除此之外,fuzzing技術同樣可用于測試Android 進程間通信(IPC),比如intent fuzzer)可以直接檢測App拒絕服務等漏洞。
Paste_Image.png

圖3 KCon2016上安全研究人員提出的組合fuzzing框架

1.3.2 Android App 污點分析

  • 污點分析可分為靜態污點分析與動態污點分析。靜態污點分析不需要運行程序,以FlowDroid為例,目前主流的App靜態污點分析技術主要包括如下步驟:

  • 解析應用AndroidManifest.xml,Layout配置文件和相關Dex字節碼,根據預先建模的Android LifeCycle Model生成超調用圖 ,又稱過程間控制流圖(Inter-procedural control flow graph, ICFG);

  • 根據定義的污點源和錨點(Source and Sink),將其轉換為基于ICFG的后向或前向數據流問題進行求解;

  • 根據求解結果,回答是否存在從某輸入到輸出的數據流流動路徑,以顯式Intent問題為例,FlowDroid會檢測到一個以發送intent的sink方法到最后接收intent的source的路徑存在。

  • 動態污點分析則是在程序運行中過程,通過跟蹤變量、內存及寄存器的值,依據執行流程跟蹤污點數據的傳播,最后達到跟蹤攻擊路徑與獲取漏洞信息的目的,以TaintDroid為例,需要對Android系統進行定制化修改以便對App運行過程中的污點數據進行跟蹤,但由于Android設備或模擬器性能瓶頸問題,動態污點分析無法獲取App所有可能的可執行路徑。

  • 以往污點分析常用于Android惡意App分析,信息泄露檢測等問題,現在越來越多的廠商也應用于App漏洞檢測上(如阿里聚安全使用的基于TaintDroid方案)。相比傳統的App漏洞檢測,污點分析可以跟蹤污點數據的傳播過程,確定漏洞是否在實際環境中可能被觸發,檢測能力更加強大。目前也有不少開源的Android污點分析方案與工具如:TaintDroid、FlowDroid、amadroid及CodeInspect,在此之上也發展出一些針對Android App漏洞 檢測方面的工具,如騰訊科恩實驗室Flanker之前開源的JAADS

Paste_Image.png

圖4 Flowdroid運行流程

1.3.3Android App 通用脫殼

  • App二次打包,破解等問題的泛濫催生了App加固產業的發展,兩者技術在也攻防中不斷發展和進化,目前國內主流的加固方案有梆梆,愛加密,百度加固,360加固,阿里聚安全,騰訊御安全/樂固,通付盾,NAGA等,對于在線漏洞檢測平臺來說,如果沒有通用的自動化脫殼方案就意味無法對應用市場中的很多App代碼進行靜態分析,甚至由于應用被加固無法運行于模擬器中或特定測試設備中,影響動態分析結果。
    目前針對dex文件加固主流的脫殼方法有靜態脫殼、內存dump、Dalvik虛擬機插樁,第一種方法需要針對廠商加密方案不斷更新,基本不具備通用性,后面兩者的開源代表作有:
  • ZjDroid
  • DexHunter
Paste_Image.png

圖5 筆者整理的國內部分APP加固方案

1.3.4移動 AppUI自動化遍歷

  • App UI自動化遍歷常在App開發測試中用于檢測App性能與兼容性,目前在App漏洞檢測領域用的比較少(主要由于效率較低)。一般主流的App漏洞檢測平臺都包含動態分析,主要是安裝App后自動運行App并監測App行為,通常使用的是Android Monkey test腳本或其它工具隨機點擊APP界面。
  • 實際上,為了更深入的檢測App敏感信息泄露與后端WEB接口漏洞,僅靠隨機點擊App界面進行動態分析是不夠的(比如現在大部分App功能需要注冊登錄后才能使用),如果能更好的模擬正常用戶使用App的過程,則可以擴展監測Logcat日志,本地文件存儲,網絡通信等數據審計能力。
  • 目前APP UI測試框架按原理可分為黑盒與白盒兩種,白盒測試需要在App開發時添加測試組件并調用,需要App完整源碼,黑盒測試一般提取App界面的UI元素并根據算法進行遍歷,無需App源碼。筆者推薦的黑盒APP UI測試框架與工具主要有
  • AndroidViewClient
  • 及國人基于Appium開發的appCrawler
Paste_Image.png

圖6 appCrawler生成的APP測試報告

二、Android App漏洞檢測
2.1 國內Android App在線漏洞檢測平臺

2.2開源Android App漏洞檢測工具
1.MobSF

  • Github:https://github.com/ajinabraham/Mobile-Security-Framework-MobSF
    Mobile Security Framework(MobSF)是印度安全公司(http://opensecurity.in)開發的一個智能化、一體化的開放源代碼的移動應用(Android / iOS)自動化測試框架,支持靜態和動態分析,App后端Web API漏洞檢測。
  • 主要特點:基于Python Django的開源在線漏洞檢測框架,前端UI完善,基礎功能全面,安裝布署方便,但總體來說審計點偏少,不適合實戰,更適合輔助分析與二次開發,國內目前不少在線APP檢測的平臺都有這個框架的影子。
Paste_Image.png

圖7 MobSF生成的檢測報告

2.Drozer
Github:https://github.com/mwrlabs/drozer

  • Drozer是MWR Labs開發的一個開源Android 安全測試框架,支持編寫自定義模塊。目前已經有不少介紹Drozer文章,這里就不多說了。
Paste_Image.png

圖8 Drozer運行界面

3.Marvin
Github:https://github.com/programa-stic/
Marvin是西班牙Programa STIC組織發布一個開源Android App漏洞檢測框架,該框架主要分為四個項目:

  • (1)Marvin-Django
    主要包含框架前端UI界面與數據庫部分;
  • (2)Marvin static analyzer
    一個主要基于Androguard Static Android Analysis Framework 的Android App靜態分析引擎。
  • (3)Marvin Dynamic Analyzer
    一個APP動態分析引擎,基于OpenNebula及Android-x86 模擬器,可搭建分布式分析系統,用于復現靜態分析發布的漏洞與動態檢測漏洞。
  • (4)Marvin toqueton
    一個自動化遍歷APP UI的工具,用于分析APP UI控件并進行自動化交互遍歷,輔助動態分析。
    主要特點:
    筆者剛看到這個項目發布時研究了一番,主要特點有可直接搜索下載Google應用商店或者上傳應用進行分析,可編寫自定義靜態分析腳本,使用動態引擎復查靜態分析的結果提升準確性,使用本地應用去遍歷APP UI等,但仔細實踐后發現動態分析環境(ubuntu+openNebula+Android-X86)的布署很麻煩,多次嘗試都未成功。
Paste_Image.png

圖9 Marvin主界面

4.Inspeckage
Github:https://github.com/ac-pm/Inspeckage
一個Xposed插件,用于調試分析Android App。
主要特點:

  • 使用方便,自帶WEB界面,裝Xposed插件可以分分鐘開始挖漏洞;2.功能全面:查看Manifest信息,監控本地文件讀寫,查看文件內容,查看Logcat日志,查看網絡通信請求(支持SSL uncheck),監控IPC通信,查看加密操作,調用未導出組件等。
Paste_Image.png

圖10 Inspeckage主界面

三、IOS App漏洞檢測

  • 一般來說iOS App由于iOS系統安全限制(非越獄環境),且無法直接反編繹獲取App源碼,其在安全性上遠高于Android App,但近兩年前隨著XcodeGhost(分析文章),iBackDoor,AFNetworking中間人等后門事件與漏洞的曝光,iOS App安全性也慢慢受到國內開發者與安全研究人員的關注。
    3.1 常見IOS App漏洞測試工具
    測試iOS App安全性離不開一臺越獄過的iOS設備,以及一些測試利器。在此簡單簡介兩個iOS App安全測試工具:
    1.****Idb
Paste_Image.png

圖11 Idb主界面

  • 官網:http://www.idbtool.com
  • Github:https://github.com/dmayer/idb
  • Idb是一款開源的iOS App安全評估工具,作者是Danl A.Mayer。
    主要功能:
  • 1.查看應用以下信息:應用包名;注冊的URL Schemes;SDK版本;應用數據文件夾位置;應用權限等,
  • 2.查看/下載應用數據文件;
  • 3.查看應用文件保護級別;
  • 4.Dump iOS keychain;
  • 5.檢測應用是否加密;
  • 6.檢測應用編繹安全選項(ASLR/PIE, DEP, ARC);
  • 7.查看應用的shared libraries;
  • 8.提取應用binary中的字符串;
  • 9.Class dump;
  • 10.查看應用URL Handler;
  • 11.Invoke and fuzz URL handlers;
  • 12.查看系統剪切板
  • 13.截屏
  • 14.安裝系統證書;
  • 15.編輯 /etc/hosts文件;
  • 16.查看系統日志;

2.****Needle

Paste_Image.png

圖12 Needle主界面

  • Github:https://github.com/mwrlabs/needle
  • Needle是MWR Labs開發的一個開源iOS安全測試框架,同樣支持開發自定義模塊來擴展Needle的功能,目前主要功能包含對iOS應用數據存儲,IPC,網絡通信,靜態代碼分析,hooking及二進制文件防護等方面的安全審計。
  • 與drozer類似,Needle提供了一個shell界面,基本idb有的功能needle都有或者說以后也會有(因為可以自己寫模塊),而Needle還同時支持Cycript與Frida兩個hooking方案,可以方便的加載hook腳本與執行命令。

3.2 IOS App自動化漏洞檢測

  • 在很長一段時間內,iOS安全研究都主要集中在iOS系統安全漏洞挖掘中,由于iOS相對安全的系統機制保護與嚴格的審核機制,iOS App安全性一般比Android App要高不少,歷史上出現的過一些iOS App漏洞也主要集中在iOS越獄環境下,但近年來XcodeGhost,AFNetworking框架中間人漏洞以及多個惡意SDK曝光也說明了iOS App安全性并沒有我們想像的那么高,建設iOS App自動化漏洞審計平臺對于擁有大量iOS App產品的企業來說還是很有必要的。
  • 為了提升公司iOS App安全漏洞審計能力與應急能力,筆者與riusksk(林大夫)從2015年底開始一起研發iOS App漏洞審計系統(后續并入金剛),目前已經成功上線近半年,也輔助發現了一些iOS App業務安全漏洞,詳情可參考文章:淺談iOS應用安全自動化審計
  • 此外360NirvanTeam(http://nirvan.360.cn)也上線了在線檢測功能,開源方案MobSF也有iOS App在線審計功能。此類審計平臺主要審計點有:BIN文件分析,第三方庫漏洞檢測,XCodeGhost檢測,惡意SDK檢測等。相對來說金剛更為全面,適合開發上線前自查與安全研究人員輔助分析,包含了私有API檢測,開放端口檢測,應用文件審計,網絡通信數據審計,日志審計,classdump等功能,后續還會繼續優化iOS App UI自動化遍歷功能與URL scheme Fuzzing功能。
Paste_Image.png

圖13 TSRC iOS App漏洞審計報告部分內容

四、構建移動App漏洞檢測平臺

  • 目前國內無論是3BAT,還是移動安全公司,都已經提供了移動APP漏洞檢測產品,筆者平時也會對這些平臺做一些深度體驗,總體來說隨著技術發展,構建APP漏洞檢測平臺門檻已經很低技術也很成熟了。
  • 在移動互聯網時代,不同的企業對于移動APP產品安全性要求是不一樣的,如金融,支付,通信,游戲類APP產品對App客戶端安全,業務安全,后端服務器安全都提出了很高要求,定制企業自已的移動APP漏洞檢測平臺還是很有必要的。
    筆者僅從個人角度談談對如何構建移動App漏洞檢測平臺的幾點看法:
  • (1)在平臺建設之初可以參考業界優秀的同類產品與開源方案,目前大部分移動App漏洞檢測平臺后端基本功能都是使用Python/Java開發,便于快速開發迭代。
  • (2)移動APP安全威脅是不斷變化的,漏洞審計規則也應該支持快速更新,同時企業移動App漏洞檢測平臺應該滿足移動App產品正式上線前審計,上線后日常排查兩個基本需求。
  • (3)很多開發人員和安全工程師對漏洞的理解是不一致的,在輸出漏洞檢測報告后,還需要提供詳細的漏洞利用場景講解與修復指引。
  • (4)多多關注學術界與工業界的新研究成果,如果能加入優化與利用,可以推動平臺整個技術能力的進步。
  • (5)平臺的主要建設者應該精通移動App漏洞挖掘實戰,能夠針對企業重點產品特性(如動態加載,熱補丁等技術)提供專業的解決方案。
    同時筆者提出了一個甲方/乙方企業通用的移動App漏洞檢測平臺架構,企業可以在此基礎上直接接入Web漏洞掃描系統掃描App后端Web漏洞,也可以收集URL測試業務安全漏洞。
Paste_Image.png

圖14 移動App自動化漏洞檢測平臺架構(點擊查看大圖)

五、未來移動App漏洞檢測平臺發展方向

  • 在Google最新發布的Android 7.0系統增加了不少安全特性,如APP開發者可以使用系統提供的接口自主配置信任的證書,默認也不再信任用戶安裝的第三方CA證書,此舉可提升Android App網絡通信的安全性。
  • 可見未來移動APP安全問題還將不斷變化,目前大部分移動APP漏洞檢測平臺最終的檢測結果也需要專業的安全研究人員評估實際風險,歷史上很多移動端嚴重漏洞也是需要結合業務場景的,所以說移動App漏洞檢測平臺也只是企業移動App安全建設中的一環,此外推動移動安全人才培養,移動App安全開發規范,應用加固,盜版監測等體系建設也同樣重要。
    筆者個人認為未來移動APP漏洞檢測平臺可發展的幾個方向有:
  • 1.機器學習
    機器學習在網絡安全領域常用于惡意軟件檢測,流量檢測等方面,目前也已經出現一些利用機器學習進行Android惡意應用等方面的開源工具android-malware-analysis與研究,未來同樣也可能應用于Android App漏洞檢測。
  • 2.威脅感知與大數據
    如何從移動App中挖掘數據,并分析,整合進而利用于漏洞檢測與威脅感知也是未來移動APP漏洞檢測發展方向之一。目前部分漏洞檢測平臺已經開始支持采集應用市場所有移動APP源碼及運行過程中產生的網絡通信數據(如域名,IP,URL等),進行聚合分析與WEB接口漏洞檢測。同時四維智創,梆梆等安全公司開始推廣移動應用威脅感知產品,此類產品通過SDK收集應用的行為與網絡數據,用于檢測APT攻擊,防刷單等場景。

3.社區化

  • 目前國內已經有一些社區化的WEB漏洞檢測平臺,如Seebug,Tangscan等,盤古即將公測的Janus(http://appscan.io)也同樣開始主打社區化,Janus支持社區用戶自定義檢測規則,后臺結合海量全網應用數據,可用于全網應用快速漏洞掃描。同時社區化加入了安全研究員的人工審計流程,后續可以不斷提升漏洞特征建模的細度與廣度,提升平臺檢測能力。

參考資料:

本文來自:Android安全中文站

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容