【Frida】【Android】06_夜神模拟器中间人抓包

news2024/11/30 1:32:48

🛫 系列文章导航

  • 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950
  • 【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446
  • 【Frida】【Android】03_RPC https://blog.csdn.net/kinghzking/article/details/137050967
  • 【Frida】【Android】04_Objection安装和使用 https://blog.csdn.net/kinghzking/article/details/137071768
  • 【Frida】【Android】05_Objection实战 https://blog.csdn.net/kinghzking/article/details/137071826

▒ 目录 ▒

    • 🛫 系列文章导航
    • 🛫 导读
      • 开发环境
    • 1️⃣ 理论知识
      • 中间人攻击
      • HTTPS原理
      • HTTPS的中间人攻击
    • 2️⃣ Android配置
      • 配置网络环境
      • 手机设置代理(系统自带wifi设置)
    • 3️⃣ PC上的抓包工具配置
      • 抓HTTP
      • 抓HTTPS
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

开发环境

版本号描述
文章日期2024-03-30
操作系统Win11 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
夜神模拟器7.0.5.8
Android9
python3.9.9
frida16.2.1
frida-tools12.3.0
objection1.11.0

1️⃣ 理论知识

中间人攻击

中间人攻击(Man-in-the-Middle Attack,简称MITM攻击)是一种网络攻击手法,攻击者秘密地插入到两个通信实体之间的通信会话中,扮演“中间人”的角色。在这样的攻击中,攻击者能够读取、监听、修改或者伪造经过他手中的所有通信数据,而正常的通信双方却对此毫不知情,以为他们仍在进行直接、安全的通信。
参照《图解HTTP》中的插图,让我们更容易理解中间人攻击:
在这里插入图片描述

ps: 远在HTTP的年代,中间人攻击就已经存在了,而且成本极低,针对该情况,HTTPS应用而生(当然,还有很多其它原因)。

HTTPS原理

在HTTP时代,整个应用层通信过程都处于明文状态并且通信的双方也不对传输过程加以验证,在安全上十分不可靠。
为了解决HTTP安全问题,衍生出了HTTPS(HTTP Secure),也就是添加了加密及认证机制的HTTP。

HTTPS协议的整个通信过程主要分成发起请求、验证身份、协商密钥、加密通信阶段,如图所示:
在这里插入图片描述

上述流程总结如下:

  • 客户端首先向服务器发送访问请求,当服务器接收到请求后,它会向客户端传送自身持有的由权威第三方信任机构签发的数字证书,该证书包含了服务器的公钥信息。

  • 客户端收到公钥后,依据本地存储的受信任根证书列表及证书链验证服务器证书的有效性和真实性。

    • 若服务器证书无法通过验证,则客户端会显示类似“您的连接不是私密连接”的警告,表明公钥不可信赖。
    • 反之,若验证通过,客户端则利用服务器提供的公钥加密自身的随机生成的客户端公钥,并将其回传至服务器。
  • 服务器接收到加密的客户端公钥后,运用与之配对的私钥进行解密,从而获取客户端的公钥。接着,服务器基于双方共享的信息生成一个临时的session key,并使用客户端公钥加密这个会话密钥,再传递给客户端,完成了密钥协商过程。

  • 自此以后,客户端与服务器间的所有通信内容都将采用先前协商好的session key进行对称加密,以确保数据的机密性和完整性。

总之,HTTPS协议通过对HTTP协议添加加密机制、身份认证和完整性保护措施,有效地解决了HTTP在数据传输过程中的安全隐患问题,可以形象地理解为“HTTP加上加密、认证和完整性保护机制即构成了HTTPS”。

HTTPS的中间人攻击

HTTPS上的应用层抓包原理主要“攻破”的是HTTPS传输过程中验证身份的步骤,我们在配置抓包环境时是将Charles证书加入到系统本身信任的证书中,当应用进行通信时,如果没有进一步的安全保护措施,那么客户端接收到的服务器证书即使是Charles证书也会继续通信,整个过程可以简单地理解为如下图所示:
在这里插入图片描述

为了应对上述通过手动给系统安装证书从而导致中间人攻击继续生效的风险,App也对这类攻击推出了对抗手段,主要有以下两种方式:

  • SSL Pinning,又称证书绑定,可以说是客户端校验服务器的进阶版:该种方式不仅校验服务器证书是否是系统中的可信凭证,在通信过程中甚至连系统内置的证书都不信任而只信任App指定的证书。一旦发现服务器证书为非指定证书即停止通信,最终导致即使将Charles证书安装到系统信任凭据中也无法生效。
  • 服务器校验。这种方式发生在HTTPS验证身份阶段,服务器在接收到客户端的公钥后,在发送session key之前先对客户端的公钥进行验证,如果不是信任的证书公钥,服务器就中止和客户端的通信。

2️⃣ Android配置

