分析方法:
静态分析
主要是利用apktool、dex2jar、jd-gui、smali2dex等静态分析工具对应用进行反编译,并对反编译后的java文件、xml文件等文件进行静态扫描分析,
通过关键词搜索等静态方式将具有安全隐患的代码进行摘录并存入到检测平台后台,为后续的安全检测报告提供数据依据。
动态分析
动态分析技术是对应用软件安装、运行过程的行为监测和分析。检测的方式包括沙箱模型和虚拟机方式。
(1)沙箱模型方式通过建立安全的沙箱模型,使得移动应用的执行环境是封闭的一个沙箱,不受到沙箱外环境的干扰,结合传统PC机上的沙箱模型原理的分析和研究,得到合适于手机上的沙箱模型。
(2)虚拟机方式通过建立与Android手机终端软件运行环境几乎一样的虚拟执行环境,手机应用软件在其中独立运行,从外界观察应用程序的执行过程和动态,进而记录应用程序可能表现出来的恶意行为。
人工分析
人工分析技术是专业安全人员接收到用户提交的待检测应用后,先对其进行安装、运行和试用,通过在试用过程中,逐步掌握该应用的特点,并通过自己的专业经验,来圈定检测重点。
人工专业检测在涵盖基础检测和深度检测的全部检测项的同时,兼顾侧重点检测,给予应用更全面、更专业、更贴合应用的量身打造的检测服务。 初级测试点:
1. 用户隐私
  • 检查是否在本地保存用户密码,无论加密与否
  • 检查敏感的隐私信息,如聊天记录、关系链、银行账号等是否进行加密
  • 检查是否将系统文件、配置文件明文保存在外部设备上
  • 部分需要存储到外部设备的信息,需要每次使用前都判断信息是否被篡改

2. 文件权限

  • 检查App所在的目录,其权限必须为不允许其他组成员读写

.  网络通讯

  • 检查敏感信息在网络传输中是否做了加密处理,重要数据要采用TLS或者SSL

  运行时解释保护

  • 对于嵌有解释器的软件,检查是否存在XSS、SQL注入漏洞
  • 使用webiew的App,检查是否存在URL欺骗漏洞

5.    Android组件权限保护

  • 禁止App内部组件被任意第三方程序调用。
  • 若需要供外部调用的组件,应检查对调用者是否做了签名限制

.   升级

  • 检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持

7.   3rd库

  • 如果使用了第三方库,需要跟进第三方库的更新

初级测试方法:

 1.接口测试:

  测试的是联网的android应用程序,即内部封装了一系列web应用操作接口,实际测试跟常规的web安全测试没有区别。

只不过由于实际的不安全wifi环境,对于移动app调用web接口,涉及到敏感的用户信息,包括用户名,密码,微博的gisd等使用http明文传输,都会造成比较严重的信息泄露。

 2.组件测试:

  对于android组件测试,就涉及到了apk反汇编的一些知识了,我主要使用的工具有小米人apk改之理以及drozer,通过这两个小工具来反编译apk是很方便滴。我们安全测试的会涉及的组件包括WebView,

和android四大组件Activity、Service、Broadcast Receiver、Content Provider;

  测试WebView的方法用的是乌云知识库里面发表的那种方法,反编译apk文件,使用小米人apk改之理或者apktool都可以反编译成smali汇编,然后查找addJavascriptInterface,对导出接口进行测试,一般情况下,

可以直接使用黑盒测试的方法,即让app访问:黑盒测试;关于webview的一个典型的漏洞细节你也可以查看乌云知识库。

  测试四大组件就可以使用drozer这款工具,drozer列举的apk的组件都是获取AndroidManifest.xml里面声明的,所以不是很全面,对于程序代码里面动态创建滴,

还是需要反编译查看smali代码,或者还原smali成java代码,当然还原的java代码是也是jd-gui根据生成的smali自动生成的,存在一定的区别。

 3.测试Broadcast Receiver:

首先查看一下手机百度使用的Receiver组件,如下:

这里测试的是com.baidu.searchbox.story.DownloadStoryReceiver 这个receiver组件,这里列举的receive主要是因为AndroidManifest.xml存在如下这段代码

<receiver android:name=".story.DownloadStoryReceiver" android:exported="true">

android:exported="true"表示能接收外部广播因为一看就是下载,然后跟进这个类里面,查看onReceive处理方法,直接查看还原的java代码,有如下片断:

public void onReceive(Context paramContext, Intent paramIntent)

  {

    this.b = paramContext;

    this.d = paramIntent.getStringExtra("download_url");

    this.c = paramIntent.getStringExtra("display_url");

    if ((TextUtils.isEmpty(this.d)) || (TextUtils.isEmpty(this.c)))

      if (g)

        Log.e(h, "Invalid param! download_url or display_url cannot be empty.");

    while (true)

    {

      return;

      String str1 = paramIntent.getStringExtra("filename");

      this.f = ("Content-Disposition","attachment; filename="" + str1 + """);

     ……………………

所以可以直接发广播测试:

然后就可以看到手机百度会跳转到 http://tea504.sinaapp.com 这个地址,并且后台下载http://tea504.sinaapp.com/xss.js地址的xss.js文件,本地保存为test.xxx

 4.测试Content Provider:

这个是负责数据存储,使用的是sqlite数据库,基本上都存在sql注入,一般能够被外界调用都很危险,查看AndroidManifest.xml存在代码:

<provider android:name=".bookmark.BookmarkProvider" android:writePermission="com.baidu.permission.write_bookmark" android:exported="true" android:authorities="baidusearch_bookmark" />

又是android:exported=”true”,并且只限制了writePemission权限,所以可以恶意app还是可以获取这个读取这个数据库的信息,baidusearch_bookmark记录的是用户浏览历史记录和书签,如下:

这是我手机上的 /data/data/com.baidu.searchbox/databases/SearchBox.db 数据库里面的数据,

然后就可以访问这个uri获取数据测试,如下:

如上 第一次sql语句写错了,提示报错。第二次可以成功查询

当然对于这种组件安全,需要使用恶意app进行攻击。

app安全测试初级的更多相关文章

  1. Android APP压力测试(三)之Monkey日志自动分析脚本

    Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...

  2. Android APP压力测试(二)之Monkey信息自动收集脚本

      Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...

  3. 初识App安全性测试

    目前手机App测试还是以发现bug为主,主要测试流程就是服务器接口测试,客户端功能性覆盖,以及自动化配合的性能,适配,压测等,对于App安全性测试貌似没有系统全面统一的标准和流程,其实安全性bug也可 ...

  4. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  5. shellKali Linux Web 渗透测试— 初级教程(第三课)

    shellKali Linux Web 渗透测试— 初级教程(第三课) 文/玄魂 目录 shellKali Linux Web 渗透测试—初级教程(第三课) 课程目录 通过google hack寻找测 ...

  6. 移动app安全测试

    安全方面逐渐转向app安全,服务端app安全测试基本上跟常规的web方面挖掘差不多,只是增加了一个反编译或抓包的过程. 参考文献: http://drops.wooyun.org/tips/749 h ...

  7. 深圳尚学堂:Android APP的测试流程

    每一个新开发的软件都避免不了测试,我在这里总结了一些Android系统的移动端APP测试的一些测试流程,希望可以给大家一些帮助. 1. UI 测试App主要核ui与实际设计的效果图是否一致:交互方面的 ...

  8. app专项测试自动化测试方法思路与实现

    秉着个人意愿打算把python+rf接口自动进行彻底结束再做些其它方面的输出~但事与愿违,但领导目前注重先把专项测试方面完成,借此,先暂停python+rf(主要是与Jenkins集成+导入DB+微信 ...

  9. 移动应用/APP的测试流程及方法

    1. APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先 ...

随机推荐

  1. 【Spring Boot学习之三】Spring Boot整合数据源

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.Spring Boot整合Spring JDBC 1.pom.xml <project xmlns=&quo ...

  2. 【转】深入理解javascript中的立即执行函数(function(){…})()

    javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( f ...

  3. [QT] - HTTP文件传输服务器#工程源码

    简介: 大学时期学习弄的一个小软件,当初做的目的是在实验室的局域网内方便同学之间文件的传输,软件的几个功能截图如正文所示,文末提供工程源码文件,感谢支持! 功能截图: [ 打开软件,选择IP及需绑定的 ...

  4. Python列表添加元素

    Python列表添加元素 1.appent() 在列表尾部添加一个元素 >>>my_list.append("append方法") >>>my_ ...

  5. Akka-CQRS(10)- gRPC on SSL/TLS 安全连接

    使用gRPC作为云平台和移动前端的连接方式,网络安全应该是必须考虑的一个重点.gRPC是支持ssl/tls安全通讯机制的.用了一个周末来研究具体使用方法,实际上是一个周末的挖坑填坑过程.把这次经历记录 ...

  6. Docker之Alpine制作镜像且上传至阿里云

    目的: Alpine制作jdk镜像 Alpine制作jre镜像(瘦身) Docker镜像上传至阿里云 Alpine制作jdk镜像 alpine Linux简介 Alpine Linux是一个轻型Lin ...

  7. win10 mars xlog编译

    win10 mars xlog编译   一. 环境准备 安装 cmake 以及 python2.7, 以及下载 ndk-r16b,并配置环境变量 NDK_ROOT 指向 ndk 路径. 如果是 Win ...

  8. 微软企业库支持 MySql

    微软企业库支持 MySql   三步让企业库支持 mysql 数据库 1.创建 MySqlDatabaseData 类 using Microsoft.Practices.EnterpriseLibr ...

  9. pyspark学习笔记

    记录一些pyspark常用的用法,用到的就会加进来 pyspark指定分区个数 通过spark指定最终存储文件的个数,以解决例如小文件的问题,比hive方便,直观 有两种方法,repartition, ...

  10. Java—十进制数对n进制数转换

    import java.math.BigInteger;import java.util.Scanner; /** * @auther Aohui * @create 2019-11-06-15:33 ...