一、越狱

1.1 越狱

  • 通过iOS系统安全启动链漏洞,从而禁止掉信任链中负责验证的组件.拿到iOS系统最大权限Root权限

1.2 iOS系统安全启动链

  • 当启动一台iOS设备时,系统首先会从只读的ROM中读取初始化指令,也就是系统的引导程序(事实上所有的操作系统启动时都要经过这一步,只是过程略有不同).这个引导ROM包含苹果官方权威认证的公钥,它会验证底层启动加载器LLB的签名,一旦通过验证后就启动系统.LLB会做一些基础工作,然后验证第二引导程序iBoot.iBoot启动后,设备就可以进入恢复模式或启动内核. 在iBoot验证完内核签名的合法性之后,整个启动程序开始步入正轨: 加载驱动程序、验证驱动程序、检测设备、启动系统守护进程. 这个信任链会确保所有的系统组件都有苹果官方写入、签名、分发、不能来自第三方机构.

rootless 越狱 root/越狱_rootless 越狱

  • 越狱的工作原理正是攻击这一信任链.所有的越狱工具的作者都需要找到这一信任链上的漏洞,从而禁止掉信任链中负责验证的组件.拿到iOS系统最大权限ROOT权限.

1.3 完美越狱与非完美越狱

根据越狱的情况不同可以分为如下两种越狱:

  • 完美越狱
  • 所谓完美越狱就是破解iOS系统漏洞之后,每次系统重启都能自动调用注入的恶意代码,达到破坏安全验证,再次获得ROOT权限
  • 非完美越狱
  • 所谓非完美越狱是指,越狱系统后,并没有完全破解安全链,有部分信息或功能应用不佳;比如: 关机以后必须去连接越狱软件来引导开机; 或者重启会导致越狱的实效;这样的越狱称为“不完美越狱”.

1.4 越狱工具

  • 推荐使用 uncOver,下载.ipa包,用重签名脚本直接运行到手机上即可.
  • uncOver中的设置项:
  • Dark Mode:适配暗黑模式
  • Load Tweaks:开启此功能,在越狱激活时,会让越狱顺便加载越狱环境,通常都是维持开启状态。那何时可以关闭呢?当发生装完新插件后,导致插件冲突造成安全模式,那在激活越狱时先将此功能关闭,再激活越狱,就可进入Cydia来移除有冲突的插件
  • Refresh Icon Cache:桌面上暂存的白色图示导致无法删除,通过此功能开启就可清除
  • Disable Auto Updates:屏蔽自动升级,可以关闭iOS内的OTA升级提醒。这功能是no beta alert插件来完成,有装描述档来防堵iOS升级者,不需要删除或关闭,依旧都保持安装描述档和维持打开即可
  • Export TFP0:输出TFP0(不安全)。Export TFP0是iOS一个漏洞,可以让所有App利用此漏洞来获取root权限,因此开发者也特别用括号提醒不安全,没事时候请勿开启
  • Restore RootFs:清理越狱,清除所有插件并且撤销越狱工具注入的文件
  • (Re)Install OpenSSh:重装OpenSSh。有了OpenSSh,可以用来远程连接设备
  • Reinstall Cydia:重装Cydia。如发生激活越狱环境后,造成Cydia闪退或是Cydia消失,可以打开此功能重装Cydia
  • Hide Log Windows:隐藏Log讯息。如果将此功能开启,会导致越狱时,无法看见黑色讯息内的Log信息
  • Share OS Crash Logs:共享操作系统崩溃日志
  • 使用uncOver越狱的好处:
  • 在设置中,选择Restore RootFS,可清理越狱环境,删除所有插件并撤销越狱工具注入的文件
  • 越狱成功后,如果设备重启过,需要使用uncOver重新越狱
  • 在重新越狱过程中,如果屡次失败,可尝试勾选Reinstall Cydia,再进行重新越狱
  • 使用Odyssey越狱,需要注意一点,在断开网络的情况下,开始执行越狱。在越狱过程中,按照提示链接网络。大致流程和uncOver一样.
  • 越狱成功后,在Cydia中,添加常用软件源:

二、连接设备

  • 通过OpenSSH插件可以连接手机,进行远程控制,或者传送文件
  • 如果在越狱时,未勾选(Re)Install OpenSSH,需要在越狱成功后,在Cydia中安装OpenSSH。目的是在设备上开启SSH登录服务
  • 安装后,可以在Cydia的已安装中查看

连接设备

  • 通过插件,使用Wifi连接手机: ssh 用户名@手机IP地址
