APP应用(yòng)的安(ān)全性 常常被大家忽视。APP如何做才安(ān)全:
1、首先,我们可(kě)以通过软件 下载 AppStore的ipa文(wén)件(苹果 把开发者上传的ipa进行了加壳再放到AppStore中(zhōng)),
得到ipa文(wén)件 可(kě)以分(fēn)析APP 里包含的一些资源,如:图片、plist文(wén)件、静态wap页(yè)、.bundle 等。
所以不要 在plist文(wén)件、项目中(zhōng)的静态文(wén)件中(zhōng) 存储关键的信息,如果要保存,记得加密(这样可(kě)以增加破解的难度)。
2、我们可(kě)以用(yòng)软件 查看 APP的沙盒,查看里面存储的 文(wén)件:sqlite、plist(NSUserdefault会存到Library下的Preferences中(zhōng) 的 plist文(wén)件中(zhōng))、图片等,NSUserdefault 中(zhōng)不要保存关键信息,如果要保存,还是加密吧。。sqlite也是这样子的。
3、 用(yòng) 工(gōng)具(jù) 对加壳的ipa 进行脱壳(越狱手机 直接用(yòng)PP助手下载的就是 脱壳的ipa),再用(yòng)IDA、Hopper 进行反编译,进行分(fēn)析 ,可(kě)以得到 近乎易懂的 伪代码。
所以 不要在 代码 中(zhōng)保存关键信息,比如接口通信中(zhōng) AES加密的密钥,可(kě)以通过接口获取 这些关键数据。
如果要保存关键数据(比如:密钥 等),可(kě)以保存加密后的关键数据,运行的时候进行解密获取真实的数据。这样可(kě)以增加破解的难度。
密钥要定期更换。比如 3个月 或半年换一次,如果密钥是从接口获取的,直接修改服務(wù)端就可(kě)以了。
如果密钥是写在代码里的。就等APP升级新(xīn)的版本的时候,新(xīn)版本的APP和其对应的接口版本 修改為(wèi)新(xīn)的密钥 就可(kě)以了。旧的接口版本和APP版本还用(yòng)以前的密钥,等强制更新(xīn)的时候才会失效。
如果一个APP 一个密钥用(yòng)上几年都不变 ,是很(hěn)危险的。离职的人员都可(kě)以直接用(yòng)以前 的代码 来获取相关的数据。特别是 支付相关的,有(yǒu)的服務(wù)端甚至没有(yǒu) 去校验支付的金额或其他(tā)数据,导致 离职人员用(yòng)1分(fēn)钱 可(kě)以买到 任何价格的 線(xiàn)上产(chǎn)品。。
最好能(néng) 进行 代码混淆,能(néng)增加反编译的难度,当然只是增加了难度,还是能(néng)破解的。
4、用(yòng)https也是可(kě)以被抓包并解析的,所以网络通信 一定要用(yòng)自己的加密方式 进行加密。
接口返回的数据 最好也进行 加密。
可(kě)以这么说:无论 你怎么做,理(lǐ)论上都是可(kě)以破解的,但是 破解人员也要考虑成本。。
有(yǒu)的银行的APP,只用(yòng)了https,通信都不加密,很(hěn)容易就拿(ná)到明文(wén)数据了。有(yǒu)的APP里的各种数据都 采用(yòng)复杂的加密算法,破解人员看到都烦,去破解这个APP的时间还不如去搞其他(tā)的几个APP。
一、ipa文(wén)件
1、AppStore里的ipa包 可(kě)以通过 iTunes 下载到電(diàn)脑。iOS8.3以下系统的非越狱的手机上,可(kě)以用(yòng)MAC上的PP助手等软件,直接把手机上的ipa文(wén)件(包含沙盒里的存储文(wén)件)拷贝到電(diàn)脑。
如果是越狱手机,都可(kě)以用(yòng)PP助手、itools直接把ipa导出到電(diàn)脑,并且可(kě)以用(yòng)PP助手、iExplorer、itools这些工(gōng)具(jù) 查看 iOS的系统目录。
MAC上安(ān)装(zhuāng) iExplorer软件,用(yòng)iExplorer 可(kě)以看到 手机(非越狱也可(kě)以) 在 iTunes上备份的内容。
如果你在帮测试美女的手机 调试问题的时候, 在 iTunes上设置 “连接次iPhone时自动同步”(或者点击 备份到本地電(diàn)脑),默认该手机上的照片、短信等内容都会备份到你的電(diàn)脑上,用(yòng) iExplorer 就可(kě)以看到 这位 美女的隐私。
曾经有(yǒu)次不小(xiǎo)心看到同事的隐私信息,所以现在都比较注意这块,避免引发误会。
2、拿(ná)到ipa文(wén)件后,解压缩,得到.app文(wén)件,右键显示包内容,可(kě)以看到里面的app中(zhōng)的图片、js、plist、静态H5页(yè) 等资源。
比如 你要 用(yòng)微信里的默认表情包,解压微信的ipa包就可(kě)以获取到。
3、iOS的系统目录和MAC上的都类似(类unix系统)。
二、沙盒 中(zhōng)的数据
iPhone上 计算器的沙盒:.app文(wén)件:应用(yòng)程序本身的数据,打包时候的一些资源文(wén)件(如:图片、plist等文(wén)件)、可(kě)执行文(wén)件。这个目录不会被iTunes同步。
Documents :存储不可(kě)再生 的关键数据。不会被iTunes同步
Library:保存配置文(wén)件和其他(tā)一些文(wén)件。NSUserDefault 会存储到 Library下的Preferences中(zhōng) 的 plist文(wén)件中(zhōng)。可(kě)以直接打开,所以 也不要在 NSUserDefault 中(zhōng)存一些 关键数据,或者 存储的时候 进行 AES等方式的加密。
Library/Caches可(kě)以用(yòng)来保存可(kě)再生的数据,比如网络请求,用(yòng)户需要负责删除对应文(wén)件。
这个目录(除了Library/Caches外)会被iTunes同步
tmp:临时文(wén)件。不需要的时候,手动将其内文(wén)件删除。(当应用(yòng)不再运行的时候,系统可(kě)能(néng)会将此目录清空。)
这个目录不会被iTunes同步
存到沙盒的数据都是不安(ān)全的,关键数据一定 要做加密存储。
三、Reveal 工(gōng)具(jù):查看 任意APP 的UI结构
1、不越狱的手机 可(kě)以用(yòng) Reveal 来查看自己APP的UI结构。不能(néng)查看其他(tā)APP的UI结构。这里就不再描述了。
2、越狱手机 上可(kě)以查看 任何APP的UI结构。
在越狱的手机上,在 Cydia 搜索并安(ān)装(zhuāng) Reveal Loader,如果搜索不到。就 点下面的“软件源”,选择“BigBoss”,选择“全部软件包”,点右边R的字母,去一个个找到 Reveal Loader,放心吧,你一定能(néng)找到的,我用(yòng)的iOS7.1的系统测试的,没问题。
安(ān)装(zhuāng)完成后,打开“设置”页(yè)面,下拉到最底部,点击“Reveal”
3.png
3、点击 Enabled Applictions 。然后选中(zhōng) 你想分(fēn)析的APP。
4、确保iOS和OSX在同一个IP网段内。打开想分(fēn)析的 APP,如果该APP已经启动,则关闭后再次启动
5、打开MAC上的 Reveal,选中(zhōng) 左上方列表里的 APP,比如QQ:
6、如果 Reveal
左上方 一直显示:No Connection。说明iPhone上的 Reveal Loader 没安(ān)装(zhuāng)成功,需要配置一下。
首先从MAC上,用(yòng)PP助手或 iTools 查看“文(wén)件系统(系统)”--》Library文(wén)件夹,看 Library文(wén)件夹下面有(yǒu)没有(yǒu) RHRevealLoader
文(wén)件夹,如果没有(yǒu),就 右键 新(xīn)建文(wén)件夹,并修改名(míng)字為(wèi):RHRevealLoader。
在Mac下打开已经安(ān)装(zhuāng)的Reveal,选择标题栏Help下的Show Reveal Library in Finder 下的 iOS library
选项,将会显示如下界面:将libReveal.dylib 文(wén)件通过PP助手拷贝到刚才创建的RHRevealLoader文(wén)件夹下,就可(kě)以了。
然后 从手机上打开APP, 再 打开 MAC上的 Reveal 软件,左上方 就会出来 相关APP的选项。
爱加密(www.ijiami.cn)是全球专业的移动信息安(ān)全综合服務(wù)提供商(shāng),专注于移动应用(yòng)安(ān)全、安(ān)全大数据及物(wù)联网安(ān)全,坚持以用(yòng)户需求為(wèi)导向、持续不断的创新(xīn),致力于為(wèi)客户提供全方位、一站式的移动安(ān)全全生命周期解决方案。爱加密的愿景是通过革新(xīn)性安(ān)全方案和7X24小(xiǎo)时全天候的专业服務(wù)保护更加智能(néng)世界的安(ān)全,打造和谐、强大、高度安(ān)全的万物(wù)互联生态环境。