iOS逆向学习之二(Mac远程操控iPhone)

SSH、OpenSSH

SSH

  • 是Secure的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议
  • 使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗

OpenSSH

  • 是SSH协议的免费开源实现
  • 我们可以通过OpenSSH让Mac远程登录到iPhone

如何使用OpenSSH远程登录到iPhone?

安装OpenSSH

  • 首先,需要在iPhone上通过Cydia安装OpenSSH工具,通过添加软件源http://apt.saurik.com进行安装。
  • 安装完成之后,可以通过查看OpenSSH下的【DESCRIPTION】来查看使用步骤。

使用OpenSSH远程登录iPhone

  • SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下

  • 具体连接步骤:

    • 在Mac终端输入<font color=red>ssh 账户名@服务器主机地址</font>
    ssh root@192.168.199.105
    
    • 如果是第一次登录,会弹出权限验证,输入yes即可
    • 然后会让你输入密码,OpenSSH的默认密码是:<font color=red>alpine</font>
    • 输入完密码就登录到了iPhone上。
    • 如果要退出登录,输入<font color=red>exit</font>即可
  • 在iPhone上有两种用户,root和mobile

    • root是最高权限账户,$HOME是/var/root
    • mobile是普通权限账户,只能操作一些普通文件,不能操作系统级别的文件,$HOME是/var/mobile,mobile用户登录方式同root账户
    • 登录root和mobile账户之后,可以通过以下命令来修改root账户和mobile账户的登录密码。
    passwd
    passwd mobile
    

SSL、OpenSSL

SSL

  • Secure Sockets Layer的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密

OpenSSL

  • 是SSL的开源实现
  • 现在大部分的Https请求其实就是等价于:Http+OpenSSL
  • 我们之前使用的OpenSSH加密其实就是通过OpenSSL来来实现的。

SSH的通讯过程

SSH的通信过程主要分为3个阶段

建立安全连接

  • 在建立安全连接的过程中,服务器会提供自己的身份证明.
  • 如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器.
  • 如果确认连接,则客户端会将服务器的公钥信息存放到<font color=red>~/.ssh/known_hosts</font>中
  • 如果服务器的ip地址发生改变,可以通过删除<font color=red>~/.ssh/known_hosts</font>中已经存在的公钥信息,然后重新访问即可。
  • 除了手动删除公钥信息的方式,还可以使用如下命令来删除
ssh-keygen -R 服务器ip地址

客户端认证

ssh2提供两种账号认证方式

基于密码的客户端验证

基于秘钥的客户端验证(免密码登录)

  • 通过以下命令在客户端生成一对相关联的密钥(Key Pair):一个公钥(Public Key),一个私钥(Private Key),
ssh-keygen

此时~/.ssh文件夹下会多出两个文件id_rsa、id_rsa.pub

  • 把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部
ssh-copy-id root@服务器主机地址
  • 也可以手动将公钥追加到服务器的授权文件中

    • 复制客户端的公钥到服务器某路径
    scp ~/.ssh/id_rsa.pub root@服务器主机地址:~
    
    • SSH登录服务器
    ssh root@服务器主机地址
    
    • 在服务器创建.ssh文件夹
    mkdir .ssh
    
    • 追加公钥内容到授权文件尾部
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    
    • 删除公钥
    rm ~/id_rsa.pub
    

如果设置了免密码登录之后,还是需要输入密码。那么就需要在服务器端设置文件权限,使用如下命令:

chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

数据传输

通过USB进行SSH登录

22端口

  • 端口就是设备对外提供服务的窗口,每个端口都有个端口号(范围是0~65535,共2^16个)
  • 有些端口号是保留的,已经规定了用途
  • iPhone默认是使用22端口进行SSH通信,采用的是TCP协议

通过USB进行SSH登录

  • 默认情况下,由于SSH走的是TCP协议,Mac是使用SSH通过网络连接的方式登录到iPhone,要求iPhone连接WiFi
  • 为了加快传输速度,也可以通过USB连接的方式进行SSH登录。
  • Mac上有个服务程序usbmuxd(它会开机自动启动),可以将Mac的数据通过USB传输到iPhone,程序在如下地址:
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd

使用usbmuxd工具来进行端口映射

  • 通过以下地址下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的两个python脚本:tcprelay.py和usbmux.py)
    点击下载

这两个python脚本在python3下运行会失败,需要在python2版本运行

  • 通过以下命令,将iPhone的22端口(SSH端口)映射到Mac本地的10088端口

这里的10088端口可以自己随意定义,只要不使用保留的端口号就行。

cd ~/Documents/usbmuxd-1.0.8/python-client
python tcprelay.py -t 22:10088

这里加上-t是为了同时支持多个ssh连接。<font color=red>注意:要想保持端口映射状态,不能终止此命令行(如果要执行其他终端命令行,请新开一个终端界面)</font>

  • 端口映射完毕后,以后如果想跟iPhone的22端口通信,直接跟Mac本地的10088端口通信就可以了
  • 新开一个终端界面,使用如下命令SSH登录到Mac本地的10088
ssh root@localhost -p 10088

usbmuxd会将Mac本地10088端口的TCP协议数据,通过USB连接转发到iPhone的22端口

  • 远程拷贝文件也可以直接跟Mac本地的10010端口通信
#将Mac上的~/Desktop/1.txt文件,拷贝到iPhone上的~/test路径
scp -P 10088 ~/Desktop/1.txt root@localhost:~/test

使用itnl工具来进行端口映射

  • 首先下载itnl工具
  • cd到itnl工具所在目录
  • 执行命令
./itnl --lport 22 --lport 10088

如果出现permission deny,则使用chmod 755 itnl为itnl增加执行权限

  • 不要关闭当前窗口,新开一个终端窗口,使用如下命令登录到mac的10088端口
ssh root@localhost -p 10088

iOS终端的中文乱码问题

默认情况下,终端不支持显示中文,解决方案:新建一个~/.inputrc文件,文件内容是:

#不将中文字符转化为转义序列
set convert-meta off 

#允许向终端输出中文
set output-meta on

#允许向终端输入中文
set meta-flag on 
set input-meta on

如果是想在终端编辑文件内容,可以通过Cydia安装一个Vi IMproved(软件源http://apt.saurik.com

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容