iOS逆向学习笔记16(手机越狱以及SSH连接手机)

1.手机越狱

1.1 手机越狱概述

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


启动链流程

  而越狱的工作原理正是攻击这一信任链。所有的越狱工具的作者都需要找到这一信任链上的漏洞,从而禁止掉信任链中负责验证的组件,从而拿到iOS系统最大权限ROOT权限。
  根据越狱的情况不同可以分为如下两种越狱:

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

1.2 越狱工具

如果你的手机iOS12版本的可以直接使用爱思助手进行越狱,如果是iOS12以上版本的可以使用下面两种工具进行越狱。
uncOver 越狱
Odyssey越狱

1.3 使用uncOver工具进行手机越狱

注意:在越狱之前请先做好数据备份,防止越狱失败数据丢失!
首先进入uncOver官网主页,直接点击下载,下载安装包,如下图所示:


下载完毕之后,使用XCode新建一个Monkey的工程。


创建工程完毕之后,选运行程序,将程序安装到手机上,然后再打开工程主目录,将下载好的安装包拖入到TargetApp文件夹中,如下图所示:

链接手机,再次运行程序,进入应用界面,然后断开数据线链接,杀死应用程序,再点击启动,进入如下界面:


然后点击越狱,如果出现如下的错误提示:

重启手机,重复越狱操作。

1.4 使用altStore以及unCover进行手机越狱。

  如果使用上面的方式始终无法越狱成功,也可以按下面的操作进行手机越狱。
首先进入altStore官网下载altServer.app,altStore官网

altStore主页

下载完后拖入到应用程序,如下所示:


打开之后,在顶部工具栏就会出现如下的图标,然后进行如下操作:


然后会提示你输入密码,输入密码并确认后,就会提示你这个插件已经安装好了,接下来,就打开你的邮件,登陆你的账户,如下所示:

然后按照下面的步骤给邮件配置一下这个插件,如下所示:



重启你的邮件APP之后就使用USB链接你的手机,然后安装altStore App到你的手机上。

输入,你的Apple ID以及密码,并点击install:
image.png

安装成功之后,就可以在手机上发现这样一个APP,如下图所示:

紧接着,我们打开手机上的浏览器,下载一下unCover的ipa包,如下图所示:



然后手机上也会出现uncOver APP,打开它,点击设置界面

然后就勾选下面的选项:

然后回到主界面,点击jailbreak按钮,进行越狱,中途出现了如下的广告界面直接关闭掉就可以了

接着会提示你,越狱成功,提示你要关机进行重启,你就点击ok就可以了,如下所示:

关机重启之后,再次打开uncOver应用,再次进入设置页面,进行如下设置:

然后回到主页再次点击jailbreak按钮,就越狱成功了,越狱成功之后手机桌面上也会出现Cydia应用了,你可以在这个Cydia应用中下载一些你需要的插件。

2.OpenSSH与SSH

2.1 什么是OpenSSH

  OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现,它是一款软件,应用非常广泛。 而SSH协议可以用来进行远程控制, 或在计算机之间传送文件。

2.2 什么是SSH

  SSH是一种网络协议,用于计算机之间的加密登录。 1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
  我们可以通过OpenSSH插件可以连接手机,进行远程控制, 或者传送文件。

2.3 SSH登录

SSH登录过程

2.4 中间人攻击

中间人攻击

为了解决中间人攻击这个问题,openSSH网站会有一个自己公钥通过sha256生成的hash值字符串,在每次进行设备连接的时候,也会将这个公钥的hash值字符串发给你,这个时候,你可以做一个对比,看是否与官网上的公钥的hash值字符串一致,如果不一致,那么很有可能就是中间人攻击了。

3.连接手机

3.1 使用wifi连接手机

连接手机命令格式:ssh 用户名@手机IP地址(其实实际上是ssh -p 端口号 用户名@手机IP地址,因为使用的是默认端口22,所有可以省略不写)
在iOS中有两个用户:Root以及Mobile

  • Root用户:最高权限用户,可以访问任意文件。

  • Mobile用户:普通用户,只能访问改用户目录下文件/var/Mobile。
    手机IP地址可以通过下面的方式,打开手机设置->无线局域网->点击你连接的wifi,进到如下界面:



    接着我们就打开终端进行手机连接的操作

  • root用户登录



    首次连接的时候会提示你是否保存服务器端发送过来的公钥,输入yes,这个是用来做安全校验的


  • mobile用户登录


