逆向有門檻,入坑需謹慎
==iOS逆向環境介紹==
本文越獄環境:iPhone6 iOS 10.0.2 (推薦使用iOS 8 )
===Drawin 體系===
Darwin是由蘋果電腦于2000年所釋出的一個開放原始碼操作系統。Darwin 是MacOSX 操作環境的操作系統成份。蘋果電腦于2000年把Darwin 釋出給開放原始碼社群。
終端命令輸入uname -a顯示操作系統名稱:
gongyouqiangdeMacBook-Pro:~ Yochi$ uname -a
Darwin gongyouqiangdeMacBook-Pro.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64
-
Darwin是一種類似unix的操作系統,他的核心XNU[1],XNU是一種混合式內容結合了Mach[2]與BSD[3]兩種內核
- 主流的類unix:
- Linux 由Linus Torvalds 研發的,代表發行版本CenOS,Redhat,Ubuntu,Debian,openWRT等
- Mac OS X的Intel部分
- freeBSD[4] 由加州大學伯克利分校基于UNIX研發的(UNIX變種)
- Solaris 由Sun(現在的Oracel) 開發的UNIX商業版本
- 主流的類unix:
-
BSD[3] 實現在Mach[2]的上層,這一層提供的API 支持了POSIX標準模型。在XNU中主要實現了一些高級的API與模塊
UNIX 進程模型
== e.g fork, vfork, wait, waitpid, exec等==POSIX 線程模型即pthread,以及相關的同步功能
== e.g pthread_create, pthread_mutex(線程互斥鎖) ==UNIX的用戶與組管理
== e.g root用戶,mobile用戶, chmod等==網絡協議棧(BSD Socket API),符合POSIX模型
==e.g socket(); bind(); listen(); accept();connect();
gethostbyname(); gethostbyaddr()等伯克利套接字API文件系統/設備系統
== e.g Filesystem Hierarchy Standard(文件系統層次化標準)==
-
iOS, OSI, ISO 含義
iOS 蘋果公司開發的移動操作系統
OSI 是Open System Interconnection的縮寫,意為開放式系統互聯。OSI模型把網絡通信的工作分為7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
-
ISO是國際標準化組織。上面的OSI模型由改組織制定。一般UNIX系統都基于符合POSIX標準和ISO C 標準
- POSI表示可移植操作系統接口(Portable Operating System Interface)
- ISO C 標準, C語言標準接口
-
為什么要越獄?
- 突破iOS沙盒機制(sandbox)
== 沙盒是一種安全機制,為運行中的程序提供隔離環境。沙盒在啟動的時候可以設置運行的程序是否可以訪問網絡、文件、目錄等==
- 突破iOS沙盒機制(sandbox)
==Cydia - 越獄iOS的軟件管理平臺==
Cydia 之父 - Jay Freeman(杰·弗里曼)
越獄是合法的
安裝OpenSSH,為電腦和越獄手機提供連接環境
== 在Cydia中搜索OpenSSH并安裝,這樣iOS上面就可以開啟SSH服務。SSH服務默認綁定端口號22==
1、使用SSH命令連接iOS,默認登錄密碼"alpine"
iOS連接wifi,設置中可以看到ip地址,也可以改成靜態IP地址
ssh -p 22 root@xx.xx.xx.xx
Windows、UNIX和VMS系統使用SecureCRT這款理想工具連接運行。
iOS 10注意:(iOS 10以下按流程走)
=:)yalu102自帶了SSH
無需安裝OPENSSH,安裝了請先卸載
無需安裝OPENSSH,安裝了請先卸載
無需安裝OPENSSH,安裝了請先卸載。
=:)SSH連接不上,在手機上安裝Mterminal(終端)以此輸入如下命令:
$su
默認密碼:alpine
$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或iFile軟件進入系統文件夾修改(一個個的app點擊進去找到yalu102.app就可以了)
/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist
把里面有個參數127.0.0.1:22改成22保存,重啟手機即可
2、使用scp命令可以傳輸文件
新建終端窗口輸入下列拷貝命令:
拷貝本地文件到客戶端
$scp filename root@xx.xx.xx.xx:/tmp
從客戶端拷貝文件到本地
$scp root@xx.xx.xx.xx:/tmp/filename /tmp/
scp傳文件時錯誤 scp: /usr/tools: not a regular file 不能成功傳送
解決方案
1:有可能沒權限 chmod 777
2: 在使用scp時加上-r 參數scp -r [root@192.168.16.5:/usr/tools/xxxx](mailto:root@192.168.16.5:/usr/tools/xxxx)
iOS 10注意修復SCP:(iOS 10以下按流程走)
你會發現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
3、修改默認密碼(cydia中OpenSSH有詳細說明)
passwd root
passwd mobile
-
安裝包管理工具
== 在Cydia中搜索 APT 0.6 Transitional并安裝 ==
1、SSH登錄iPhone后,可在電腦終端輸入如下命令:
apt-get update 【更新所有的源】
apt-get upgrade 【更新所有通過apt-get安裝的程序】
apt-get install packagename 【安裝軟件包】
apt-get remove packagename 【刪除軟件包,不刪除依賴包,不刪除配置文件】
apt-get remove --purge packagename 【刪除該軟件包,不刪除依賴包,刪除配置文件】
apt-get autoremove packagename [刪除該軟件包,刪除依賴包,不刪除配置文件]
apt-get autoremove --purge packagname 【可以刪除所有依賴包+配置文件】
apt-cache search string 【搜索含有該string字段的軟件包】
apt-cache show packagename 【詳細顯示該軟件包的信息】
apt-get clean 【清除apt-get安裝的軟件包備份,可以釋放儲存空間,不影響軟件正常使用】
2、使用apt-get 安裝軟件包
== e.g 安裝traceroute ==
發現找不到軟件包
apt-get install traceroute
如果不知道軟件包名稱,也可以用關鍵字搜索
apt-cache search traceroute
apt-get install network-cmds
3、安裝必要的工具
apt-get install ping //發送icmp報文,檢查網絡狀況
apt-get install ps //查看進程信息
apt-get install find //查找文件
apt-get install tcpdump //抓包工具
apt-get install top //查看實施的進程信息
apt-get install vim //文本編輯工具
apt-get install network-cmds //-arp, ifconfig, netstat, route, traceroute
4、工具的使用
ping www.baidu.com -c 4 -s 600
-c 數目:在發送指定數目的包后停止。
-s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節
ps aux 指令
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行)
1)ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
2)ps -A 顯示所有程序。
3)ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
4)ps -e 此參數的效果和指定"A"參數相同。
5)ps e 列出程序時,顯示每個程序所使用的環境變量。
6)ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關系。
7)ps -H 顯示樹狀結構,表示程序間的相互關系。
8)ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
9)ps s 采用程序信號的格式顯示程序狀況。
10)ps S 列出程序時,包括已中斷的子程序資料。
11)ps -t <終端機編號> 指定終端機編號,并列出屬于該終端機的程序的狀況。
12)ps u 以用戶為主的格式來顯示程序狀況。
13)ps x 顯示所有程序,不以終端機來區分。
14)ps -l 較長,較詳細的顯示該PID的信息
在根目錄開始查找文件名為ping的文件
find / -name ping
在/tmp目錄中查找包含'hello'字符的文件,-r表示包含子目錄
grep -r 'hello*' /tmp
top命令:是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。
顯示系統內存使用情況
top -l 1 | head -n 10 | grep PhysMem
tcpdump命令:用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網絡上的數據包進行截獲的包分析工具。
tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。
實用命令實例
默認啟動
tcpdump
普通情況下,直接啟動tcpdump將監視第一個網絡接口上所有流過的數據包。
監視指定網絡接口的數據包
tcpdump -i eth1
如果不指定網卡,默認tcpdump只會監視第一個網絡接口,一般是eth0,下面的例子都沒有指定網絡接口。
監視指定主機的數據包
打印所有進入或離開sundown的數據包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的數據包
tcpdump host 210.27.48.1
打印helios 與 hot 或者與 ace 之間通信的數據包
tcpdump host helios and \( hot or ace \)
截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
打印ace與任何其他主機之間通信的IP 數據包, 但不包括與helios之間的數據包.
tcpdump ip host ace and not helios
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機hostname發送的所有數據
tcpdump -i eth0 src host hostname
監視所有送到主機hostname的數據包
tcpdump -i eth0 dst host hostname
監視指定主機和端口的數據包
如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命
$tcpdump tcp port 23 and host 210.27.48.1
對本機的udp 123 端口進行監視 123 為ntp的服務端口
tcpdump udp port 123
抓包結束命令:ctl+c
-
XNU,由蘋果電腦發展的操作系統內核,被使用于Mac OS X中。它是Darwin操作系統的一部份,跟隨著Darwin一同作為自由及開放源代碼軟件被發布。XNU是X is Not Unix的縮寫。 ?
-
Mach是一個由卡內基梅隆大學開發的用于支持操作系統研究的操作系統內核,為了用于操作系統之研究,特別是在分布式與并行運算上。是最早實現微核心操作系統的例子之一,是許多其它相似的項目的標準。 ? ?
-
BSD (Berkeley Software Distribution,伯克利軟件套件)是Unix的衍生系統,在1977至1995年間由加州大學伯克利分校開發和發布的。歷史上, BSD曾經被認為是UNIX的一支——"BSD UNIX", 因為它和AT&T UNIX操作系統共享基礎代碼和設計。在20世紀80年代,衍生出了許多變形的UNIX授權軟件。比較著名的如DEC的Ultrix及Sun公司的SunOS。1990年代,BSD很大程度上被System V4.x版以及OSF/1系統所取代,晚期BSD版本為幾個開源軟件開發提供了平臺并且一直沿用至今。今天,“BSD”并不特指任何一個BSD衍生版本,而是類UNIX操作系統中的一個分支的總稱。 ? ?
-
FreeBSD是一種類UNIX操作系統,是由經過BSD、386BSD和4.4BSD發展而來的Unix的一個重要分支。FreeBSD 為不同架構的計算機系統提供了不同程度的支持。并且一些原來BSD UNIX的開發者后來轉到FreeBSD的開發,使得FreeBSD在內部結構和系統API上和UNIX有很大的兼容性。由于FreeBSD寬松的法律條款,其代碼被好多其他系統借鑒包括蘋果公司的macOS,正因此由于MacOS X的UNIX兼容性,使得macOS獲得了UNIX商標認證。 ?