APP 安全加固怎么做?加固技术、加固方法、加固方案
前面的文章中我们为大家介绍了移动应用安全检测的测试依据、测试方法、和测试内容,本文我们着重分享 App 安全加固的相关内容。
(安全检测内容)
通过前面的文章我们知道了 app 安全检测要去检测哪些内容,发现问题后我们如何去修复?如何避免安全问题?首先我们先来讲一下 Android 安全加固技术。
源码加固
Java 源码加固-dex 文件加壳保护、dex 函数抽取加密;
SO 库加固-SO 文件加壳保护、高级深度混淆、ELF 数据隐藏;
Html 加固;
资源文件加固-音视频加密、配置文件和数据库加密;
运行环境加固
完整性保护-签名、防二次打包;
防调试保护-双向 ptrace 保护、反 IDAPro 调试;
防篡改保护-防数据破解分析、防数据劫持;
反编译保护-反 apktool、反 ApkIDE、反 jd-gui;
模拟器识别;
ROOT 检测;
业务场景加固
密钥保护;
安全键盘;
防界面劫持;
反外挂;
清场;
通信协议加密;
iOS 加固技术
高级混淆
字符串加密
指令多样化
基本块分裂
控制流引入
跳转指令插入
控制流扁平化控制流间接化
安全防护 SDK
越狱检测
重签名检测
Cydia Substrate 框架检测
逆向工具检测
代码注入框架检测调试器检测
安全键盘 SDK
键盘字符混排
输入无回显
通过分析 Android 和 ios 两大主流平台的加固技术,这里给大家推荐了一个 App 整体的安全加固方案。通过静态层面、动态层面以及数据层面,多个层面全方位立体式地去进行加固防护。
静态层面,有防逆向,如 DEX 文件的保护、SO 文件的保护、SDK 的保护以及 JS、H5、HTML 等文件的保护,利用一些加固技术去做防逆向的保护。静态层面还有签名保护,主要是防篡改,一个是代码防篡改,一个是资源文件防篡改。将防篡改技术加入进来,嵌入之后,就能实现静态层面的防篡改。
动态层面主要是防调试,一般是通过动态调试来查看你这个平台的逻辑是什么样的,要有防动态调试的技术。还要放进程调试、防内存 DUMP、防模拟器、防 HOCK 攻击等。
数据层面要有数据的防泄漏,像针对内存数据的保护,内存中的数据有没有加密?使用完后有没有及时释放?日志数据,有没有存储一些关键的数据?有没有存储一些敏感数据?以及在数据传输的过程中的一些加固技术要加入进来。
针对页面数据的保护,有应用防截屏、应用防劫持、安全键盘等。
App 的加固是保障 App 安全的一个方法。
介绍一个 c/c++代码混淆工具,Ipa Guard 是一款功能强大的 ipa 混淆工具,不需要 ios app 源码,直接对 ipa 文件进行混淆加密。可对 IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加 ipa 破解反编译难度。可以对图片,资源,配置等进行修改名称,修改 md5。只要是 ipa 都可以,不限制 OC,Swift,Flutter,React Native,H5 类 app。。LLVM 不仅仅提供混淆实现,通过多重 Optimize(优化器),实现多种效果,例如代码控制流扁平化、虚假控制流、字符串加密、符号混淆、指令替换等。
从需求阶段一直到交付阶段都要进行一些任务明确。比如说需求阶段我们要明确移动安全需求,针对安全需求进行评审,针对安全需求,安全开发也可以在这个阶段进行一些咨询、了解、调查、培训。这是需求阶段可以提前做的一些事情。
在设计阶段,我们可以采用一些安全的 SDK,甚至一些安全模型,并对安全设计进行评审,对安全开发环境和安全编译环境进行统一,用一些正规的编译环境和编译器。
在实现阶段,主要是进行安全编码的培训。编码完成,功能出来之后还要进行一些移动安全的检测,包括移动安全方面的漏扫检测以及移动 App 的渗透测试,手动去查找一些主流的安全问题,模拟黑客攻击的一些方法,一些手段,提前发现一些安全问题,对暴露的安全问题进行及时的整改。
在这个阶段还可以做一些代码测试,我们可以去找一些代码审查的一些工具去做一些相关的检测,针对发现的问题进行加固。(Fortify SCA 静态代码扫描工具,自 2009 年被 Gartner 魔力象限评为第一象限,连续十余年在安全测试领域占据领导地位,扫描文章底部二维码,可申请试用)
最后是交付阶段,要做好渠道监测,比如说你的 App 发布到哪个应用市场,就要去监测下在 App 市场我的 App 有没有被破解掉。有没有被其他人恶意发布?或者被更改掉以后又重新打包发布?再就是威胁感知,这个可以借助一些威胁感知平台。再就是安全响应,针对可能出现的一些安全事件,提前做好应急计划。
评论