分析方法:
静态分析
主要是利用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. SpringBoot系列教程web篇之重定向

    原文地址: SpringBoot系列教程web篇之重定向 前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -&g ...

  2. 材质(Material)和几何体(Geometry)

    1.    材质 一个材质结合一个几何体可以组成一个mesh对象.材质就像物体的皮肤,决定了几何体的外表.例如:皮肤定义了一个几何体看起来是否像金属.透明与否,或者显示为线框. 基本的材质如下: 1. ...

  3. OpenLayers加载百度离线瓦片地图(完美无偏移)

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...

  4. BJFU—214基于链式存储结构的图书信息表的创建和输出

    #include<stdio.h>#include<stdlib.h>#define MAX 100 typedef struct bNode{ double no; char ...

  5. Vue的router-link标签

    在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制 而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的 至于为什 ...

  6. python_并发与通信

    独立的进程内存空间与共享的服务器进程空间 知识点一: 进程间通信的限制 进程是独立的,互不干扰的独立内存空间我们想不能修改变量但是,深层次问题是,这个进程与那个进程完全失去了联系 import mul ...

  7. Fiddler的使用总结

    关于Fiddler的使用过程中的总结: 1. 配置手机抓包的过程,以后再补充 2.使用Fiddler发送请求 1) 第一步 抓取接口,获取请求方式,以及请求参数  2) 第二步 请求接口 点击Exec ...

  8. Hive学习笔记(二)—— 安装配置

    Hive安装配置及基本操作 1. Hive安装及配置 (1). 上传文件到Hadoop102节点,解压到/opt/moudle (2). 修改/opt/module/hive/conf目录下的hive ...

  9. 使用Nginx的X-Accel-Redirect实现大文件下载

    在实现文件下载功能时通常有以下几种方式: 1.直接给出下载地址,例如http://****.com/test/test.rar,这种是最直接的方式,任何人都可以下载,无法控制用户的权限. 2.验证权限 ...

  10. C#录制屏幕采集系统桌面画面

    在项目中,有很多需要录制屏幕的场景,比如直播课,录制教学视频等场景.但.NET自带的Screen类功能比较弱,效率很低.那么如何简单快捷地高效采集桌面屏幕呢?当然是采用SharpCapture!下面开 ...