3.2 使用USB连接手机

苹果有一个服务,叫usbmuxd,这个服务主要用于在USB协议上实现多路TCP连接,这个可执行文件所在路径为:/Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd,如下图所示:


3.2.1 设置端口映射

  • 方式1:使用一个Python脚本进行端口映射。
    python脚本文件 密码:wwmq
    将这个文件下载下来后使用tcprelay.py这个脚本文件,打开终端进行以下操作:
python tcprelay.py -t 22:12345 
//将本地的12345端口映射到设备的TCP端口22,这样就可以通过本地的12345端口建立连接了。
image.png
  • 方式2:使用libimobiledevice工具进行端口映射
    首先需要在终端使用命令brew install libimobiledevice安装这个工具,如下图所示:



    安装完成之后,在终端使用这个工具进行端口映射:

iproxy 12345 22

3.2.2 使用USB链接手机

ssh -p 12345 用户名@IP地址
//用户名:root或mobile
//IP地址:127.0.0.1或localhost

3.3 修改登录密码

ROOT用户可以修改所有用户的密码,而Mobile用户只能修改自己的密码,修改用户密码的命令如下:

passwd 用户名
//输入两次新密码,确认修改,因为是登录状态所以不用输入原始密码。
修改用户密码

mobile只能修改自己的密码

3.4 免密登录&公钥登录

免密登录过程图示

3.4.1 首先在本地生成一对公私钥

本地生成公私钥

查看本地生成的公私钥

3.4.2 将本地生成的公钥拷贝到手机中

ssh-copy-id 用户名@手机IP地址
用户名:root或者mobile
手机IP地址:wifi就是wifi的IP地址,USB就是localhost或者127.0.0.1
配置免密登录

设置成功后就可以不用输入密码直接登录上了,如下所示:



查看手机中保存的公钥

3.4.2 废除免密登录

废除免密登录

3.5 配置ssh登录时的别名

在本地(电脑)的~/.ssh目录下创建一个config文件,在其中可以配置ssh登录的别名

Host 别名
Hostname IP地址(wifi链接就是wifiIP地址,USB链接就写localhost或127.0.0.1)
User 用户名 (root或mobile)
Port 端口号(wift链接写成22,USB链接写你映射的端口号)

3.5.1 配置wifi链接登录别名

配置登录
使用别名登录

3.5.2 配置USB链接登录别名

配置登录

使用别名登录

3.6 其他操作

3.6.1 查看手机安装的应用以及运行的进程

查看手机安装的应用

显示手机所有进程

筛选特定进程

3.6.2 查看本地保存的ssh服务服务器的IP地址及对应公钥

  你可以在本地路径 /Users/你的用户名/.ssh中的knoww_hosts文件中查看这些内容,如下所示:


3.6.3 查看服务器中ssh服务器发送给连接中的公钥

  你可以在SSH服务器中/etc/ssh路径中查看到保存公钥以及私钥的文件,如下图所示:


image.png

3.6.5 可以使用如下命令删除本地保存的用户名IP地址对应的公钥信息

ssh-keygen -R 服务器IP地址

使用如下:
查看要删除的公钥



使用命令删除


3.6.4 中间人攻击报错解决方案

  当你使用相同的用户名以及IP地址登录SSH服务器时遇到中间人攻击保存禁止登录时,是因为你的本地的knoww_hosts文件中以及保存了一份对应的服务器的IP地址及公钥,当本地进行SSH服务登录的时候发现这个用户名及IP地址对应的公钥发送了变换,就会认为遭到了中间人攻击,如下所示:


中间人攻击报错

可以使用3.6.5中的方式删除本地保存的用户名IP地址对应的公钥信息。
如果上面的方式行不通,你可以自己编辑/Users/你的用户名/.ssh/known_hosts文件中删除对应的公钥信息,删除之后就可以登录了。

4 SSH快捷链接

4.1创建文件

创建两个文件ssh_connect.sh(提供USB链接的端口映射),l_xs.sh(USB方式连接ssh服务器)


image.png

4.2 在~/.zshrc文件中配置这两个文件路径的环境变量并使用

4.3 快捷链接使用

进行端口映射

SSH登录

你可能感兴趣的:(iOS逆向学习笔记16(手机越狱以及SSH连接手机))