ssh root@192.168.124.12
The authenticity of host '192.168.124.12 (192.168.124.12)' can't be established.
RSA key fingerprint is SHA256:pPnsbMAtXRq2zeZwsMsa2ENP1y4nYLEraoKL1oT8kdM.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:1: 192.168.1.100
    ~/.ssh/known_hosts:3: 192.168.1.101
    ~/.ssh/known_hosts:5: 192.168.0.104
//首次登录,会出现下面提示
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
//输入yes后,要求输入密码
Warning: Permanently added '192.168.124.12' (RSA) to the list of known hosts.
root@192.168.124.12's password:
Holothurian6P:~ root#
  • 提示输入密码:
  • 默认密码是: alpine, 这里输入我之前修改过的密码,就成功登录到手机设备上,并且处于设备的root目录下.
  • iOS设备下,有两个用户: root和mobile
  • root用户: 最高权限用户,可以访问任意文件
  • mobile用户: 普通用户,只能访问该用户/var/Mobile目录下的文件
  • 登录手机设备的root用户,可以查看很多隐私内容
  • 例如,查看手机上运行的进程
Holothurian6P:~ root# ps -A
  PID TTY           TIME CMD
    1 ??         0:00.00 /sbin/launchd -s
   35 ??         0:00.00 /usr/libexec/fseventsd
   36 ??         0:00.00 /usr/sbin/mediaserverd
   42 ??         0:00.00 /usr/libexec/configd
   45 ??         0:00.00 /System/Library/CoreServices/powerd.bundle/powerd
   47 ??         0:00.00 /usr/sbin/WirelessRadioManagerd
   53 ??         0:00.00 /usr/libexec/logd
   59 ??         0:00.00 /System/Library/PrivateFrameworks/IDS.framework/identityservices
   61 ??         0:00.00 /usr/sbin/syslogd
   67 ??         0:00.00 /usr/sbin/wirelessproxd
   ......
  • 筛选出指定App的进程
Holothurian6P:~ root# ps -A | grep WeChat
33021 ttys002    0:00.00 grep WeChat
  • 修改登录密码
  • 登录手机设备的默认密码为alpine,使用passwd可以对其进行修改
  • root用户,可以修改所有用户的密码: passwd 用户名
Holothurian6P:~ root# passwd root
Changing password for root.
New password:
Retype new password:
Holothurian6P:~ root#
  • 输入两次新密码,确认修改.因为是登录状态,所以不能输入原始密码
  • 断开设备连接
  • 使用 exit命令,可以断开设备的连接
Holothurian6P:~ root# exit
logout
Connection to 192.168.124.12 closed.

三、OpenSSH

  • OpenSSH是SSH(Secure Shell)协议的免费开源实现,SSH协议可以用来进行远程控制,或在计算机之间传送文件
  • OpenSSH
  • 它是一款软件,应用非常广泛
  • SSH
  • SSH是一种网络协议,用于计算机之间的加密登录
  • 1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置
  • 中间人攻击
  • 冒充服务器,将生成的虚假公钥发给客户端。那么它将获得客户端连接服务
  • 中间人:例如手机和电脑连接的黑客WiFi
  • 当手机发送给Mac电脑的公钥被中间人截获,然后由中间人生成一对公钥和私钥,将伪造的公钥转发给Mac电脑
  • Mac电脑会通过伪造的公钥加密登录密码,然后返回给中间人
  • 中间人利用自己的私钥将其解密,使用截获的手机公钥加密,再将其发送给手机流程结束后,用户可以照常登录,但黑客已经截获了登录密码
  • 服务器保护
  • 为了避免中间人攻击,SSH在首次登录时,除了返回公钥,还会给出密钥的SHA256指纹
  • 指纹的作用:服务器生成的有效指纹,会在网站上公布。用户首次登录时,可以人工核对该指纹的合法性。如果返回的指纹和公布的指纹不一致,可能出现中间人的伪造,立刻终止登录行为
  • 首次登录的合法性,需要依靠人工核对。服务器在第一次登录时,会让客户端保存IP地址和公钥
  • 当再次登录时,客户端发现相同IP地址对应的公钥发生变化,会给出疑似中间人攻击的警告,并阻止登录
  • 公钥在Mac端保存的位置: ~/.ssh 目录下的known_hosts文件
vi ~/.ssh/known_hosts

rootless 越狱 root/越狱_服务器_02

  • 公钥在手机中保存的位置:
