逆向思路
- 界面分析:cycript, reveal, viewdebug, monkeydev
- 静态分析:MachOView, class-dump, Hopper, ida
- 动态调试:debugserver, lldb, monkeydev
- 代码注入: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大主要阶段
- 建立安全连接
- 在建立安全连接过程中,服务器会提供自己的身份证明
/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
- 客户端认证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
# 保证文件权限
- 数据传输(把指令传输给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
- sh,bash。执行.sh文件会在当前shell环境会启动一个子进程来执行脚本文件,执行后返回到父进程的shell环境
(未完,待续...)