APP安全机制(⼀)——⼏种和安全性有关的情况
版本记录
版本号时间
V1.02017.08.17
前⾔
在这个信息爆炸的年代,特别是⼀些敏感的⾏业,⽐如⾦融业和银⾏卡相关等等,这都对app的安全机制有更⾼的需求,很多⼤公司都有安全 部门,⽤于检测⾃⼰产品的安全性,但是及时是这样,安全问题仍然被不断曝出,接下来⼏篇我们主要说⼀下app的安全机制。
APP安全涉及⽅⾯
刚接触app安全⼤家可能会有⼀些疑问,app安全到底涉及到哪些⽅⾯,或者说app安全应该注意什么?
app安全主要应该注意下⾯⼏个⽅⾯:
ipa⽂件安全
我们在appleStore下载的加壳后的ipa⽂件,⾥⾯会有很多的资源包,不要在.plist⽂件、项⽬中的静态⽂件中存储关键的信息,如要保存,需要加密处理。可以利⽤MAC上的PP软件助⼿,将ipa⽂件拷贝到电脑,直接就能获取ios的系统⽬录。如下图所⽰。
ios系统⽬录
ipa⽂件的反编译⼯具IDA
前⾯已经说过了,从appleStore下载的都是加壳的ipa⽂件,想要去壳,可以使⽤clutch、dumpdecrypted、使⽤gdb调试 等解密去壳⼯具,如果⼿机是越狱的,则可以从PP助⼿上下载ipa包,直接就是脱壳后的,还有就是xcode打包的ipa也是没有壳的。
反编译沙盒⽂档
源代码安全
通过file、class-dump、theos、otool等⼯具,⿊客可以分析编译之后的⼆进制程序⽂件,不过相对于这些⼯具来说,IDA的威胁最⼤。IDA是⼀个收费的反汇编⼯具,对于Objective-C代码,它常常可以反汇编到可以⽅便阅读的程度,这对于程序的安全性,也是⼀个很⼤的危害。因为通过阅读源码,⿊客可以更加⽅便地分析出应⽤的通信协议和数据加密⽅式。
同样不要在代码中存储关键信息,⽐如通信接⼝的AES加密的密钥,这是因为⽤脱壳⼯具可以对加壳的ipa⽂件进⾏处理,越狱⼿机就是这么越狱的,在利⽤IDA、Hopper进⾏反编译和分析,就可以得到很容易理解的伪代码。
关键数据不要保存在本地,尽量通过接⼝进⾏获取。
如果⾮要保存关键数据,那么⼀定要加密后保存,运⾏时候解密获取数据。
app store下载不了软件密钥要定期更换,如果密钥是才能够服务端获取,那么服务端进⾏更新处理等。
密钥如果写在代码⾥,app升级版本的时候,新版本app对应接⼝版本修改为新的秘钥,旧的接⼝版本和APP版本还有以前旧的秘钥。
对于IDA这类⼯具,我们的应对措施就⽐较少了。除了可以⽤⼀些宏来简单混淆类名外,也可以将关键的逻辑⽤纯C语⾔来实现。例如的iOS 端的通信底层,就是⽤C语⾔实现的。这样的⽅式除了能保证通信协议的安全外,也可以在iOS和Android等多个平台使⽤同⼀套底层通信代码,达到复⽤的⽬的。
⽹络安全
⽹络安全很⼤⼀部分就是⽹络通信安全,在⽹络传输的过程中存在不安全的结点,所以我们应该对敏感数据进⾏加密,同于保证⽤户的信息安全,⿊客可以设置⽹络代理服务器,截获所有的⽹络请求,即使是https加密通信,⿊客仍然可以使⽤中间⼈攻击Man-In-The-Middle Attack,指的是攻击者与通信的两端分别创建独⽴的联系,并交换其所收到的数据,使通信的两端认为他们正在通过⼀个私密的连接与对⽅直接对话,但事实上,整个会话都被攻击者完全控制)来截取通信内容。
1. 通信协议安全相关
在成功破解了通信协议后,⿊客可以模拟客户端登录,进⽽伪造⼀些⽤户⾏为,可能对⽤户数据造成危害。
下⾯我们就先了解下关于https⽅⾯的内容。
我们先了解下https ,HTTPS从最终的数据解析的⾓度,与HTTP没有任何的区别,HTTPS就是将HTTP协议数据包放到SSL/TSL层加密后,
在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全;⽽对于接收端,在SSL/TSL将接收的数据包解密之后,将数据传给HTTP协议层,就是普通的HTTP数据。HTTP和SSL/TSL都处于OSI模型的应⽤层。从HTTP切换到HTTPS是⼀个⾮常简单的过程。
它虽然号称是安全的,但是也是可以抓包和解析的,所以⽹络通信⼀定要有⾃⼰的加密⽅式,接⼝返回的数据最好也加密。
下⾯我们就看⼀下charles抓包。
http抓包
http抓包我们需要按照下⾯步骤配置charles。
打开Charles程序。
查看Mac电脑的IP地址,如192.168.1.7。
打开iOS设置,进⼊当前wifi连接,设置HTTP代理Group,将服务器填为上⼀步中获得的IP,即192.168.1.7,端⼝填8888。
iOS设备打开你要抓包的app进⾏⽹络操作。
Charles弹出确认框,点击Allow按钮即可。
https⽼版本抓包
发布评论