App防抓包的四种绕过方法(详细)

news2024/11/15 12:39:38

App防抓包的四种绕过方法

  • 简介:
  • 1、ssl证书校验(https证书校验=http请求+ssl证书校验)
    • 方法
      • 演示:安卓5.0怎么安装证书
      • 演示:安卓7及以上怎么把证书安卓到系统目录
  • 2、代理屏蔽
  • 3、证书绑定 (SSL pinning)
    • 使用工具hook有两种方法
    • 演示:objection绕过单向认证

简介:

平时做app渗透的适合,是不是经常会遇到burp抓不到包的问题,本文梳理了一些APP抓不到包的解决思路,有问题可以文章下面评论,看到会一个个回复!
文末有本文对应所有工具包地址

1、ssl证书校验(https证书校验=http请求+ssl证书校验)

http请求是不安全的,能轻易被中间人攻击(能被抓包),https安全的关键在于ssl证书

Ssl证书本质上就是一种安全协议,会在数据传输的时候对数据进行加密,只有接收者才拥有解密的密钥(解密的密码)能解密。
在这里插入图片描述
Burp是抓应用层的包,不会抓其他层的包,由于没有安装相对应的ssl证书,burp抓到的是乱码的数据无法识别出是http的请求,burp会默认他为其他层的数据包,就不去抓这个包,导致无法抓包

而ssl证书是需要花钱找指定的颁发机构去购买的,只有花钱买的证书才能被允许在互联网之间访问。

浏览器是不会保存ssl密钥的,如果不同网站的ssl证书密钥不同,那每次访问网站之前都需要下载ssl证书安装好后才能访问,这是不现实的,所以安全给业务做了让步,无论哪家公司的资产,想要使用https协议通信,网站ssl证书密钥都必须相同,这样浏览器就只需要保存一个ssl证书就能访问所有网站

burp只需要安装了证书,就能解密https通信的数据,就可以去绕过进行抓包

而app同样,有的app由于资金有限,所以不会去申请自己的ssl证书,就直接使用和浏览器一样的ssl证书,这个我们直接在安卓模拟器安装burp的ssl证书就能绕过

方法

安卓5.0可以直接在设置安装证书,但是安卓7.0及以上需要把证书安装到系统目录下才可以,因为安卓7.0及以上默认只信任系统目录下的证书,其他默认不信任
(文末会放置本文所需要用到的所有文件和工具包)

演示:安卓5.0怎么安装证书

在这里插入图片描述
在这里插入图片描述
先下载一个burp的证书,重命名为后缀为.cer,下载好了,插在word可以直接拖出来

然后直接拖进模拟器
在这里插入图片描述
在这里插入图片描述
记住上面的目录
在这里插入图片描述

在这里插入图片描述

在模拟器中找到证书文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

后面设置个密码就可以了
证书就安装好了,最后配置一下代理
在这里插入图片描述
在这里插入图片描述
最后打开burp,配置一下就能正常抓包了
在这里插入图片描述
在这里插入图片描述

演示:安卓7及以上怎么把证书安卓到系统目录

首先需要
在这里插入图片描述
在这里插入图片描述
然后需要一个burp的证书,但是需要是pem格式的证书,pem格式证书制作方法繁琐,我上网找了一个burp证书的pem格式如下,可以直接使用
在这里插入图片描述
(文末会放置本文所需要用到的所有文件和工具包)
将这个证书拖进模拟器
在这里插入图片描述
长按这个文件,点击复制
在这里插入图片描述
找到系统目录/system/etc/security/cacerts/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后找到系统目录/system/etc/security/cacerts/
把鼠标往下滑动,直到出现粘贴的按钮点击粘贴

在这里插入图片描述
在这里插入图片描述

重启模拟器,系统证书安装成功

2、代理屏蔽

有的app做完ssl证书校验后,为了防止被抓包,多做了一层处理
使用okhttp框架,里面可以设置无代理模式,不走系统代理

我们使用burp测试的时候,会在wifi的地方设置一个手动代理,比如192.168.3.13:9090的代理,把数据包发送到本机代理端口上,这样burp就能接受到包

于是app的开发就利用这个特性,做了处理,给app设置自己的代理地址,可能这个代理地址就是服务器的地址,这样就不走burp的代理了

