关键词:前言|目录|文章校验|完整性|验证|签名|文件|打包10

APP运用安全性测评表

  • 时间:
  • 浏览:138

文章目录

前言 第一章   接口测试 1.1 SDK 1.2 专用工具 第二章   客户端软件安全性 2.1 安装文件签字 2.2 反汇编维护 第三章   运用一致性校验 3.1叙述 3.2测试流程 3.3威协级别 3.4安全性提议 第四章   部件安全性 4.1叙述 4.2基本概念 4.3测试流程 4.4威协级别 4.5安全性提议 第五章   比较敏感网络信息安全 5.1数据库文件 5.2 威协级别 5.3 安全性提议 5.4 Logcat系统日志 第六章  密码安全 6.1 电脑键盘被劫持 6.2 任意合理布局软键盘 6.3 屏幕录制 6.4手势密码 第七章   安全设置 7.1 登陆密码复杂性检验 7.2 账户登录限定 7.3 帐户锁住对策 7.4 难题认证 7.5 对话安全性 7.6 页面转换维护 7.7 UI数据泄露 7.8 短信验证码安全性 7.9 安全性撤出 7.10 密码重置认证 7.11 Activity页面被劫持 第八章   过程维护 8.1 运行内存浏览和改动 8.2 动态性引入 第九章   通信安全 9.1 通讯数据加密 9.2 资格证书实效性 9.4 重要数据库加密和校检 9.5 密钥管理 9.6 手机客户端升级安全系数 9.7 短消息重放攻击 第十章   网络安全防护 10.1 滥用权力实际操作 10.2 买卖伪造 10.3 重放攻击 10.4 客户枚举类型 10.5 暴力破解密码 10.6 引入/XSS/CSRF 第十一章   附则 检测工具明细吞龙 APP运用安全性测评表 安卓系统安全性思维脑图 APK防御思维脑图

前言

伴随着营运商新技术应用新业务流程的发展趋势,营运商方面对安全性的规定有一定的转变,网站渗透测试工作中可能遭遇网络安全内容、收费安全性、领域模型及APP等层面的挑戰。伴随着营运商独立开发设计的挪动APP愈来愈多,这种APP将会并不会根据应用商店审批及公布,在其中的安全系数将遭遇愈来愈多的挑戰。

在大量的APP运用中,将会会碰到各式各样的威协:木马病毒、病毒感染、伪造、破译、垂钓、二次装包、数据泄露、資源伪造、信息内容被劫持等。

为合理的对于所述各种各样威协开展合理预防,确保营运商和顾客的网络安全防护,产品说明书将主要从下列列出新项目对于APP运用(安卓系统)安全性开展检验。

APP运用安全性测试关键点(安卓系统) 手机客户端安全性 APK签字 过程和内存保护 运行内存浏览和改动 反汇编维护 动态性引入 运用一致性校检 通信安全 通讯数据加密 部件安全性 资格证书实效性 比较敏感网络信息安全 数据库文件 重要数据库加密和校验 logcat系统日志 密钥管理 密码安全 电脑键盘被劫持 手机客户端升级安全性 任意合理布局电脑键盘 短消息重放攻击 屏幕录制 网络安全防护 滥用权力实际操作 安全设置 登陆密码复杂性检验 买卖伪造 账户登录限定 重放攻击 账户锁住对策 客户枚举类型 登陆密码难题认证 暴力破解密码 对话安全性 引入/XSS/CSRF 页面转换维护 别的 UI数据泄露 短信验证码安全性 安全性撤出 密码重置认证 Activity页面被劫持

表1  APP运用安全性测试关键点

第一章   接口测试

1.1 SDK

Java JDK 1.8.0_151,Android SDK。

1.2 专用工具

MobSF架构,GameGuardian(运行内存DUMP),夜神模拟器(运作环境模拟),Android Killer(反汇编集成化),改之理(反汇编集成化),7zip,dex2jar(文件格式转换),jd-gui,apktool,activity 被劫持检测工具等,详尽明细请参考附则。

第二章   客户端软件安全性

2.1 安装文件签字

2.1.1叙述

在Android中,包名同样的2个APK会被觉得是同一个运用。当最新版本遮盖旧版时,签字资格证书务必一致,不然会被拒绝安裝(即便打开了“容许未知来源的运用”)。假如APK沒有应用自身的资格证书开展签字,可能丧失对版本控制的主导权。该项检验是检验手机客户端是不是历经适当签字(一切正常状况下运用都应该是签字的,不然无法安装),签字是不是符合要求。

2.1.2测试流程

打开cmd,进到到JDK的安装路径,C:\Program Files\Java\jdk1.8.0_111\bin,键入指令:

jarsigner.exe -verify APK文件路径

检测結果以下:

图1 签字认证

如圖,假如资格证书指纹识别与顾客一致,表明检测結果为安全性。

检验签字的字段名是不是恰当标识客户端软件的来源于和上传者真实身份,键入指令:

jarsigner.exe -verify -verbose -certs APK文件路径

若每个字段名与预估的一致,则产品测试

要表明的是,只能在应用立即顾客的证书签名时,才觉得安全性。Debug资格证书、第三方(如开发设计方)资格证书等均觉得存有风险性。

2.1.3威协级别

安装文件签字的威协级别分辨一般以下:

若手机客户端安装文件签字有出现异常(比如签字资格证书为第三方房地产商而不是手机客户端公布方),这时高危;若无异常则零风险。

2.1.4安全性提议

将安装文件开展签字并检验安装文件签字的出现异常。

2.2 反汇编维护

2.2.1叙述

检测手机客户端程序安装,分辨是不是能反汇编为源码,java 编码和so 文档是不是存有代码混淆等保障措施。未作维护的 java 编码,能够 随便剖析其运作逻辑性,并对于编码中的缺点对手机客户端或服务端开展进攻。

取得成功的反汇编将促使网络攻击可以详细地剖析APP的运作逻辑性,尤其是有关业务流程通讯协议、和通讯数据加密的完成。

