iOS逆向課程筆記
[TOC]
==iOS逆向環境介紹==
*** 越獄環境:iphone5s iOS 8.3***
iPhone:~ root# uname -a
Darwin iPhone 14.0.0 Darwin Kernel Version 14.0.0: Sun Mar 29 19:47:37 PDT 2015; root:xnu-2784.20.34~2/RELEASE_ARM64_S5L8960X iPhone6,1 arm64 N51AP Darwin
iPhone:~ root#
1.Drawin體系
-
Darwin是一種類似unix的操作系統,他的核心XNU,XNU是一種混合式內核,結合了mach與BSD兩種內核
- 主流的類unix:
Linux 由Linus Torvalds研發的,代表發行版本CenOS,Redhat,Ubuntu,Debian,openWRT等
Mac OS X的Intel部分
freeBSD 由加州大學伯克利分校基于UNIX研發的(UNIX變種,當時如果不是與貝爾實驗室打官司,可能就不會有現在的Linux什么事)
Solaris 由Sun(現為Oracel)開發的UNIX商業版本
- 主流的類unix:
BSD 實現在Mach的上層,這一層提供的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層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
-
IOS是國際標準化組織。上面的OSI模型由該組織制定。一般類UNIX系統都基本符合POSIX標準和IOS C標準
POSIX表示可移植操作系統接口(Portable Operating System Interface)
IOS C標準,C語言標準庫接口
為什么越獄
-
突破iOS沙盒機制的限制(sandbox)
== 沙盒是一種安全機制,為運行中的程序提供隔離環境。沙盒在啟動的時候可以設置運行的程序是否可以訪問網絡、文件、目錄等==
2.Cydia - 越獄iOS的軟件管理平臺 (Cydia 之父 - Jay Freeman(杰 弗里曼))
越獄iOS是合法的
-
安裝OpenSSH
== 在Cydia中搜索OpenSSH并安裝,這樣iOS上面就可以開啟SSH服務。SSH服務默認綁定端口號22 ==- 使用SSH命令連接iOS,默認登錄密碼"alpine"
ssh root@xx.xx.xx.xx //iOS連接wifi,設置中可以看到ip地址,也可以改成靜態IP地址
- 使用scp命令可以傳輸文件
scp filename root@xx.xx.xx.xx:/tmp //拷貝本地文件到遠端
scp root@xx.xx.xx.xx:/tmp/filename /tmp/ //從遠端拷貝文件到本地
- 修改默認密碼
passwd root
passwd mobile
-
安裝軟件包管理工具apt-get
== 在Cydia中搜索 APT 0.6 Transitional并安裝 ==- 命令介紹
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安裝的軟件包備份,可以釋放儲存空間,不影響軟件正常使用】
- 命令介紹
-
使用apt-get 安裝軟件包
== e.g 安裝traceroute ==apt-get install traceroute //發現找不到軟件包 //如果不知道軟件包名稱,也可以用關鍵字搜索 apt-cache search traceroute apt-get install network-cmds
-
安裝必要工具
apt-get install ping 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
工具的使用
ping www.baidu.com -c 4 -s 600 //發送icmp報文,檢查網絡狀況
ps aux //查看進程信息
ps -e
find / -name ping //在根目錄開始查找文件名為ping的文件
grep -r 'hello*' /tmp //在/tmp目錄中查找包含'hello'字符的文件,-r表示包含子目錄
top
top -l 1 | head -n 10 | grep PhysMem //顯示系統內存使用情況
tcpdump -i en0 src host 192.168.1.137
tcpdump -i en0 dst host 192.168.1.137
tcpdump -w /tmp/ssh.cap -i en0 tcp port 22 and dst host 192.168.1.137
tcpdump -w /tmp/ssh.cap -i en0 -t -s 0 -c 100 tcp port ! 22 and dst host 192.168.1.137
解釋:
(1)-w /tmp/ssh.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
(2)-i en0 : 只抓經過接口en0的包
(3)-t : 不顯示時間戳
(4)-s 0 : 抓取數據包時默認抓取長度為68字節。加上-S 0 后可以抓到完整的數據包
(5)-c 100 : 只抓取100個數據包
(6) tcp port ! 22 : 不抓tcp端口22的數據包
(7) dst port ! 22 : 不抓取目標端口是22的數據包
(8)dst host 192.168.1.137 : 抓取目標地址為192.168.1.137的包
(9)src net 192.168.1.0/24 : 數據包的源網絡地址為192.168.1.0/24