2023Android客户端安全测试指南.docx
《2023Android客户端安全测试指南.docx》由会员分享,可在线阅读,更多相关《2023Android客户端安全测试指南.docx(71页珍藏版)》请在课桌文档上搜索。
1、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 帐户锁定策略16
2、2.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 关键数据加密
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 内存转
4、储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.1
5、3.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,A
6、ndroidSDK,工具: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 安装包签名检测客户端是否经过恰当签名(正常情况下应用都应该是
7、签名的,否则无法安装),签名是否符合规范。测试方法:如图,当输出结果为“jar已验证”时,表示签名正常。(下面的警告是因为签名密钥不在本地密钥库中)C:XDocuRentsandSettingsXAdnin1stratorJarsigner-verify,C三DocunentsandSettingsMtdnin1511%口10r、桌面。(11*0i(11)jarsigner-verify-verbose-certs*C:DocuncntsandSettingSAdmin桌面androiddkandsm&ShClIT.apk”sm2269SunJul2421三37三34CST2011reSZdr
8、awablcZand.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威胁等级:若客户端安装包签名有异常(
9、例如签名证书为第三方开发商而不是客户端发布方),此时高风险;若无异常则无风险。2.1.2客户端程序保护1.反编译保护测试客户端安装程序,判断是否能反编译为源代码,java代码和so文件是否存在代码混淆等保护措施。未作保护的java代码,可以轻易分析其运行逻辑,并针对代码中的缺陷对客户端或服务器端进行攻击。测试方法:参考5.Iapk解包,5.2逆向classes.dex,将客户端apk文件中的程序代码导出为Java代码或SmaIi代码;或使用5.10.IAPKAnaIyser,直接打开apk文件。如下图所示,经过混淆保护的代码,其最明显的特征是大部分类和变量名都被替换为简单的abed字母。aam
10、b: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库文件,如
11、图所示:20C:DocumentsandSelUngsAdministratorOiandroidapkscoJ.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.2ojd1.ibrry(jni-pin);PPUbIiCnative
12、byteHakeRldPin(StcingpacamStcing);publicnAtiveStringUnimplementedstElngFcoiaJNI();P对S。代码的分析,可参考5.4反编译SO库。威胁等级:若客户端进行加壳保护,此时认为无风险。若大部分代码(包括核心代码)经过混淆,此时低风险。若部分代码混淆,关键代码(加密或通信等)可以获知其关键代码,此时中风险。2.1.3 应用完整性检测测试客户端程序是否对自身完整性进行校验。攻击者能够通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。测试方法:
13、参考5.10.2Eclipse关于DDMS的文件操作和5.7修改已安装apk。推荐修改apk中assets目录下或res/raw目录下的文件。将修改后的apk文件导入至Jdataapp目录下,覆盖原文件,然后重启客户端,观察客户端是否会提示被篡改。*或在JaVa代码中查找是否包含校验功能。威胁等级:若应用完整性校验不使用MANIFEST.MF中的数据,且核心代码通过JNl技术写入f。库,同时于服务端进行相关校验,此时无风险。若应用完整性于本地进行验证而不存在其他问题或使用MANIFEST.MF中的数据作为验证凭证(有新文件时提示应用完整性验证失败),此时低风险;若在本地进行验证的基础上只通过M
14、ANIFEST.MF对客户端原有文件进行校验而忽略新增文件的检验,此时中风险;若未进行应用完整性校验此时高风险。2.1.4 组件安全测试客户端是否包含后台服务、ContentProvider.第三方调用和广播等组件,Intent权限的设置是否安全。应用不同组成部分之间的机密数据传递是否安全。测试方法:检查AndroidManifest.XmI文件中各组件定义标签的安全属性是否设置恰当。如果组件无须跨进程交互,则不应设置exported属性为true。例如,如下图所示,当MySerViCe的exported属性为true时,将可以被其他应用调用(当有设置权限(PermiSSiOnS)时,需要再考
15、察权限属性。如androidProtection1.eveI为SignatUreScSignatureOrSystem时,只有相同签名的apk才能获取权限。参考SDK)omanfescandroid:versonCode三1nandroid:versonNae三v,l.Owpackage*tcapplicatlonAndroId:label*。Strtng/app_naiae”android:icon三,drawable/ic_lauraccvtyandroid:labelHestring/app_naiaeHandroidjnae三w.AldlDemoAotivit可以使用“组件安全测试工具
16、”来检测组件的exported属性,如图所示。凡是列出来的组件都是exported属性为true的。点击SaVe按钮可以把检测结果保存在SD卡上。checkingfahrbot.apps.screen.pro1=InsecureActivities:fahrbotapps.snapshoter.ui.MiscActivityfahrbot.apps.snapshoter.ui.1.ongSearchActivity=InsecureReceiver:fhrbotapps.snapshoter.svc.Events1.istenerfahrbo1.apps.snapshoter.svc.Widg
17、etProviderIxI=InsecureServices:或者使用DeXter在线检测环境(或SanddrOid)来做,如图所示,EXPorted为对号的是已经导出的组件,可能存在安全问题。(注意:Dexter对ContentProvider判断不一定准确。)当发现有可利用的组件导出时,可参考5.16drozer测试工具进行测试。注意:不是所有导出的组件都是不安全的,如需确定须看代码,对代码逻辑进行分析。注:有些应用在代码中动态注册组件,这种组件无法使用“组件安全测试工具”测试,需要通过阅读代码确定是否安全。关于AndroidSDK中对exported属性的默认设置说明:对service,
18、activity,receiver,当没有指定exported属性时,没有过滤器则该服务只能在应用程序内部使用,相当于exported设置为false。如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,相当于exported为true。对provider,SDK小于等于16时,默认exported为true,大于16时,默认为false。(某些广播如android.intent.action.BOOT_COMP1.ETED是例外)威胁等级:若不存在组件暴露的情况,此时无风险。如存在组件暴露的情况,但暴露的组件无关客户端逻辑核心或不会泄露用户敏感信息,此时低风险;若暴露的组件
19、会泄露用户敏感信息(例如邮件客户端存在消息组件的暴露,攻击者可以通过编写APK,通过组件利用的方式读取用户邮件信息)2.1.5 *webview组件安全Anelroid4.2版本以下的WebVieW组件存在安全漏洞(CVE-2012-6636)。检测客户端是否采取措施避免漏洞被利用。测试方法:检查应用AndroidManifest.XmI中的IargetSdkVersion是否大于等于17。或者使用测试网页进行测试(腾讯的测试页面链接,在被测应用中打开即可。威胁等级:当存在Sdk版本太低时存在WebVieW组件漏洞被利用的可能,此时中风险。当版本高时无风险。2.2敏感信息安全检测客户端是否保存
20、明文敏感信息,能否防止用户敏感信息的非授权访问。对android系统的文件导出可参考5.10.2Eclipseo对android的每一个应用,android系统会分配一个私有目录,用于存储应用的私有数据。此私有目录通常位于/data/data/应用名称/在测试时,建议完全退出客户端后,再进行私有文件的测试,以确保测试结果的准确性。(有些客户端在退出时会清理临时文件)2.2.1 数据文件1 .检查私有目录下的文件权限。测试方法:正常的文件权限最后三位应为空(类似“rw-rw”),即除应用自己以外任何人无法读写;目录则允许多个执行位(类似“rwxrwxx)。如下图所示,SCriPt文件的权限设置不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 Android 客户端 安全 测试 指南
链接地址:https://www.desk33.com/p-1340328.html