1. 程式人生 > >Android 安全測試思路總結(攻擊面)

Android 安全測試思路總結(攻擊面)

  接觸Android安全測試一年有餘,被同被人問到給你一個App,你如何確定其中的安全問題。平時真的缺乏一份總結,這裡簡單總結一下。部落格中的提到的部分攻擊面,我比較熟悉,也有很多不太清楚的地方,不妨先簡單記錄下吧。

  根據攻擊裝置的代價,我們做了如下分類。

  • 遠端攻擊面
  • 物理鄰接攻擊面
  • 本地攻擊面
  • 物理攻擊面

    一、遠端攻擊面

      最巨大的、最危險的、最有吸引力的攻擊介面,攻擊者無需本地物理接觸受害者。

    1、Networking Stacks(網路協議)

      Android系統使用的Linux核心提供的TCP/IP協議棧可能會引入攻擊面,1)Linux底層的網路協議棧由C/C++編寫,其存在的“緩衝區溢位”

    等程式碼問題可能導致遠端執行任意程式碼,2)協議處理過程中某些欄位沒有判斷而導致拒絕服務

    檢查方法:程式碼review,並搜尋不安全函式

2、Exposed Network Services(暴露的網路服務)

  Android本身很少暴露網路服務,多是由應用程式暴露,如開啟WIFI熱點功能後,會監聽TCP 53埠。

檢查方法:通過nmap掃描或者本地執行netstat -na|grep LISTEN可以獲得暴露的服務,再進行分析。

例子:百度系WormHole算這類漏洞。

3、Moblie Technologies

  這類漏洞指的是通過手機專有的服務進入的遠端攻擊面,例如通過簡訊、wap服務這是其他作業系統例如windows、linux不具有的。

這裡指SMS、MMS、電話等蜂窩網路服務暴露的攻擊面。

SMS、MMS服務使用WAP協議,其中的WAP PUSH訊息可被用來發送Service Loading request (SL訊息),SL訊息可以去呼叫USSD(Unstructured Supplementary Service Data)功能來執行充值、語音郵箱查詢等操作

USSD指令:當你使用手機鍵盤輸入一些網路已預先制定的數字或者符號比如*#等,再按send也就是撥號鍵就可以向網路傳送一條指令,網路根據你的指令選擇你需要的服務提供給你。可以用來打電話、修改PUK等 http://baike.baidu.com/link?url=ImBFOug4QRZFJHhypYHxY1i2ZPzzsgQw5Fq-LhWuGD1Bmcvry02IMXqG3QyP7sgZ

WAP PUSH:服務資訊或推入資訊,是種特殊格式簡訊 WAP PUSH某站點或某業務連結通簡訊傳送支援WAP PUSH功能手機,通過閱讀條簡訊(服務資訊)打簡訊連結直接訪問業務,節省尋找業務時間

WAP Push的內容有兩種,一種是SI,service indication;另一種 SL,service loading。這兩種內容型別的目的都是傳送URL連結到手機上。SI是以非同步方式傳送一個通知、警示、提醒等資訊到手機上,使用者會看到螢幕上顯示這條通知文字內容,然後,提示你是否去那個頁面,如果去,手機將啟用為WAP瀏覽器,開啟這個連結,瀏覽其內容。SL則是直接傳送一個 URL連結到手機上,手機不會給使用者任何提示,自動地啟動WAP微瀏覽器,下載這個URL對應的內容,顯示在手機上。讓人覺得好像是推送了一個頁面下來了似的。MMS就是利用這個機制實現的,已知攻擊是傳送tel://開頭的SL指令可觸發手機打電話 http://www.cnblogs.com/edward259/archive/2010/01/29/1659415.html

4、Client-side Attack Surface(客戶端攻擊面)

指由於Android上安裝的App或者系統提供的服務(App)引入的遠端攻擊面。

4.1 Browser Attack Surface(瀏覽器攻擊面)

主要有URL釣魚、MitM、XSS、CSRF方面的威脅

android 4.1之前版本使用的是android browser,4.4之前使用chrome for android ,4.4之後使用基於chromium的web browser(libwebview-chromium.so存在於framework層,為上層應用提供API,由於是隨framework更新,因此更新慢,容易受到half day攻擊)

另外,還有其他第三方瀏覽器由於存在漏洞而引人的攻擊面

4.2 Web-Powered Mobile Apps(web引擎移動應用)

使用webview技術而引人的攻擊面 利用WEB View的攻擊:例如 addJavascriptInterface和Android AD network。客戶端使用webview的xss、csrf等。

4.3 其他

包括:

  • Ad Networks(廣告)
  • Media and Document Processing(媒體推送)(處理圖片、文件的開源庫,如(libpng、libjpeg),包括最近的png攻擊和stagefright攻擊)
  • Electronic Mail(電子郵件)
  • Googel Infrastructure(Google基礎服務)
  • Google Play
  • Third-Party App Ecosystems

二、Physical Adjacency(物理鄰接攻擊)

  廣義上也算遠端攻的一種,只是攻擊的範圍受到限制。 包括:

  • GPS

1.使用者位置資訊被APP濫用,洩露使用者隱私
2.GPS spoofing : 傳送虛假GPS訊號導致GPS裝置定位錯誤

  • Baseband

基帶處理晶片(CP)及android.telephony.stack協議棧

1.假基站
2.針對RIL層的攻擊:相關硬軟體如USRP,BladeRF,開源協議棧OSmocom

  • Bluetooth

包含近30種Profile,每一個profile描述了藍芽的一種功能

比如:
1.HFP(Hand-free profile)/HSP(Headset profile)定義瞭如何控制麥克風、外放等外設
2.FTP(File transfer profile)
3.DUN(Dial-up Networking profile)
4.HID(Human Interface Device profile)
5.AVRCP(audio/video Remote Control profile)

可能的攻擊方法:Bluejacking,Bluesnarfing,Bluebugging

  • Wi-Fi

功能點:連線internet,WIFI直連

協議和演算法:WEP、WPA、WPA2、開源協議棧:wpa_supplicant

可能的攻擊:Rogue熱點、MITM

  • NFC

讀取Tag,資料傳輸(Beam)、移動支付

呼叫關係:物理NFC晶片->核心:libpn544_fs.so->
Native:libnfc_jni.so,libnfc.so,libnfc_ndef.so->
Framework:com.android.nfc ->上層APP

三、本地攻擊面

攻擊者通過安裝本地App達到攻擊的效果。

Exploring the File System

檔案系統訪問許可權設定、SUID/SGUID設定,Owner設定

檢查工具:adb shell和Canhazaxs

Applications life cycle

應用生命週期中引入的攻擊面

install

安裝流程中引入的攻擊面,如超長應用名攻擊,畸形AndroidManifest.xml標籤,APK佔位攻擊,簽名漏洞等。

Applications run

執行流程中引入的攻擊面

backup

應用備份恢復時引入的攻擊面,如ALLOW-BACKUP漏洞

Finding Other Local Attack Surface

System Calls

在原始碼中以“SYSCALL_DEFINE”定義

Sockets

sockets惡意呼叫

Binder

Shared Memory

Baseband Interface

Attacking Hardware Support Services

API

JAVA Native Interface

JNI惡意呼叫,JNI-DOS

AIDL service Calls

TrustZone Proxy

TurstZone Proxy是連結非安全世界和安全世界的代理

CDEV file_operations

驅動原始碼中file_operations中定義了驅動節點的介面,如open/write/read/mmap/ioctl

四、物理攻擊

USB、adb等。

參考文獻:http://colbert337.github.io/2015/08/24/android-attack-surface/