iOS逆向开发(一)----SSH
前期准备:一台iOS9.1完美越狱手机,越狱手机上安装
Cydia
,Apple File Conduit 2
,AppleSync Unified
,iFile
,PP助手
,Mac电脑上安装iFunBox
,PP助手
.
iOS和Mac OSX都是基于Darwin(苹果的基于Unix的开源系统内核),iOS中同样可支持终端来操作我们的iPhone,在逆向工程中通过命令行来操作我们的iPhone,为了能够让Mac终端中的命令行能作用在iPhone上,我们得让Mac和iPhone建立连接.
SSH
,Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议,使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗.
OpenSSH
,是SSH
协议的免费开源实现,可以通过OpenSSH
的方式让Mac远程登录到iPhone.在iPhone上通过Cydia
安装OpenSSH
工具.
SSH
是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个WiFi,在Mac的终端输入ssh 账户名@服务器主机地址,初始密码alpine,登录成功后就可以使用终端命令行操作iPhone,退出登录命令是exit
.
iOS下有2个常用账户:root、mobile,root为最高权限账户,在/var/root下, mobile:普通权限账户,只能操作一些普通文件,不能操作系统级别的文件,在/var/mobile下,登录mobile用户:root mobile@服务器主机地址, root和mobile用户的初始登录密码都是alpine
修改root和mobile用户的登录密码,登录root账户后,分别通过passwd、passwd mobile完成.
SSH协议一共2个版本,SSH-1和SSH-2,现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信,查看SSH版本,就是查看配置文件的Protocol字段,客户端:/etc/ssh/ssh_config,服务端:/etc/ssh/sshd_config.
SSH的通信过程可以分为3大主要阶段:建立安全连接,客户端认证和数据传输.如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器.
客户端的公钥放在~/.ssh/known_hosts目录下,服务端的公钥放在/etc/ssh/ssh_host_rsa_key.pub目录下.
如果遇到同样的服务器ip地址公钥不一样,会提示中间人攻击,如果确定要连接此服务器,删除掉之前服务器的公钥信息就行: ssh-keygen -R 服务器IP地址,或者直接打开known_hosts文件删除服务器的公钥信息就行.
SSH-2提供了2种常用的客户端认证方式,1基于密码的客户端认证,使用账号和密码即可认证
.2基于密钥的客户端认证,免密码认证,是最安全的一种认证方式,SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试“密码认证.
SSH - 基于密钥的客户端认证
在客户端生成一对相关联的密钥(Key Pair):一个公钥(Public Key),一个私钥(Private Key), OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型,生成的公钥:/.ssh/id_rsa.pub,生成的私钥:/.ssh/id_rsa.把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部: ssh-copy-id root@服务器主机地址, ssh-copy-id会将客户端/.ssh/id_rsa.pub的内容自动追加到服务器的/.ssh/authorized_keys尾部.
也可以通过scp命令,scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上, 1.scp ~/.ssh/id_rsa.pub root@服务器主机地址:~. 2.SSH登录服务器,ssh root@服务器主机地址,需要输入root用户的登录密码. 3.在服务器创建.ssh文件夹, mkdir .ssh. 4.追加公钥内容到授权文件尾部, cat ~/id_rsa.pub >> ~/.ssh/authorized_keys. 5.删除公钥, rm ~/id_rsa.pub.
如果配置了免密码登录后,还是需要输入密码,需要在服务器端设置文件权限,
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
通过USB进行SSH登录
Mac上有个服务程序usbmuxd(它会开机自动启动),可以将Mac的数据通过USB传输到iPhone.在/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd路径下.
下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个python脚本:tcprelay.py),将iPhone的22端口(SSH端口)映射到Mac本地的8080(非保留端口就可以)端口. cd到client目录下:cd ~/usbmuxd-1.0.8/python-client,然后转发端口python-client admin$ python tcprelay.py -t 22:8080.不要关闭掉此窗口.
然后新开窗口输入指令:ssh [email protected] -p 8080进行登录, usbmuxd会将Mac本地8080端口的TCP协议数据,通过USB连接转发到iPhone的22端口.