本文采集于 念茜
攻易防難,唯有縝密、多層的防護網絡才能可靠的保護我們iOS應用程序的安全。那么,一個完善的iOS應用安全防護框架都要寫哪些東西呢? 首先,先梳理一下常見的逆向及攻擊工具。
iOS應用逆向常用工具
- Reveal-UI分析工具
- Cycript-運行時工具
- Class-dump -->看名字你應該懂的
- Keychain-Dumper -->不解析
- gdb -->調試器
- iNalyzer -->滲透測試框架
- introspy -->滲透工具
- Fishhook
- removePIE
- IDA pro or Hopper
- snoop-it //非常強大,不過要翻&墻
- iDB -->這個自己找
- Charles -->青花瓷
- SSL Kill Switch
裸奔app的安全隱患
一部越獄的iOS設備,外加上述的逆向工具,給裸奔的iOS應用程序帶來哪些威脅呢?
- 任意讀寫文件系統數據
- HTTP(S)實時被監測
- 重新打包ipa
- 暴露的函數符號
- 未加密的靜態字符
- 篡改程序邏輯控制流
- 攔截系統框架API
- 逆向加密邏輯
- 跟蹤函數調用過程(objc_msgSend)
- 可見視圖的具體實現
- 偽造設備標識
- 可用的URL schemes
- runtime任意方法調用
……
iOS應用安全防護開源工具
- ios-class-guard 是對抗class-dump的利器,作用是將ObjC類名方法名等重命名為難以理解的字符。
iOS應用安全防護框架概述
針對上述安全隱患,我們的iOS應用安全防護框架需實現的任務大致如下:
- 防護
- ObjC類名方法名等重命名為難以理解的字符
- 加密靜態字符串運行時解密
- 混淆代碼使其難于反匯編
- 本地存儲文件防篡改
- 檢測
- 調試狀態檢測
- 越獄環境檢測
- ObjC的Swizzle檢測
- 任意函數的hook檢測
- 指定區域或數據段的校驗和檢測
- 自修復
- 自修復被篡改的數據和代碼段
此外,還需要多層的防護,通過高層保護低層的方式來保證整個防護機制不失效。
參考IBM移動終端安全防護框架解決方案:
2014-09-08-ios-security-overview-pic0.png.jpeg