一、关于越狱(Jailbreak)的介绍
越狱目前已经被苹果官方认可,不涉及违法功能,越狱主要是我们可以分析其他app的功能介绍,参考其功能的实现,也可以改变苹果自带的功能,打造个性化设计
1.越狱的优缺点
优点:
缺点:
1)不予保修
2)费电,越狱后的ios系统会常驻一些进程,耗电速度约提升10%-20%
4)不再受ios系统默认的安全保护,容易被恶意软件攻击,个人隐私有被窃取的风险
2.完美越狱和不完美越狱
完美越狱:
不完美越狱:
iphone一旦关机后再开机,屏幕会一直停留在启动画面,也就是“白苹果”状态
或者能正常开机,但已经装的破解软件都无法正常使用,需要将设备与PC连接后,使用软件进行引导才能使用
一般来说,在苹果发布新的ios固件之后,针对该固件的不完美越狱会先发布,随后完美越狱才可能发布
3.怎么判断有没有越狱成功
4.Cydia介绍
可以在Cydia中安装各种第三方的软件(插件、补丁、APP)
5.Cydia安装软件的步骤
6.SpringBoard
有时候通过Cydia安装完插件之后,可能会出现重启SpringBoard的提示
7.手机必备软件安装
可以访问整个ios设备的文件系统,类似的补丁还有afc2、afc2add,在mac上访问
可以在iphone上自由访问ios文件系统,类似的软件Filza FileManager、 File Browser
软件源:http://apt.thebigboss.org/repofiles/cydia
4)PP助手
8.Mac必备
管理文件系统
PP助手
9.安装包
通常Cydia安装的安装包是deb格式的,通过pp助手安装的安装包是ipa格式的
如果通过Cydia源安装deb失败,可以先从网上下载deb格式的安装包,然后将deb安装包放到/var/root/Media/Cydia/AutoInstall(这个是iFunBox目录),重启手机,Cydia就会自动安装deb
可以通过此链接进行安装,有侵权可以提示删除,必须安装这两个软件,否则后面及时我们能够通过ssh来连接mac和手机,也无法对手机进行操作
iOS 13越狱:越狱后如何安装AppSync和afc2越狱补丁_bigcat201的博客-CSDN博客_appsync越狱补丁
二、越狱
1.通过代码来判断是否越狱成功
2.如何越狱
手机安装uncOver就可以,可以通过爱思助手来安装,也可以直接下载安装包
三、SSH和OpenSSH
1.Mac远程登录到iphone
做逆向工程时经常用命令行来操作iphone,跟电脑用终端来操控电脑一样
为了能够让Mac终端中的命令行能作用在iPhone上,我们得让Mac和iPhone建立连接,通过Mac远程登录iPhone手机的方式建立连接
2.SSH
SSH(Secure Shell)的缩写,意为“安全外壳协议“,是一种可以为远程登录提供安全保障的协议
使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗
OpenSSH是SSH协议的免费开源实现,可以通过OpenSSH的方式让Mac远程登录到iPhone
3.使用OpenSSH远程登录
SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接同一个WiFi
服务器主机地址,可以通过手机->设置->无线局域网,,然后点开自己连接的无线网,查看ip地址就可以。默认的密码是alpine,输入此密码就进入到了手机,远程登录了手机
4.root、mobile
root:最高账户权限,$HOME是/var/root,用户文件夹,可以通过下列命令查看路径
moblie:普通权限账户,只能操作一些普通文件,不能操作系统级别的文件,$HOME是/var/mobile
登录mobile用户: ssh mobile@服务器主机地址
最好修改一下root和mobile用户的登录密码(登录root账户之后,分别通过passwd、passwd mobile )完成
5.SSL、OpenSSL
SSL(Secure Sockets Layer)的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络进行加密
OpenSSL 是SSL的实现
绝大多数HTTPS请求等价于:HTTP+OpenSSL
OpenSSH依赖于OpenSSL
6.SSH的版本
SSH协议一共有两个版本,SSH-1,SSH-2,现在用的最多的是SSH-2(很久以前的,可以通过ssh -V来查看最新的版本),客户端和服务端版本要保持一致才能通信
原来的可以通过下面的命令来查看
7.SSH的通信过程
1)建立安全连接
3)数据传输
建立安全连接:在建立安全连接的过程中,服务器会提供自己的身份证明(公钥和私钥是一对存在的)
第一次登录此服务器的时候需要存储一些东西,我们需要点yes,就是跟公钥相关的一些东西会发送到客户端,我们将他们存储起来,然后第二次登录的时候我们就不需要进行验证了。
8.服务器身份信息变更
在建立连接过程中,可能会遇到下列的错误:提醒服务器的身份信息发生了变更,我们跟服务器建立连接。服务器每次都会发一次公钥,如果是第一次连接服务器,我们就会将服务器的公钥存储在known_hosts文件中,以后每次连接都会进行一个验证,如果本次发送的公钥和存储的公钥一样,就会建立连接,进行数据传输,如果发送的不一样,就会报以下错误,提示遭受到了中间人攻击,但是如果我们还想连接,就需要将存储在known_hosts文件给删除掉
因为我们公钥存储在客户端,所以此时目录需要在电脑上,然后使用vim将此公钥进行删除就可以(进入到文件里面)dd命令是将这一段文字删除,按esc,然后点冒号wq命令是将文件进行保存。
此时再连接此服务器,会重新连接并进行存储
也可以使用ssh–keygen -R 服务器名称命令进行删除,此时再进行查看known_hosts下面没有文件
需要注意的是
我们查看known_hosts文件或者是vim编辑内容时,一定要进行目录切换,cd ~/.ssh
2)基于密钥的客户端认证(免密码认证,最安全的一种认证方式)
SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试密码认证
9.SSH-基于密钥的客户端认证
我们登录服务器,服务器需要对我们进行认证,看是否可以登录服务器,一种是密码,一种是密钥,密钥可以免密码
客户端需要生成公钥和私钥,然后把公钥追加到授权文件的尾部,这样服务器就存储了我们的信息,下次登录认为是安全的登录,就不用输入密码了
1)在客户端生成密钥(命令:ssh–keygen)一直点回车就可以
将生成的公钥追加到授权文件的尾部(使用命令:ssh–copy–id root@服务器地址)
可以登录服务器查看一下授权文件
10.公钥>>授权文件
可以使用ssh-copy-id将客户端的公钥内容自动追加到服务器的授权文件尾部,也可以手动操作
scp ~/.ssh/id_rsa.pub root@服务器地址
scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上
不直接将公钥进行追加,而是将公钥复制到服务器上面,然后在进行追加
如果进行了公钥的配置,仍然需要输入密码进行登录,就需要输入下面3个命令进行权限的认证
读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。
注意 :~的含义代表家目录,在mac上~代表的是/Users/用户名目录
所以想要操作mac桌面的话不仅可以/Users/用户名/Desktop来进行操作,还可以~/Desktop
11.22端口
端口就是设备对外提供服务的窗口,每个端口都有一个端口号(范围是0~65535)
21端口是提供FTP服务的,80端口是提供HTTP服务的,22端口提供SSH服务,(可以查看/etc/ssh/sshd_config的Port字段)
12.通过USB进行SSH登录
默认情况下,由于SSH走的是TCP协议,Mac是通过网络连接的方式登录到iPhone,要求iPhone连接到wifi,为了加快传输速度,也可以通过USB连接的方式进行SSH登录,Mac上有一个服务程序usbmuxd(它会开机自动启动),可以将Mac的数据通过USB传输到iphone
工作原理:通过SSH将数据传入到mac的端口,然后通过USB进行传输
13.usbmuxd的使用
https://cgit.sukimashita.com/usbmuxd.git/
从此连接进去下载1.0.8版本,一定要下载1.0.8,不然其他的版本可能会没有python脚本
执行此命令的时候会报zsh:command not found:python
安装的过程中可能会报安装错误,没有sqlite,我们在重新安装sqlite
会报两个语法错误,在python3中,print输出需要加()给所有print语句加(),SocketServer需要小写,把所有S变成s,socketserver
四、Cycript
1.Cycript的介绍
1)Cycript是Object-C、C++、JavaScript、Java等语法的混合物
4)通过Cydia安装Cycript,即可在iPhone上调试运行中的App
2.使用ps命令,安装adv-cmds
ps命令是process status的缩写,使用ps命令可以列出系统当前的进程
3.使用Cycript
登录到服务器输入cycript命令,就可以直接输入,如果想要退出的话直接输入control+D
1)使用cycript – p 应用名称(或者是进程号就可以调试程序)
使用ObjectiveC.classes可以查看应用用到的所有类
五、ios签名机制和加密方式
1.ios的加密方式
2.常见英文
3.学前须知
2)Eve:窃听者
4.如何防止被窃听?
5.如何加密?
6.使用密钥的方式,有两种
非对称加密:加密和解密用的密钥是不一样的
7.对称加密(Symmetric Crytography)
1)DES(Data Encryption Standard)
DES是一种将64bit明文加密成64比特(位,bit)密文的对称加密加密算法,密钥长度是54bit
规格上来说,密钥长度是64bit,但每隔7bit会设置1个用于错误检查的bit,因此密钥长度实际是56bit
由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复)
2)3DES
3DES,将DES重复3次所得到的一种密码算法,也叫做3重DES
目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题
3个密钥都是不同的
3)AES(Advanced Encryption Standard)
在2000年的时候选择Rijindaei算法作为AES的实现
目前AES,已经逐步取代DES、3DES成为首选的对称密码算法
一般来说,我们也不应该使用任何自制的密码算法,而是应该使用AES,它经过了全世界密码学专家所进行的高品质验证工作
8.密钥配送问题
假设Alice将使用对称加密过的消息发送给了Bob,只有将密钥发送给了Bob,Bob才能完成解密,在发送密钥的过程中,可能会被Eve窃取密钥,最后Eve也能完成解密
9.如何解决密钥配送问题
1)事先共享密钥
4)公钥密码
10.公钥密码(Public-key Cryptography)(也是非对称加密)
1)公钥密码中,密钥分为加密密钥、解密密钥两种,它们并不是同一个密钥
2)公钥密码也被称为非对称加密
3)在公钥密码中,加密密钥一般都是公开的,因此该密钥称为公钥(public–key)
4)解密密钥,由消息接受者自己保管,不能公开,因此也称为私钥(private key)
比如:Alice想要给Bob发消息,要拿到他的公钥,然后Bob用私钥解他的消息
5)公钥和私钥是一一对应的,是不能单独生成的,一对公钥和密钥统称为密码对
11.解决密钥配送问题
12.RSA
目前使用最广泛的是非对称加密是RSA
13、混合编码系统(Hybrid Cryptosystem)
3)混合密码系统,是将对称密码和密钥密码的优势相结合的方法:解决了公钥密码速度慢的问题,并通过公钥解决了对称密码的密钥配送问题
4)网络上的密码通信所用的SSL/TLS都运用了混合密码系统
14.混合密码-加密
1)会话密码
b.生成会话密钥,作为对称密码的密钥,加密消息
c.用消息接收者的公钥,加密会话密钥
a.用会话密钥加密的消息(加密算法:对称密码)
b.用公钥加密的会话密钥(加密算法:公钥密码)
15.混合密码–解密
16.混合密码总结
1)Bob先生成一对公钥、私钥
4)Alice用会话密钥加密需要发送的消息(使用的是对称密码加密)
5)Alice用Bob的公钥加密会话密钥(使用的是公钥密码加密,也就是非对称密码加密)
接收过程,解密过程
1.Bob利用自己的私钥解密会话密钥(使用的是公钥密码解密,也就是非对称密码解密)
2.Bob利用会话密钥解密发送过来的消息(使用的是对称密码解密)
17.单项散列函数(One-way hash function)
2)散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值
3)单向散列函数的特点
d.具有单向性
4)单向散列函数
单向散列函数,又被称为消息摘要函数(message digest function),哈希函数
输出的散列值,也被称为消息摘要(message digest),指纹(fingerprint)
a.MD4、MD5,产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全
md5的使用
b.SHA-1 产生160bit的散列值,目前已经不安全
c.SHA-2 SHA-256,SHA-384,SHA-512,散列值长度分别为256bit,384bit,512bit
d.SHA-3 全新版本
18.如何防止数据被篡改
有网络就会遭到中间人攻击,所以我们可以把昨天的数据放入到U盘或者是其他的存储位置,但是这样太过于复杂
19.单向散列函数的应用—-防止数据被篡改
存储文件太复杂,而且耗费内存,我们可以把文件生成一个散列值,然后将散列值存储起来,对比散列值
还有一种就是下载应用,为了防止服务器压力过大,可以产生好多镜像,但是放在其他服务器的镜像可能会被篡改,所以正版官方会放一个散列值,然后下载完软件之后我们可以比较一下这个散列值,查看是否被篡改
20.单向散列函数的应用–口令加密
我们将用户的账号和密码传到服务器,服务器不可能将用户的密码直接以明文的信息存储,不然别人攻击我们的服务器,那么就会查看到所有用户的密码,所以生成一个散列值,用散列值进行对比,服务器也不知道密码是多少,所以如果我们丢失了密码,一般是找不回来的,只能重置,如果能找回来,说明应用不安全
21.数字签名
Alice发给Bob的消息有可能是被篡改的,或者是有人伪装成Alice发消息,或者就是Alice发的,但是它可以否认
问题:Bob如何确定这段内容的真实性,如何识别篡改、伪装、否认?
答案:
用消息发送者的私钥进行签名,然后把公钥发送出去
22.数字签名和公钥密码
23.数字签名的过程
发送者Alice会把明文消息和数字签名后的消息都发送给Bob,然后Bob将数字签名的消息进行解密,对比明文和解密后的消息是否一致,一致则签名成功
24.数字签名的优化
上述过程中会出现的问题就是数据大的问题,我们需要将明文发送一次,将加密后的数字签名发送一次,所以可以使用散列值,将消息生成散列值,然后对散列值进行加密,生成数字签名
25数字签名的疑惑
1)如果有人篡改了文件内容或者是签名内容,结果将会是签名验证失败,证明内容被篡改
2)数字签名不能保证机密性,他也不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改
3)数字签名的作用:
a.确认消息的完整性。 b.识别消息是否被篡改。 c.防止消息发送人否认
26.中间人攻击
中间人攻击就是在双方发送消息的途中监听消息,拿到消息接收者的公钥,然后将其保存,将自己的公钥发给消息发送者,消息发送者将公钥进行加密,然后发送,中间人拿到消息,用自己的私钥进行解密,然后知道消息,在把消息发送给消息接收者
27.数字签名无法解决的问题
1)要正确使用签名,前提是用于验证签名的公钥必须是真正的发送者
2)数字签名也有可能遭受中间人攻击,如果遭受了中间人攻击,那么公钥将是伪造的,数字签名将会失效,及时数字签名验证正确,也不是真正发送的消息
3)所以在验证签名之前,首先得先验证公钥的合法性
4)如何验证公钥的合法性:证书
28.证书(Certificate)
1)密码学中的证书,全称是公钥证书(Public-key Certificate,PKC)
证书里面有姓名、邮箱等个人信息,以及此人的公钥,并由认证机构(Certificate Authority CA)施加数字签名
2)CA就是能够认定”公钥确实属于此人”并能够生成数字签名的个人或者组织,有组织性组织、政府设立的组织,有通过提供认证服务来盈利的企业,个人也可以成立认证机构
六、MD5算法(指纹算法)
1.MD5算法
1)MD5是散列函数中的一种,是不可逆的,散列算法就是不可逆的,是从原始数据中提取一部分,所以不能还原
2)可以对任意的数据源计算,生成固定长度的字符串,32个字符,可能会发生重复,几率很小
3)使用场景
a.一般用来加密密码
b.计算文件的md5值,用户可以验证从网络上下载的文件是否在下载的过程中被修改了
2.终端测试md5值
原文地址:https://blog.csdn.net/qq_43658148/article/details/125497371
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_35576.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!