逆向開發基礎工具
小白:小程,我一直想問,什麽是逆向來著?是逆向行駛嗎?
小程:理解為逆向行駛也沒錯。一般的項目是從無到有,從大唐而來到西方取經,而逆向是從已有的狀態入手,分析出已有的流程與結構的手段。
iOS上的逆向開發,是一件有趣的事情(雖然有時也會很痛苦),而且還可能給你帶來收益。
在接下來的幾篇文章,小程會嘗試介紹iOS逆向的一系列的知識與技能:從基礎工具的使用,到目標類的定位、目標代碼的調試,再到註入微信的實戰示例。讀者如果感興趣,可以關註小程的微信公眾號“廣州小程”,獲得後續的更新。
本文介紹iOS逆向的基礎工具的使用。
硬件方面,你需要一臺iOS設備(iphone/itouch/ipad,以下都稱為手機或iphone),以及一臺電腦。電腦方面,小程建議你使用mac電腦,因為它的環境可以解決很多無謂的問題,當然如果你有很強的解決問題的能力並且堅持用windows來安裝mac虛擬機的話,也是可以的。
系統環境方面,你需要給手機越獄。說到越獄,小程就想起scofield:
但這裏的越獄,是指對手機有更多的操作權限,比如在手機運行命令行終端、往root等目錄寫入數據、安裝非來自AppStore的應用(之前就介紹過重簽名後安裝ipa),等等。但註意一點,越獄後,沙盒的機制還是存在的,比如你的App還是不能往其它App的Document目錄寫入數據。
小程在寫這篇文章時,10.2以上的系統還不支持越獄,所以準備用於越獄的系統應該是10.2或低於10.2。使用pp助手、愛思之類的工具進行越獄。
解決了硬件和系統越獄的需求後,接著就是逆向的基本工具了,這些工具可以讓你逼近攻擊目標。
(1)ssh
ssh,就是Secure Shell,即安全外殼協議(ssh協議可以防範ip或dns欺騙,加密而且壓縮數據,被廣泛使用),常用於遠程登陸。這裏指的是ssh客戶端。
如果最終是用yalu102來越獄的話,越獄後自帶ssh(但scp要自行安裝)。
可以cydia中搜索Terminal並安裝,然後在這個終端上敲上ssh來執行,驗證是不是安裝了ssh。如果發現沒有,那可以在cydia中搜索“openssh”或“ssh connect”來進行安裝。
試用ssh:
- 在手機的wifi頁面,找出當前使用的ip。
- 在電腦上(mac機自帶ssh客戶端),使用ssh登陸設備:ssh root@ip
- ssh登陸到手機,之後操作的就是這臺手機,電腦上的鍵盤就是手機的鍵盤。
小白:餵,登陸時需要寫密碼,是多少呢?
ios設備的兩個默認ssh賬號: root,默認密碼:alpine mobile,默認密碼:alpine ssh登陸示例: $ ssh [email protected] 或者: $ ssh -l root 192.168.1.100 ----- [email protected]‘s password:(輸入密碼,回車) 810:~ root# 登陸後,修改root密碼: # passwd 登陸後,修改mobile密碼: # passwd mobile 每次ssh到手機,都要經過密碼驗證。如果想簡化這一步,那麽可以使用iosod來建立這個信任: cd /opt/iosopendev/bin --前提是,已經安裝了iosopendev ./iosod sshkey -h 192.168.1.101 這樣就對這個ip建立信任,之後ssh登陸時不再輸入密碼。
上面已經提到了iOSOpenDev,這是一個編寫註入代碼的實用工具,後續再具體介紹。
這裏再介紹使用ssh可能遇到的一個問題。對於ios10.1.1(其它10.x也一樣),在越獄後,用ssh是登陸不上的,原因參考<http://blog.csdn.net/dianshanglian/article/details/62422627>。
以下是這個網頁的內容摘錄:
1、SSH連接不上
在手機上安裝Mterminal,運行su,輸入root密碼,進入root權限,執行ps aux|grep dropbear
(1)如果你看到的進程沒有dropbear
執行/usr/local/bin/dropbear -F -R -p 22
然後就可以連接了,重啟依然有效
(2)如果你看到進程是這樣:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22
意思是只能數據線重定向連接SSH,如果你想改成WIFI可以訪問
那麽用Filza修改/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist
把裏面有個參數127.0.0.1:22改成22保存,重啟手機即可
UUID在每個人手機上不一樣
2、修復SCP
你會發現yalu102自帶的SSH無法用WINSCP傳輸文件,因為缺少了scp
很簡單
(1)cydia裏面安裝wget
(2)在mterminal裏面登陸root權限
(3)執行以下命令
wget mila432.com/scp
ldid -S scp
chmod 777 scp
mv scp /usr/bin/scp
註意,如果是用“越獄助手”來越獄的,那上面的目錄改為../Application/越獄助手/yalu102.app/..
(2)scp
scp,就是secure copy,是基於ssh的遠程拷貝。
一般安裝完ssh客戶端後就可以使用scp指令(否則,可以參考上面辦法下載scp來使用)。
比如,把hellowrold文件,拷貝到手機的root用戶的根目錄,命名為hello:
scp helloworld [email protected]:hello
比如,拷貝手機裏面的內容到電腦:
scp [email protected]:/User/Documents/Cracked/* .
在ssh與scp安裝完畢後,就可以做一些“攻擊”的事情了。
比如,讓手機重啟:
ssh [email protected]
(810:~ root#) killall SpringBoard
比如,在手機上執行hello wrold程序:
首先編譯出執行文件,使用clang:
clang -o helloworld -arch armv7 helloworld.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk
拷貝執行文件到手機:
scp helloworld [email protected]:hello
登陸手機並執行:
ssh [email protected]
cd /
chmod +x hello
./hello
(3)socat
socat,是用來查看系統日誌的工具。系統各個進程的動態信息、所有app的NSLog信息,都可以通過socat觀察到。
安裝:
在cydia搜索SOcket CAT來安裝,或者:
apt-get install socat --前提是安裝了apt-get
使用:
socat – UNIX-CONNECT:/var/run/lockdown/syslog.sock
>watch
總結一下,本文簡介了iOS逆向的準備工作,以及基礎工具ssh/scp/socat的使用。這三個工具在以後的實戰中會經常用到,雖然你也可以用其它工具來達到同樣的目的,但小程還是建議你掌握它們的使用。本文的內容只需按步操作,難度系數為低。
逆向開發基礎工具