Holothurian6P:~ root# cd /etc/ssh
Holothurian6P:/etc/ssh root# ls
moduli  ssh_config  ssh_host_dsa_key  ssh_host_dsa_key.pub  ssh_host_rsa_key  ssh_host_rsa_key.pub  sshd_config
Holothurian6P:/etc/ssh root# cat ssh_host_dsa_key
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH
NzAAAAgQCLcTHtWg9VQSoIU3BK7/KX/BGrx8TiGQ7DwetzL1JDgZD9kicN/j8AQY5qcwW6
7vAdNZ4Ht8MqdaK+xJ1pIt3VcaBBHB22B6lMEq0nJz49T1ZqFwUl5mxfHQpGvUOo80eSi7
t9QIjfVJq97yMrp1MbPaKSyk1aG8K6mlHOGoq5PwAAABUA/v+RXpoCKnzt5E5KIuKEPkk5
nCkAAACAZPTqcCg3bXV7NHCxqghSnLnlFBQ1H+KPcnTTBy4WXYaECiWTTfI6ez0ItNTJGz
aN/nna6WyJPfs9iJ6k/jUv0jhjjEWBLbIEZjwk2cMvIk2vEKz0b4eXC5liw/9hmUVCynUq
kTZ8E29AfTC2ACBQ19Xh27jZUaGP63Gq/ZZ5k4IAAACAbEQOb4+mJO3U5FuSv6nH4Rc6Nt
MNylf6Z9sYpGcH5C0Rv3dtR5L1WCx0gRCPOEFhHJaxHGSj5qady2Et+kq+sFI3lDhkNqvx
UOZwkAmSXjq2XqfxRSm5kiLwCrp1dBnr4hd/GjVU1oYNM9ZKSeaJKbedpgWXuJMgyCs6wg
enRJcAAAHYJ5l9mieZfZoAAAAHc3NoLWRzcwAAAIEAi3Ex7VoPVUEqCFNwSu/yl/wRq8fE
4hkOw8Hrcy9SQ4GQ/ZInDf4/AEGOanMFuu7wHTWeB7fDKnWivsSdaSLd1XGgQRwdtgepTB
KtJyc+PU9WahcFJeZsXx0KRr1DqPNHkou7fUCI31Save8jK6dTGz2ikspNWhvCuppRzhqK
uT8AAAAVAP7/kV6aAip87eROSiLihD5JOZwpAAAAgGT06nAoN211ezRwsaoIUpy55RQUNR
/ij3J00wcuFl2GhAolk03yOns9CLTUyRs2jf552ulsiT37PYiepP41L9I4Y4xFgS2yBGY8
JNnDLyJNrxCs9G+HlwuZYsP/YZlFQsp1KpE2fBNvQH0wtgAgUNfV4du42VGhj+txqv2WeZ
OCAAAAgGxEDm+PpiTt1ORbkr+px+EXOjbTDcpX+mfbGKRnB+QtEb93bUeS9VgsdIEQjzhB
YRyWsRxko+amncthLfpKvrBSN5Q4ZDar8VDmcJAJkl46tl6n8UUpuZIi8Aq6dXQZ6+IXfx
o1VNaGDTPWSknmiSm3naYFl7iTIMgrOsIHp0SXAAAAFBwiXHjr9P5dHpeQ7IwD9XmOtqGn
AAAAAAECAw==
-----END OPENSSH PRIVATE KEY-----
Holothurian6P:/etc/ssh root#
  • 免密登录
  • 免密登录:也称之为“公钥登录”
  • 原理:客户端将自己的公钥,储存在远程主机上。登录时,服务器会向客户端发送一段随机的字符串。客户端用自己的私钥加密后,再发回来。服务器用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录,不再要求密码
  • 拷贝公钥给SSH服务器: ssh-copy-id 用户名@服务器IP地址
$ ssh-copy-id root@192.168.124.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/chenxi/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.124.12's password:
Number of key(s) added:        1
Now try logging into the machine, with:   "ssh 'root@192.168.124.12'"
and check to make sure that only the key(s) you wanted were added.
$ ssh 'root@192.168.124.12'
Holothurian6P:~ root#
  • 公钥拷贝成功后,再次登录手机,就可以直接登录,不再要求密码
  • 公钥在Mac端保存的位置:
