iOS逆向(一)-環(huán)境介紹和基本工具的使用

逆向有門檻,入坑需謹(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é)伯克利分?;赨NIX研發(fā)的(UNIX變種)
      • Solaris 由Sun(現(xiàn)在的Oracel) 開發(fā)的UNIX商業(yè)版本
  • 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沙盒機(jī)制(sandbox)
      == 沙盒是一種安全機(jī)制,為運(yùn)行中的程序提供隔離環(huán)境。沙盒在啟動的時候可以設(shè)置運(yùn)行的程序是否可以訪問網(wǎng)絡(luò)、文件、目錄等==
sandbox.jpg

==Cydia - 越獄iOS的軟件管理平臺==

Cydia 之父 - Jay Freeman(杰·弗里曼)

  • 越獄是合法的

  • 安裝OpenSSH,為電腦和越獄手機(jī)提供連接環(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這款理想工具連接運(yùn)行。

iOS 10注意:(iOS 10以下按流程走)
=:)yalu102自帶了SSH
無需安裝OPENSSH,安裝了請先卸載
無需安裝OPENSSH,安裝了請先卸載
無需安裝OPENSSH,安裝了請先卸載。
=:)SSH連接不上,在手機(jī)上安裝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保存,重啟手機(jī)即可

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. 運(yùn)行(正在運(yùn)行或在運(yùn)行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
4. 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
5. 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運(yùn)行運(yùn)行)

1)ps a 顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
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指令終端機(jī)下的程序之外。
9)ps s     采用程序信號的格式顯示程序狀況。
10)ps S     列出程序時,包括已中斷的子程序資料。
11)ps -t <終端機(jī)編號>  指定終端機(jī)編號,并列出屬于該終端機(jī)的程序的狀況。
12)ps u   以用戶為主的格式來顯示程序狀況。
13)ps x   顯示所有程序,不以終端機(jī)來區(qū)分。
14)ps -l     較長,較詳細(xì)的顯示該P(yáng)ID的信息

在根目錄開始查找文件名為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é)議、主機(jī)、網(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)視指定主機(jī)的數(shù)據(jù)包
打印所有進(jìn)入或離開sundown的數(shù)據(jù)包.

tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機(jī)收到的和發(fā)出的所有的數(shù)據(jù)包

tcpdump host 210.27.48.1 
打印helios 與 hot 或者與 ace 之間通信的數(shù)據(jù)包

tcpdump host helios and \( hot or ace \)
截獲主機(jī)210.27.48.1 和主機(jī)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與任何其他主機(jī)之間通信的IP 數(shù)據(jù)包, 但不包括與helios之間的數(shù)據(jù)包.

tcpdump ip host ace and not helios
如果想要獲取主機(jī)210.27.48.1除了和主機(jī)210.27.48.2之外所有主機(jī)通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機(jī)hostname發(fā)送的所有數(shù)據(jù)

tcpdump -i eth0 src host hostname
監(jiān)視所有送到主機(jī)hostname的數(shù)據(jù)包

tcpdump -i eth0 dst host hostname
監(jiān)視指定主機(jī)和端口的數(shù)據(jù)包

如果想要獲取主機(jī)210.27.48.1接收或發(fā)出的telnet包,使用如下命

$tcpdump tcp port 23 and host 210.27.48.1
對本機(jī)的udp 123 端口進(jìn)行監(jiān)視 123 為ntp的服務(wù)端口
tcpdump udp port 123 

抓包結(jié)束命令:ctl+c


  1. XNU,由蘋果電腦發(fā)展的操作系統(tǒng)內(nèi)核,被使用于Mac OS X中。它是Darwin操作系統(tǒng)的一部份,跟隨著Darwin一同作為自由及開放源代碼軟件被發(fā)布。XNU是X is Not Unix的縮寫。 ?

  2. Mach是一個由卡內(nèi)基梅隆大學(xué)開發(fā)的用于支持操作系統(tǒng)研究的操作系統(tǒng)內(nèi)核,為了用于操作系統(tǒng)之研究,特別是在分布式與并行運(yùn)算上。是最早實現(xiàn)微核心操作系統(tǒng)的例子之一,是許多其它相似的項目的標(biāo)準(zhǔn)。 ? ?

  3. 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)中的一個分支的總稱。 ? ?

  4. FreeBSD是一種類UNIX操作系統(tǒng),是由經(jīng)過BSD、386BSD和4.4BSD發(fā)展而來的Unix的一個重要分支。FreeBSD 為不同架構(gòu)的計算機(jī)系統(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)證。 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容