一、            实验环境搭建

1.      安装JDK

2.      安装Android Studio

3.      模拟器或真机

我的是夜神模拟器和nexus

工具

Apktool

下载地址:https://ibotpeaches.github.io/Apktool/

下载完成直接保存打开,启动apktool,使用下面命令查看选项帮助

Dex2jar/JD-GUI

Dex2jar和JD-GUI是安卓应用逆向工程中经常用到的两个工具。Dex2jar能将.dex文件转换 为.jar文件。JD-GUI则是一个Java反编译工具,可以将.jar文件还原为原始的Java源代码

下载地址:http:// sourceforge.net/projects/dex2jar/     http://jd.benow.ca

下载后无需安装直接可以打开。

Burp suite

下载地址:http://portswigger.net/burp/download.html

手机端设置bp代理,进行APP流量抓取分析。

Drozer

下载地址:https://labs.mwrinfosecurity.com/tools/drozer/

agent

下载地址:https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

电脑安装drozer,安装完测试

接下来安装前面下载的agent.apk,安装到模拟器或者真机上。可以使用adb命令进行安装.apk文件。

在使用drozer进行评估之前,我们首先要将工作站中的drozer控制台连接到模拟器的代理上。所以我们先要在模拟器上启动代理,并使用命令进行端口转发。

端口转发并启动连接到手机

Advanced REST Client

谷歌扩展程序,直接从谷歌商店下载

adb基础

adb是一款对安卓应用进行渗透测试的必备工具,Android SDK默认自带adb,它位于Android SDK的platform-tools目录中。

adb基础命令

adb connect 127.0.0.1:62001 链接夜神模拟器

adb devices 查看连接

adb logcat  打印logcat

adb install  安装,覆盖安装是-r

adb uninstall卸载

adb push   推送本地文件至 Android 设备

adb pull    推送Android文件至本地

adb shell mount -o remount rw / 修改系统读写权限

adb root  获得root权限

adb kill-server  重启

二、            安卓ROOT

1.      什么是root

Android 是基于Linux内核的系统,Linux有两种用户系统:一种是普通用户账户,一种是root账户。普通用户账户的权限通常比较低,在进行软件安装、操作系统设置更改等特权操作之前需要获得root权限。而root账户享有诸如更新应用、安装软件、执行命令等权限。root用户能对整个系统进行更精细化的控制,通过对设备进行完全控制的行为被称为root。

检测你是否拥有设备root权限的一个简单方法是,在adb shell中执行su命令。

在root过的设备上,通常我们的UID等于0,root shell中使用”#”而不是”$”来表示root。

2.      为什么要root设备

由于硬件制造商和运营商的限制,我们不能完全控制安卓设备。通过ROOT设备,我们能够突破这些限制,从而获得额外的权限。

root的好处

l  完全控制设备:在默认情况下,普通用户不能完全访问设备,但在ROOT之后,用户可以完全控制安卓设备

l  安装其他应用:拥有root权限的用户可以安装一些具有特殊功能的应用,这些应用被称为root应用

l  更多的特性和个性化功能:在安卓设备上安装第三方的recovery和ROM之后,可以获得更好的特性和个性化功能

root的坏处

   ROOT降低设备的安全性:一旦设备被ROOT之后,它的安全性就会降低。

  让设备变砖:设备变砖的意思是,它可能会变得毫无 用处,你需要找到修复的方法。

  使保修失效:ROOT过的设备会使保修失效。

3.      锁定和已解锁的boot loader

boot loader是设备启动后先运行的程序。它负责维护和启动硬件和安卓内核,若没有它, 设备将无法启动。

三、            安卓应用的基本构造

1.      安卓应用基础知识

1.1     安卓应用结构

解压APK文件的步骤如下。

(1) 把文件扩展名.apk改成.zip。

(2) 在Linux或Mac系统中,使用下面的命令解压文件:

Unzip filename.zip 在Windows系统中,可以使用7-Zip、WinRAR或者其他类似的工具来解压文件。

文件或文件夹包含的内容

  AndroidManifest.xml:包含应用的大部分配置信息、包名、应用组件、组件安全设置、应 用所需权限,等等。

  classes.dex:包含由开发人员编写的源代码生成的Dalvik字节码,以及应用在设备上运行 时所执行的内容。

  resources.arsc:包含编译过的资源。

  Res:包含应用所需的原始资源,比如应用图标等图片。

  Assets:用于存放开发人员感兴趣的音乐、视频、预置的数据库等文件,这些文件会与应 用绑定。

  META-INF:用于存放应用签名和应用所用到的所有文件的SHA1摘要。

1.2     APK文件存储位置

  /data/app/   用户安装应用的存放位置,全局可读可复制

  /system/app/   存放系统自带的应用程序,全局可读可复制

  /data/app-private/   存放禁止复制的应用,有root权限便可提取。

提取过程:

(1) 找到应用包名;

(2) 找到APK文件在设备上的存储路径;

(3) 从设备上拉取APK文件

2.      安卓应用组件

安卓基本组件:activity、service、connect provider、broadcastreceive

2.1     activity

activity为用户提供了一个可以通过与之交互来完成某些操作的界面。有时,activity会包含多 个fragment。fragment表示activity中的一个行为或用户界面的一部分。用户可以在activity中进行 打电话、发短信等操作。

2.2     service

服务可以在后台长时间运行,而且不提供用户界面。以音乐应用为例,当选好歌曲后,你可 以关闭它的所有界面,它能在后台正常播放歌曲

2.3     内容提供程序

内容提供程序以一个或多个表格的形式为外部应用提供数据。如果应用需要与其他应用共享 数据,内容提供程序就是一种方法,它可以充当应用间的数据共享接口。内容提供程序使用标准 的insert()、query()、update()、delete()等方法来获取应用数据。所有的内容提供程序 都使用content://开头的特殊格式的URI。只要知道这个URI并拥有合适的权限,任何应用都可以 从内容提供程序的数据库中进行数据插入、更新、删除和查询等操作。

2.4     广播接收器

广播接收器是一个能在设备系统中接收广播通知的组件。它能接收诸如低电量、启动完成、 耳机连接等消息。虽然大部分广播事件都是由系统发起的,但是应用也可以发出广播。从开发人 员的角度来说,当应用需要针对特定的事件做出反应时,就可以使用广播接收器。

_______________________________________________________________________________________________________________________________________________________

内容来源于《Android App安全攻防实践》,记录一下自己的学习笔记

Android App安全渗透测试(一)的更多相关文章

  1. Android平台下渗透测试工具大集合

    Android平台下渗透测试工具大集合 分享一个google的项目,各种Android下的渗透测试工具. Ad Network Detector (1.2): http://market.androi ...

  2. 【原创】记一次对X呼APP的渗透测试

    获取CMS并本地安装 X呼是一款开源的客服CMS系统,访问官网,下载安卓版本的app和源码本地搭建: 发现这cms预留admin表中的用户就不少.... 直接用预留的密码解密,然后就能登录手机APP了 ...

  3. 一次失败的APP业务渗透测试

    作者:whoamiecho 来源:ichunqiu 本文参加i春秋社区原创文章奖励计划,未经许可禁止转载! 一.  过程 1.1.事情起因:暴力破解 测试给了个普通用户账号,可以登录.APP一来就要登 ...

  4. Android APP弱网测试问题和解决分析

    最近做了一次移动APP的弱网和中断测试,接下来分享一下遇到的一些问题: 1.现象:用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据初始化完成后出现重复,造成数据不一致. 原因 ...

  5. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  6. Android App 压力测试方法(Monkey)

    一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...

  7. 自动化移动安全渗透测试框架:Mobile Security Framework

    自动化移动安全渗透测试框架:Mobile Security Framework 译/Sphinx  测试开发社区  7月3日 Mobile Security Framework (移动安全框架) 是一 ...

  8. Android App渗透测试工具drozer,Qark,Androguard

    一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...

  9. Android App渗透测试工具汇总

    网上搜集了一些App安全学习教程及工具,项目地址:https://github.com/Brucetg/App_Security 一. drozer简介 drozer(以前称为Mercury)是一款A ...

随机推荐

  1. C 2010年笔试题

    1 有一个函数, 写一段程序,输入的值,输出的值. #include <stdio.h> void main() { int x,y; printf("输入x:"); ...

  2. [Asp.Net Core] 为什么选择 Blazor Server Side (一) 快速实现图片验证码

    关于Blazor 由于在国内, Blazor一点都不普及, 建议读者翻看我之前写的随笔, 了解Blazor Server Side的特点. 在一段时间内, 我会写一些解说分析型的 "为什么选 ...

  3. vue中通过修改element-ui的类修改相关组件的样式

    可以在App.vue中的style中修改element-ui的样式. 注意:一定要在属性值后面加上 !important 使自己定义的css样式处于权重最高,不加的话在本地调试的时候是没有问题的,不过 ...

  4. 1012 The Best Rank (25 分)

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  5. 家庭记账本app进度之关于单选按钮的相关操作(添加点击按钮事件以及点击单选更改事件)

    这次主要是通过代码实现了android中的相关单选按钮的相关操作,之后再最下面有一个按钮,当点击这个按钮的时候,会获取当上面的相关信息,之后再下方会进行相应的文字显示,获取的信息不同显示的信息也不会一 ...

  6. django实现自定义登陆验证

    django实现自定义登陆验证 自定义装饰器函数和类 from utils.http import HttpResponseUnauthorized from django.views import ...

  7. (js描述的)数据结构 [数组的一些补充](1)

    (js描述的)数据结构 [数组的一些补充](1) 1. js的数组: 1.优点:高度封装,对于数组的操作就是调用API 2.普通语言的数组: 1.优点:根据index来查询,修改数据效率很高 2.缺点 ...

  8. 解决:docker-compose端口绑定

    docker-compose 进程绑定 Bind for 0.0.0.0:3825 failed: port is already allocated 查看进程发现有进程在关闭后继续进行 docker ...

  9. Java第十三天,内部类

    内部类 一.①成员内部类.②局部内部类(包含③匿名内部类) 1.内部类用外部类属性和方法的时候,可以随意进行访问. 2.外部类用内部类属性和方法的时候,需要通过内部类对象访问. 3.在编译成class ...

  10. Python Requests-学习笔记(8)-重定向与请求历史

    重定向与请求历史 默认情况下,除了 HEAD, Requests会自动处理所有重定向. 可以使用响应对象的 history 方法来追踪重定向. Response.history 是一个:class:R ...