2.2.2 基本概念

smali語言是一种Android系统软件独有的中间代码語言。Android系统软件应用Dalvik命令(exe文件为*.dex)替代了一般的JVM中间代码(exe文件为*.class、*.jar)。相匹配Dalvik命令的“汇编程序”就是smali。因而,从*.dex中修复smali编码比修复JAVA编码要非常容易,通过率高些。假如APK历经花指令解决,会造成没法修复smali编码(主要表现为apktool解压工具不成功)。

花指令:由设计师非常设计构思,期待使反汇编的情况下错误,让破译者没法清晰恰当地反汇编程序的內容,找不到方向。經典的运用,总体目标部位是另一条命令的正中间,那样在反汇编的情况下便会出現错乱。

2.2.3 测试流程

把apk当做zip并缓解压力(后缀名改成zip),获得classes.dex文件(有时候将会不仅一个dex文件,文件夹名称均以classes***开始),如下图:

图2      APK文档构造

应用dex2jar实行以下指令:

dex2jar.bat classes.dex 文件路径

获得classes.dex.jar,随后应用jd-gui开启jar文件,就可以获得JAVA编码。或是立即应用smali2java开启apk文件,也可反汇编回Java编码。

图3 反汇编后的APK

有时候用apktool可以解压工具并查询smali,但dex2jar却不好。假如dex2jar反汇编不成功,能够 试一试能否修复smali编码。

如圖,反向后发觉是没搞混的状况,是不安全的。

假如编码历经搞混,或是能加壳对策,不可以详细修复源码的,都能够觉得该项安全性。

下面的图为搞混后的编码示例:

图16 有搞混的编码

2.2.4威协级别

若手机客户端开展结构加固维护,这时觉得零风险。

若绝大多数编码(包含关键编码)历经搞混,这时低风险性。

若一部分代码混淆,重要编码(数据加密或通讯等)能够 得知其重要编码,这时中风险性。

2.2.5安全性提议

提议客户端软件能够 把重要编码以 JNI 方法放到 so 杜兰特。so 库文件是历经编译成的arm 汇编代码,能够 对其开展加壳维护,以避免逆向分析。

第三章   运用一致性校验

3.1叙述

检测客户端软件是不是对本身一致性开展校检。网络攻击可以根据反汇编的方式 在客户端软件中嵌入自身的木马病毒,客户端软件要是没有自校检体制得话,网络攻击将会会根据伪造客户端软件盗取移动用户的隐私保护信息内容。

3.2测试流程

用ApkTool将总体目标APK文档解压工具,指令以下;

java -jar apktool.jar d -f apk文件相对路径 -o 解压工具总体目标文件夹名称

图5 解压工具后的APK資源目录

随意找一个解压工具文件目录里的資源文件开展改动,强烈推荐寻找splash.png开展改动(非常容易确定結果);将APK拖进Androidkiller,检索splash.png,改动更换,,随后签名打包回APK。

将签了名的APK安裝、运作、确定是不是存有自校验;必须留意的是,假如以前安裝的APK和改动后的APK签名不一样,就不可以立即覆盖安装,一般来说,先卸载掉以前安裝的APP就可以。

注:APK务必开展签名后,即可安裝和运作。假如打开了“容许未知来源的运用”,那麼Debug资格证书、自签名资格证书、到期资格证书的签名全是能够 的,可是不能不签名。

将客户端软件文件反汇编,改动源代码或資源文件后再次打包安裝运作假如可运作,表明文件详细。

3.3威协级别

若运用完整性校验不应用MANIFEST.MF 中的数据信息,且关键编码根据 JNI 技术性载入.so库,另外于服务器端开展有关校验,这时零风险。

若运用完整性于当地开展验证而不会有别的难题或应用 MANIFEST.MF 中的数据信息做为验证凭据(有新文件时提醒运用完整性验证不成功),这时低风险性;

若在当地开展验证的基本上只根据MANIFEST.MF 对手机客户端原来文件开展校验而忽视增加文件的检测,这时中风险性;若未开展运用完整性校验这时高危。

3.4安全性提议

提议手机客户端在每一次开机运行时开展手机客户端本身的运用完整性校验,在验证逻辑性中不应用MANIFEST.MF中的数据信息做为验证凭据,另外需验证是不是有不属于该手机客户端版本号的新文件加上,验证全过程于服务端进行。

第四章   部件安全性

4.1叙述

该项关键检测手机客户端是不是包括后台管理服务项目、Content Provider、第三方启用和广播节目等部件,Intent 管理权限的设定是不是安全性。运用不一样构成部分中间的商业秘密数据信息传送是不是安全性。查验手机客户端是不是存有部件被劫持风险性,查询客户端软件具备导出来什么运用信息内容的管理权限。反汇编APK文件后,查验AndroidManifest文件中是不是有不必要的android:export申明,手机客户端是不是存有导出来别的运用信息内容的管理权限等。

4.2基本概念

1.部件:安卓系统APP以部件为企业开展管理权限申明和生命期管理方法;

2.部件的功效:安卓手机系统的部件现有四种,其适用范围各自为:

Activity:展现可供客户互动的页面,是最普遍的部件;

Service:长期实行后台作业,多见于监控器类运用;

Content Provider:在好几个APP间共享资源数据信息,例如手机通讯录数据信息;

Broadcast Receiver:申请注册特殊恶性事件,并在其产生时被激话;

3.管理权限申明:安卓手机系统界定了很多管理权限申明项,各自相匹配一些电脑操作系统作用;

4.管理权限申明的功效:假如一个APP或部件在沒有申明管理权限的状况下就启用有关API,会被拒绝访问;但假如申明了有关管理权限,安裝的情况下便会有提醒;

5.部件导出来:简单点来说,便是其他APP还可以浏览这一部件。

6.部件导出来的功效:一些APP的作用必须出示一些插口给其他APP浏览,就必须把有关的插口作用放到一个导出来的部件上。