这个我直接安装一个poster,使用vpn代理就能抓到包,一共需要设置三个
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
记住,需要关闭wifi处的代理,直接使用vpn代理,burp可以照常抓到包

3、证书绑定 (SSL pinning)

证书绑定又叫单向认证,app不使用公开的ssl证书了,他花钱,去找证书颁发机构,去买一个属于自己的证书,并且自己设置了一个通信的密钥(密码)

Burp是抓应用层的包,不会抓其他层的包,由于burp没安装专属于这个app的ssl证书,burp抓到的是乱码的数据无法识别出是http的请求,burp会默认他为其他层的数据包,就不去抓这个包,导致无法抓包

绕过方法:
1、把App里面的证书揪出来,app和抓包软件的通信用那个证书。
2、删除掉App里面,单向认证的代码,让他能使用系统证书,然后他和抓包软件就能通信了。

揪证书需要逆向,很难,第二种可以使用工具进行hook,类似于断点处理

在已经安装好证书和vpn的情况下操作

使用工具hook有两种方法

1、 Xposed框架中的JustTrustMe
2、 objection绕过单向认证

演示:xposed框架中的JustTrustMe
首先打开安卓模拟器
在这里插入图片描述
在这里插入图片描述

开机,打开游戏中心,搜索xposed框架,可以直接下载安卓7的xposed框架
在这里插入图片描述
下载好后,直接打开xposed的app
在这里插入图片描述
在这里插入图片描述
需要等待一会下载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重启设备后,框架就安装成功了

在这里插入图片描述
直接将工具包中JustTrustMe.apk拖进去
(文末会放置本文所需要用到的所有文件和工具包)
在这里插入图片描述
然后直接进去xpsed框架
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后再次重启设备,安装的app消失,模块依然存在
JustTrustMe就激活了,可以直接用poster vpn抓包测试app了
在这里插入图片描述
在这里插入图片描述
JustTrustMe在测试的时候会自动对app所有具有单向认证的地方进行hook

演示:objection绕过单向认证

该方法较为难需要用到的工具有
adb(可以通过windows的命令行去控制安卓机,可以传文件可以执行命令)
frida (Frida 是一款基于 Python +JavaScript 的 Hook 与调试框架)
frida_tools (简单的说就是一款动态代码检测工具)
objection(Objection是一款移动设备运行时漏洞利用工具)
(文末会放置本文所需要用到的所有文件和工具包)

演示:

  1. 安装frida 、frida_tools 、objection
    前提是已安装了python3,因为这三个工具包本质都是基于python运行调试的,直接打开命令行执行这段代码,注意!需要开启TLY翻墙再进行pip安装,否则会安装失败或者很慢,可能由于这几个工具都是国外的原因
    在这里插入图片描述
    pip install frida12.11.17 frida_tools8.1.3 objection==1.9.4
    安装好后,最后一行会出现successly的字,代表安装成功了。
    2.如何使用adb连接安卓模拟器
    首先打开夜神模拟器助手,删除掉其他的模拟器,只能留一个模拟器,否则无法连接adb
    在这里插入图片描述
    启动仅有的一台模拟器,打开设置,进入关于平板电脑,点击版本号,点击7下
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接着打开adb工具包,输入cmd
    在这里插入图片描述
adb start-server                //开启adb服务
adb devices                    //查看adb连接状态
adb shell                       //打开手机终端
adb kill-server                  //关闭adb服务
adb connect 127.0.0.1:62001      //连接模拟器
adb root                       //将adb权限升级为root
adb push file file                //将adb文件夹下的文件传入模拟器的文件夹下

