iOS逆向工具之砸殼工具(MacOS&iOS)介紹

上一篇文章地址: iOS逆向工具之class-dump(MacOS)介紹python

今天是2019年12月31號,2019年最後一天了,祝你們2020跨年快樂. 明天就是2020年1月1日了,一樣祝你們元旦快樂!ios

  • 本篇文章主要介紹砸殼工具的使用.git

  • 若是你有更好的想法,請留言或者聯繫我.github


  • 我們的應用上傳到AppStore後,蘋果會對我們的應用進行加密.咱們的可執行文件加了一層保護殼,就好比上節中,咱們使用class-dump進行dump類的頭文件. 咱們經過打包本身的應用,這個應用未上架AppStore,至關於從未加密的問題,直接使用class-dump就能夠進行dump 當咱們從AppStore下載以後,咱們須要把這個殼子去掉,也就是咱們本篇提到的砸殼,砸了殼子才能獲取到裏面的果實.

我以前寫的文章: 彙編逆向工具集(二) 介紹了dumpdecrypted的使用,本篇文章一樣會介紹,你也能夠看下彙編逆向工具集(二)文章中提到的dumpdecrypted.vim

  1. dumpdecrypted
  • dumpdecrypted的產生 因爲AppStore下載的App是被蘋果加密過的,可執行文件被套上一層保護殼 class-dump沒法做用於加密過的App 想要獲取頭文件,須要先解密App的可執行文件,也叫砸殼 dumpdecrypted就是由越獄社區的知名人士 Stefan Esser 出品的一款砸殼工具,被越獄社區普遍運用在iOS逆向工程研究中.安全

  • dumpdecrypted下載 github地址: dumpdecryptedbash

  • 你能夠經過git clone ,也能夠直接下載,下載過程再也不詳細介紹.app

  • 我已經下載好了,咱們看下文件內容 ssh

  • 咱們對它進行編譯,終端執行make命令函數

  • 咱們看下編譯後的生成了什麼文件?

  • 咱們看到生成了dumpdeycrypted.dylib

注意

  • 找到要砸殼的APP的Documents目錄路徑(某應用爲例)

估計你看到這些,就會很頭疼了,到底哪一個是呢?

  • 咱們藉助強大的Cycript,讓App告訴咱們它在哪裏,直接找到它的的根目錄

  • 鎖定該目錄 065B70ED-FCD1-4874-B4A3-86F1B765945F

  • 將dumpdecrypted.dylib拷貝到Documents目錄下. 有兩種方式拷貝: 第一種:
scp /Users/popo/Desktop/dump/dumpdecrypted/dumpdecrypted.dyli root@192.168.3.15:var/mobile/Containers/Data/Application/065B70ED-FCD1-4874-B4A3-86F1B765945F/Documents/dumpdecrypted.dylib
複製代碼

第二種:

以上兩種方式,只須要拷貝成功就行,選擇那種,根據我的喜愛.

  • 開始砸殼
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/9AF4167F-D4AA-4DBB-A67D-A956CCDBDEF9/WeChat.app/WeChat mach-o decryption dumper
複製代碼

砸殼失敗了,分析一下緣由: required code signature missing for 'dumpdecrypted.dylib 因爲沒有對dumpdecrypted.dylib簽名,致使咱們沒有砸殼成功.

  • 解決問題是對dumpdecrypted.dylib文件簽名,首先獲取可簽名的證書

  • 而後爲dumpecrypted.dylib簽名
codesign --force --verify --verbose --sign "iPhone Developer: `(開發這信息)`" dumpdecrypted.dylib 
複製代碼

而後在上傳到手機

  • 進行第二次砸殼
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/9AF4167F-D4AA-4DBB-A67D-A956CCDBDEF9/WeChat.app/WeChat mach-o decryption dumper
複製代碼

在當前目錄下會生成WeChat.decrypted文件

砸殼完成,而後你就能夠拿着砸殼文件就行class-dump,靜態分析彙編代碼了.

問題:dumpdecrypted爲何拷貝到Documents目錄下操做?

AppStore對沙盒之外的絕大數目錄沒有寫權限. Documents目錄下使用dumpdecrypted.dylib時,保證它能在當前目錄下寫一個decrypted文件.

2.Clutch

除了dumpdecrypted,咱們還能夠經過Clutch來解密.

  • Clutch砸殼的原理? Clutch是生成一個新的進程,而後暫停進程並dump內存.

  • 咱們下載Clutch並編譯

  • 咱們下載看下源碼文件

  • 咱們選擇真機,選擇證書對源碼進行編譯,生成可執行文件

  • 咱們將編譯的Clutch可執行文件拷貝到桌面,備用.

  • 咱們能夠經過兩種方式進行拷貝

1 經過iFunBox拷貝目錄/usr/bin目錄下

2 經過SCP拷貝

scp Clutch/clutch root@設備ip:/usr/bin/
複製代碼
  • 咱們看下Clutch的參數
Clutch [OPTIONS]
-b --binary-dump     Only dump binary files from specified bundleID
-d --dump            Dump specified bundleID into .ipa file
-i --print-installed Print installed application
--clean              Clean /var/tmp/clutch directory
--version            Display version and exit
-? --help            Display this help and exit