配置网络环境

为了达到抓包的目的,首先要将计算机和手机连接在同一个局域网中并且要确保手机和计算机能够互相访问。

点击右上方“设置”→选择“手机”→安装网络桥接驱动
在这里插入图片描述

桥接驱动安装完成后,点击开启网络桥接模式,进入桥接设置中DHCP和静态IP的设置
在这里插入图片描述

  • 查看主机ip
    ipconfig
    192.168.76.103
    在这里插入图片描述

重启模拟器,adb连接模拟器,查看ip地址,并ping主机地址,确保正常运行
在这里插入图片描述

手机设置代理(系统自带wifi设置)

  • 打开模拟器内的设置
    打开模拟器内的设置
  • 点击wifi进入列表后,点击wifi位置长按鼠标左键,会出现一个弹窗,选择修改网络。
    http://bignoxhk-player.oss-cn-hongkong.aliyuncs.com/help-center/2022/04/15/5b8b2bb82fe24c45a24a84c044f994ee.gif
  • 选择"显示高级选项",代理选择“手动”,填写代理服务器主机名及端口,点击保存。
    ===
    这里,我们将其设置为计算机ip:192.168.76.103;端口设置为8080

3️⃣ PC上的抓包工具配置

这里咱们使用Charles进行抓包

抓HTTP

打开Charles,点击菜单Proxy,然后点击菜单Proxy Settings...,打开代理设置界面:
在这里插入图片描述

在打开代理设置界面,设置端口为8080:
在这里插入图片描述

模拟器中,我们打开浏览器,访问百度,会弹出下面对话框,我们点击Allow按钮,从而允许抓取192.168.76.104访问的请求。
在这里插入图片描述

最终,我们将抓取到如下封包内容,表示抓到请求,但是内容有问题。
在这里插入图片描述
这是因为Charles默认开启了SSL Proxying模式,取消下面按钮即可。
在这里插入图片描述

关闭SSL Proxying模式,再次访问http://bing.com,就可以抓到内容了
在这里插入图片描述

抓HTTPS

在这一节中,仍然以Charles抓包工具为例。为了能够成功抓取HTTPS的数据,首先需要通过Ctrl+L快捷键开启Charles的SSLProxying模式。

在Android模拟器中,打开网站chls.pro/ssl,稍等片刻,即可下载证书,在通知栏中点击下载的证书,将打开为证书命名的窗口。
在这里插入图片描述

随便设置证书名称,点击确定,提示启用安全锁屏功能:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
随便设置一种即可,这里小编选择PIN码,密码简单点1234
最后会提示已安装yemao的字样。

进入“设置”应用,依次单击“安全性和位置信息”→“加密与凭据”→“信任的凭据”→“用户”,即可在用户凭据中查看到刚才安装的证书文件,如图所示。
在这里插入图片描述

仅仅是将证书安装为用户信任的证书还不够,还需要通过shell将Charles的证书变成系统自带的证书以适用于更加通用的抓包,具体命令与过程如下:
在这里插入图片描述

adb shell
su

cd /data/misc/user/0/cacerts-added/
mount -o remount,rw /system
cp * /etc/security/cacerts/
chmod 777 /etc/security/cacerts/*
mount -o remount,ro /system
reboot

手机会开始重启。在重启完成后,重新进入“设置”应用的“信任的凭据”页面,如图7-24所示。翻查系统信任的凭据,如果发现Charles证书就表明Charles证书已成功放置于系统证书中被系统信任。
在这里插入图片描述

这时,再打开 https://www.baidu.com就可以正常抓取了。
在这里插入图片描述

🛬 文章小结

  • VPN冲突
    为了避免冲突,如果遇到无法抓包的情况,检查计算机和模拟器中,是否开启了其它VPN软件。
    如果开启过其它VPN软件,可能导致环境问题,有可能需要重启才能解决。
  • 手机设置代理有很多方案,上面直接修改系统设置,操作简单,但是会被api检查到,我们可以使用其它代理软件(Postern、V2ray等)进行代理设置。

📖 参考资料

  • 网络桥接功能使用说明 https://support.yeshen.com/zh-CN/qt/wlqj

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

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

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

相关文章

【Go】六、函数

文章目录 1、函数的定义2、内存分析3、注意点4、函数数据类型5、自定义数据类型(起别名)6、支持对返回值命名 1、函数的定义 语法: func 函数名(形参列表)(返回值类型列表){执行语句..return 返回值列…

你认为什么样的产品是一个好的产品?

1. 前言 尽管产品经理这一职位侧重于软技能,无需亲自设计或编写代码,但我们必须明确自己的职责和角色定位。这是为了强调,尽管产品经理的工作不一定涉及具体的技术实现,但对待每一个任务都应保持严肃和专注。 我们必须将产品经理视为一项严谨的专业,每一次的工作交流都是…

DFS:二叉树的深搜与回溯

一、计算布尔二叉树的值 . - 力扣(LeetCode) class Solution { public:bool evaluateTree(TreeNode* root) {if(root->leftnullptr) return root->val0?false:true; bool left evaluateTree(root->left);bool rightevaluateTree(root->rig…

PLC_博图系列☞P=:在信号上升沿置位操作数

PLC_博图系列☞P:在信号上升沿置位操作数 文章目录 PLC_博图系列☞P:在信号上升沿置位操作数背景介绍P:在信号上升沿置位操作数说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 P 背景介绍 这是一篇关于PLC编程的文章…

手写简易操作系统(十五)--实现内核线程

前情提要 前面我们实现了内存管理系统,内存管理系统可以实现进程与进程之间的隔离。 Linux中高1GB是操作系统内核的地址,低3GB是用户的地址,高1GB对于所有用户都是一致的,低3GB才是用户自己的自留地。 既然已经实现了内存管理&…

大数据学习-2024/3/29-oracle使用介绍

在plsql中登录ORACLE数据。 默认用户: 1、sys: 角色:数据库超级管理员账户。 权限:具有最高的权限,可以执行任何操作,包括操作数据字典和控制文件。可以创建和删除数据库对象,授予和回收其他用户…

Redis中处理处理没有ACK确认的Stream

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Stream是一个只能追加内容的数据类型。也就是说Stream这种数据类型,我们…

FFmpeg将绿幕视频处理成透明视频播放

怎么在网页端插入透明视频呢,之前在做Web3D项目时,使用threejs可以使绿幕视频透明显示在三维场景中,但是在网页端怎么让绿幕视频透明显示呢? 如图上图,视频背景遮挡住后面网页内容 想要如下图效果 之前有使用过ffmpeg…

若依框架学习使用

若依官网项目拉取下来介绍 | RuoYi 项目运行: 1.idea安装,可以运行前后端 编辑器idea、jdk环境安装、数据库mysql、navicat工具、redis(redis-server启动)安装 2.navicat数据库连接, 创建数据库ry-vue并导入数据脚本ry_2021xxxx.sql,qua…

文章秒收录神器

在网络内容日益丰富的时代,网站的内容更新速度和收录效率变得愈发重要。有时候,我们需要确保自己的文章能够尽快被搜索引擎收录,以便更快地展现在用户面前。本文将介绍一些让文章秒收录的方法,以及一些被称为“文章秒收录神器”的…

JavaScript动态渲染页面爬取——Pyppeteer爬取实战

Pyppeteer爬取实战 爬取目标 电影网站https://spa2.scrape.center/ 任 务 通过Selenium遍历列表页,获取每部电影的详情页URL通过Selenium根据上一步获取的详情页URL爬取每部电影的详情页从详情页中提取每部电影的名称、类别、分数、简介、封面等内容。 爬取列表页…

LeetCode 452. 用最少数量的箭引爆气球

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一…

Java基本语法(变量,数据类型,关键字、)

目录 什么是变量 声明 声明方式 赋值方式 声明的同时进行赋值 变量命名规范 字符组成:变量名可以包含以下字符: 开头限制: 空格禁止: 关键字/保留字: 大小写敏感: 长度限制: 推荐风…

【多模态对比学习】我遇到的坑

对比学习踩坑记录 本文是对过去几个月来利用对比学习的思想来优化多模态学习任务的思路的总结,主要包含以下几个方面:为什么要用对比学习、跨模态中对比学习怎么用、对比的过程中负样本是不是越多越好、要不要推远所有的负样本、样本之间的语义碰撞如何缓…

vitess insert 代码分析

一、总统流程 二、源码分析 1.计划器 构建计划入口,每个操作,都有一个单独函数进行计划构建 func createInstructionFor(query string, stmt sqlparser.Statement, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema, enableOnlineD…

Android15功能和 API 概览

Android 15 面向开发者引入了一些出色的新功能和 API。以下部分总结了这些功能,以帮助您开始使用相关 API。 如需查看新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档&#xff0…

FANUC机器人故障诊断—报警代码(一)

一、SRVO-050碰撞检测报警 [原因]检测出碰撞 [对策] 1.确认机器人是否碰撞。 2.确认是否正确进行了负载设定。 3.确认是否有过载、过度的加速度附加指令。 4.在长期停用后启动,或者外部气温较低时发生该报警。启动后,先短时间内低速运转设备&#…

Vue3:快速上手路由器

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。 一.路由器和路由的概念 在 Vue 3 中,路由(Router)和路由器(Router)是两个相关但不同的概念。 1. 路由(Router)&#xff…

基于SpringBoot的“游戏分享网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“游戏分享网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 网站首页界面图 用户注册界面图 …

基于SpringBoot和Vue的房产销售系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的房产销售系统的设计与实现 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同学 💕&#x1f…