先开启adb服务
在这里插入图片描述
查看现有连接的安卓手机,暂时没有
在这里插入图片描述
连接夜神模拟器的安卓手机,connected代表已连接
在这里插入图片描述
不同厂商的模拟器,默认连接的端口不同,部分厂商具体如下:
在这里插入图片描述
再次输入adb devices查看连接状态
在这里插入图片描述
连接成功了,接着需要将frida的服务端,传到模拟器的/data/local/tmp目录下
Frida的服务端下载地址(https://github.com/frida/frida/releases)
必须要和上面的frida的版本一样否则也会报错,我找了很久,下面这个文件可以直接放进去
在这里插入图片描述

将frida-serverx86放入adb的目录下
在这里插入图片描述
在这里插入图片描述
传入文件
adb push frida-serverx86 /data/local/tmp
在这里插入图片描述
查看模拟器,传入成功

在这里插入图片描述
接着进入模拟器的终端给这个文件权限,安卓的底层是linux所以直接执行linux的命令
执行adb shell
在这里插入图片描述

cd /data/local/tmp
chmod 755 frida-serverx86
./frida-serverx86

一套执行下来
在这里插入图片描述
这样就可以了,接着随便打开一个cmd
输入frida-ps -U,出现进程名,代表frida执行成功
在这里插入图片描述
接着在模拟器运行长城期权app
在这里插入图片描述
然后继续在cmd执行frida-ps -Ua
在这里插入图片描述
最后使用这条命令

objection -g 包名 explore -s "android sslpinning disable"

objection工具就会自动对长城期权app所有单向认证的地方进行hook

objection -g com.cgws.hdoption explore -s "android sslpinning disable"

在这里插入图片描述
出现关于这个命令框代表执行成功,我们就可以正常使用poster vpn代理进行burp抓包测试了

工具包:
地址:
https://download.csdn.net/download/weixin_43264067/87522327

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Easyrecovery数据恢复软件工作原理及使用介绍教程

Easyrecovery是一款强大的数据恢复软件,它专门解决磁盘数据恢复问题。在计算机世界里,数据丢失经常是一件令人头疼的事情,但是有了Easyrecovery,您可以放心大胆地享受数据备份和恢复的乐趣。EasyRecovery使用Ontrack公司复杂的模式…

(JUC)核心线程 和 救急线程的区别;Executors-固定大小线程池单线程线程池

核心线程 和 救急线程的区别 救急线程是有个生存时间的,它执行完任务了,过了一段时间,没有新任务了,救急线程就会销毁掉,变成结束的状态 核心线程没有生存时间,它执行完任务后,它仍然会被保存…

人机交互(软件工程视角)第一、二章部分题目答案

我认为日常生活中,我们学校的选课系统就在选课的时候就很不方便,具体是这样的,因为本来我们学校的选课的时候服务器负载能力就比较差,大家着急忙慌地选课的时候,很容易因为界面选课控件比较小,从而直接点击…

软测入门(四)Appium-APP移动测试基础

Appium 用来测试手机程序。 测试方面: 功能测试安装卸载测试升级测试兼容测试 Android系统版本不同分辨率不同网络 网络切换、中断测试使用中来电话、短信横竖屏切换 环境搭建 Java安装(查资料)Android SDK安装,配置 HOME和P…

FPGA纯verilog手写HDMI发送IP 提供源码和技术支持

目录1、前言2、设计思路和框架TMDS 编码算法OSERDESE串并转换3、顶层源码和IP封装4、源码和IP获取1、前言 本设计使用Xilinx原语和自己手写的代码实现了HDMI发送功能,纯verilog手写,有源码,也提供封装好的IP,你喜欢用例化的方式就…

WebRTC 系列之视频辅流

WebRTC 中的 SDP 支持两种方案: PlanB 方案 和 Unified Plan 方案。早期我们使用多PeerConnection的 Plan B 方案中只支持一条视频流发送,这条视频流,我们称之为”主流”。目前我们使用单 PeerConnection 的 Unified Plan 方案,新…

二叉树——把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树 链接 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xf…

春天到了,来一场 VoxEdit 创作大赛吧!

春天的气息扑面而来,这是让你尽情绽放创造力的最佳时机!我们将以「春天」为主题来一场 VoxEdit 大赛。在这里,你可以展示你的才华并赢得 $SAND 奖励! 无论你是专业的设计师,还是仅仅喜欢创造美丽的艺术,这场…

有趣的阻抗变换

阻抗变换在很多人看来很神秘,甚至不可理喻: “什么是匹配网络?” “为什么要在负载电路之前加这么多电感电容?” “如果负载是100欧姆要与源阻抗50欧匹配,直接在负载并联一个100欧负载不就行了吗”……这样的问题常…

项目管理软件中日历的作用

为什么在项目管理软件中使用日历?日历是跟踪即将举行的会议、截止日期和里程碑的有用工具。它们可以帮助您可视化您的日程安排并提醒您重要事件,例如假期和休假时间。 虽然人们经常有各种各样的日历工具可供选择,包括从办公室墙上的纸质日历…

Stochastic Approximation 随机近似方法的详解之(二)Robbins-Monro Algorithm

6.2 Robbins-Monro Algorithm RM算法是随机近似领域的先驱性工作。众所周知的随机梯度下降算法是RM算法的一种特殊情况。后面我们再介绍具体的细节。 先看一个例子: 我们想要去求下面这个等式的根, BTW,很多问题可以被转化为求根问题。比…

嵌入式学习笔记——基于Cortex-M的单片机介绍

基于Cortex-M的单片机介绍前言生产厂商及其产品线ARM单片机的产品线命名规则留个作业习单片机的资料准备STM32开发所需手册1.芯片的数据手册作业2前言 本文继续接着上一篇中关于Cortex-M的介绍,来记录一些关于ARM系单片机的知识。 生产厂商及其产品线 芯片厂商在…

论坛性能测试难点有哪些?

1 测试工具方面 用户和业务模型分析搭建合适的脚本开发(不根据用户和业务的模型来开发脚本,认为要回归成功即可)合适的需求分析转化为场景设计(不知道如何根据需求进行场景设计)大容量系统的数据生成和使用大型系统的…

金蝶国产化中间件和人大金仓数据库

金蝶Apusic分布式消息队列不需要配置用户名密码rabbitmq:enable: truehost: 192.168.1.233port: 5672<!-- Spring Boot RabbitMQ 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</ar…

webrtc音频系列——4、RTP与RTCP协议

如果让你从0开发一套实时互动直播系统&#xff0c;你首先要选择网络传输协议。UDP 还是 TCP&#xff1f;答案是&#xff1a;UDP。为什么实时传输不能用 TCP &#xff1f;TCP 的目的就是实现数据的可靠传输&#xff0c;因此他有一套 握手&#xff0c;发送 -> 确认&#xff0c…

linux下安装jenkins

1.初始化Jenkins安装环境 系统版本&#xff1a;Red Hat Enterprise Linux 8.7 将脚本文件jenkins_install_env.sh 、 jenkins_install.sh和apache-maven-3.6.2-bin.tar.gz、jdk-8u251-linux-x64.tar.gz都上传到/usr/local/src目录下执行jenkins_install_env.sh脚本初始化Jenki…

嵌入式开发工具箱【持续更新中】【VMware、Ubuntutftp、nfs、SecureCRT、XShell、Source Insight 4.0】

一、概述 本文主要介绍嵌入式开发过程中需要用到的工具及简单的使用方法。避免在搭建嵌入式开发环境时&#xff0c;需要四处寻找文档&#xff0c;收藏此文章&#xff0c;一文搞定。 大多数嵌入式开发环境是使用Linux作为目标开发系统&#xff0c;所以开发主机一般都是Linux系统…

若依学习(前后端分离版)——启动时发生了啥?(@PostConstruct)(mybatis log free)

我们可以发现若依启动时执行了一些sql我们可以安装一个插件mybatis log free 来更好的进行sql查看 &#xff0c;安装后需要修改一下若依的日志配置如下查看日志&#xff0c;我们发现执行了三个方法&#xff08;&#xff09;&#xff0c;分别查询了一些数据。以第二个方法为例子…

python 如何存储数据 (python 的文件和异常)

文章目录存储数据1. 使用 json.dump() 和 json.load()json.dump()2. 保存和读取用户生成的数据存储数据 很多程序都要求用户输入某种信息&#xff0c;如让用户存储游戏首选项或提供要可视化的数据。不管专注的是什么&#xff0c;程序都把用户提供的信息存储在列表和字典等数据结…

这些个 axios 工具函数,你都掌握了吗

前言 周末过得真快&#xff0c;看个源码时间就过去了&#x1f440;。 在上周看做项目的时候看到了项目里封装的 axios&#xff0c;对其封装的原理没有弄清楚&#xff0c;于是周末的时候便抽了点空闲时间来看了看 axios 的源码&#xff0c;将其研究研究。 源码阅读 这里就不…