再谈安全

逆向思路

  1. 界面分析:cycript, reveal, viewdebug, monkeydev
  2. 静态分析:MachOView, class-dump, Hopper, ida
  3. 动态调试:debugserver, lldb, monkeydev
  4. 代码注入:theos, chhook, monkeydev

SSH

  • Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议
  • 使用SSH,可以把所有的传输的数据进行加密。“中间人”嗅探器抓数据包攻击方式就不可能实现,能防止IP,DNS欺骗
  • ssh是一种协议没有具体实现, OpensSS是他的免费开源实现
  • ssh是通过TCP协议通信
  • SSL Secure Sockets Layer的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密
  • OpenSSL是对SSL的开源实现(绝大部分的HTTPS请求等价于 HTTP+OpenSSL)
  • OpenSSH的加密就是通过OpenSSL完成的
ssh 用户名@ip地址
  • ssh协议一共两个版本,SSH-1,SSH-2,客户端和服务端版本要保持一致
cat /etc/ssh/ssh_config #作为客户端 protocol
cat /etc/ssh/sshd_config #作为服务端
  • SSH通信过程3大主要阶段
  1. 建立安全连接
  • 在建立安全连接过程中,服务器会提供自己的身份证明/etc/ssh/ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key。服务器发送公钥等信息给客户端,询问客户端(第一次会提示让我们选yes/no)
ssh root@112.124.109.241 
>>
The authenticity of host '112.124.109.241 (112.124.109.241)' can't be established.
ECDSA key fingerprint is SHA256:kl18FT9YLGwGQ10NPsrvq/iuIztBXheh2h+LEDb0gmg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 
  • 用户确定后,客户端会把服务器发过来的公钥存储到~/.ssh/known_hosts(第二次登录时不需要安全认证)
  • 如果再次登录 同样的ip换了机器,由于公钥不同,会提示中间人攻击。此时需要删掉公钥信息
# 重现 直接去 ~/.ssh/known_hosts文件删
ssh-keygen -R 112.124.109.241
  1. 客户端认证SSH-2
  • 账号密码
  • 基于密钥的认证。就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登 录shell,不再要求密码。
# 在客户端生成一对密钥
ssh-keygen #一路敲回车 ssh-keygen -t rsa 由于openssl默认采用RSA加密,此处不用指定
# 将公钥内容追加到服务器的授权文件尾部,此文件存放所有的客户端的公钥
ssh-copy-id user@host #自从执行下述命令
ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
# 还可以用scp把文件cp到服务器
scp ~/.ssh/id_rsa.pub root@ip:~/.ssh/xx.pub
cat xx.pub >> authorized_keys #追加,如果不存在则创建文件
rm xx.pub
# 保证文件权限
  1. 数据传输(把指令传输给iphone).
  • ssh默认使用22端口对外提供服务,通过WIFI网络走TCP
  • Mac上/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd可以将Mac的数据通过USB传输到iPhone,下载usbmuxd工具包,
  • 端口转发,通过USB提高数据传输速度(敲命令快点)
iproxy 2222(非保留端口) 22 #>> Creating listening port 2222 for device port 22
ssh root@localhost
ssh root@localhost -p 2222
scp macflie root@localhost:~/xx.file -P 2222 #此处是大写的P

ssh流程图

  • sh,bash。执行.sh文件会在当前shell环境会启动一个子进程来执行脚本文件,执行后返回到父进程的shell环境

(未完,待续...)