本篇文章介紹如何對一款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)其他資源檔案
檢查物件:越獄/非越獄裝置
檢查列表:
(1)重要資訊是否加密儲存
(2)本地存檔是否可修改(包括明文格式,base64格式,二進位制格式),檢查應用是否會檢測存檔的完整性
(3)本地存檔是否可替換,用低版本存檔替換高版本存檔(往往低版本應用的安全性都不好,因此可作弊的機率大),不同id存檔替換(例如用高分存檔替換低分存檔),檢查應用是否會檢測存檔的唯一性
工具:各種檔案格式對於的編輯器itools 、plist editor pro for windows、sqlite database browser 、cookies.binarycookies reader、ultraedit
二、記憶體數值分析(動態分析)
檢查物件:越獄裝置
檢查列表:
(1)檢查記憶體中遊戲程序中的重要數值是否可定位修改
工具:八門神器,gdb
三、app store ipa破解(動態分析)
詳見ios平台遊戲安全之ipa破解原理及防禦
檢查物件:越獄裝置
檢查列表:
(1)
app store版ipa是否可破解,應用是否對破解版本
的ipa進行檢測處理
工具:clutch
四、支付分析(動態分析)
檢查列表:
(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介面進行原始碼審計
待續。。。
五、通訊包分析(動態分析)
詳見mobile app 通訊分析方法小議(ios/android)
工具:burpsuite,fiddler
工具:burpsuit,ios-ssl-kill-switch,turstme
檢查列表:同web應用漏洞
(1)關注移動廣告平台是否收集移動裝置中的隱私資料(目前傳送裝置udid,mac位址貌似時稀鬆平常的事情,但傳送裝置內部應用安裝列表,聯絡人方式就需要禁止了)
(2)0auth安全性待續
2 sockets
工具:wireshark,advsock2pipe,tcpdump,mallory
檢查列表:(主要是中間人攻擊)
(1)封包是否可以修改
(2)封包是否可以重放
六、後續工作
前面介紹的都是手動的從應用的各個方面(檔案系統,通訊,可執行檔案,業務邏輯)進行安全審計,比較期望將來能有一款像web應用安全審計/漏洞檢測那麼成熟的自動化工具。目前為止,我知道的唯一有作用的ios半自動化審計工具是iauditor——ios app安全審計工具,這款工具,存在目前市場上免費工具共有的缺陷,那就是過於理論,對實際app的安全審計有點雞肋,但聊勝於無。(歡迎推薦好的自動化/半自動ios應用安全審計工具)
總的來說,對ios應用安全審計而言,除了黑盒/灰盒審計外,再就是對原始碼進行的白盒審計,hp的fortify sca貌似還蠻成熟的,我也收集了一些國外安全團隊的原始碼審計***,但總覺得對於真實的ios應用都過於理論。計畫後期寫一篇對真實應用有參考作用的ios應用原始碼審計checklist,或者能更近一步編寫乙個開源的自動化審計工具。加油
測試知識之 黑盒白盒和灰盒測試
黑盒測試 黑盒測試也稱功能測試,它是在已知產品所應具有的功能上,通過測試來檢測是否每個功能是否能夠按照需求規格說明書的規定正常使用。我們通過程式的介面進行測試,看程式能否適當的接收輸入資料而產生正確的輸出資訊,並且保持外部資訊 如資料庫或者檔案 的完整性。常見的黑盒測試方法有 等價類劃分法 邊界值 ...
黑盒 白盒 灰盒測試的基本概念
黑盒 對於一段程式,對其測試時,不需要知道內部結構和特性,在輸入介面處輸入激勵,觀察輸出是否正確。主要用於軟體介面和功能測試。實際應用中,由於輸入為無窮個,不僅要測試所有合法的輸入,也要測試不合法但是可能發生的輸入。白盒 白盒測試也稱結構測試和邏輯驅動測試,知道程式內部結構,驗證內部每條通路是否能正...
測試之白盒測試 黑盒測試和灰盒測試簡介
什麼是白盒測試?白盒測試是依據被測軟體分析程式內部構造,並根據內部構造設計用例,來對內部控制流程進行測試,可完全不顧程式的整體功能實現情況。白盒測試是基於程式結構的邏輯驅動測試。白盒又可以被稱為玻璃盒測試 透明盒測試 開放盒測試 結構化測試 邏輯驅動測試。為什麼要進行白盒測試?白盒測試一般在測試前期...