一、移动应用APP可能面临以下威胁:
木马--二次打包,
病毒--账号窃取,
篡改--资源篡改,
破解--广告植入,
钓鱼--信息劫持
 二、移动终端APP安全评估的7个方向:
通信安全,敏感信息安全,认证鉴权,能力调用,资源访问,反逆向,键盘输入
 三、对于自动化安全检测工具,完成APP安全检测与评估的思路如下:
“地”:主要面向本地文件的漏洞进行攻击,检查AndroidManifest.xml配置文件中权限选项
“集”:主要面向APP的代码中的漏洞进行攻击,对常见的安全问题进行配置验证,通过模拟攻击方式,验证终端APP存在的问题
“省”:主要面向APP的网络通讯中的漏洞进行攻击,对常见的安全问题采取简单人工验证方式,获取终端APP信息。
 四、安全相关漏洞举例
1、allowbackup漏洞
原理分析:
在androidmanifest.xml文件中allowbackup属性设置为true。当allowbackup为true时,用户可以通过adb backup来进行对应用数据的备份,在无root的情况下也可以导出应用中存储的所有数据,造成数据的严重泄露。
攻击条件:
一是手机要连接电脑;
二是手机要开启adb调试模式;
三是用户在手机上点击确认备份的操作。

其中第三点可以通过adb sendevent命令模拟用户的点击操作,从而在用户不知情的情况下备份出手机数据

整改建议:
将参数android:allowBackup="true"属性设置为false,不能对应用数据备份。
模拟现场:
这里主要通过手机模拟器来模拟的。
1)操作环境及使用工具:夜神模拟器,adb工具,linux操作系统,openssl
2)操作步骤如下:
第一步,
首先通过adb连接上手机模拟器后,对模拟器进行备份。
输入以下命令:adb backup -f f:/backup.ab -apk -all
说明:对手机所有的应用进行备份,并且备份数据到f盘并命令为backup.ab
(恢复命令:adb restore f:/backup.ab)
输入命令会dos窗口会出现以下界面:

第二步,
此时,需要在手机模拟器中输入密码,选择备份;也可以不输入密码,直接备份。

第三步,

通过工具openssl来对备份文件进行解密解压
这里,首先,要在linux中安装好openssll工具
下载地址为:

选择最新的版本的版本进行下载即可,我下的版本是:openssl-1.0.0e.tar.gz
 安装方法如下:
把openssl-1.0.0e.tar.gz上传到linux中的usr/local下进行解压
解压命令如下:tar -zxvf openssl-openssl-1.0.0e.tar.gz
然后进入到openssl-1.0.0e路径下进行配置,分别执行以下命令:
[.....openssl-1.0.0e]# ./config --prefix=/usr/local/openssl
[...../openssl-1.0.0e]# ./config -t
[...../openssl-1.0.0e]# make depend
[...../openssl-1.0.0e]# cd /usr/local
/usr/local]# ln -s openssl ssl
在/etc/ld.so.conf文件的最后面,添加如下内容:
/usr/local/openssl/lib
...]# ldconfig
添加OPESSL的环境变量:
在etc/的profile的最后一行,添加:
export OPENSSL=/usr/local/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin
退出命令界面,再从新登录。
以上OPENSSL就安装完毕,下面进行一些检查。
依次如下执行:
[root@localhost /]# cd /usr/local
[root@localhost local]# ldd /usr/local/openssl/bin/openssl
会出现类似如下信息:
    Linux-vdso.so.1 =>  (0x00007fff3bc73000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fc5385d7000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fc538279000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc5387db000)
查看路径
...]# which openssl
/usr/local/openssl/bin/openssl
查看版本
...]# openssl version
OpenSSL 1.0.0e 6 Sep 2011
 至此,openssl已经安装并配置成功
然后把手机的备份文件拷贝到openssl的bin路径下,执行以下命令:
dd if=backup.ab bs=1 skip=24|openssl zlib -d >mybackup.tar
即把备份文件进行了解密解压,并重新命名为mybackup.tar
解压后的文件夹如下图所示:

至此,已成功解压模拟器中的备份文件。

2、WebView漏洞
3、关键数据明文传输
4、任意账号注册
5、登录界面可被钓鱼劫持
 补充:
对于备份文件backup.ab文档的解释
1、备份后的文件格式为ab,需要用二进制文件查看。
2、可在notepaed++软件中加入HEX插件就能查看。
1)Hex Editor下载地址:
2)Hex Editor的使用方法
解压缩后把HexEditor.dll文件复制到安装目录(如C:\Program Files\Notepad++\plugins),退出NotePad++重新打开即可!需要以十六进制显示时,点击菜单的:【插件】-【Hex-Editor】-【View in Hex】即可。
3、该格式的文件只是头部加了24个字节的字段标识该文件的类型(ANDROID BACKUP 1 1 none,第一个1指目前的格式版本,第二个1指压缩标记,none指未经加密,若经过加密,则显示AES-256.)
 
在标识字段后面是对备份出的文件进行简单加密压缩后的数据,这就使得我们能用简单的命令(跳过该文件头部的24字节然后用openssl中的zlib命令对后面的数据解密)来转换该文件。
 

参考文档:

移动安全测试:
http://blog.nsfocus.net/mobile-app-security-security-test/#APP
手机备份命令:
http://tieba.baidu.com/p/3122444341
openssl命令:
http://blog.csdn.net/tcm455090672/article/details/43307047

 

总结移动安全的测试点及详解allowbackup漏洞的更多相关文章

  1. JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】

    正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...

  2. JavaScript事件详解-zepto的事件实现

    zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...

  3. 20160203.CCPP体系详解(0013天)

    程序片段(01):数组.c+02.数组初始化语法.c 内容概要:数组 ///01.数组.c #include <stdio.h> #include <stdlib.h> //0 ...

  4. Postman 使用详解

    转自: http://blog.csdn.net/flowerspring/article/details/52774399 Postman 使用详解 阅读 6754收藏 3022016-6-9 作者 ...

  5. ST算法详解

    ST算法详解 Coded by Jelly_Goat. All rights reserved. 这个主要是说ST表的. 首先了解一下ST表是什么. 先来一个老套的情景带入. (假设所有的题目都是1s ...

  6. Junit使用详解

    http://junit.org/上详细介绍了Junit.JUnit is a simple framework to write repeatable tests. It is an instanc ...

  7. postman使用方法详解

    postman的使用方法详解   Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里 ...

  8. 【学习笔记】薛定谔的喵咪Cat—球盒问题(全详解)

    [学习笔记]薛定谔的喵咪Cat-球盒问题(全详解) [题目描述] 当一个猫在盒子里时,因为放射物的状态我们不知道,所以猫的状态我们也不知道,这就所谓猫的生死纠缠态,也是所谓的薛定谔的猫. 当我们做需要 ...

  9. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

随机推荐

  1. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  2. Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别

    ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 fram ...

  3. zlib-1.2.7/libpng-1.5.9 instead of zlib-1.2.8/libpng-1.6.6

    The reason for the failure apparently appears to be version incompatibility, partly may be due to li ...

  4. 使用charles V3.11.2 实现SSL抓包

    首先,确认开启了SSL选项: 然后到Help->SSL Proxying里查看帮助; 根据提示,将android手机连接到局域网的wifi上,然后将wifi连接的代理设置为192.168.21. ...

  5. JS 小数的常用处理方法

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.f ...

  6. 父子页面之间元素相互操作(iframe子页面)

    js/jquery获取iframe子页面中元素的方法: 一.使用window.frames["iframe的ID"]获取元素 window.onload = function() ...

  7. jdk 安装 环境变量配置

    右键选择 计算机→属性→高级系统设置→高级→环境变量 1.系统变量→新建 变量名:JAVA_HOME 变量值:(变量值填写你的jdk的安装目录,例如本人是 C:\Program Files\Java\ ...

  8. nginx安装与配置

    一.在线安装 ubuntu 安装 sudo apt-get install nginx 安装后文件结构为: 配置文件:/etc/nginx ,并且每台虚拟主机已经安排在 /etc/nginx/site ...

  9. 一个ListView怎么展示两种样式

    private class MyBaseMsgAdapter extends BaseAdapter { //获取数据适配器中条目类型的总数,修改成两种(纯文本,输入+文字) @Override pu ...

  10. CH模拟赛 皇后游戏

    /* 做的时候手推了一下n=2的四种情况,再排一下序就可以了,证明不是很严谨,但我想这就行了,毕竟全是套路 */ #include<iostream> #include<cstdio ...