7.部件导出来的伤害:由于管理权限申明是以部件为企业的,A部件启用B部件的作用来浏览电脑操作系统API时,适用B部件的管理权限申明。

假如B做为导出来部件,沒有开展严苛的密钥管理,那麼A就可以根据启用B来浏览本来沒有申明管理权限的作用,组成当地管理权限提高。

4.3测试流程

4.3.3计划方案一:

应用ApkTool解压工具,开启解压工具文件目录中AndroidManifest.xml,对在其中申明的每个部件,依据下列标准分辨是不是可导出来:

1.显示信息申明了android:exported=”true”,则可导出来;

2.显示信息申明了android:exported=”false”,则不能导出来;

3.未显示信息申明android:exported:

    a) 若部件并不是Content Provider:

i.       若部件包括则可导出来,相反不能;

    b) 若部件是Content Provider:

      i.  若SDK版本号<17则可导出来,相反不能。

从检测的视角上,只有分辨部件是不是导出来,但可否组成伤害必须深入分析源码后才可以下结论。一般来说,在检测时虽然写清全部的导出来部件,由市场开拓侧确定有关部件是不是的确必须导出来就可以。

图6 安全性的部件导出来实例

因为作用必须,起动Activity和ContentProvider大多是导出来部件,一般不必理睬。如圖的部件导出来便是安全性的。

4.3.4 计划方案二:

查验 AndroidManifest.xml 文件中各部件界定标识的安全性特性是不是设定适当。假如部件不必跨过程互动,则不可设定 exported 特性为 true。比如,如下图图示,当 MyService 的 exported特性为 true 时,将能够 被别的运用启用。(当有设定管理权限(permissions)时,必须再调查管理权限特性。如 android:protectionLevel 为 signature 或 signatureOrSystem 时,只能同样签名的 apk才可以获得管理权限。

图7 可启用的部件

能够 应用“部件安全性检测工具”来检验部件的 exported 特性(一些运用在编码中动态性申请注册部件,这类部件没法应用“部件安全性检测工具”检测,必须根据阅读文章编码明确是不是安全性。   

但凡标出来的部件全是 exported 特性为true 的。

当发觉有可运用的部件导出来时,(自然,并不是说全部导出来的部件全是不安全的,假如要明确,务必看编码,对编码逻辑性开展剖析)可运用drozer检测工具开展检测。

4.4威协级别

若不会有部件曝露的状况,这时零风险。

如存有部件曝露的状况,但曝露的部件不相干手机客户端逻辑性关键或不容易泄漏客户比较敏感信息内容,这时低风险性;若曝露的部件会泄漏客户比较敏感信息内容(比如邮件客户端存有信息部件的曝露,网络攻击能够 根据撰写 APK,根据部件运用的方法载入客户电子邮件信息内容)。

4.5安全性提议

防止多余的部件导出来。

第五章   比较敏感网络信息安全

5.1数据信息文件

5.1.1 叙述

检验手机客户端是不是储存密文比较敏感信息内容,可否避免客户比较敏感信息内容的非受权浏览。

文件比较敏感数据泄露以密文储存“记住密码”多见。

5.1.2 测试流程

最先查询有关文件的管理权限配备。一切正常的文件管理权限最终三位应是空(相近“rw-rw—-”),即除运用自身之外所有人没法读写能力;文件目录则容许多一个实行位(相近“rwxrwx—x”)。如下图图示,(lib 根目录是软件安装时由 android 系统软件自动生成,能够 忽略):

图8 文件的管理权限

当手机客户端应用MODE_WORLD_READABLE 或MODE_WORLD_WRITEABLE 方式建立文件时,shared_prefs 文件目录下文件的管理权限也会空出一些,这不一定是安全隐患,如下图(Google已不强烈推荐应用这种方式):

图 9 不强烈推荐的文件管理权限方式

管理权限检验详细后,再查验客户端软件储存在手机中的 SharedPreferences 配备文件,一般是对本文件目录下的文件內容(一般是xml)开展查验,看是不是包括比较敏感信息内容。

应用数据库查询查询专用工具就可以查询这种文件中是不是有比较敏感信息内容(sqllite等)。

还一些情况下,客户端软件 apk 包中也是是储存有比较敏感信息内容的,例如查验 apk 包中各种文件是不是包括硬编码的的比较敏感信息内容等。如下图APP的有关编号信息内容:

图10 包括比较敏感编码的APK

5.2 威协级别

依据比较敏感数据泄露的水平开展威协级别得分。若独享文件目录中存有储存了客户用户名和密码(密文或只开展过一次单项工程哈希散列),手势密码(密文或只开展过一次单项工程哈希散列)或以前浏览过网站地址的 Cookie 等比较敏感信息内容的文件,这时为高危,若不会有则零风险。

5.3 安全性提议

尽量减少在文件、数据库查询、系统日志等部位载入比较敏感信息内容。假如的确必须储存,理应开展数据加密。针对运行内存中的数据泄露,能够 根据反引入、反调节来处理。

除此之外,一切正常的文件管理权限最终三位应是空(相近“rw-rw—-”),文件目录则容许多一个实行位(相近“rwxrwx—x”)。

5.4 Logcat系统日志

5.4.1 叙述

该项主要是查验客户端软件储存在手机中的系统日志是不是带有比较敏感信息内容。

5.4.2 测试流程

将运行内存DUMP到SD卡,随后用adb到服务器上查询。

应用adb工具联接机器设备:

adb devices                //查询安卓系统机器设备目录

adb -s 设备名称 其他指令       //当联接了好几个机器设备时,挑选实际操作的总体目标机器设备,不然会错误

adb pull 手机上目标目录 PC目标目录      //从安卓系统机器设备中拷贝文档到电脑上中

随后应用WinHex开启

图11 查询遗留下运行内存信息内容

它是查看内存遗留下的信息内容,还能够立即应用adb查寻logcat系统日志,在adb shell中,有以下指令能用:

logcat         //不断輸出系统日志,直至Ctrl C

logcat-d      //一次性輸出系统日志缓存文件,不容易堵塞

logcat-c      //清除系统日志缓存文件

5.4.3 威协级别

依据比较敏感数据泄露的水平开展威协级别得分。若基本信息中存有储存了客户用户名和密码(密文或只开展过一次单项工程哈希散列),手势密码(密文或只开展过一次单项工程哈希散列)或以前浏览过网站地址的 Cookie 等比较敏感信息内容,这时为高危,若不会有则零风险。

5.4.4 安全性提议

传输数据应保证数据加密解决,比较敏感信息内容不可輸出在logcat系统日志中。

第六章  密码安全

6.1 电脑键盘被劫持

6.1.1 叙述

检测客户端软件在登陆密码等文本框是不是应用自定软键盘。安卓软件中的文本框默认设置应用系统软件软键盘,手机安装木马病毒后,木马病毒能够 根据更换系统软件软键盘,纪录手机键盘输过的登陆密码。

6.1.2 测试流程

一般而言,只能应用系统软件电脑输入法的编辑框才可以开展键盘码纪录。如果是自做的软键盘,则能够 试着开展触摸显示屏纪录。不应用系统软件电脑输入法,且功能键随机分布的软键盘是安全性的。

6.1.3 威协级别

可以被劫持电脑键盘风险性为高,不可以则为零风险。

6.1.4 安全性提议

尽可能应用系统软件自定的任意软键盘(并非系统软件电脑输入法)来键入比较敏感信息内容。或是对Native层键入纪录作用开展Hook(必须root管理权限)。

6.2 任意合理布局软键盘

6.2.1 叙述

检测手机客户端完成的软键盘,是不是考虑按键任意布线规定。

6.2.2 测试流程

人工服务观察按键遍布是不是为任意布线。

6.2.3 威协级别

当手机客户端软键盘未开展随机化解决时为低风险性;当手机客户端软键盘只在某一个网页页面加载时,复位一次而不是在点一下文本框时再次开展随机化也为低风险性。

6.2.4 安全性提议

按键任意布线。

6.3 屏幕录制

6.3.1 叙述

手机客户端应用的任意合理布局软键盘是不是会对客户点一下造成视觉效果回应。当任意合理布局软键盘对客户点一下造成视觉效果回应时,安卓系统木马病毒能够 根据持续手机截图的方法,对客户击键开展纪录,进而得到客户键入。

6.3.2 测试流程

应用ADB开展检测:

adb shell /system/bin/screencap -p 輸出png相对路径(安卓系统机器设备中)

如图所示:

图12 手机截图并转化成文档

在/mnt/sdcard/相对路径下,能够 见到1a.png:

图13 转化成的png截屏文档

开启:

图14 访问手机截图照片內容

网络攻击能够 在客户进到登陆页面,在输入支付密码的另外,开展持续截屏,就可以纪录客户键入的登陆密码。要是没有防手机截图,那麼即便是随机分布的、沒有视觉效果意见反馈的软键盘也会被纪录:

也有一种认证方法是以编码层面开展认证:

检验需较高安全系数的对话框(如登陆密码文本框),看编码中在对话框载入时是不是有相近下面的图的编码。依照 android SDK的规定,打开 FLAG_SECURE 选择项的对话框不可以被手机截图。

图15 FLAG_SECURE选择项

6.3.3 威协级别

当应用第三方程序流程(或系统软件手机截图)能够 对手机客户端內容开展手机截图时,为中风险性;当手机客户端会对手机截图实际操作开展合理抵御时(没法手机截图或手机截图結果为死机等无意义照片)零风险。

6.3.4 安全性提议

在比较敏感信息内容的键入全过程尽量减少视觉效果意见反馈,或是在电脑操作系统方面对手机截图有关作用开展Hook以阻拦比较敏感信息内容键入期内其他程序流程的手机截图实际操作(必须root管理权限)。

6.4手势密码

6.4.1 叙述

关键从手势密码的复杂性、改动和撤销、当地信息内容储存、锁住对策、抗进攻检测等层面开展检测。

6.4.2 测试流程

手势密码的复杂性:

1. 进到手机客户端设定手势密码的网页页面开展手势密码设定。

2. 开展手势密码设定,观查手机客户端手势密码设定逻辑性是不是存有至少定位点的分辨。

3. 反汇编 APK 为 jar 包,根据jd-gui观查相匹配编码逻辑性是不是有相对的分辨和限定标准。(一般设定手势密码若键入等级过较少时也有相对的文本提醒,根据此文本提醒能够 迅速精准定位到编码部位)

手势密码的改动和撤销:

1. 进到手机客户端设定手势密码的部位,一般在个人设置或安全中心等地区。

2. 开展手势密码改动或撤销实际操作,观查开展该类实际操作时是不是必须键入以前的手势密码或一般登陆密码。

3. 观查在忘掉手势密码等别的手机客户端领域模型中是不是存有不用初始手式或一般登陆密码就可以改动或撤销手势密码的状况。

4. 数次试着手机客户端各种业务流程,观查是不是存有手机客户端逻辑性缺点促使手机客户端能够 跳转到以前工作流程所相匹配网页页面。若存有该类逻辑性(比如手势密码设定),观查可否改动或撤销手势密码。

5. 反汇编 APK 为 jar 包,根据jd-gui观查相匹配编码逻辑性,找寻手机客户端针对手势密码的改动和删掉是不是存有相对的安全设置。

手势密码的当地信息内容储存:

1. 最先根据一切正常的操作步骤设定一个手势密码并详细一次详细的登录全过程。

2. 找寻/data/data 的独享文件目录下是不是存有手势密码相匹配比较敏感文档,若开展了有关的信息内容储存,基础在这里文件目录下。(关键字为 gesture.key 等)

3. 若寻找相匹配的文档,观查其储存方法,为密文還是二进制方式储存,若为二进制方式,观查其实际十位数是不是相匹配开展 MD5(二进制 128 位,十六进制32位系统或 16 位)、SHA-1(二进制 160 位,十六进制 40 位)等散列后的十位数。假如十位数相匹配,就可以在反汇编的 jar包中检索相匹配的关键词以快速相匹配编码。

4. 根据编码精准定位确定其是不是开展了除单项工程哈希散列以外的加密技术,若手机客户端未将手势密码开展数据加密或形变立即开展散列解决可觉得其不安全,一是由于目前 MD5、SHA-1 等常见的hash算法已被发觉撞击系统漏洞,二是互联网中存有 www.somd5.com 等散列值查询系统能够 根据大数据查询的方法获得散列前的密文手势密码。

手势密码的锁住对策:

1. 最先根据一切正常的操作步骤设定一个手势密码。

2. 键入有别于流程 1 中的手势密码,观查手机客户端的登录情况及相对提醒。若持续键入数次手势密码不正确,观查当客户处在登录情况时是不是撤出当今的登录情况并关掉手机客户端;当顾客未处在登陆情况时是不是关掉手机客户端并开展一定時间的键入锁住。

3. 反汇编 APK 为 jar 包,根据jd-gui观查相匹配编码逻辑性,找寻手机客户端是不是对于键入频次及锁住時间有相对的逻辑性解决。

手势密码的抗进攻检测:

1. 安装下载 Xposed 架构及 SwipeBack 软件。

2. 起动手机客户端并进到手势密码键入页。

3. 起动 SwipeBack 软件,观查是不是能够 根据拖动关掉手势密码键入页的方法进到登录后的网页页面。

6.4.3 威协级别

手势密码的复杂性:

当客户设定或改动手势密码时网络服务器会对手势密码安全系数(应用等级)开展分辨时零风险,不然低风险性。

改动和撤销:

当撤销或改动手势密码时,假如不容易认证以前的手势密码则为中风险性;若存有认证则零风险。

当地信息内容储存:

当当地储存了密文储存(数组方式)的手势密码时为高危;当当地储存了只开展单项工程哈希散列的手势密码时为中风险性。

锁住对策:

当网络服务器不容易认证手势密码键入不正确频次时为中风险性,会开展认证时零风险。

抗进攻检测:

若手机客户端选用粘附的方法将手势密码置放于登录后的页面处时,假如没法抵御SwipeBack 软件的拖动进攻则高危,假如能抵御则零风险。

6.4.4 安全性提议

所述手势密码哪层面出現难题就依据哪层面的风险性明确提出目的性的提议。

第七章   安全设置

安全设置在具体检测中受到限制较多,因而提议的安全风险:安全设置类所有为低危。

7.1 登陆密码复杂性检验

7.1.2 叙述

检测客户端软件是不是检查用户键入的登陆密码抗压强度,严禁客户设定弱口令。

7.1.3 测试流程

人工服务检测,试着将密码重置为弱口令,如:123456,654321,121212,888888 等,查询手机客户端是不是回绝弱口令。还可以阅读文章反向后的手机客户端 java 编码,找寻对客户键入动态口令的查验方式 。

7.1.4 威协级别

低危。

7.1.5 安全性提议

当系统软件容许客户设定弱密匙时为低风险性,假如存有系统软件存有一定的安全设置(应用大数字,大小写字母,下横线,特殊符号组成,且最少为 八位)时零风险。

7.2 账户登录限定

7.2.1 叙述

检测一个账号是不是能够 另外在好几个机器设备上取得成功登陆手机客户端,开展实际操作。

7.2.2 测试流程

人工服务检测。

7.2.3 威协级别

低危。

7.2.4 安全性提议

严禁同一个账户能够 另外在几台挪动智能终端上登录。

7.3 帐户锁住对策

7.3.1 叙述

检测手机客户端是不是限定登陆试着频次。避免木马病毒应用穷举法暴力破解密码客户登陆密码。

7.3.2 测试流程

人工服务检测。

7.3.3 威协级别

低危。

7.3.4安全性提议

设置帐户锁住对策。

7.4 难题认证

7.4.1 叙述

检测对账户一些信息内容(如单次付款额度)的改动是不是有私秘难题认证。私秘难题认证是不是将问题和答案一一对应。私秘难题是不是充足私秘。

7.4.2 测试流程

人工服务检测。

7.4.3 威协级别

当客户开展密码忘了实际操作时,在邮件发送给客户电子邮箱前是不是开展私秘难题的认证,若认证则零风险;若不认证则低风险性。

7.4.4 安全性提议

针对比较敏感作用实际操作时,要开展私秘难题认证。

7.5 对话安全性

7.5.1 叙述

检测手机客户端在超出 20 分鐘无实际操作后,是不是会使对话请求超时并规定再次登陆。请求超时时间设置是不是有效。

7.5.2 测试流程

人工服务检测。

7.5.3 威协级别

当系统软件不会有对话请求超时判断推理时为低风险性,若存有则零风险。

7.5.4 安全性提议

设定对话请求超时。

7.6 页面转换维护

7.6.1 叙述

查验客户端软件在转换到别的运用时,早已填好的账户密码等比较敏感信息内容是不是会清除,避免客户比较敏感数据泄露。

假如转换前处在已登陆情况,转换后一定時间内是不是会全自动撤出当今对话。

7.6.2 测试流程

人工服务检验。

在登陆界面(或是转帐页面等涉及到登陆密码的作用)填好用户名和登陆密码,随后切出来,再进到手机客户端,看键入的用户名和登陆密码是不是消除。登陆后切出来,5 分鐘内全自动撤出为安全性。

7.6.3 威协级别

当挪动智能终端开展过程转换实际操作,显示信息页面不以手机客户端网页页面时,若手机客户端提醒客户确定是不是为自己实际操作,则零风险;如果没有相对提醒则为低风险性。

7.6.4 安全性提议

针对界面转换开展提醒或是认证。

7.7 UI数据泄露

7.7.1 叙述

查验手机客户端的各种各样作用,看是不是存有比较敏感数据泄露难题。

7.7.2 测试流程

人工服务检测。应用不正确的用户名或密码登录,看手机客户端提醒是不是不一样。在显示信息银行卡账号等比较敏感信息内容时是不是开展一部分挡住。

7.7.3 威协级别

若在登录名键入不正确和登陆密码键入不正确时信息提示不一样则存有 UI 数据泄露难题,这时为低风险性,不然零风险。

7.7.4 安全性提议

留意UI信息内容的安全防护。

7.8 短信验证码安全性

7.8.1 叙述

检测手机客户端在登陆和买卖时是不是应用图形验证码。短信验证码是不是合乎以下规定:由大数字和英文字母等标识符混和构成;采用照片底纹背景影响、色调转换、设定非持续性及转动图片字体、基因变异字体样式显示信息款式等合理方法,预防恶意程序自动检索照片上的信息内容;具备使用时间限定并仅能应用一次;短信验证码由网络服务器转化成,手机客户端文档中不包含图形验证码文字內容。

7.8.2 测试流程

观查短信验证码构成,若简易,能够 试着应用PKAVHttpFuzzer的验证码识别专用工具开展鉴别:

图16 验证码识别专用工具

7.8.3 威协级别

当图形验证码由当地转化成而不是从服务器获得时为中风险性;当短信验证码安全系数低或不会有短信验证码时为中风险性;不会有之上2个难题时零风险。

7.8.4 安全性提议

提升短信验证码的鉴别难度系数,针对短信验证码的认证保证“一次一验”。

7.9 安全性撤出

7.9.1 叙述

检测手机客户端撤出时是不是一切正常停止对话。

7.9.2 测试流程

查验手机客户端在撤出时,是不是向服务器端推送停止对话恳求。手机客户端撤出后,还可否应用撤出前的对话 id 浏览登陆后才可以浏览的网页页面。

7.9.3 威协级别

若手机客户端退出登录时不容易和服务器虚拟机Logout的有关通讯则为中风险性,不然零风险。

7.9.4 安全性提议

手机客户端撤出时要保证和服务器虚拟机Logout的有关通讯。

7.10 密码重置认证

7.10.1叙述

检测手机客户端在更改密码时是不是认证旧登陆密码准确性。

7.10.2 测试流程

人工服务检测。

7.10.3威协级别

当开展密码重置时是不是规定键入原登陆密码已认证其准确性,若必须键入则零风险;如不需键入原登陆密码则中风险性。

7.10.4 安全性提议

更改密码必须认证原登陆密码的准确性。

7.11 Activity页面被劫持

7.11.1 叙述

查验是不是存有 activity 被劫持风险性,确定手机客户端是不是可以发觉并提醒客户存有被劫持。

7.11.2 测试流程

安裝HijackActivity.apk,应用 activity 页面被劫持专用工具,在专用工具中特定要被劫持的运用过程名字。如下图所示,从目录中挑选被检测的运用,点一下 OK。打开应用,检测工具会试着用自身的对话框遮盖待测的运用。

图17 HijackActivity.apk被劫持专用工具

假如被劫持取得成功,会出現以下页面:

图18 取得成功被劫持

7.11.3 威协级别

若手机客户端没法抵御 Activity 页面被劫持进攻时为中风险性;若能够 抵御进攻则零风险。

7.11.4 安全性提议

Activity被劫持一般借助申请注册Receiver回应android.intent.action.BOOT_COMPLETED恶性事件。客户端软件能够 在起动前查验Receiver并警报;

因为Activity页面被劫持进攻一般是将自身的网页页面粘附在手机客户端之中,因而必须开展页面转换实际操作,因而在页面转换到后台管理时弹出来警示信息内容还可以做到一定的实际效果。

此外,由于Android过程栈的原理,提议开发设计手机客户端时对于过程栈开展相对的维护,可严禁别的过程置放于手机客户端之中。

第八章   过程维护

8.1 运行内存浏览和改动

8.1.1 叙述

根据对手机客户端运行内存的浏览,木马病毒将有可能会获得储存在运行内存中的比较敏感信息内容(如账户密码,账号等)。检测手机客户端运行内存中是不是存有的比较敏感信息内容(账户、明文密码这些)。

8.1.2 测试流程

必须 root 管理权限,能够 应用 MemSpector 查询、检索和改动手机客户端运行内存数据信息。登录名、登陆密码等数据信息一般会在/dev/ashmem/dalvik-heap 运行内存段。(现阶段大部分专用工具全是根据ptrace插口改动手机客户端运行内存,能够 应用 ptrace 体制自身安全防护。)

8.1.3 威协级别

当开展比较敏感实际操作后在运行内存中能够 检索到客户键入的比较敏感信息内容时为高危,不然零风险。

8.1.4 安全性提议

针对运行内存中的数据泄露,能够 根据反引入、反调节来处理。

8.2 动态性引入

8.2.1 叙述

根据引入动态链接库,hook 手机客户端一些重要涵数,进而获得比较敏感信息内容或是更改程序运行。

8.2.2 测试流程

应用专用工具动态性引入运用过程运行内存。Dynamic Dalvik Instrumentation Toolkit或是应用 hook 架构来开展检测。

8.2.3 威协级别

当手机客户端存有动态性引入安全隐患时高危,不然零风险。

8.2.4 安全性提议

避免程序运行被Hook。

第九章   通信安全

9.1 通讯数据加密

9.1.1 叙述

假如手机客户端与集群服务器的通讯加密协议完成不善,网络攻击将还有机会对当今网络空间中别的合理合法客户的通讯內容开展监听乃至伪造。

9.1.2 测试流程

以便对服务端开展检测,最少要先搞清楚手机客户端与网络服务器的通讯协议。

一般来说,有下列三种状况:

1.  假如应用HTTP(S)协议书,大多数能够 根据设定系统软件HTTP代理商来开展实际操作手机客户端的互联网浏览。这类状况占绝大部分:

    a)  在电脑上打开Burpsuite/Fiddler等代理工具,并设定容许远程桌面连接;

    b)  如果是真正手机上:

      i.  应用netsh wlan打开承重互联网(具体做法请自主百度搜索);

      ii. 用手机电脑连接的WIFI,一部分同Genymotion。

