iOS應用砸殼
在研究AppStore下載的iOS應用時,由於Appstore默認給應用程序加了殼,所以需要先脫殼,然後提取解密後IPA文件用於安全分析。文件將介紹多個砸殼工具的使用。
實驗條件:
1. iOS越獄環境,本文環境是iOS9.3.1,機型是iPhone 5s, CPU架構是arm64
# sysctl -a
kern.ostype = Darwin
kern.osrelease = 15.4.0
kern.osrevision = 199506
kern.version = Darwin Kernel Version 15.4.0: Fri Feb 19 13:54:53 PST 2016; root:xnu-3248.41.4~28/RELEASE_ARM64_S5L8960X
2. 配置好sshd,會使用scp,能夠使用root賬戶登錄,默認的root密碼一般是alpine
,但是為了安全請修改密碼。
砸殼工具
Clutch
下載源代碼並使用xcode進行編譯。
$ git clone https://github.com/KJCracks/Clutch.git
Cloning into Clutch...
remote: Total 3545 (delta 0), reused 0 (delta 0), pack-reused 3545
Receiving objects: 100% (3545/3545), 37.18 MiB | 30.00 KiB/s, done.
Resolving deltas: 100% (2033/2033), done.
將編譯好的文件copy到設備的/sbin/
scp ./Clutch root@192.168.0.119:/sbin/
在設備上運行命令,顯示安裝的APP列表,說明安裝成功。
iPhone-5s:/sbin root# ./Clutch -i
2018-10-28 20:39:56.782 Clutch[3966:1623012] command: Prints installed applications
Installed apps:
1: TikTok-global video community <com.ss.iphone.ugc.Ame>
9: YouTube <com.google.ios.youtube>
10: Facebook <com.facebook.Facebook>
11: ボイスレコーダー-無料ボイスメモ <com.leqimea.recorderAudio>
選擇包名,使用如下命令進行砸殼,注意有些包會失敗,可以使用後續的工具進行嘗試。如果成功就會顯示ipa文件的路徑。
root# Clutch -d com.liuli****.engzo2
Zipping SwiftProtobuf.framework
Zipping pop.framework
DONE: /private/var/mobile/Documents/Dumped/com.liuli****.engzo2-iOS9.0-(Clutch-(null)).ipa
解壓提取內容,ipa文件實質上是一個zip文件,使用unzip 就可以解壓。其中比較重要的是Payload/*.app/Info.plist
,是整個APP的描述文件,其中一項是bundle name
,值就是app的二進位代碼的文件名。
$unzip com.liuli****.ipa
inflating: Payload/Liuli****.app/Frameworks/Rainbow.framework/Rainbow
inflating: Payload/Liuli****.app/Liuli****
$ file Liuli****
Liuli****: Mach-O 64-bit executable arm64
Dumpdecrypted
對於Clutch砸殼失敗的,還可以嘗試一下Dumpdecrypted.
下載並編譯
git clone https://github.com/stefanesser/dumpdecrypted cd dumpdecrypted make
copy文件到設備
scp ./dumpdecrypted.dylib root@192.168.119:/sbin/
從cydia源中下載Cycript
定位app路徑,因為APP都被加密過了,需要從進程里找到app的路徑。先打開app,利用ps和grep進行尋找關鍵字。
iPhone-5s:/tmp root# ps -ef | grep Application
501 4443 1 0 0:00.00 ?? 0:00.10 /Applications/MobileSafari.app/webbookmarksd
501 4544 1 0 0:00.00 ?? 0:00.50 /Applications/MobileMail.app/MobileMail
501 4595 1 0 0:00.00 ?? 0:07.39 /var/containers/Bundle/Application/43DA0965-EBD8-4A2B-8D7C-286A11AB3386/Awe**.app/Awe**
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask][0]
#"file:///var/mobile/Containers/Data/Application/144302A4-760B-4F3E-93BE-E61495CDCA54/Documents/"
至此我們需要的兩個路徑都已經獲得, a. 程序路徑:
/var/containers/Bundle/Application/43DA0965-EBD8-4A2B-8D7C-286A11AB3386/Awe**.app/Awe**
b. 文檔路徑:/var/mobile/Containers/Data/Application/144302A4-760B-4F3E-93BE-E61495CDCA54/Documents/
最後切換成mobile用戶,copy一份編譯出的dumpdecrypted.dylib到/var/mobile/Documents下,主要用戶和路徑都是必須的。 su mobile
cp /sbin/dumpdecrypted.dylib /var/mobile/
導出app
iPhone-5s:~/Documents mobile$ DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/43DA0965-EBD8-4A2B-8D7C-286A11AB3386/Awe**.app/Awe**
mach-o decryption dumper
DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.
[+] detected 64bit ARM binary in memory.
[+] offset to cryptid found: @0x10000cd98(from 0x10000c000) = d98
[+] Found encrypted data at address 00004000 of length 55230464 bytes - type 1.
[+] Opening /private/var/containers/Bundle/Application/43DA0965-EBD8-4A2B-8D7C-286A11AB3386/Awe**.app/Awe** for reading.
[+] Reading header
[+] Detecting header type
[+] Executable is a plain MACH-O image
[+] Opening Awe**.decrypted for writing.
[+] Copying the not encrypted start of the file
[+] Dumping the decrypted data into the file
[+] Copying the not encrypted remainder of the file
[+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset d98
[+] Closing original file
[+] Closing dump file
scp root@192.168.0.119:/tmp/Awe**.decrypted .
這個Awe**.decrypted文件可以使用class-dump導出頭文件。具體做法請參見下一章。
導出頭文件
- 首先下載class-dump
- 使用如下命令,導出頭文件 ./class-dump ./Awe**.decrypted -H -o ./Awe** 導出的頭文件如下圖所示
總結
使用砸殼工具對APP進行提取ipa文件,是對iOS程序進行安全分析的第一步,本文介紹了兩種工具,Clutch和dumpdecrypted,分別使用靜態和動態兩種技術對APP進行了砸殼。
聲明
本文由萌貓安全說原創發佈於微信公眾號和知乎文章,為了追求信息安全技術的終極奧義,歡迎非盈利性轉載,但是請標明作者和出處。
http://weixin.qq.com/r/lUOHn4nEb9QQrc389xaH (二維碼自動識別)
參考資料
- https://www.52pojie.cn/thread-696309-1-1.html
- https://www.jianshu.com/p/a4373b5feca0
- https://www.jianshu.com/p/6eb62eabb988
- https://blog.csdn.net/science_Lee/article/details/79197399
推薦閱讀: