Android 渗透测试指南

我们将Android平台的安全评估测试分为4层,分别是应用层、Framework层、linux内核层和硬件层。下面系统介绍每层的测试关键点及测试指导。

APP安全

服务端

安全测试技术点:后端服务安全

测试范围:web服务、其他协议服(含私有化协议)

描述:web安全漏洞检查,如sql注入、命令注入、CSRF、XSS、越权等,其他协议安全测试,分析协议结构,构建脚本,修改数据报文进行相应的测试,如缓冲区溢出 、命令注入等。对相应的协议使用对应工具进行fuzzing测试。

支撑工具:Burp suite、Fiddler

客户端

安全测试技术点:源代码安全

测试范围:重要函数审计、逻辑检查、加密算法等。

描述:识别重要功能模块代码审计,关注危险函数(memcpy、strcpy等)处理,是否会造成逻辑缺陷、加密算法 、溢出等安全问题。

支撑工具:Fortify、Coverity、Source Insight
安全测试技术点:数据传输安全

测试范围:传输过程中敏感数据泄露、伪造等。

描述:检查加密是否可逆,是否使用安全通道传输、是否可篡改等。会话安全、通信完整性、通信保密性。

支撑工具:Burp suite、Fiddler
安全测试技术点:敏感信息安全

测试范围:日志、内存、调试信息、xml文件、DB文件、二进制文件。

描述:检查敏感信息是否加密存储、日志输出敏感信息等。

支撑工具:SQLiteSpy、UltraEdit
安全测试技术点:安全策略

测试范围:密码、登录、会话、权限等。

描述:检查密码、登录、会话、权限等策略是否设置合理。

支撑工具:无
安全测试技术点:组件安全

测试范围:四个组件暴露、intent消息fuzz、暗码、Debuggable属性、Permission

描述:检查组件暴露,可导致不需要申请权限关机、重启、偷发短信、本地sql注入、文件包含等安全问题。检查权限设置是否合适,debuggable属性是否设置正确,是否可通过安全启动关键应用等。

支撑工具:drozer
安全测试技术点:反编译与反编译保护

测试范围:检查代码混淆、应用加壳、签名、硬编码信息、重要函数功能审计、逻辑检查、加密算法(加密模式、密钥安全性)、dex动态加载。

描述:反编译apk,获取相关java文件或smali文件,对相关文件进行分析,是否进行相应的混淆等。对反编译出来的源代码进行审计,包括重要函数逻辑功能缺陷,弱加密算法,硬编码,修改相应的smali内容,重打包验证应用签名。

支撑工具:jeb、apktool、baksmali、jd-gui
安全测试技术点:其他(进程保护、内存修改、键盘劫持、第三方SDK、动态调试等)

测试范围:进程保护、内存修改、键盘劫持、第三方SDK、动态调试等

描述:动态调试、辅助问题定位,进程相关注入、修改等。

支撑工具:IDA Pro、memspector、Xposed
安全测试技术点:业务安全

测试范围:支付、聊天、购物等

描述:根据业务功能,检查各业务功能能否被绕过。

支撑工具:无

Framework安全与Libraries安全

安全测试技术点:系统业务安全

测试范围:android功能业务安全,包括simlock、指纹识别等功能业务。

描述:结合白盒分析、动态验证等方法,测试业务逻辑缺陷等安全问题。

支撑工具:Source Insight、IDA Pro
安全测试技术点:Native Code逆向分析

测试范围:Native层接口安全、服务安全、第三方库安全。

描述:so文件获取、IDA逆向、重点功能识别。通过脚本等方式获取手机中的so,然后识别重要功能so进行逆向,分析JNI层接口安全性、认识校验机制、安整性等。通过动态调试,辅助定位问题,并验证问题是否存在,借助运行时的内存信息分析so文件逻辑。

支撑工具:IDA Pro、memspector
安全测试技术点:进程注入

测试范围:so文件注入到运行进程

描述:识别进程注入、调试手段,加入进程保护手段、反调试等。

支撑工具:ptrace、Xposed、adbi
安全测试技术点:SE linux

测试范围:安全策略配置

描述:配置文件检查、策略是否正确配置(需深入研究)

支撑工具:无
安全测试技术点:Android已知漏洞

测试范围:业务已经公布的android漏洞,关注同类型漏洞的挖掘

描述:跟踪业界已知漏洞,第一时间修复,研究扫描工具对已知漏洞进行扫描。

支撑工具:开发扫描工具

Linux内核安全

安全测试技术点:Linux已知漏洞

测试范围:业务已经公布的linux内核漏洞,关注同类型漏洞的挖掘

描述:跟踪业界已知漏洞,第一时间修复,研究扫描工具对已知漏洞进行扫描。

支撑工具:开发扫描工具
安全测试技术点:系统配置

测试范围:Linux系统环境、系统加固

描述:整个系统环境是否处于最新版本,加固检查,系统权限配置等。

支撑工具:无
安全测试技术点:开放端口

测试范围:检查开放端口

描述:根据系统开放的端口,对比端口矩阵,发现多余无用端口等。

支撑工具:无
安全测试技术点:驱动安全

测试范围:TEE、FIDO等设备驱动安全

描述:底层驱动的读写权限,溢出问题,进行安全等提权问题。

支撑工具:无

硬件安全

安全测试技术点:接口安全

测试范围:JTAG、串口、NFC等

描述:检查物理板上常见的接口,是否存在多余接口未移除,或还有引脚引出。

支撑工具:无
安全测试技术点:固件安全

测试范围:固件升级、固件校验、固件解包等

描述:通过uart输出打印信息等分析,设备所使用的硬件相关信息,对所使用的固件进行提权,进行分析。验证固件是否进行升级校验。

支撑工具:无
安全测试技术点:芯片存储安全

测试范围:芯片数据存储

描述:检查硬件芯片存储的数据,是否存在泄漏风险。

支撑工具:无
安全测试技术点:芯片加密算法

测试范围:数据存储加密算法

描述:存储数据加密算法检查。

支撑工具:无


你可能感兴趣的:(Android 渗透测试指南)