2.  如果是HTTP(S)协议书,可是不接纳电脑操作系统代理商:

    a)  假如机器设备早已root,能够 安裝 “ProxyDroid” APP;

    b)  假如机器设备不可以root,能够 把安卓虚拟机装在Windowsvm虚拟机里,在Windows虚似机上下载Proxifier,挂上去物理机的代理工具上;

3.  要不是HTTP协议书:

    a)  那麼一般便是由TCP或UDP完成的独享协议书,大部分是TCP;

    b)  尽管还可以用一些方法来实际操作TCP互联网浏览(例如用WPE额外到Emulator的过程上),但因为TCP是全双工流式的协议书,网络层上沒有确立的报文格式界限。假如独享协议书是恳求-响应式网站的还凑合能够 编写,如果是授权委托-回调式,或是其他繁杂方式的协议书,应用通用性专用工具开展实际操作是十分艰难的。

    c)  这类状况能够 根据Wireshark抓包软件剖析,假如协议书不繁杂,能够 自主完成编码开展仿造;

    d)  假如协议书繁杂,就必须对APP的编码开展剖析,寻找通讯的一部分,将其摘出并启用,或是自主完成编码开展仿造;

除此之外,通讯全过程如果有数据加密、签字等对策,一般必须从手机客户端编码下手,开展传统式逆向分析以破译其数据加密。假如其完成比较复杂,该项能够 觉得安全性。

