iOS逆向-day2:逆向环境搭建-SSH 安全连接(下)

简介: iOS逆向-day2:逆向环境搭建-SSH 安全连接(下)

六、SSH-客户端认证


  • 6.1、SSH-2 提供了2种常用的客户端认证方式
  • 第一种(我们在 用到的密码登录):基于密码的客户端认证(使用账号和密码即可认证)
  • 第二种:基于密钥的客户端认证 (免密码认证,最安全的一种认证方式)


提示:SSH-2 默认会优先尝试 “密钥认证”,如果认证失败,才会尝试 “密码认证”


  • 6.2、搭建 SSH - 基于密钥的客户端认证(也就是可以省略密码登录的过程)


image.png

  • 首先要在客户端生成公钥与私钥,然后把公钥传给服务器,将公钥内容追加到授权文件尾部,在登录验证的时候,服务器发送一个登录信息过来,使用私钥进行解密或者其他的操作(不仅仅是这些操作,后面都会阐述),解密成功的话进行登录


  • <1>、在客户端生成一对相关联的密钥(Key Pair):一个公钥(Public Key),一个私钥(Private Key)
  • ssh-keygen
  • 一路敲回车键(Enter)即可
  • OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型
  • 生成的公钥:~/.ssh/id_rsa.pub
  • 生成的私钥:~/.ssh/id_rsa


image.png<2>、把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部


  • ssh-copy-id root@服务器主机地址
  • 需要输入root用户的登录密码
  • ssh-copy-id会将客户端~/.ssh/id_rsa.pub的内容自动追加到服务器的~/.ssh/authorized_keys尾部


image.png

注意:由于是在~文件夹下操作,所以上述操作仅仅是解决了root用户的登录问题(不会影响mobile用户),也就是root用户再使用 ssh root@IP地址 不再需要密码,而mobile用户是需要密码的


image.png


七、SSH-远程拷贝-文件权限



这里以上面 基于密钥的客户端认证的手动操作

  • 7.1、可以使用 ssh-copy-id 将客户端的公钥内容自动追加到服务器的授权文件尾部,也可以手动操作,复制客户端的公钥到服务器某路径


scp ~/.ssh/id_rsa.pub root@服务器主机地址:~


  • scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上
  • 上面的命令行将客户端的~/.ssh/id_rsa.pub拷贝到了服务器的~/.ssh/地址


  • 具体的细节
  • SSH登录服务器:ssh root@服务器主机地址
  • 在服务器创建.ssh文件夹: mkdir .ssh
  • 追加公钥内容到授权文件尾部:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  • 删除公钥:rm ~/id_rsa.pub


提示: ~ 指的是用户目录,登录的是root的话就是:/var/root


  • 7.2、如果上面的操作都做完了还是无法基于密钥的客户端认证(也可以说免密登录),那就是和权限有关的问题了,设置下下面的权限

    image.png


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


八、22端口



  • 8.1、端口:就是设备对外提供服务的窗口,每个端口都有个端口号(范围是0~65535,共2^16个)
  • 8.2、有些端口号是保留的,已经规定了用途,比如
  • 21端口提供FTP服务
  • 80端口提供HTTP服务
  • 22端口提供SSH服务(可以查看/etc/ssh/sshd_config的Port字段)
  • 更多保留端口号
  • 8.3、iPhone默认是使用22端口进行SSH通信,采用的是TCP协议


image.png


image.png

cat /etc/ssh/sshd_config


九、通过USB进行SSH登录



  • 9.1、使用USB进行SSH登录的原因是:在上面
    我们是通过同一个WIFI的情况下进行的SSH登录,在终端操作的时候可以感觉到输入内容很慢,这个时候我们可以可以使用USB进行SSH登录
  • 9.2、默认情况下,由于SSH走的是TCP协议,Mac是通过网络连接的方式SSH登录到iPhone,要求iPhone连接WiFi


image.png


9.3、为了加快传输速度,也可以通过USB连接的方式进行SSH登录,Mac上有个服务程序 usbmuxd它会开机自动启动),可以将Mac的数据通过USB传输到iPhone


  • usbmuxd的路径在:/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd


image.png

image.png


十、usbmuxd 的使用



  • 10.1、下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的2个python脚本:tcprelay.pyusbmux.py



image.png

10.2、将iPhone的 22 端口(SSH端口)映射到Mac本地的 10010 端口(不一定非是10010端口,只要不是保留端口就好),做完下面的操作我们会发现再终端操作不会卡了

image.png

提示:映射窗口不要关闭,在SSH登录的时候 新开窗口操作,保持至少两个窗口,因为可能 连接 多个手机的 22 端口


  • 端口映射完毕后,以后如果想跟iPhone的22端口通信,直接跟Mac本地的10010端口通信就可以了


