iOS逆向与安全7.1:越狱环境以及登录设备

越狱(jailBreak)

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

iOS系统安全启动链

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

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

完美越狱&非完美越狱

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

完美越狱

所谓完美越狱就是破解iOS系统漏洞之后,每次系统重启都能自动调用注入的恶意代码,达到破坏安全验证,再次获得ROOT权限。

非完美越狱

所谓非完美越狱是指,越狱系统后,并没有完全破解安全链,有部分信息或功能应用不佳;比如;关机以后必须去连接越狱软件来引导开机;或者重启会导致越狱的失效;这样的越狱称为“不完美越狱”。

安装插件

Apple File conduit2 文件访问
AppSync Unified 绕过插件签名检测
adv-cmds 命令行工具

OpenSSH连接手机

先要安装OpenSSH插件

连接手机

  • 通过插件使用Wifi连接手机:ssh 用户名@手机IP地址
$ssh [email protected]

默认密码:alpine

首次连接会提示保存key
  • ios设备下的用户 Root、mobile

Root用户:最高权限用户,可以访问任意文件
Mobile用户:普通用户,只能访问改用户目录下文件/var/Mobile

  • 修改密码
    ROOT用户可以修改所有用户的密码
    $passwd 命令修改密码
    输入两次新密码,确认修改,因为是登录状态所以不用输入原始密码。
$passwd root
$passwd mobile

OpenSSH

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。 SSH协议可以用来进行远程控制, 或在计算机之间传送文件。

SSH

SSH是一种网络协议,用于计算机之间的加密登录。
1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

OpenSSH

它是一款软件,应用非常广泛。

SSH登录过程
iOS逆向与安全7.1:越狱环境以及登录设备_第1张图片
SSH登录过程
中间人攻击(Man-in-the-middle attack) 劫持公钥

存在一种隐患.如果有人冒充服务器.将生成的虚假公钥 发给客户端.那么它将获得 客户端连接服务器的 密码

iOS逆向与安全7.1:越狱环境以及登录设备_第2张图片
SSH登录过程,中间人攻击,劫持公钥
防止中间人攻击

首次登录保存了公钥key,每次登录时拿之前保存的key得hash值和登录时服务器(此时是越狱手机)传回得key得hash值做对比,一般网站会把公钥key得hash公布

SSH其他操作
  • 删掉保存的服务器地址的key
ssh-keygen –R 服务器IP地址(当SSH登录手机,手机就是服务器)
  • know_hosts文件:用于保存SSH登录服务器所接受的key
    在系统~/.ssh 目录中保存
  • ssh_host_rsa_key.pub文件:作为SSH服务器发送给连接者的key

在系统/etc/ssh 目录中保存

  • 连接手机后,打开应用,查看应用目录
ps -A | grep WeCh
查看应用目录
免密码登录

免密码登录也称“公钥登录”,原理就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录 不再要求密码。

  • 客户端在~/.ssh/目录下生成公钥 $ ssh-keygen
  • 拷贝公钥给SSH服务器 $ssh-copy-id 用户名@服务器IP

配置免密登录

cd 到~/.ssh目录下
~/.ssh

删掉公私钥
rm id_rsa.pub
rm id_rsa

重新生成
ssh-keygen //生产公私钥

拷贝公钥给SSH服务器
ssh-copy-id [email protected]

免密登录
ssh [email protected]

iOS逆向与安全7.1:越狱环境以及登录设备_第3张图片
重新生成公私钥
iOS逆向与安全7.1:越狱环境以及登录设备_第4张图片
拷贝公钥给SSH服务器
免密登录

免密key保存在服务端(越狱手机)的~/.ssh目录下 authorized_keys文件,该文件有有读写权限才可以用来免密登录


iOS逆向与安全7.1:越狱环境以及登录设备_第5张图片
服务端(越狱手机)保存免密登录key位置
设置别名
- Config文件
 在~/.ssh 目录下创建一个config文件。内部可以配置ssh登录的别名。
vi config
Host 别名
Hostname IP地址
User 用户名
Port  端口号
iOS逆向与安全7.1:越狱环境以及登录设备_第6张图片
Config文件内容

使用别名登录

ssh 5s
别名登录免密登录

USB登录

苹果有一个服务,叫usbmuxd,这个服务主要用于在USB协议上实现多路TCP连接.

Python脚本端口映射:

ssh 默认端口22
python tcprelay.py -t 22:12345 

将本地的12345端口映射到设备的TCP端口22.这样就可以通过本地的12345端口建立连接了。

通过127.0.0.1:12345就可以连接  127.0.0.1是本地回环地址,也就是电脑网卡

通过USB进行SSH连接:

ssh -p 12345 [email protected]
ssh连接本地的12345,由于做了端口映射,所以会通过usb连接对面设备的22端口。

地址映射

Iproxy端口映射

安装libimobiledevice工具

$ brew install libimobiledevice

映射端口
iproxy 12345 22 

登录失败 删除~/.ssh/known_hosts下相同ip key


iOS逆向与安全7.1:越狱环境以及登录设备_第7张图片
登录失败

脚本连接

拷贝python脚本


iOS逆向与安全7.1:越狱环境以及登录设备_第8张图片
拷贝python脚本

多个手机壳创建多个脚本


创建脚本
iOS逆向与安全7.1:越狱环境以及登录设备_第9张图片
创建脚本

拷贝文件

scp 源文件目录 目标目录 、拷贝多个文件时 空格分开
scp 123.txt [email protected]

拷贝手机到电脑:wifi ssh连接
iOS逆向与安全7.1:越狱环境以及登录设备_第10张图片
拷贝手机到电脑:usb ssh连接

总结 越狱SSH

  • 越狱:通过找到iOS安全启动链的漏洞,禁止校验的组件,拿到系统的最大权限ROOT权限
    • 完美越狱:每次系统启动的时候都会再次进入越狱状态。
    • 非完美越狱:没有完全破解,有部分功能不能使用。一般重启后就会失去越狱权限。
  • 安全常用插件:AFC2、APPSync、OpenSSH
  • OpenSSH
    • SSH 一种网络协议、OpenSSH一款软件
    • SSH登录过程
      • 远程服务器收到用户登录请求,将自己的公钥发给用户
      • 用户使用公钥,将登录密码加密发给服务器
      • 服务器通过私钥,解密密码,校验。
    • 中间人攻击:冒充服务器,将假公钥发给客户端。
    • 服务器保护:
      • 客户端将第一次登录服务器得到的公钥保存在本地。
        • KEY存在 ~/.ssh/known_hosts文件
      • 一般SSH服务器会将自己的KEY的HASH值公布在网站在。
    • 免密码登录(公钥登录)
      • 生成一对公私钥。$ssh-keygen
      • $ssh-copy-id 服务器 将公钥拷贝到SSH服务器上
      • 原理:
        • 用户将自己的公钥存储在远程服务器上
        • 登录时,服务器会先发一段随机字符
        • 客户端利用私钥加密字符,发给服务器
        • 服务器利用存取的公钥解密。校验是否成功!登录过程就不在需要密码了!!
    • 取别名
      • ~/.ssh目录中有一个config 用来配置SSH
      • 通过Host(别名)、Hostname(IP)、User(用户名)、Port(端口)
  • 端口映射
    • python脚本:脚本 -t 映射端口 本地端口
    • iproxy:iproxy 本地端口 映射端口
iOS逆向与安全7.1:越狱环境以及登录设备_第11张图片
总结1
iOS逆向与安全7.1:越狱环境以及登录设备_第12张图片
总结2

你可能感兴趣的:(iOS逆向与安全7.1:越狱环境以及登录设备)