逆向分析的普遍下手部位关键有数据信息(字符串数组內容等)和特殊API(如页面、互联网、文档、Native实际操作等)二种。

有时候会碰到手机客户端查验了HTTPS资格证书的状况(主要表现为,代理工具如果不更换SSL证书则一切正常代理商,更换SSL证书则手机客户端网络异常),也有下列二种状况:

1.  手机客户端应用电脑操作系统资格证书链认证服务器端资格证书:

    a)  此类状况下,能够 从代理工具中导出来资格证书,随后安裝到安卓系统机器设备中。

2.  手机客户端预付了服务器端资格证书的公匙或Hash,乃至全部资格证书:

    a)  此类状况下,假如手机客户端自身缺乏一致性校检,能够 试着剖析其编码,并改动其储存的资格证书信息内容为代理工具的资格证书信息内容;

全部必须对客户端软件/机器设备开展实际操作后,才可以消除的安全性或一致性对策,不算为风险性。

数据加密签字对策的破译,最后還是要依据手机客户端的实际完成方法开展剖析。

9.1.3 威协级别

当手机客户端和网络服务器的通讯不历经 SSL 数据加密(或沒有参照 TLS 协议书,RF**346 等完成数据加密无线信道)时为高危;当自完成通讯优化算法存有系统漏洞可被分析或绕开时为高危;应用低版本SSL 协议书(SSLV2,SSLV3 均存有系统漏洞,最少应用 TLSV1.1 之上优化算法)时为高危;之上难题均不会有时零风险。