ssh root@localhost -p 10010
ssh root@127.0.0.1 -p 10010


  • localhost 是一个域名,指向的IP地址是 127.0.0.1,本机虚拟网卡的IP地址
  • usbmuxd会将Mac本地10010端口的TCP协议数据,通过USB连接转发到iPhone的22端口


  • 10.3、远程拷贝文件也可以直接跟Mac本地的10010端口通信


scp -P 10010 ~/Desktop/1.txt root@localhost:~/test


  • 将Mac上的~/Desktop/1.txt文件,拷贝到iPhone上的~/test路径


image.png

提示:注意:scp的端口号参数是大写的 -P


十一、利用 sh 脚本设置快捷方式



  • 11.1、我们可以将经常执行的一系列终端命令行放到sh脚本文件中(shell),然后执行脚本文件,举例如下
  • <1>、usb.sh脚本的举例:我们在使用 USB连接用户的iPhone的时候,每次都要执行 10.1tcprelay.py 这个脚本,我们可以把 tcprelay.py 存到一个固定位置,比如说我把它存在了桌面的 Jailbreak 文件夹,路径就成为了 /Users/wangchong/Desktop/Jailbreak/tcprelay.py,我们在 将iPhone的 22 端口(SSH端口)映射到Mac本地的 10010 端口就变成为如下的命令


python /Users/wangchong/Desktop/Jailbreak/tcprelay.py


  • 但是我们每次再映射的时候都要执行上面的命令,为了解决每次的麻烦,我们可以使用 sh脚本,比如我在用户目录下创建一个 usb.sh 脚本文件,把上面的路径复制进去,如下


image.png


当我们再次执行映射的时候可以直接如下操作

sh usb.sh


image.png

  • <2>、login.sh脚本的举例:同样创建一个  login.sh 文件里面写入要执行登录的脚本文件:ssh root@localhost -p 10010,执行脚本如下


sh login.sh
  • <3>、总结:我们在每次映射和登录iPhone连接的时候可以执行下面的两个脚本命令,但是要是在两个窗口,先映射后登录


sh usb.sh
sh login.sh
  • 11.2、扩展:我们在执行脚本的时候不仅仅使用 sh,还有bashsource命令来执行sh脚本文件


  • shbash
  • 当前shell环境会启动一个子进程来执行脚本文件,执行后返回到父进程的shell环境
  • 执行cd时,在子进程中会进入到cd的目录,但是在父进程中环境并没有改变,也就是说目录没有改变
  • source
  • 在当前的shell环境下执行脚本文件
  • 执行cd后会跳转到cd的目录
  • source 可以用一个点"."来替代,比如". test.sh"


  • 11.3、source 与 shbash的区别
  • source执行的脚本如果是执行 cd 路径的时候,执行后 显示路径


image.png

shbash 执行的脚本如果是执行 cd 路径的时候,执行后 不会 显示路径


image.png

十二、Mac连接iPhone终端的中文乱码问题



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


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


image.png

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


image.png

12.2、做完上面操作后的效果如下


image.png

目录
相关文章
|
7天前
|
Java 数据库连接 网络安全
JDBC常用特性-SSH隧道连接
JDBC常用特性-SSH隧道连接
|
4月前
|
Ubuntu Shell 网络安全
安装了ubuntu虚拟机后发现shell无法连接 ubuntu开启ssh连接
【8月更文挑战第23天】安装了ubuntu虚拟机后发现shell无法连接
337 6
|
2月前
|
网络安全 数据安全/隐私保护 C++
VS Code 的SSH连接不成功问题分析与解决
VS Code 的SSH连接不成功问题分析与解决
|
4月前
|
安全 Linux 网络安全
Docker部署ssh连接工具webssh2
【8月更文挑战第2天】Docker部署ssh连接工具webssh2
325 6
Docker部署ssh连接工具webssh2
|
4月前
|
存储 安全 测试技术
【超实用却暗藏杀机】sshpass:一键免密SSH登录的神器,为何生产环境却要敬而远之?探秘背后的安全隐患与替代方案!
【8月更文挑战第16天】sshpass 是一款便捷工具,可实现自动化SSH登录,简化脚本中的远程连接流程。通过后台自动处理密码输入,便于执行远程操作,如 `sshpass -p &#39;yourpassword&#39; ssh user@remotehost`。也可结合更多SSH选项使用,例如指定私钥文件。然而,因需明文传递密码,存在较大安全隐患,不适于生产环境;推荐使用公钥认证以增强安全性。
276 4
|
4月前
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
53 3
|
4月前
|
监控 网络安全 数据安全/隐私保护
Mac服务器ssh连接工具
Mac服务器ssh连接工具
130 2
|
4月前
|
存储 安全 算法
如何使用 PuTTY 创建 SSH 密钥以连接到 VPS
如何使用 PuTTY 创建 SSH 密钥以连接到 VPS
79 2
|
4月前
|
网络安全 数据安全/隐私保护
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
1155 0
|
4月前
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?