2023Android客户端安全测试指南.docx
-
资源ID:1268833
资源大小:940.75KB
全文页数:71页
- 资源格式: DOCX
下载积分:9金币
快捷下载

账号登录下载
微信登录下载
三方登录下载:
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2023Android客户端安全测试指南.docx
AndrOid客户端安全测试指南目录ANDROID客户端安全测试指南1一. 测试环境4二. 安全测试列表42.1 客户端程序安全42.1.1 安装包签名42.1.2 客户端程序保护52.1.3 应用完整性检测72.1.4 组件安全82.1.5 *webview组件安全92.2 敏感信息安全102.2.1 数据文件102.2.2 IOgCat日志122.3 密码软键盘安全性132.3.1 键盘劫持132.3.2 随机布局软键盘142.3.3 屏幕录像142.3.4 *系统底层击键记录152.4 安全策略设置152.4.1 密码复杂度检测152.4.2 帐号登录限制162.4.3 帐户锁定策略162.4.4 *私密问题验证162.4.5 会话安全设置162.4.6 界面切换保护172.4.7 Ul信息泄漏172.4.8 验证码安全性172.4.9 安全退出182.4.10 密码修改验证182.4.11 Activity界面劫持182.5 手势密码安全性192.5.1 手势密码复杂度192.5.2 手势密码修改和取消202.5.3 手势密码本地信息保存202.5.4 手势密码锁定策略212.5.5 手势密码抗攻击测试222.6 进程保护222.6.1 内存访问和修改222.6.2 *动态注入232.7 通信安全242.7.1 通信加密242.7.2 证书有效性242.7.3 关键数据加密和校验272.7.4 *访问控制272.7.5 客户端更新安全性282.7.6 短信重放攻击282.8 业务功能测试28三. 测试项目风险定级30四. 合规性参考32五. ANDROlD应用分析335.1 APK解包335.2 逆向C1.ASSES.DEX335.2.1 反编译为java代码335.2.2 反编译为SmaIi代码345.3 处理ODEX文件355.4 反编译SO库365.5 处理XMl375.6 打包APK385.6.1 使用apktool打包small彳弋码385.6.2 签名和优化385.7 修改已安装APK405.8 内存获取C1.ASSES.DEX425.8.1 内存转储425.8.2 ZjDrOid工具425.9 ANDRe)IDHOOK框架435.9.1 XposedFramework445.10 集成分析工具445.10.1 APKAnaIyser445.10.2 Eclipse485.10.3 Androiddebugmonitor515.10.4 apk编辑工具525.11 ANT编译源代码535.12 动态调试535.12.1 使用eclipse+ADT535.12.2 使用IDApro545.12.3 andbug调试545.13 ADBSHE1.l命令585.13.1 网络工具(root)585.13.2 进程查看和监视ps/top605.13.3 系统调用记录Strace615.13.4 事件操作getevent/sendevent615.13.5 截图工具Fbtool635.13.6 用户切换Run-as/su635.13.7 文件列举ISof645.13.8 数据库文件查看sqlite3645.13.9 日志查看Iogcat655.13.10 测试工具MOnkey655.14 ANDRoID彳弋理配置665.15 手机根证书安装685.16 DROZER组件测试工具695.17 ANDROlD代码分析726.1 Android组件功能相关代码726.1.1 Contentprovider72测试环境SDK:JavaJDK,AndroidSDK,>工具:7zip,dex2jar,jd-gui,apktoo1.IDApro(6.1),ApkAnaIyser,Eclipse,dexopt-wrapper,010editor,SQ1.iteStudio,ApkIDEoapk工具:android组件安全测试工具,activity劫持测试工具,android击键记录测试工具,代理工具(proxydroid),MemSpector,HostEditoro-.安全测试列表注:下面的测试项目中标记的为可选测试项,在正式测试中可以不进行测试。2.1 客户端程序安全2.1.1 安装包签名检测客户端是否经过恰当签名(正常情况下应用都应该是签名的,否则无法安装),签名是否符合规范。测试方法:如图,当输出结果为“jar已验证”时,表示签名正常。(下面的警告是因为签名密钥不在本地密钥库中)C:XDocuRentsandSettingsXAdnin1strator>Jarsigner-verify,C三DocunentsandSettingsMtdnin1511%口10r、桌面«。(11*0i(1<1)<廷(1口$匕。&$11611-1即卜”Jar己验证。整告:ft°ar包含证书链未验证的条目。有关详细信息.请使用-uerbose和-CertS选项重新运行。检测签名的CN及其他字段是否正确标识客户端程序的来源和发布者身份:C:SDocumcntsandSettingsAdninistrator>jarsigner-verify-verbose-certs*C:DocuncntsandSettingSAdmin桌面androiddkands<m&ShClIT.apk”sm2269SunJul2421三37三34CST2011reSZdrawablcZand.JpgX.509,1.N.JsgnJC-DK证书的有妓期RiK-10-2上午4:22至16-9-8上午4三22J(CertPath未验证:PathdoesnotchainwithanyofthetrustanchorsSIn1223WedAug1021:58:46CST2011resZdrawabIeZic.app.pngX.509,CN-Andsen.C三DK【证书的有效期期1.8T0-2上午4:22至18-9-8上午4三22J(CertPath未验证:Pathdoesnotchainwithanyofthetrustanchors1威胁等级:若客户端安装包签名有异常(例如签名证书为第三方开发商而不是客户端发布方),此时高风险;若无异常则无风险。2.1.2客户端程序保护1.反编译保护测试客户端安装程序,判断是否能反编译为源代码,java代码和so文件是否存在代码混淆等保护措施。未作保护的java代码,可以轻易分析其运行逻辑,并针对代码中的缺陷对客户端或服务器端进行攻击。测试方法:参考5.Iapk解包,5.2逆向classes.dex,将客户端apk文件中的程序代码导出为Java代码或SmaIi代码;或使用5.10.IAPKAnaIyser,直接打开apk文件。如下图所示,经过混淆保护的代码,其最明显的特征是大部分类和变量名都被替换为简单的abed字母。aamb:RunnabteOa(Runnabfe):aameOnSerwCeCOnneCted(COmpcnertNagI6nr):voidOOnSerYiCODisconnected(CorrponertName):void7)aan0danob:ConteXtoc:1.dyoutInflater d:xjoe三long F:Stringog:Stng客户端程序可以把关键代码以JNl方式放在So库里。SO库中是经过编译的arm汇编代码,可以对其进行加壳保护,以防止逆向分析。参考5.1apk解包,打开apk文件。如果客户端程序使用了JNI技术,在"libarmeabi”文件夹下会有相应的SO库文件,如图所示:20C:DocumentsandSelUngsAdministratorOiandroidapksco<n.qittoo360.mobilesafe_125748.apkhbarmeabi文件(E)编辑查看收藏®工具帮助(明添加提取测试复制移动删除信息名称大小I压缩后大小I修改时间I创建时间I访问时间,GIibmobdesafe360-j11i.so4371921569182010-11-1217:34司libqihscanner.so32320172082010-11-1217:34it>J.50J653634692010-11-1217:34然后在代码中查找是否加载了S。库。例如JaVa代码:StaticSystemJoad1.ibraryCjn1.pin");system.load(H./libjni_pin2.soH)将加载Iibjni_Pin.so和Iibjni_pin2.so,So的导出函数则通过native关键字声明,如图所示:Ilpul)licclassMakeRldPinrcSystem.2o<jd1.ibr<ry("jni-pin");PPUbIiCnativebyteHakeRldPin(StcingpacamStcing);publicnAtiveStringUnimplementedstElngFcoiaJNI();P对S。代码的分析,可参考5.4反编译SO库。威胁等级:若客户端进行加壳保护,此时认为无风险。若大部分代码(包括核心代码)经过混淆,此时低风险。若部分代码混淆,关键代码(加密或通信等)可以获知其关键代码,此时中风险。2.1.3 应用完整性检测测试客户端程序是否对自身完整性进行校验。攻击者能够通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。测试方法:参考5.10.2Eclipse关于DDMS的文件操作和5.7修改已安装apk。推荐修改apk中assets目录下或res/raw目录下的文件。将修改后的apk文件导入至Jdataapp目录下,覆盖原文件,然后重启客户端,观察客户端是否会提示被篡改。*或在JaVa代码中查找是否包含校验功能。威胁等级:若应用完整性校验不使用MANIFEST.MF中的数据,且核心代码通过JNl技术写入f。库,同时于服务端进行相关校验,此时无风险。若应用完整性于本地进行验证而不存在其他问题或使用MANIFEST.MF中的数据作为验证凭证(有新文件时提示应用完整性验证失败),此时低风险;若在本地进行验证的基础上只通过MANIFEST.MF对客户端原有文件进行校验而忽略新增文件的检验,此时中风险;若未进行应用完整性校验此时高风险。2.1.4 组件安全测试客户端是否包含后台服务、ContentProvider.第三方调用和广播等组件,Intent权限的设置是否安全。应用不同组成部分之间的机密数据传递是否安全。测试方法:检查AndroidManifest.XmI文件中各组件定义标签的安全属性是否设置恰当。如果组件无须跨进程交互,则不应设置expor