目錄:html
1、 iOS 如何作才安全ios
2、ipa文件json
3、沙盒 中的數據api
4、Reveal:查看 任何APP 的UI結構sass
5、反編譯工具:IDA安全
6、反編譯工具:Hopper Disassembler 服務器
7、抓包:https數據的解密微信
iOS應用的安全性 經常被你們忽視。網絡
1、iOS 如何作才安全:app
2、ipa文件
一、AppStore裏的ipa包 能夠經過 iTunes 下載到電腦。iOS8.3如下系統的非越獄的手機上,能夠用MAC上的PP助手等軟件,直接把手機上的ipa文件(包含沙盒裏的存儲文件)拷貝到電腦。
若是是越獄手機,均可以用PP助手、itools直接把ipa導出到電腦,而且能夠用PP助手、iExplorer、itools這些工具 查看 iOS的系統目錄。
MAC上安裝 iExplorer軟件,用iExplorer 能夠看到 手機(非越獄也能夠) 在 iTunes上備份的內容。
若是你在幫測試美女的手機 調試問題的時候, 在 iTunes上設置 「鏈接次iPhone時自動同步」(或者點擊 備份到本地電腦),默認該手機上的照片、短信等內容都會備份到你的電腦上,用 iExplorer 就能夠看到 這位 美女的隱私。
曾經有次不當心看到同事的隱私信息,因此如今都比較注意這塊,避免引起誤會。
二、拿到ipa文件後,解壓縮,獲得.app文件,右鍵顯示包內容,能夠看到裏面的app中的圖片、js、plist、靜態H5頁 等資源。
好比 你要 用微信裏的默認表情包,解壓微信的ipa包就能夠獲取到。
三、iOS的系統目錄和MAC上的都相似(類unix系統)。iOS系統的目錄圖:
3、沙盒 中的數據
iPhone上 計算器的沙盒:
.app文件:應用程序自己的數據,打包時候的一些資源文件(如:圖片、plist等文件)、可執行文件。這個目錄不會被iTunes同步。
Documents :存儲不可再生 的關鍵數據。不會被iTunes同步
Library:保存配置文件和其餘一些文件。NSUserDefault 會存儲到 Library下的Preferences中 的 plist文件中。能夠直接打開,因此 也不要在 NSUserDefault 中存一些 關鍵數據,或者 存儲的時候 進行 AES等方式的加密。
Library/Caches能夠用來保存可再生的數據,好比網絡請求,用戶須要負責刪除對應文件。
這個目錄(除了Library/Caches外)會被iTunes同步
tmp:臨時文件。不須要的時候,手動將其內文件刪除。(當應用再也不運行的時候,系統可能會將此目錄清空。)
這個目錄不會被iTunes同步
存到沙盒的數據都是不安全的,關鍵數據必定 要作加密存儲。
4、Reveal 工具:查看 任何APP 的UI結構
一、不越獄的手機 能夠用 Reveal 來查看本身APP的UI結構。不能查看其餘APP的UI結構。這裏就再也不描述了。
二、越獄手機 上能夠查看 任何APP的UI結構。
在越獄的手機上,在 Cydia 搜索並安裝 Reveal Loader,若是搜索不到。就 點下面的「軟件源」,選擇「BigBoss」,選擇「所有軟件包」,點右邊R的字母,去一個個找到 Reveal Loader,放心吧,你必定能找到的,我用的iOS7.1的系統測試的,沒問題。
安裝完成後,打開「設置」頁面,下拉到最底部,點擊「Reveal」
三、點擊 Enabled Applictions 。而後選中 你想分析的APP。
四、確保iOS和OSX在同一個IP網段內。打開想分析的 APP,若是該APP已經啓動,則關閉後再次啓動
五、打開MAC上的 Reveal,選中 左上方列表裏的 APP,好比QQ:
六、若是 Reveal 左上方 一直顯示:No Connection。說明iPhone上的 Reveal Loader 沒安裝成功,須要配置一下。
首先從MAC上 用PP助手或 iTools 查看「文件系統(系統)」--》Library文件夾,看 Library文件夾下面有沒有 RHRevealLoader 文件夾,若是沒有,就 右鍵 新建文件夾,並修更名字爲:RHRevealLoader。
在Mac 下打開已經安裝的Reveal,選擇標題欄Help下的Show Reveal Library in Finder 下的 iOS library 選項,將會顯示以下界面:
將libReveal.dylib 文件經過PP助手拷貝到剛纔建立的RHRevealLoader
文件夾下,就能夠了。
而後 從手機上打開APP, 再 打開 MAC上的 Reveal 軟件,左上方 就會出來 相關APP的選項。
再發個 淘寶中的天貓模塊吧:
5、反編譯工具:IDA
從AppStore下載的ipa都是加殼的(蘋果 把開發者上傳的ipa進行了加殼再放到AppStore中),加殼的ipa要先去殼,能夠用clutch、dumpdecrypted、使用gdb調試 等解密去殼工具,這個咱們後面再說。
若是你有越獄手機,能夠直接 從 PP助手上下載ipa包,這個就是 脫殼後的。。
如今 咱們先反編譯 本身的APP,經過Xcode打包的APP 都是沒加殼的,能夠直接用來反編譯。
新建一個項目,在 ViewController 的 viewDidLoad 方法裏 加 幾句代碼。
- (void)viewDidLoad { [super viewDidLoad]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 70, 200, 100)]; label.text = @"CeShiLabel007"; label.backgroundColor = [UIColor redColor]; [self.view addSubview:label]; }
將項目 打包,生成 ipa文件,下面咱們就用IDA分析一下 ipa。
將ipa文件 解壓後 獲得.app文件:
下載IDA,並打開:
點擊「New」按鈕,選擇剛纔 解壓的 .app文件。一路 點擊「OK」或者「YES」 就能夠了。
打開界面後,雙擊左側的 viewDidLoad:
能夠看出:代碼中的 "CeShiLabel007" 字符串 徹底能夠反編譯出來。因此儘可能不要在代碼裏放一些 關鍵 的數據。能夠經過接口來獲取。或者 把 數據進行加密。
從上面的界面中 ,按下鍵盤的F5,能夠 把彙編轉成C語言代碼。可讀性很高。。
你若是試了 就發現你的F5無論用啊,那是由於 F5是一個插件Hex-Rays.Decompiler 的快捷鍵,這個插件是收費的、收費的。
6、反編譯工具:Hopper Disassembler
下載 Hopper Disassembler軟件。打開ipa解壓的.app。 或者直接 把.app拖進去。
雙擊「viewDidLoad」: 能夠看到 彙編代碼, "CeShiLabel007" 字符串、setText方法 等。
點擊右上角的 if(a) f(x)圖標:
會彈出 相似源代碼的 僞編碼:
代碼中能夠清楚的看到 處理的邏輯。簡單易懂,和看源代碼沒太大區別。。
下面 是我從越獄手機的PP助手上下載的 微信 的ipa 進行反編譯,看下里面的 QQContactInfoViewController 頁面 的 viewDidLoad方法裏的代碼 怎麼寫的,
截圖:
若是 你把從 AppStore下載的 ipa包直接拖到 IDA或Hopper裏,看到的就是亂碼,剛纔已經說過了。AppStore的ipa是加過殼的 。如圖:
7、抓包-https
Charles 老版本和 新版本 抓取https 的配置 不同。。
先看HTTP抓包:
HTTPS 老版本抓包:
HTTPS 新版本抓包:
Charles新版本 的 Proxy Settings 選項裏是沒有 SSL選項卡的。在左側的域名上點右鍵:Enable SSL Proxying,就能夠用了。
而後 點擊APP,會看到HTTPS解密的json數據。若是接口返回的數據 自己進行了加密,那你看到的仍是亂碼。
6、https - iOS 的代碼如何寫
2015年4月末,網爆流行IOS網絡通訊庫AFNetworking SSL
漏洞,影響銀聯、中國銀行、交通銀行在內的2.5萬個IOS應用,我來看下 各類網絡寫法對應的問題。
一、信任任何證書。在 AFNetworking 中 定義 allowInvalidCertificates 爲true,表示 忽略全部證書。
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
這種狀況下 用咱們上面講的方法,用Charles很容易 破解HTTPS加密的數據。
這種狀況,通常是 由於 測試環境 用的不是 CA發的證書,須要忽略掉證書,因此把 allowInvalidCertificates 設爲了 true。這個能夠用 #ifdef DEBUG 來進行設置。
#ifdef DEBUG manager.securityPolicy.allowInvalidCertificates = YES; #endif
二、信任證書管理機構(CA)頒發的證書。
CA頒發的證書,聽說這類的證書只需50美圓就能買到。此類問題出在AFNetworking 2.5.2
及以前的版本,是AF的漏洞(詳見新聞)。若是某IOS APP使用了此版本的開源通訊庫,在不安全Wifi網絡中的,黑客 只要使用CA頒發的證書就能夠對該APP的HTTPS加密數據進行監聽或者篡改。
這個須要升級到 AFNetworking 最新版本,正好最新版本也聲明兼容IPv6。
三、信任合法的證書、服務器和客戶端雙向認證。
這兩種也都有辦法破解,詳見:Bypassing OpenSSL Certificate Pinning in iOS Apps、http://drops.wooyun.org/tips/7838
要正確的使用HTTPS纔不會出現上面的問題。接口也必定要用本身的方式進行加密 才真正的放心,把小命徹底放到對方(HTTPS)手裏,命運就只能靠別人來擺佈。。
歡迎關注個人 今日頭條號 名稱: 雲端夢想科技
歡迎關注個人 微信公衆號:dreams2999