9.1.4 安全性提议

提议应用SSL协议书,并在手机客户端对服务器端的资格证书开展认证。假如自主完成加密协议,提议在手机客户端事先储存服务器端公匙,在创建对话时随机生成对称加密密匙,用服务器端公匙数据加密并发给服务器端,接着服务器端用公钥破译后,正式开始开展通讯。数据加密全过程尽量减少应用CBC方式。

9.2 资格证书实效性

9.2.1 叙述

关键检测SSL 协议书安全系数、SSL证书认证等。

9.2.2 测试流程

最先检测客户端软件是不是严苛查验服务端资格证书信息内容。

根据改动 DNS,将手机客户端连接到的首页详细地址改成 https://mail.qq.com/,随后应用手机客户端浏览服务器端,查询手机客户端是不是会提醒联接不正确。该项检测关键对于手机客户端是不是对 SSL 资格证书中的网站域名开展确定。

还可以查看编码中是不是有 SSL 认证。

如下图有关认证:

图19 SSL认证

还必须检验SSL 协议书安全系数。主要是检验手机客户端应用的 SSL 版本信息是不是不小于 3.0(或 TLS v1),加密技术是不是安全性。(安全规范规定)。

检测指令以下:

Openssl s_client -host 检测网站地址 -port 443

图20 检测結果

9.2.3 威协级别

当手机客户端和网络服务器相互之间不认证资格证书时高危,当只能手机客户端认证服务器证书时为中风险性;

当网络服务器不通过权限的方法认证手机客户端时为中风险性;当手机客户端和服务器虚拟机双重验证,而且网络服务器根据权限方法认证客户端证书时零风险。

9.2.4 安全性提议

应用Https方法开展数据加密,且网络服务器根据权限方法认证客户端证书。

9.4 重要数据库加密和校检

9.4.1 叙述

检测客户端软件递交数据信息给服务器端时,登陆密码、收款方信息内容等关键词段是不是开展了数据加密,避免故意客户网络嗅探到客户数据文件中的登陆密码等比较敏感信息内容。

9.4.2 测试流程

在手机上配备好代理商,观查手机客户端和服务器端的互动数据信息。查验关键词端是不是数据加密。

假如手机客户端对根证书开展了严苛检验,造成代理商没法应用。则能够 将代理商的根证书安裝到机器设备上,使根证书可靠。或者更换手机客户端apk 中的根证书文档。假如所述方式 均无效,则反汇编为 java 编码,将手机客户端反向后,根据阅读文章java 编码的方法找寻客户端软件向服务器端递交数据信息的编码,查验是不是存有数据加密的编码。

9.4.3 威协级别

当账户,登陆密码,银行卡账号等数据信息密文传送,未开展二次数据加密时为高危;当登陆密码只开展了单项工程散列而未历经数据加密时为高危;当回到数据信息中包括升级的 URL 且数据信息不数据加密时为高危;

当校检字段名删掉后网络服务器仍会解决所推送的数据文件时为高危;当校检字段名的散列中不包含任意因素时为高危。之上难题均不会有时零风险。

