之前说过一些信息搜集相关的东西(漏了APP没讲),按照渗透测试的完整流程,我作为测试,测个APP,也很合理吧

既然能用burpsuite测试web,那就能用burpsuite测试APP(有大佬自称用burpsuite行走江湖多年,靠插件和经验打遍天下无敌手)

本次演示采用夜神模拟器+burpsuite v2020.11  (啊当然不是因为夜神最niubility,而是我手头就有它了 ,如果要抓的APP不能在夜神上运行、或者框架安不了,确定是模拟器的问题,就换一个模拟器,什么mumu、雷电、天天、逍遥...)

系统为安卓7  (版本太低的不予讨论)

为了抓HTTPS的包,没安装证书的,自行下载、导入、安装(简单说一下,比如浏览器安装证书,如果burpsuite监听的是本机的8080端口,那就浏览器访问http://localhost:8080,下载CA证书,然后在浏览器中导入cacert.der,安到受信任的根证书颁发机构,直到看到PortSwigger CA,证明导入成功)

在模拟器配置,长按网络修改网络,采用代理,IP为本地主机IP,端口也设一个,啥都行比如8081

然后在burpsuite中新建一个绑定代理,选择本机IP和刚刚写的端口

最终变成

然后在夜神模拟器中用浏览器访问192.168.25.203:8081下载证书(嫌安全警告弹得烦,也可以在本地机器设代理后上访问http://192.168.25.203:8081,下载证书后再共享到模拟器中安装)

下载CA证书,然后打开模拟器中“下载”可以看到证书

别忘了把后缀从.der改成.cer(der安不了),然后拖到SD卡的路径中,到设置-》安全-》从SD卡安装,选择这个证书

为证书起个名字,设置PIN码,随便搞一个记得住的,安装成功之后会提示安装成功

完活儿,然后正常来说就可以用burpsuite抓一些模拟器中APP或者其他什么的数据包了

but,这只是比较理想的情况

实际上会出现各种问题:

1.本机不允许设置网络代理

像我最初做的例子,就属于开了模拟器本机的代理,那有些APP就是会检测代理,你设置了本机代理我干脆就不让你正常运行!怎么搞嘛

常见的一种方法是在模拟器外部抓包来规避检测,比较常规的办法就是利用proxifier(当然,先要按照之前的步骤安证书,区别在于这回不用手动修改模拟器网络代理配置)

配置代理服务器,选本机IP,端口8080(burpsuite怎么写,这里就怎么写,burpsuite默认监听8080),HTTPS

再配置规则,名字随便起,把夜神模拟器进程Nox.exe(不一定就是这个,看你机器上显示的是什么就写什么)导入规则,代理选之前配的

启用此规则

然后用burpsuite即可绕过限制抓包(吧)

模拟器-》proxifier-》burpsuite

2.APP认证机制

有一个问题:HTTPS抓包一个朴素的思想是什么?

答:MITM,对客户端伪装成服务端,对服务端伪装成客户端

这里有一篇介绍HTTPS认证原理(单向认证、双向认证)的文章,总结了一下  https://www.cnblogs.com/yaphetsfang/articles/12858356.html

但是有些APP会采用SSL-Pinning 机制来进行抵抗抓包

那么,如何绕过SSL-Pinning机制呢?(很多东西,模拟器上是用不了的,必须真实手机环境)

(1)老版本安卓系统(7以下)可能会没有针对第三方证书的限制,无此机制限制,可按照常规办法抓包(但前提是APP能在上面正常运行)

(2)或者有root权限,能把这些个第三方证书安到系统默认预置的证书区里面

(3)再或者 Xposed+JustTrustMe、VitualXposed+JustTrustMe

VitualXposed可以在不需要设备root的情况下,修改App的行为   https://vxposed.com/

Xpose框架是一款可以在不修改APK的情况下影响程序运行或修改系统的框架服务   https://github.com/rovo89/Xposed

JustTrustMe是Github上面的一个开源项目,是xposed中的一个模块,用于禁止SSL证书验证  https://github.com/Fuzion24/JustTrustMe?utm_source=testingpai.com

使用较为复杂,请参考:

https://blog.csdn.net/u011215939/article/details/95461286

http://www.yxssp.com/23278.html

(4)frida,仍然是比较复杂,参考:

https://xz.aliyun.com/t/6102

https://www.cnblogs.com/Eeyhan/p/12916162.html

(5)反编译APK

有壳先脱壳,我等渣渣脱壳只能用大佬写的工具

之后用工具反编译,之后。。。之后我就不会了(理直气壮),安卓一窍不通,正常来说需要修改内容

哪位大佬给条明路

3.root检测问题

很多模拟器默认root(先不讨论这玩意有没有实际效果),这可能导致部分APP被限制。。。功能,打不开、闪退,更没法抓包

要么关掉root

要么绕过root检测,检测可能会通过检测系统版本、看看有没有安什么root管理器啊、需要root的框架啦什么的

相关软件有很多,但本菜鸡安卓逆向玩的不好,所以这里就只是提一下,具体方法参考其他师傅们的文章吧

剩下的,就基本上和web测试一样了,该用代理池用代理池,该用扫描器用扫描器

未经允许,禁止转载

APP渗透测试之安卓APP抓包的更多相关文章

  1. 【原创】医鹿APP九价HPV数据抓包分析

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 医鹿APP九价HPV数据抓包分析 操作环 ...

  2. fiddler学习总结--手机端(APP/微信小程序)抓包

    步骤一.手机和电脑要在同一个局域网中 步骤二.完成fiddler的基本配置,与web端抓包一样: TOOLS-->options-->connections-->1.设置端口:2.勾 ...

  3. 【转】蓝牙ble app开发(三) -- 抓包

    原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...

  4. 转:APP开发浅谈-Fiddler抓包详解

    原文地址:http://www.luoxudong.com/?p=306 Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今 ...

  5. APP开发浅谈-Fiddler抓包详解

    Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今天抽点时间出来总结一下Fiddler在实际开发过程中的应用. 我开发过程中 ...

  6. 启xin宝app的token算法破解——抓包分析篇(一)

    为了提升逆向技术,最近几日研究了企cha查的sign和启xin宝的token算法,目前已经成功破解,两个app均是最新版,并将企cha查写成爬虫小demo,放在github上,详情查看 https:/ ...

  7. APP | edxposed框架+trustmealredy模块抓包小程序

    出品|MS08067实验室(www.ms08067.com) 本文作者:ketchup(Ms08067实验室 SRSP TEAM小组成员) 一.下载edxposed框架,由于安卓5.0版本以下的不支持 ...

  8. 手机app/h5页面http请求抓包调试

    1.抓包机器跟客户端手机连上同一wifi热点,最好是第三者提供的移动wifi,公司内网wifi网络访问有限制. 2.设置手机客户端http代理 三者关系图示:

  9. 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!

    1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Fiddler能截获 Android 和 Windows Phone 等 ...

随机推荐

  1. 可执行jar包在windows server2008下的自启动

    最近要部署项目的服务端在windows server2008下面,所以把项目打包成可执行的jar包,然后希望它能开机自启动,毕竟每次都在cmd下输入java -jar xxx.jar才能启动太繁琐了. ...

  2. ios关键字

    self:类似JAVA中的this指针,是隐藏参数,指向当前调用方法的类 super:调用父类的方法 if(self=[super init]),是一种通用写法,赋值并测零是为了防止超类在初始化过程中 ...

  3. Django基础012--接口开发

    全局参数(get,post,put,delete) 接口:/api/parameter GET:获取全局参数的所有数据 POST:创建全局参数 PUT:更新全局参数 DELETE:删除全局参数 1.创 ...

  4. Django基础008--model多对多

    1.多对多表结构设计 class Student(models.Model): name = models.CharField(verbose_name='学生名字',max_length=100) ...

  5. LeetCode解题记录(双指针专题)

    1. 算法解释 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务.也可以延伸到多个数组的多个指针. 若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域 ...

  6. 视频场景切换检测的FPGA实现

    本文将继续讲述图像处理算法的FPGA实现,后续可能更新图像旋转(1080P).画中画.快速DCT等算法.视频场景切换检测常用于视频编解码领域,我选用的算法是双阈值灰度直方图检测法,起初在MATLAB上 ...

  7. File类与常用IO流第九章——转换流

    第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...

  8. Python 创建一个Django项目

    1 环境搭建及创建 1) 安装Django 方法一:pip install django 方法二:Pycharm File--settings--Project--Python Interpreter ...

  9. 微信小程序云开发-数据条件查询

    一.使用where条件查询 在.get()语句之前增加.where语句实现条件查询.  二.通过doc查询单条数据 1.使用doc来查询数据库中的单条数据 2.定义一个空对象,用来展示插叙到的单条数据 ...

  10. 【LeetCode】404. 左叶子之和

    404. 左叶子之和 知识点:二叉树 题目描述 计算给定二叉树的所有左叶子之和.. 示例 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 解 ...