文章目錄
- 引言
- I、概述
- 1.1 基本概念
- 1.2 環境搭建
- 1.3 常用逆向分析工具的原理及使用
- 1.4 正向知識儲備
- II iOS逆向進階
- 2.1.2 模擬滑鼠點擊
- 2.1.3 LUA
- 2.1.4 分析網路資料包
- 2.1.5 日志分析
- III、案例實戰
- 3.1 ASO
- 3.1.1電池狀態監控
- 3.1.2 資料清理
- 3.2 轉換淘口令
- IV、 安全保護
- 4.1 脫敏規范
- 4.2 介面安全
- 4.2.1 介面安全設計的Checklist
引言
歡迎大家來到#公眾號:iOS逆向的《iOS應用逆向與安全》專欄
本文列出學習大綱,同時也可作為大家學習《iOS應用逆向與安全》專欄的索引,
文中的藍字都是超級鏈接,點擊進入即可
- 本專欄的整體大綱模塊
1、快速上手部分:基本概念、環境搭建、常用逆向分析工具的原理及使用(Cliclick、cycript)
2、正向知識儲備:類的結構、app簽名、Mach-o、hook
3、案例實戰:ASO、轉換淘口令
4、安全保護:網路加密傳輸、動態保護、代碼混淆
I、概述
iOS應用逆向的大致留存
1、獲取應用的 ipa 包,解密(如果是越獄應用則不需要解密),匯出頭檔案;
2、使用工具(cycript、Reveal、Cliclick)
3、使用tweakhook、執行相關函式的輸入輸出以及呼叫堆疊,分析驗證關鍵函式;
4、靜態分析加動態除錯進一步分析關鍵函式的實作邏輯
5、進行修改原有流程:案例ASO
1.1 基本概念
1.2 環境搭建
1.3 常用逆向分析工具的原理及使用
1.4 正向知識儲備
類的結構、app簽名、Mach-o、hook
II iOS逆向進階
- iOS應用逆向工程指南:【1、概念2、工具3、逆向理論】
iOS逆向工程,指通過分析系統的功能、結構、行為,將軟體的技術實作或者設計細節推匯出來的程序,
- iOS逆向 :【Cycript Useful Command & Powerful private methods】
_ivarDescription
_shortMethodDescription
nextResponder
_autolayoutTrace
recursiveDescription
_methodDescription
-
iOS 逆向【how_to_host_cydia_repo】 批量部署Tweak插件到iOS設備的方案
-
iOS使用代碼觸發button的點擊事件:【 [btn sendActionsForControlEvents:UIControlEventTouchUpInside];】及教你找到按鈕action
-
使用ssh config組態檔來管理ssh連接
-
iOS逆向工具usbMuxd的應用:【1、通過USB方式SSH到iOS越獄設備2、埠轉發】
2.1.2 模擬滑鼠點擊
- iOS逆向工具Cliclick:【Mac 模擬滑鼠點擊工具】
例子(定時點擊特定位置,來點擊保證Mac永遠處于活躍狀態,達到mac永不不關閉螢屏的目的)
2.1.3 LUA
-
獲取螢屏坐標的方式
-
iOS逆向:lua代碼實作解鎖和打開特定app的代碼、tweak 實作自動解鎖以及打開特定app(launchApplicationWithIdentifier、unlockUIFromSource)
-
1、lua腳本工具方法 httpPostJson:【發起Content-Type 為application/json; charset=UTF-8的請求 】2、使用Lua的協同程式實作生產者-消費者
2.1.4 分析網路資料包
- iOS逆向抓包工具Charles【應用場景:App聯調測驗】
- iOS逆向:tcpdump(截獲分析網路資料包)、Wireshark的原理和基本使用
2.1.5 日志分析
【 iOS設備日志查看工具syslog和socat】(syslogd to /var/log/syslog)
III、案例實戰
3.1 ASO
- iOS逆向:【ASO專案使用的技術】(例如:1、hook CFUserNotificationCreat 截取Header 部分資訊、Message內容 進行任務處理2、設備資訊的修改、清理資料)
3.1.1電池狀態監控
- iOS 監控體系之電池狀態監控【電池的狀態處理:電池狀態獲取及監測、電池電量獲取及監測、低電量模式切換監測】應用場景:ASO機刷的場景就需要保證設備的高可用性
3.1.2 資料清理
- iOS逆向實踐ASO之【資料清理】:1、Accounts帳號資訊的分析以及清除(應用場景:ASO) 2、Keychain Dumper (keychain資料的讀取)
3.2 轉換淘口令
- 【從app觀察阿里電商的倍訓生態】1、渠道漏斗公式(渠道 = 流量 x 轉化率 x 客單價 x 復購率)2、引申話題:轉換淘口令機器人的實作流程(涉及逆向)
IV、 安全保護
-
iOS逆向:【代碼混淆】1、基于編譯器混淆靜態庫(StaticLib)2、字串加密:使用clang-c介面將源代碼轉換成抽象語法樹,并對抽象語法樹進行遍歷和分析,分析代碼中的字串,并進行加密處理,
-
iOS敏感邏輯的保護方案:【把函式名隱藏在結構體里,以函式指標成員的形式存盤】(敏感資訊的安全設計)
4.1 脫敏規范
- iOS安全:【敏感資訊的脫敏規范】(資料型別包括日志相關、賬戶訂單、個人資訊、賬戶認證、持卡資料)
4.2 介面安全
-
iOS app側對請求引數進行簽名:【請求引數按照ASCII碼從小到大排序、拼接、加密】(遞回的方式進行實作)
-
1、iOS網路請求安全優化:SSL證書驗證, 讓Charles再也無法抓你的請求資料;對請求引數進行簽名;2、不走全域proxy的方案;3、允許不驗證SSL證書;4、攔截請求;5、DoH &DoT
在使用NSURLSession時敏感的資料采用ephemeralSessionConfiguration配置,與默認配置相比,這個配置不會將快取、cookie等存在本地,只會存盤在記憶體里,所以當程式退出時,所有的資料都會消失,
-
iOS安全【 SSL證書驗證, 讓Charles再也無法抓你的請求資料】
-
允許不進行SSL證書驗證, 來規避SSL證書過期導致的請求報錯
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
securityPolicy.validatesDomainName = NO;
securityPolicy.allowInvalidCertificates = YES;
manager.securityPolicy = securityPolicy;
4.2.1 介面安全設計的Checklist
- 呼叫方來源IP控制
比如可通過防火墻、主機host deny、Nginx deny等技術措施進行實施
- 呼叫方身份認證
比如key、secret、證書等技術措施進行實施
- 呼叫引數認證
需設計引數容錯機制,避免出現引數可遍歷敏感資料安全問題
- 采用數字簽名保障介面身份來源可信,資料防篡改
- 1、iOS網路請求安全優化:SSL證書驗證, 讓Charles再也無法抓你的請求資料;對請求引數進行簽名;2、不走全域proxy的方案;3、允許不驗證SSL證書;4、攔截請求;5、DoH &DoT
在使用NSURLSession時敏感的資料采用ephemeralSessionConfiguration配置,與默認配置相比,這個配置不會將快取、cookie等存在本地,只會存盤在記憶體里,所以當程式退出時,所有的資料都會消失,
-
呼叫方權限控制設定
-
呼叫頻率、有效期進行控制
-
呼叫行為實時檢測,對例外阻攔
-
冪等性校驗,保持資料一致性
-
采用應用接入安全網關,實作APPID/KEY身份認證,加密傳輸,摘要簽名安全保障
CSDN認證博客專家
Swift
SwiftUI
Objective-C
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249864.html
標籤:其他
下一篇:saltstack漏洞
