1逆向 - 环境准备

 

Cydia

越狱之后的苹果商店

作者:Jay Freeman - 免费版周杰伦...(阿婆主ID: saurik)

上一张照片膜拜下...越狱开发的领袖人物

Cydia上软件的作者是他的,都可以放心食用~

Cydia安装东西

一般是用来安装插件和主题的,安装的软件格式是deb格式

deb包是用apt进行管理的

安装东西方法:

  1. 添加软件源
  2. 进入软件源,找到对应的软件开始安装

SpringBoard

就是iOS操作系统的桌面

常用工具安装

Apple File Conduit "2"

保证可以访问iOS设备的文件系统

AppSync Unified

绕过系统验证,随便安装破解的ipa包

iFile

在iPhone上访问文件系统

Cydia安装失败

使用离线安装

  1. 下载deb格式安装包
  2. 把相关的deb包拖到 iPhone中,路径:/var/root/Media/Cydia/AutoInstall
  3. 重启手机

判断当前设备是否越狱

思路:判断当前设备有木有安装Cydia

Cydia路径: 

BOOL isJailBreak = [[NSFileManager defaultMananger] fileExistsAtPath@"/Applications/Cydia.app"];

逆向环境搭建

效率工具安装

Alfred

基本用法: find 文件名 (功能与spolight相似)

WorkFlow文档:https://www.alfredapp.com/help/workflows/

XtraFinder

iTerm2

Go2Shell

SSH连接iPhone

目的: 通过ssh连接到iPhone

基本概念

SSH

安全外壳协议 - 仅仅是一个协议,木有实现

作用:防止网络嗅探,防止DNS欺骗

说明:使用TCP协议通讯,需要确保iPhone和Mac在同一个局域网下... 其实有方案可以远程登录,需要用到域名解析参考

SSH配置文件

路径: etc/ssh

客户端配置文件: ssh_config

服务端配置文件: sshd_config

SSH通讯过程
  1. 建立安全连接(验证连接是安全的)
    1. 验证服务器是想要连接的(防止通过伪造ip地址的方式冒充服务器进行攻击) - 服务器告诉客户端他是谁
      1. 服务端提供自己的身份证明
        1. 服务端(iPhone)公钥和私钥
          1. 公钥: /etc/ssh/ssh_host_rsa_key.pub
          2. 私钥: /etc/ssh/ssh_host_rsa_key
        2. 服务器发送公钥给客户端
        3. 客户端(初次登录)拿到公钥,存到~/.ssh/know_hosts中
          1. 这串东东是客户端根据服务端传过来的公钥计算出来的
          2. 如果这串东东和服务端的公钥匹配,yes即可
            1. 服务端的公钥信息: 可以从服务端的/etc/ssh/ssh_host_rsa_key.pub中看到
          3. yes之后,公钥就存储到client中,know_hosts会更新
            1. 这串和服务端中看到的一致,说明公钥是正确的,服务端是我们的服务端
        4. 客户端第二次连接
          1. 如果公钥不一样
            1. 提醒可能遭遇了中间人攻击
            2. 其他情况: 如果本地有两台服务器,IP一样,但是公钥不一样...
              1. 方案一: 删掉know_hosts中之前的记录
              2. 方案二: ssh-keygen -R IP地址
          2. 如果公钥一致,就会直接连接
  2. 客户端认证
    1. 两种常用的客户端认证方式
      1. 基于密码的客户端认证
        1. 认证成功则登录成功
        2. 弊端:
          1. 麻烦
          2. 不太安全
      2. 基于密钥的客户端认证(默认的认证方式)
        1. 特点:
          1. 安全
          2. 方便
        2. 环境搭建
          1. 客户端把公钥存到服务端
          2. 登录认证
            1. 通过公私钥对信息进行加解密,以进行身份认证
        3. 实现
          1. 客户端生成密钥对
            1. 命令:ssh-keygen
            2. 结果:生成了id_rsa私钥和id_rsa.pub公钥
          2. 将公钥追加到授权文件的尾部
            1. 命令:ssh-copy-id root@服务端IP地址
          3. 服务端文件权限配置
            1. 命令:
              1. chmod 755 ~/.ssh
              2. chome 644 ~/.ssh/authorized_keys
  3. 数据传输
    1. 文件拷贝: scp 本地路径 服务端IP:路径
22端口

  21:FTP

  80:HTTP

  22:SSH/TCP

mac通过ssh连接,默认连接到了iPhone的22端口

USB-SSH连接

SSH默认通过TCP连接两端的22端口

可以通过mac的usbmuxd这个服务程序,将mac的数据通过USB传输到iPhone

方案

  1. 让SSH端口连接到本机的某个端口(如: 38438端口)
  2. 438端口通过usbmuxd映射到iPhone22端口

实现

  1. 端口映射:python tcprelay.py -t 22:38438  (脚本文件见下方压缩包) 
    1. 脚本参数用法 手机端口号:要连接到的mac端口号
    2. 上面一句的意思:把mac的38438和iPhone的22端口连接起来,之后所有发给mac 38438的数据,都会通过usbmuxd转发给手机线上连接的另一台设备的22端口
    3. 注: 需要使用Python2.7运行
  2. ssh到本地38438:ssh root@localhost -p 38438
  3. 直接在.ssh/config中写好配置,使用 ssh 别名  连接到手机
Host yoe # 对,这个就是我的iPhone的别名...
  HostName localhost
  IdentityFile ~/.ssh/yoe_id_rsa
  Port 38438
  User root

usbmuxd.zip

 Keyword - SSH.alfredworkflow

OpenSSH

SSH的开源实现

SSL

Secure Sockets Layer - 为网络数据在传输层进行加密,是一种安全协议

OpenSSL

SSL的开源实现

OpenSSH的数据加密就是使用OpenSSL完成的

SSH和SSL的关系

连接方法

  1. iPhone安装OpenSSH
  2. ssh root@iPhoneIP地址
  3. 默认密码:alpine

iOS账号系统

root

mobil

注意:修改账户密码

其他注意

iOS下,terminal默认不支持中文输入

方案: 新建一个~/.inputrc文件,文件内容是

# 不将中文字符转化为转义序列
set convert-meta off 
# 允许向终端输出中文
set output-meta on
# 允许向终端输入中文
set meta-flag on 
set input-meta on