逆向有門檻楷扬,入坑需謹(jǐn)慎
==iOS逆向環(huán)境介紹==
本文越獄環(huán)境:iPhone6 iOS 10.0.2 (推薦使用iOS 8 )
===Drawin 體系===
Darwin是由蘋果電腦于2000年所釋出的一個開放原始碼操作系統(tǒng)。Darwin 是MacOSX 操作環(huán)境的操作系統(tǒng)成份误窖。蘋果電腦于2000年把Darwin 釋出給開放原始碼社群。
終端命令輸入uname -a顯示操作系統(tǒng)名稱:
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的操作系統(tǒng)酵熙,他的核心XNU[1],XNU是一種混合式內(nèi)容結(jié)合了Mach[2]與BSD[3]兩種內(nèi)核
- 主流的類unix:
- Linux 由Linus Torvalds 研發(fā)的桅咆,代表發(fā)行版本CenOS王浴,Redhat斗遏,Ubuntu山卦,Debian,openWRT等
- Mac OS X的Intel部分
- freeBSD[4] 由加州大學(xué)伯克利分兴写危基于UNIX研發(fā)的(UNIX變種)
- Solaris 由Sun(現(xiàn)在的Oracel) 開發(fā)的UNIX商業(yè)版本
- 主流的類unix:
-
BSD[3] 實現(xiàn)在Mach[2]的上層账蓉,這一層提供的API 支持了POSIX標(biāo)準(zhǔn)模型。在XNU中主要實現(xiàn)了一些高級的API與模塊
UNIX 進(jìn)程模型
== e.g fork, vfork, wait, waitpid, exec等==POSIX 線程模型即pthread逾一,以及相關(guān)的同步功能
== e.g pthread_create, pthread_mutex(線程互斥鎖) ==UNIX的用戶與組管理
== e.g root用戶铸本,mobile用戶, chmod等==網(wǎng)絡(luò)協(xié)議棧(BSD Socket API),符合POSIX模型
==e.g socket(); bind(); listen(); accept();connect();
gethostbyname(); gethostbyaddr()等伯克利套接字API文件系統(tǒng)/設(shè)備系統(tǒng)
== e.g Filesystem Hierarchy Standard(文件系統(tǒng)層次化標(biāo)準(zhǔn))==
-
iOS, OSI, ISO 含義
iOS 蘋果公司開發(fā)的移動操作系統(tǒng)
OSI 是Open System Interconnection的縮寫嬉荆,意為開放式系統(tǒng)互聯(lián)归敬。OSI模型把網(wǎng)絡(luò)通信的工作分為7層酷含,分別是物理層鄙早、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層椅亚、傳輸層限番、會話層、表示層和應(yīng)用層呀舔。
-
ISO是國際標(biāo)準(zhǔn)化組織弥虐。上面的OSI模型由改組織制定。一般UNIX系統(tǒng)都基于符合POSIX標(biāo)準(zhǔn)和ISO C 標(biāo)準(zhǔn)
- POSI表示可移植操作系統(tǒng)接口(Portable Operating System Interface)
- ISO C 標(biāo)準(zhǔn)媚赖, C語言標(biāo)準(zhǔn)接口
-
為什么要越獄霜瘪?
- 突破iOS沙盒機制(sandbox)
== 沙盒是一種安全機制,為運行中的程序提供隔離環(huán)境惧磺。沙盒在啟動的時候可以設(shè)置運行的程序是否可以訪問網(wǎng)絡(luò)颖对、文件、目錄等==
- 突破iOS沙盒機制(sandbox)
==Cydia - 越獄iOS的軟件管理平臺==
Cydia 之父 - Jay Freeman(杰·弗里曼)
越獄是合法的
安裝OpenSSH磨隘,為電腦和越獄手機提供連接環(huán)境
== 在Cydia中搜索OpenSSH并安裝缤底,這樣iOS上面就可以開啟SSH服務(wù)。SSH服務(wù)默認(rèn)綁定端口號22==
1番捂、使用SSH命令連接iOS个唧,默認(rèn)登錄密碼"alpine"
iOS連接wifi,設(shè)置中可以看到ip地址设预,也可以改成靜態(tài)IP地址
ssh -p 22 root@xx.xx.xx.xx
Windows徙歼、UNIX和VMS系統(tǒng)使用SecureCRT這款理想工具連接運行。
iOS 10注意:(iOS 10以下按流程走)
=:)yalu102自帶了SSH
無需安裝OPENSSH,安裝了請先卸載
無需安裝OPENSSH魄梯,安裝了請先卸載
無需安裝OPENSSH呼股,安裝了請先卸載。
=:)SSH連接不上画恰,在手機上安裝Mterminal(終端)以此輸入如下命令:
$su
默認(rèn)密碼:alpine
$ps aux|grep dropbear
(1)如果你看到的進(jìn)程沒有dropbear
輸入:
/usr/local/bin/dropbear -F -R -p 22
然后就可以連接了彭谁,重啟依然有效
(2)如果你看到進(jìn)程是這樣:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22
意思是只能數(shù)據(jù)線重定向連接SSH,
如果你想改成WIFI可以訪問那么用Filza或iFile軟件進(jìn)入系統(tǒng)文件夾修改(一個個的app點擊進(jìn)去找到y(tǒng)alu102.app就可以了)
/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist
把里面有個參數(shù)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:有可能沒權(quán)限 chmod 777
2: 在使用scp時加上-r 參數(shù)scp -r [root@192.168.16.5:/usr/tools/xxxx](mailto:root@192.168.16.5:/usr/tools/xxxx)
iOS 10注意修復(fù)SCP:(iOS 10以下按流程走)
你會發(fā)現(xiàn)yalu102自帶的SSH無法用WINSCP傳輸文件,因為缺少了scp
(1)cydia里面安裝wget
(2)在mterminal里面登陸root權(quán)限
(3)執(zhí)行以下命令
wget mila432.com/scp
ldid -S scp
chmod 777 scp
mv scp /usr/bin/scp
3考润、修改默認(rèn)密碼(cydia中OpenSSH有詳細(xì)說明)
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 【詳細(xì)顯示該軟件包的信息】
apt-get clean 【清除apt-get安裝的軟件包備份粥脚,可以釋放儲存空間窃肠,不影響軟件正常使用】
2、使用apt-get 安裝軟件包
== e.g 安裝traceroute ==
發(fā)現(xiàn)找不到軟件包
apt-get install traceroute
如果不知道軟件包名稱刷允,也可以用關(guān)鍵字搜索
apt-cache search traceroute
apt-get install network-cmds
3冤留、安裝必要的工具
apt-get install ping //發(fā)送icmp報文,檢查網(wǎng)絡(luò)狀況
apt-get install ps //查看進(jìn)程信息
apt-get install find //查找文件
apt-get install tcpdump //抓包工具
apt-get install top //查看實施的進(jìn)程信息
apt-get install vim //文本編輯工具
apt-get install network-cmds //-arp, ifconfig, netstat, route, traceroute
4树灶、工具的使用
ping www.baidu.com -c 4 -s 600
-c 數(shù)目:在發(fā)送指定數(shù)目的包后停止纤怒。
-s 字節(jié)數(shù):指定發(fā)送的數(shù)據(jù)字節(jié)數(shù),預(yù)設(shè)值是56天通,加上8字節(jié)的ICMP頭泊窘,一共是64ICMP數(shù)據(jù)字節(jié)
ps aux 指令
linux上進(jìn)程有5種狀態(tài):
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進(jìn)程必須等待直到有中斷發(fā)生)
4. 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
5. 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行)
1)ps a 顯示現(xiàn)行終端機下的所有程序,包括其他用戶的程序土砂。
2)ps -A 顯示所有程序州既。
3)ps c 列出程序時,顯示每個程序真正的指令名稱萝映,而不包含路徑吴叶,參數(shù)或常駐服務(wù)的標(biāo)示。
4)ps -e 此參數(shù)的效果和指定"A"參數(shù)相同序臂。
5)ps e 列出程序時蚌卤,顯示每個程序所使用的環(huán)境變量实束。
6)ps f 用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系逊彭。
7)ps -H 顯示樹狀結(jié)構(gòu)咸灿,表示程序間的相互關(guān)系。
8)ps -N 顯示所有的程序侮叮,除了執(zhí)行ps指令終端機下的程序之外避矢。
9)ps s 采用程序信號的格式顯示程序狀況。
10)ps S 列出程序時囊榜,包括已中斷的子程序資料审胸。
11)ps -t <終端機編號> 指定終端機編號,并列出屬于該終端機的程序的狀況卸勺。
12)ps u 以用戶為主的格式來顯示程序狀況砂沛。
13)ps x 顯示所有程序,不以終端機來區(qū)分曙求。
14)ps -l 較長,較詳細(xì)的顯示該PID的信息
在根目錄開始查找文件名為ping的文件
find / -name ping
在/tmp目錄中查找包含'hello'字符的文件,-r表示包含子目錄
grep -r 'hello*' /tmp
top命令:是Linux下常用的性能分析工具碍庵,能夠?qū)崟r顯示系統(tǒng)中各個進(jìn)程的資源占用狀況,類似于Windows的任務(wù)管理器悟狱。
顯示系統(tǒng)內(nèi)存使用情況
top -l 1 | head -n 10 | grep PhysMem
tcpdump命令:用簡單的話來定義tcpdump静浴,就是:dump the traffic on a network,根據(jù)使用者的定義對網(wǎng)絡(luò)上的數(shù)據(jù)包進(jìn)行截獲的包分析工具芽淡。
tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來提供分析马绝。它支持針對網(wǎng)絡(luò)層豆赏、協(xié)議挣菲、主機、網(wǎng)絡(luò)或端口的過濾掷邦,并提供and白胀、or、not等邏輯語句來幫助你去掉無用的信息抚岗。
實用命令實例
默認(rèn)啟動
tcpdump
普通情況下或杠,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡(luò)接口上所有流過的數(shù)據(jù)包。
監(jiān)視指定網(wǎng)絡(luò)接口的數(shù)據(jù)包
tcpdump -i eth1
如果不指定網(wǎng)卡宣蔚,默認(rèn)tcpdump只會監(jiān)視第一個網(wǎng)絡(luò)接口向抢,一般是eth0,下面的例子都沒有指定網(wǎng)絡(luò)接口胚委⌒
監(jiān)視指定主機的數(shù)據(jù)包
打印所有進(jìn)入或離開sundown的數(shù)據(jù)包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發(fā)出的所有的數(shù)據(jù)包
tcpdump host 210.27.48.1
打印helios 與 hot 或者與 ace 之間通信的數(shù)據(jù)包
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 數(shù)據(jù)包, 但不包括與helios之間的數(shù)據(jù)包.
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發(fā)送的所有數(shù)據(jù)
tcpdump -i eth0 src host hostname
監(jiān)視所有送到主機hostname的數(shù)據(jù)包
tcpdump -i eth0 dst host hostname
監(jiān)視指定主機和端口的數(shù)據(jù)包
如果想要獲取主機210.27.48.1接收或發(fā)出的telnet包亩冬,使用如下命
$tcpdump tcp port 23 and host 210.27.48.1
對本機的udp 123 端口進(jìn)行監(jiān)視 123 為ntp的服務(wù)端口
tcpdump udp port 123
抓包結(jié)束命令:ctl+c
-
XNU艘希,由蘋果電腦發(fā)展的操作系統(tǒng)內(nèi)核硼身,被使用于Mac OS X中。它是Darwin操作系統(tǒng)的一部份覆享,跟隨著Darwin一同作為自由及開放源代碼軟件被發(fā)布佳遂。XNU是X is Not Unix的縮寫。 ?
-
Mach是一個由卡內(nèi)基梅隆大學(xué)開發(fā)的用于支持操作系統(tǒng)研究的操作系統(tǒng)內(nèi)核撒顿,為了用于操作系統(tǒng)之研究丑罪,特別是在分布式與并行運算上。是最早實現(xiàn)微核心操作系統(tǒng)的例子之一凤壁,是許多其它相似的項目的標(biāo)準(zhǔn)巍糯。 ? ?
-
BSD (Berkeley Software Distribution,伯克利軟件套件)是Unix的衍生系統(tǒng)客扎,在1977至1995年間由加州大學(xué)伯克利分校開發(fā)和發(fā)布的祟峦。歷史上, BSD曾經(jīng)被認(rèn)為是UNIX的一支——"BSD UNIX", 因為它和AT&T UNIX操作系統(tǒng)共享基礎(chǔ)代碼和設(shè)計徙鱼。在20世紀(jì)80年代宅楞,衍生出了許多變形的UNIX授權(quán)軟件。比較著名的如DEC的Ultrix及Sun公司的SunOS袱吆。1990年代厌衙,BSD很大程度上被System V4.x版以及OSF/1系統(tǒng)所取代,晚期BSD版本為幾個開源軟件開發(fā)提供了平臺并且一直沿用至今绞绒。今天婶希,“BSD”并不特指任何一個BSD衍生版本,而是類UNIX操作系統(tǒng)中的一個分支的總稱蓬衡。 ? ?
-
FreeBSD是一種類UNIX操作系統(tǒng)喻杈,是由經(jīng)過BSD、386BSD和4.4BSD發(fā)展而來的Unix的一個重要分支狰晚。FreeBSD 為不同架構(gòu)的計算機系統(tǒng)提供了不同程度的支持筒饰。并且一些原來BSD UNIX的開發(fā)者后來轉(zhuǎn)到FreeBSD的開發(fā),使得FreeBSD在內(nèi)部結(jié)構(gòu)和系統(tǒng)API上和UNIX有很大的兼容性壁晒。由于FreeBSD寬松的法律條款瓷们,其代碼被好多其他系統(tǒng)借鑒包括蘋果公司的macOS,正因此由于MacOS X的UNIX兼容性秒咐,使得macOS獲得了UNIX商標(biāo)認(rèn)證谬晕。 ?