複製代碼

通過對參數的翻譯:

1.clutch -b 砸殼後的文件是二進制文件

2.clutch -d 砸殼後的文件是ipa文件

3.clutch -i 查看安裝的應用

4.clutch --clean /var/tmp/clutch 目錄清理

5.clutch --version 顯示版本並退出

6.clutch -? --help 顯示幫助並退出

複製代碼
  • 咱們經過ssh協議經過終端鏈接越獄機

1.上圖:咱們能夠看到經過執行 sh sshLogin.sh,咱們不須要輸入密碼直接能夠鏈接到越獄機,同事執行clutch -i 命令 2.從終端顯示,執行的clutch -i 並無執行成功 3.權限不夠,加權來湊.咱們須要對/usr/bin目錄下的clutch進行加權 4.加權,你能夠chmod 777 /user/bin/clutch 5.一樣加權,你也能夠經過chmod +x /user/bin/clutch 6. (1)中提交的sh 執行腳本,我會在文章iOS逆向工具之Cydia(iOS)介紹中介紹如何使用

  • 再次執行clutch -i 驗證是否受權成功

  • 咱們進行砸殼

1.咱們能夠看到應用的再越獄中運行的序列號爲1 2.咱們還能夠看到應用的bundle id

  • 咱們砸殼能夠經過兩種方式進行

1.經過執行命令 clutch -d app序列號 2.經過執行命令 clutch -d app包名

  • 砸殼成功後,咱們能夠看到提示信息
# Zipping WeChat.app
# Swapping architectures..
# DONE: /private/var/mobile/Documents/Dumped/hk.itools.appe-iOS7.0-(Clutch-2.0.4).ipa
複製代碼
  • 咱們能夠看到砸殼生成ipa目錄

  • 有了目錄地址,咱們經過iFunBox或者scp 拷貝到Mac,等待分析應用.

這就是Clutch砸殼,很容易使用

注意 雖然咱們介紹了兩款砸殼工具,並不表明,你想砸殼的應用,使用上面兩種方式都很順利.我曾經嘗試砸殼某應用,使用兩種方式,我並無砸殼成功.

分析 1.有可能這款應用作了防禦 2.咱們的砸殼應用已經不使用某應用了,砸殼方式須要改變

咱們接下來繼續介紹第三方砸殼方式

3.frida-ios-dump 一條命令完成iOS應用砸殼

Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers. 面向開發人員、逆向工程師和安全研究人員的動態工具工具包。

  • Frida地址: Frida

  • Frida的使用場景 1. hook特定函數並更改返回值 2. 分析特定協議,同時其動態嗅探,解密 3. 應用調試 4. 在iOS應用上dump類和方法信息

  • iOS在Cydia安裝Frida,咱們該怎樣安裝呢?

注意 若是你第一次打開Cydia,搜索Frida是搜索不到的,咱們須要在軟件源中添加,紅線畫的是frida軟件源地址,你能夠添加一下.

  • 若是你已經配置完成,咱們跳轉到搜索頁面

咱們搜索frida,而後安裝便可.

  • 咱們Mac下安裝frida,怎麼安裝呢? 打開咱們的終端,輸入 sudo pip install frida

咱們經過終端已完成安裝

注意 若是出現下面的錯誤

Uninstalling a distutils installed project (six) has been deprecated and will be
removed in a future version. This is due to the fact that uninstalling a distutils 
project will only partially uninstall the project.
複製代碼

咱們如何解決這個問題呢? 緣由:Apple預安裝的這個six庫出於安全緣由被設置爲sudo也不能夠執行操做,因此須要依賴於高版本的庫就須要更新six. 終端執行命令

sudo pip install frida –upgrade –ignore-installed six
複製代碼

問題解決後,你能夠在嘗試安裝

咱們能夠看到js,python,sh腳本等文件

  • 咱們執行sudo pip install -r /opt/frida-ios-dump/requirements.txt --upgrade命令配置環境

下載了不少文件,須要等待一會,就會配置好

  • 咱們還須要編輯一下dump.py文件中的參數

1. 你能夠直接打開文件 2. 你也能夠經過命令打開文件vim /opt/dump/frida-ios-dump/dump.py,進行編輯後保存 3. 若是沒有修改密碼,這裏了不須要進行修改;若是修改密碼,請修改你的密碼 4. 到這裏frida環境配置完成

  • 咱們打開終端,進行端口轉發,經過ssh鏈接越獄機.(鏈接過程,我會在Cydia文章詳細介紹)

端口轉發

ssh鏈接越獄機

  • 咱們接着執行dump.py -l命令,查看一下須要砸殼的應用

  • 接着咱們執行dump.py 應用名/應用bundle id

  • 能夠在用戶目錄下找到砸殼的ipa

  • 我把ipa中的二進制文件拷貝到桌面,驗證是否砸殼成功

沒有殼的應用,cyrptid 爲0

4.總結 咱們本篇文章主要講解了砸殼三劍客.

  • dumpdecrypted
  • Clutch
  • frida-ios-dump

文章介紹到這裏,想必你應該會使用三款軟件了. 下篇文章繼續介紹iOS逆向工具. 請持續關注,留言給我或者加羣聯繫我.

相關文章
相關標籤/搜索