9.4.4 安全性提议

针对关键的比较敏感信息内容传送时要开展严苛的数据加密和校检。

9.5 密钥管理

9.5.1 叙述

检测手机客户端浏览的 URL 是不是仅能由app客户端浏览。是不是能够 绕开登陆限定立即浏览登陆后才可以浏览的网页页面,对必须二次验证的网页页面(如私秘难题认证),可否绕开认证。

9.5.2 测试流程

人工服务检测。在 PC 机的电脑浏览器里键入 URL,试着浏览手机界面。

9.5.3 威协级别

当 PC 端也可浏览手机界面时低风险性,当能够 绕开登录限定浏览登录后才可以浏览的网页页面时中风险性。

9.5.4 安全性提议

对也访问页面管理权限开展严控。

9.6 手机客户端升级安全系数

9.6.1 叙述

检测手机客户端自动升级体制是不是安全性。假如手机客户端升级沒有应用官方网应用商城的升级方法,就将会导致用户安装下载故意运用,进而导入安全隐患。

9.6.2 测试流程

应用代理商爬取检验升级的数据文件,试着将服务器返回的升级 url 更换为故意连接。看手机客户端是不是会立即开启此链接并下载软件。在应用软件下载结束后,检测可否更换免费下载的 apk 文档,检测手机客户端是不是会安裝更换后的运用。

9.6.3 威协级别

当手机客户端回到密文 URL 详细地址并能够 根据伪造的方法操纵客户免费下载故意 APK包开展安裝,则高危;若回到数据文件历经二次数据加密则零风险。

9.6.4 安全性提议

针对回到的数据文件要开展二次数据加密解决。

9.7 短消息重放攻击

9.7.1 叙述

检验运用中是不是存有数据文件重放攻击的安全隐患。是不是会对手机客户端客户导致骚扰短信的困惑。

9.7.2 测试流程

试着播放验证码短信数据文件是不是能够 开展骚扰短信进攻。

9.7.3 威协级别

当存有骚扰短信的状况时为中风险性,若短信网关会检验短期内内发给某一手机号码的短消息总数则零风险。

9.7.4 安全性提议

针对短信验证码的推送要开展有关身份认证,如:短信验证码。

第十章   网络安全防护

网络安全防护大部分检验的领域模型安全性。针对领域模型安全性在开展检测的情况下能够 参照领域模型网站渗透测试思维脑图:

图21 领域模型网站渗透测试思维脑图

手机上APP的网络安全防护和WEB检测并无很大区别,仅做简易表明。

10.1 滥用权力实际操作

10.1.1 叙述

服务端对顾客明确提出的数据信息实际操作恳求太过信赖,忽视了对该客户实际操作管理权限的判断,造成进攻账户有着了别的帐户的增删作用。

10.1.2 测试流程

归属于领域模型有关的检测,因而必须手工制作检测。

10.1.3 威协级别

依据滥用权力实际操作的不良影响开展评定。

10.1.4 安全性提议

1、基本安全性构架,健全用户权限管理体系。要了解什么数据信息针对什么客户,什么数据信息不应该由什么客户实际操作;

2、身份验证,服务器端对恳求的数据信息和当今客户真实身份做校检;

10.2 买卖伪造

10.2.1 叙述

该项检测主要是改动额度信息内容(如:转账额度为负数),订单详情(如:订单信息的总数)等。

10.2.2 测试流程

手工制作抓包软件检测。

10.2.3 威协级别

高(该项业务流程一般为关键业务流程,要是能改动基本信息,大部分全是高风险系统漏洞)。

10.2.4 安全性提议

服务器端要保证严苛的认证。(依据业务流程情况不一样,安全性提议都不同样,因而这儿只有简易的一句话叙述)。

10.3 重放攻击

10.3.1 叙述

关键便是开展抓包软件播放(如:播放商品选购、订单信息造就等)检测。

10.3.2 测试流程

人工服务检测。

10.3.3 威协级别

依据播放业务流程开展判断危险等级。

10.2.4 安全性提议

依据业务流程实际情景出示不一样的安全性提议。

10.4 客户枚举类型

10.4.1 叙述

试着工程爆破枚举类型客户。

10.4.2 测试流程

手工制作检测。

该类系统漏洞情景一般是:登陆界面无短信验证码、有显著的回到信息内容(如:该账户不会有、密码错误等)。

10.4.3 威协级别

需看企业的经营规模、登录名的方式(如:***号)等来判断危险等级。

10.4.4 安全性提议

一般的安全性提议是设定严苛的登陆信息内容认证,如短信验证码、短信验证码等。

10.5 暴力破解密码

10.5.1 叙述

主要是检测业务流程中查寻、登陆等作用,试着恐吓威胁枚举类型的方法开展破译。

10.5.2 测试流程

手工制作检测。

10.5.3 威协级别

依据暴力破解密码的业务流程和結果开展判断(如:若取得成功工程爆破出客户账户和登陆密码,安全风险为高)。

10.5.4 安全性提议

一般的安全性提议是设定严苛的信息内容认证,如短信验证码、短信验证码等。

10.6 引入/XSS/CSRF

10.6.1 叙述

和WEB检测相近,关键检测网站存有的普遍的WEB系统漏洞。

10.6.2 测试流程

可手工制作检测还可以应用专用工具扫描仪、检测。

10.6.3 威协级别

该类系统漏洞一般为高,实际的能看存有系统漏洞的业务流程开展判断。

10.6.4 安全性提议

参照WEB系统漏洞的安全性提议。

第十一章   附则

检测工具明细吞龙

MobSF

signapk

jd-gui-windows

dex2jar

apktool

adb

AndroidKiller

改之理

drozer

Burpsuite

GameGuardian

ApkIDE少月版V3.5.0

GDA3.33

IDA Pro

Reflector

APP运用安全性测评表

安卓系统安全性思维脑图

APK防御思维脑图

*文中创作者:吞龙,转截请标明来源于FreeBuf.COM

猜你喜欢