% cd ~/.ssh
$ ls
id_rsa      id_rsa.pub  known_hosts
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4fYdDP5bzzU5gJEPvbX3P1QCgNPTJFlpUZim3PxlNeJN8I8uFaaTEqmQqXpnpg1ZA8sj6IszNyiyFt23BOIYPUHmlZzkjDYftvItBB7H0gT4qdVwVGEO3HZrQdzc51pE5l8onLyyQkztiy3LXQY4Fe20iwozMxo9wiqQcwzFVlid0Hsl8MKt79rDZ5/HmthovIZmlVTT3hVdUE3EntZ+HTT4QYISOUwXuxeFBAkPzOgWsqCVbEwgdmRHXjBnefDWR39jP/ykDyBkJwUYNk36C41dK6TTg/6XW3m5JLT11/KBddQgiZ/MwPMoLTB86Xzvz7z2bytNDDMOq2cziTDyQ61haYZY3pfK/gqVSVKPLy1FNw+k8fROOBc9C5Pmv/Ee6xTnJYVIxF7hnRLm01fg5mci7Brc8tjlihTuse8YQTxxdReFHA8bCmYhnqS3JRP4mAM1ciPup5jv9xYcoUYqtyMKSETOGV0BpuEJx2sTZ9yjTlXIhWZ+D/ITCp+jyh3k= herrychenx@gmail.com
  • 公钥在手机中保存的位置: ~/.ssh目录下的authorized_keys文件
$ ssh 'root@192.168.124.12'
Holothurian6P:~ root# cd ~/.ssh
Holothurian6P:~/.ssh root# ls
authorized_keys
Holothurian6P:~/.ssh root# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4fYdDP5bzzU5gJEPvbX3P1QCgNPTJFlpUZim3PxlNeJN8I8uFaaTEqmQqXpnpg1ZA8sj6IszNyiyFt23BOIYPUHmlZzkjDYftvItBB7H0gT4qdVwVGEO3HZrQdzc51pE5l8onLyyQkztiy3LXQY4Fe20iwozMxo9wiqQcwzFVlid0Hsl8MKt79rDZ5/HmthovIZmlVTT3hVdUE3EntZ+HTT4QYISOUwXuxeFBAkPzOgWsqCVbEwgdmRHXjBnefDWR39jP/ykDyBkJwUYNk36C41dK6TTg/6XW3m5JLT11/KBddQgiZ/MwPMoLTB86Xzvz7z2bytNDDMOq2cziTDyQ61haYZY3pfK/gqVSVKPLy1FNw+k8fROOBc9C5Pmv/Ee6xTnJYVIxF7hnRLm01fg5mci7Brc8tjlihTuse8YQTxxdReFHA8bCmYhnqS3JRP4mAM1ciPup5jv9xYcoUYqtyMKSETOGV0BpuEJx2sTZ9yjTlXIhWZ+D/ITCp+jyh3k= herrychenx@gmail.com
Holothurian6P:~/.ssh root#
  • SSH取别名
  • 作为逆向工程师,分别会使用完美越狱和非完美越狱两台手机.在更换设备时,切换登录的过程还是比较麻烦的.
  • 我们可以在 ~/.ssh目录下,创建一个config文件.内部可以配置SSH登录的别名
  • 使用vi config命令,配置config文件
Host 6P
Hostname 192.168.124.12
User root
Port 22
  • Host: 别名
  • Hostname: IP地址
  • User: 用户名
  • Port: 端口号
  • 配置成功,使用别名登录
ssh 6P
Last login: Wed Apr 12 16:58:22 2023 from 192.168.124.13
Holothurian6P:~ root#



四、总结

越狱概述

  • 通过破解 : iOS安全启动链的漏洞,拿到iOS的root权限
  • 完美越狱:每次系统重新启动,都会再次进入越狱状态
  • 非完美越狱:没有完全破解,一般重启后会失去越狱环境

OpenSSH

  • SSH是一种网络协议
  • OpenSSH是一款软件

SSH登录过程

  • 远程主机(服务器)收到用户的登录请求,将自己的公钥发给客户端
  • 客户端使用公钥,将自己登录的密码加密发送给服务器
  • 远程主机(服务器)使用私钥解密登录密码,如果密码正确,就同意登录

中间人攻击

  • 冒充服务器,将生产的虚拟公钥发送给客户端,它可以截获客户端连接服务器的密码

服务器保护

  • 一般SSH服务器会将自己的Hash值公布在网站上
  • 服务器在第一次登录时,会让客户端保存IP地址和公钥
  • 存放在~/.ssh/known_hosts中

免密登录

  • 使用ssh-copy-id,将公钥拷贝到ssh服务器
  • 原理
  • 客户端将公钥存储到远程服务器
  • 登录时,远程服务器会向客户端发送随机字符串
  • 客户端用自己的私钥加密后,发送给服务器
  • 服务器用事先存储的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录,不再要求密码

SSH取别名

  • ~/.ssh目录中,有一个 config用来配置SSH
  • 配置config文件
  • Host:别名
  • Hostname:IP地址
  • User:用户名
  • Port:端口号