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

🛫 系列文章导航

  • 【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
sucd /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.hqwc.cn/news/579144.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用SQLite(含加密)保姆级教程

C#使用SQLite 文章目录 C#使用SQLite涉及框架及库复制runtimes创建加密SQLite文件生成连接字串执行SQL生成表SQLiteConnectionFactory.cs 代码结构最后 涉及框架及库 自己在NuGet管理器里面安装即可 Chloe.SQLite:ORM框架Microsoft.Data.Sqlite.Core:驱…

A Little Is Enough: Circumventing Defenses For Distributed Learning

联邦学习的攻击方法:LIE 简单的总结,只是为了能快速想起来这个方法。 无目标攻击 例如总共50个客户端,有24个恶意客户端,那么这个时候,他需要拉拢2个良性客户端 计算 50 − 24 − 2 50 − 24 0.923 \frac{50-24-2}{…

(学习日记)2024.03.27:UCOSIII第二十四节:任务状态

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

uniapp中安装vant2

1.uniapp项目搭建 因为是安装vant2所以项目选择vue2,如果vue3项目的话安装vant3 2.安装vant npm i vantlatest-v2 3.在main.js文件引入挂载vant 说明:// #ifndef VUE3这里是vue2模板用来挂载注册组件的地方;// #ifdef VUE3这里是vue3模板…

基于微信小程序的日语词汇学习设计与实现(论文+源码)_kaic

日语词汇学习小程序 摘 要 日语词汇学习小程序是高校人才培养计划的重要组成部分,是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。本学生所在学院多采用半手工管理日语词汇学习小程序的方式&#x…

2013年认证杯SPSSPRO杯数学建模A题(第一阶段)护岸框架全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 A题 护岸框架 原题再现: 在江河中,堤岸、江心洲的迎水区域被水流长期冲刷侵蚀。在河道整治工程中,需要在受侵蚀严重的部位设置一些人工设施,以减弱水流的冲刷,促进该处泥沙的淤积&…

Swift:“逻辑运算子“与“比较运算符“

1. 逻辑非 ! 逻辑非运算符 ! 是用于对布尔值取反的。当操作数为 true 时,! 将返回 false,而当操作数为 false 时,! 将返回 true。 let isTrue true let isFalse !isTrue // isFalse 现在是 false 2. 逻辑与 && 逻辑与运算符 &a…

探索高效开发大屏可视化项目模板:es-big-screen

一、引言 在数据驱动的时代,大屏可视化已经成为了展示数据和信息的重要手段。本文将介绍一个基于 Vue 3、Echarts、高德地图和 Pinia 开发的大屏可视化项目模板——es-big-screen,它提供了丰富的功能,包括大屏适配、图表组件(Ech…

IF= 13.4| 当eDNA遇上机器学习法

近日,凌恩生物客户重庆医科大学在《Water Research》(IF 13.4)发表研究论文“Supervised machine learning improves general applicability of eDNA metabarcoding for reservoir health monitoring”。该研究主要介绍了一种基于eDNA的机器学…

《QT实用小工具·三》偏3D风格的异型窗体

1、概述 源码放在文章末尾 可以在窗体中点击鼠标左键进行图片切换,项目提供了一些图片素材,整体风格偏向于3D类型,也可以根据需求自己放置不同的图片。 下面是demo演示: 项目部分代码如下所示: 头文件部分&#xff…

第十二章:预处理命令

文章目录 第十二章:预处理命令宏定义无参宏定义带参数的宏定义 文件包含处理 第十二章:预处理命令 作用:由编译预处理程序对程序中的特殊命令作出解释,以产生新的源程序对其进行正式编译 C语言与其他语言的重要区别就是可以使用预…

【WEEK5】 【DAY4】数据库操作【中文版】

2024.3.28 Thursday 目录 2.数据库操作2.1.数据库2.1.1.新建数据库(右键的方法)2.1.2.查询:点击“查询”->“新建查询表”即可输入所需要的语句,点击“运行”,如: 2.2.结构化查询语句分类2.3.数据库操作…