天天看點

iOS APP黑盒/灰盒審計checklist

本篇文章介紹如何對一款iOS應用進行基本的安全審計,主要方式為黑盒或灰盒的手動審計。注意紅色字型部分為做安全審計時的checklist。   一、IPA安裝包分析(靜态分析) 1. Mach-O可執行檔案分析(位址為 /private/var/mobile/Application/[GUID]/Appname.app/) 注意對于來自APP store的mach-o檔案需要先解密 clutch AppName strings Mach-OFileName

class-dump-z Mach-OFileName > FileName_classdump.h

$THEOS/bin/logif.pl FileName_classdump.h>tweak.xm

otool -tV Mach-OFileName > FileName_assembledump cycript

檢查對象:越獄/非越獄裝置 檢查清單: (1)是否開啟PIE功能 待續。。。 檢查工具:class-dump,class dump z,IDA Pro, IDA plugin:runtime tracer,Hopper ,cycript ,otool,lsof,

  2. 應用主目錄檔案分析 App store應用存放在/private/var/mobile/Application/[GUID]中 (1)Documents檔案夾 使用者存檔檔案,檢查是否有不安全的檔案存儲,例如明文存儲,base64編碼存儲,可以用 iToolsGUI工具檢查

(2)Library檔案夾 1) Library/Preferences/  偏好設定檔案,一般為plist格式,可以用 plist editor Pro for windowsGUI工具打開,也可以直接用 plutil指令行工具編輯

plutil plistFileName

2) Library/Caches/ 儲存應用的持久化資料,用于應用更新或者應用關閉後的資料儲存,為永久儲存,一般為sqlite3格式,可以用 SQLite Database BrowserGUI工具打開,也可以直接用 sqlite3指令行工具編輯。當然也有plist格式存儲的,檢視方法見上面。 該檔案夾下有個 Library/Caches/Snapshots/檔案夾,用于存儲應用的螢幕快照。在進行源碼審查時,請檢查keyWindow.hidden選項的設定,避免存儲敏感應用螢幕

sqlite3 databasename

3) Library/Cookies/  儲存Safari浏覽器和iOS應用的持久性cookie,一般檔案名為Cookies.binarycookies, 我們已經很熟悉PC上的cookie存儲了,例如IE将持久性cookie以明文文本的形式存儲在臨時目錄中,而firefox與chrome則采用sqlite3資料格式存儲。我們可以使用SecurityLearn提供的python腳本工具 Cookies.binarycookies Reader 讀取其中的内容

python BinaryCookieReader.py Cookies.binarycookies

4) Library/Webkit 儲存webkit本地存儲檔案,有的應用沒有該檔案夾   (3)AppName.app檔案夾 1)Info.plist檔案 APP相關資訊 2)iTunesMetadata.plist檔案 購買者資訊檔案 3)SC_Info檔案夾, 簽名相關檔案 4) _CodeSignature檔案夾,簽名相關檔案 5)其他資源檔案  

詳見iOS平台遊戲安全再議之存檔修改與防禦 

檢查對象:越獄/非越獄裝置 檢查清單: (1)重要資訊是否加密存儲 (2)本地存檔是否可修改(包括明文格式,base64格式,二進制格式),檢查應用是否會檢測存檔的完整性 (3)本地存檔是否可替換,用低版本存檔替換高版本存檔(往往低版本應用的安全性都不好,是以可作弊的幾率大),不同id存檔替換(例如用高分存檔替換低分存檔),檢查應用是否會檢測存檔的唯一性 工具:各種檔案格式對于的編輯器 iTools  、 plist editor Pro for windows 、 SQLite DatabaseBrowser  、 Cookies.binarycookies Reader 、 UltraEdit

  二、記憶體數值分析(動态分析)

詳見iOS平台遊戲安全再議之八門神器記憶體修改,IAP Free遊戲内購破解的防禦

檢查對象:越獄裝置 檢查清單: (1)檢查記憶體中遊戲程序中的重要數值是否可定位修改 工具:八門神器,gdb

  三、APP store IPA破解(動态分析)

詳見 iOS平台遊戲安全之IPA破解原理及防禦 檢查對象:越獄裝置 檢查清單: (1)  app store版IPA是否可破解,應用是否對破解版本   的IPA進行檢測處理 工具: Clutch

  四、支付分析(動态分析)

1. IAP (in-appstore-purchase)

詳見in-appstore.com免費内購方法的完整分析

檢查清單: (1)對越獄裝置,IAP Cracker是否有效 (2)對越獄裝置,IAP Free是否有效 (3)對越獄裝置,LocalIAPFree是否有效 (4)對越獄裝置,俄羅斯僞造蘋果伺服器是否有效 (5)對越獄裝置,xCon+IAP Cracker是否有效 (6)對越獄裝置,xCon+IAP Free是否有效 (7)對越獄裝置,xCon+LocalIAPFree是否有效 (8)對越獄裝置,xCon+俄羅斯僞造蘋果伺服器是否有效 (9)對非越獄裝置iOS 5.1.1,俄羅斯僞造蘋果伺服器是否有效 工具:IAP cracker,IAP Free,LocalIAPFree,xCon

  2. 第三方支付平台

可參考  支付漏洞的三種常見類型 分析方法主要從通信包分析和對API接口進行源碼審計 待續。。。

  五、通信包分析(動态分析) 1. http/https

( 1 ) HTTP 詳見 mobile app 通信分析方法小議(iOS/Android) 工具: BurpSuite , Fiddler     ( 2 ) HTTPS

詳見iPhone上使用Burp Suite捕捉HTTPS通信包方法,iOS SSL kill switch

工具: BurpSuit , ios-ssl-kill-switch , turstme   檢查清單: 同web應用漏洞 ( 1 ) 關注移動廣告平台是否收集移動裝置中的隐私資料 (目前發送裝置 UDID , Mac 位址貌似時稀松平常的事情,但發送裝置内部應用安裝清單,聯系人方式就需要禁止了) ( 2 ) 0Auth安全性 待續

    2 sockets

詳見:實時抓取移動裝置上的通信包(ADVsock2pipe+Wireshark+nc+tcpdump)

工具: wireshark , ADVsock2pipe , TCPdump , Mallory   檢查清單:(主要是中間人攻擊) (1)封包是否可以修改 (2)封包是否可以重放

  六、後續工作 前面介紹的都是手動的從應用的各個方面(檔案系統,通信,可執行檔案,業務邏輯)進行安全審計,比較期望将來能有一款像web應用安全審計/漏洞檢測那麼成熟的自動化工具。目前為止,我知道的唯一有作用的iOS半自動化審計工具是 iAuditor——iOS APP安全審計工具,這款工具,存在目前市場上免費工具共有的缺陷,那就是過于理論,對實際APP的安全審計有點雞肋,但聊勝于無。 (歡迎推薦好的自動化/半自動iOS應用安全審計工具) 總的來說,對iOS應用安全審計而言,除了黑盒/灰盒審計外,再就是對源碼進行的白盒審計,HP的 Fortify SCA貌似還蠻成熟的,我也收集了一些國外安全團隊的 源碼審計白皮書, 但總覺得對于真實的iOS應用都過于理論 。 計劃後期寫一篇對真實應用有參考作用的iOS應用源碼審計checklist,或者能更近一步編寫一個開源的自動化審計工具。加油