APP渗透测试之安卓APP抓包
之前说过一些信息搜集相关的东西(漏了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抓包的更多相关文章
- 【原创】医鹿APP九价HPV数据抓包分析
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 医鹿APP九价HPV数据抓包分析 操作环 ...
- fiddler学习总结--手机端(APP/微信小程序)抓包
步骤一.手机和电脑要在同一个局域网中 步骤二.完成fiddler的基本配置,与web端抓包一样: TOOLS-->options-->connections-->1.设置端口:2.勾 ...
- 【转】蓝牙ble app开发(三) -- 抓包
原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...
- 转:APP开发浅谈-Fiddler抓包详解
原文地址:http://www.luoxudong.com/?p=306 Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今 ...
- APP开发浅谈-Fiddler抓包详解
Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今天抽点时间出来总结一下Fiddler在实际开发过程中的应用. 我开发过程中 ...
- 启xin宝app的token算法破解——抓包分析篇(一)
为了提升逆向技术,最近几日研究了企cha查的sign和启xin宝的token算法,目前已经成功破解,两个app均是最新版,并将企cha查写成爬虫小demo,放在github上,详情查看 https:/ ...
- APP | edxposed框架+trustmealredy模块抓包小程序
出品|MS08067实验室(www.ms08067.com) 本文作者:ketchup(Ms08067实验室 SRSP TEAM小组成员) 一.下载edxposed框架,由于安卓5.0版本以下的不支持 ...
- 手机app/h5页面http请求抓包调试
1.抓包机器跟客户端手机连上同一wifi热点,最好是第三者提供的移动wifi,公司内网wifi网络访问有限制. 2.设置手机客户端http代理 三者关系图示:
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!
1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Fiddler能截获 Android 和 Windows Phone 等 ...
随机推荐
- [心得笔记]spring常用的三种依赖注入方式
一.目前使用最广泛的 @Autowired:自动装配 基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器.接口.方法注入,使用方式如下: @Autowired 构造方法.方法.接口 ...
- 11 shell中内置关键字[[]]:检查条件是否成立
0.[[]] [] (())的对比 1.[[]]支持正则表达式 0.[[]] [] (())的对比 [[ ]] 对数字的比较不友好,所以使用 if 判断条件时,建议用(())来处理整型数字,用[[]] ...
- C# 8.0和.NET Core 3.0高级编程 分享笔记三:控制流程和转换类型
控制流程和转换类型 本章的内容主要包括编写代码.对变量执行简单的操作.做出决策.重复执行语句块.将变量或表达式值从一种类型转换为另一种类型.处理异常以及在数值变量中检查溢出. 本章涵盖以下主题: 操作 ...
- Jmeter常见报错信息: ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException: Cannot run program "keytool"
JMeter 2.10 用的新方法来录制HTTPS请求Java 7. 录制的过程中会碰到一些问题或者报错,就目前碰到的,做出一些总结. ERROR - jmeter.protocol.http.pro ...
- python 抓取异常
aa={"a":2,"b":1} for i in range(10): aa["a"]=aa["a"]-i print ...
- MySQL全面瓦解26:代码评审中的MySQL(团队使用)
数据库对象命名规范 数据库对象 数据库对象是数据库的组成部分,常见的有以下几种: 表(Table ).索引(Index).视图(View).图表(Diagram).缺省值(Default).规则(Ru ...
- lucene 类介绍
lucene中重要的类: IndexWriter:lucene中最重要的类之一,主要用于索引的创建 Analyzer(抽象类):分析器,主要用于分析文本,常用的有StandardAnalyzer分析器 ...
- Java电话薄项目(Java基础入门)
面向对象程序设计(Java基础) 1.项目介绍: 该项目能够实现对电话薄的添加,查找,修改,删除,排序等基本操作. 用户进入系统中首先进入主菜单中,在主菜单中可以选择相应的操作,用户可以选择每项操作前 ...
- 为什么要学习Netty?
一.传统的BIO编程 网络编程的基本模型是 Client/Server 模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的 IP 地址和监听端口),客户端通过连接操作向服务端监听 ...
- 手把手教windows上安装linux虚拟机及环境配置
目录 版本说明 安装虚拟机 典型方式安装(推荐小白,带有图形界面,助于学习,但占用空间大) 自定义方式安装(推荐老司机) 创建快照 克隆虚拟机 windows上安装linux虚拟机不管是对于新人还是老 ...