【学习笔记】在Android使用Frida进行https抓包

news2024/11/26 19:56:24

最近需要在Android进行https抓包,对数据解密,找了很多方法,终于成功了,不过原文一些步骤对于我这个小白还是有点不理解的地方,在此记录一下。

1. 前提条件

  • 一台root手机
  • frida环境

2. frida环境搭建

该步骤全程参考: [Frida入门教程] 一文搞定Frida环境搭建,基于逍遥模拟器(虚拟设备)和ADB(Android Debug Bridge),不过我没有使用模拟器,直接将手机连接到电脑。

以下列出踩坑点:

  1. 一开始忽略了 su,导致 ./fs 权限不够;
  2. 直接使用了作者给的 fs 文件,然而与我使用的设备型号并不匹配,因此一定要查询设备型号并下载特定的 fs文件
  3. 最后运行完./fs 保持该cmd窗口打开,重新打开第二个cmd窗口启动 tcpdump。

3. 开启抓包

接下来步骤全程参考: [Android 原创] 意外发现的Android硬核https抓包, 在多个app亲测ok, 自定义ssl也无用哦~

但我觉得里面步骤不够详细,在此记录一番。

  1. 打开第二个cmd窗口启动 tcpdump:

    // 列出已知设备
    adb devices
    // 链接设备
    adb shell
    // 开启su权限
    su
    // 切换目录
    cd /system/bin/
    // 开始tcpdump抓包
    tcpdump -i wlan0 -s 0 -w /sdcard/flow/qqBrowser03.pcap
    

    实际操作图:

    在这里插入图片描述

  2. 如果手机内没有tcpdump,需要先下载,这里不做介绍,应该蛮简单的。

4. hook app拿到sslkey

  1. 创建一个名为 sslkeyfilelog.js 的文件,用于获取SSL密钥文件日志:

    function startTLSKeyLogger(SSL_CTX_new, SSL_CTX_set_keylog_callback) {
        console.log("start----")
        function keyLogger(ssl, line) {
            console.log(new NativePointer(line).readCString());
        }
        const keyLogCallback = new NativeCallback(keyLogger, 'void', ['pointer', 'pointer']);
    
        Interceptor.attach(SSL_CTX_new, {
            onLeave: function(retval) {
                const ssl = new NativePointer(retval);
                const SSL_CTX_set_keylog_callbackFn = new NativeFunction(SSL_CTX_set_keylog_callback, 'void', ['pointer', 'pointer']);
                SSL_CTX_set_keylog_callbackFn(ssl, keyLogCallback);
            }
        });
    }
    startTLSKeyLogger(
        Module.findExportByName('libssl.so', 'SSL_CTX_new'),
        Module.findExportByName('libssl.so', 'SSL_CTX_set_keylog_callback')
    )
    // https://codeshare.frida.re/@k0nserv/tls-keylogger/
    
  2. 另外启动一个 cmd 窗口,在电脑上运行该脚本,启动 Frida 并注入到目标应用程序中。

    frida -U -f package -l ./sslkeyfilelog.js --no-pause
    

    这里, package 是一个占位符,代表目标应用程序的包名。 你需要将其替换为你实际想要分析的应用程序的包名。

    在安卓系统中,每个应用程序都有一个唯一的包名,用来标识应用程序的身份。 包名通常是以 com.example.app的形式表示,其中 com是公司或组织的名称, example是应用程序的名称, app是应用程序的类型。

    比如我要抓取安卓端 qq浏览器的访问流量,其包名就是:com.tencent.mtt

  3. 保存frida输出的打印信息到 sslkey.txt(这里我是手动复制并新建一个txt文件)。

    frida输出的打印信息示例:

    CLIENT_RANDOM 557e6dc49faec93dddd41d8c55d3a0084c44031f14d66f68e3b7fb53d3f9586d 886de4677511305bfeaee5ffb072652cbfba626af1465d09dc1f29103fd947c997f6f28962189ee809944887413d8a20
    CLIENT_RANDOM e66fb5d6735f0b803426fa88c3692e8b9a1f4dca37956187b22de11f1797e875 65a07797c144ecc86026a44bbc85b5c57873218ce5684dc22d4d4ee9b754eb1961a0789e2086601f5b0441c35d76c448
    CLIENT_RANDOM e1c1dcaaf73a8857ee60f5b38979084c3e95fdebd9791bbab985a8f954132426 41dcf3d5e41cb469494bf5014a1ecca9f40124f5728895265fadd38f8dc9d5ac15c5fa6588c1ea68f38476297fe76183
    CLIENT_RANDOM 66c4f37afb2152e3837c8a7c48ce51e8307e6739e1fe3efc542887bbcae4f02a bbafe4881084570af01bed59f95bfcf7bc49d2e55acbc7fe33c1e06f8ff0bc2e747c2c428e7cd13f1c77c2141085f951
    CLIENT_RANDOM 8d0d92154ee030486a2b13f9441f85ef33c5e06732fbb06a1ac81fe34b6f2ce3 8270b34eee784e7f7de45f39af36f26e6abf99bb52fa8350945e3ebf79dc1c53a0693c24b0780ce3a54d39fd4b5b5149
    CLIENT_RANDOM b5d58899346db525f14312cfb52c1247ed7adb710ae43428bd331ce27d77dbc1 9effd5b469ef6fdf7a056ea50fc3ff0fdf9fa40ae709805bea8678ddce404f211ed534623876a5c616f3e7bc43121f48
    CLIENT_RANDOM af1b3f9ba0b4c27756c93595eb54cac6f0d8c6e9e4f0fcb1a36c45f0cd12060d 696a6fff39bf6c9863901a2145703de948c37e1abf6b4c03628118bee11c292239304ee020c71ff31a293fc6b9439364
    CLIENT_RANDOM e2a3d8e6b638976aa27c8cf031be5e6b03cf7ffa573be101816d5103025d404b 2b006379423d7252c864a129b6c5a693b75d477dc5d3f894af5f02db755c4f6dd54470b659882871c62ce002792e211a
    CLIENT_RANDOM 1c8cfe911e2111d80dc81c275c791c04467e8d7bca16963acec6a20051429981 bf08334d973d44d80c8f4542c2356a5fd9e0d390afde0374179cc81dd82aaa15aae52604988e9c9616ad0795c79c81ed
    

    对于其他信息需要清除(教程说不要掺杂其他信息,我直接手动删除了)。

    实际操作图:

    在这里插入图片描述

5.配置 wireshark

此步骤参考如何使用wireshark抓取HTTPS数据包?,由于不是pc抓包,我们已经手动获取了 sslkey,因此直接从配置 wireshark 开始操作。

首先将抓取到的数据包放到电脑,并用 wireshark 打开。

操作:编辑---->首选项---->protocols---->TLS,选择到 tls 后将之前的 sslkey.txt导入。

在这里插入图片描述

这样就解密成功了,即正常看到数据包。

在这里插入图片描述

参考资料

  1. [Frida入门教程] 一文搞定Frida环境搭建,基于逍遥模拟器(虚拟设备)和ADB(Android Debug Bridge)
  2. [Android 原创] 意外发现的Android硬核https抓包, 在多个app亲测ok, 自定义ssl也无用哦~
  3. 如何使用wireshark抓取HTTPS数据包?

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

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

相关文章

基于springboot或ssm的红色新闻系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【已解决】VMware安装MacOS苹果虚拟机,开机后卡在苹果图标位置不动

我的计算机硬件与软件信息: Win11系统,VMware17,MacOS12 最近在VMware17上安装MacOS12苹果虚拟机时,前期所有内容都配置好之后,在开机时碰到了一个问题:开机后卡在苹果图标位置不动,即使等了一…

2023年Mac上有哪些优质的工具(一)

Downie 4 专门用来下载视频的,各大视频网站上的视频只要粘贴地址就可以直接下载,并且可以选择清晰度,再也不用受百度云的气了,下载速度非常快,让工作效率大大提高。 Xmind 大家熟知的一款思维导图软件,他…

day34-servlet 分页

0目录 servlet 1.分页 分页逻辑1:数据库中20条记录,要求每页5条数据,则一共有4页 分页逻辑2:数据库中21条记录,要求每页5条数据,则一共有5页 分页逻辑3:数据库中19条记录,要求每页…

pytorch构建深度网络的基本概念——随机梯度下降

文章目录 随机梯度下降定义一个简单的模型定义Loss什么是梯度随机梯度下降 随机梯度下降 现在说说深度学习中的权重更新算法:经典算法SGD:stochastic gradient descent,随机梯度下降。 定义一个简单的模型 假设我们的模型就是要拟合一根直…

基于深度学习的高精度课堂人脸检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度课堂人脸检测系统可用于日常生活中或野外来检测与定位课堂人脸目标,利用深度学习算法可实现图片、视频、摄像头等方式的课堂人脸目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标…

力扣876. 链表的中间结点

题目 给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 题解 设置快慢指针slow和fast,slow每次走一步,fast每次走两步,当fast走完时,slow刚好指到链表中间…

Vue从小白到入门(保姆级教学)

文章目录 🍋Vue是什么?🍋MVVM思想 🍋vue2快速入门🍋注意事项 🍋数据单向渲染🍋数据双向渲染🍋作业布置 🍋事件绑定🍋事件处理机制🍋注意事项和细节&#x1f…

西门子S7300以太网模块labview软件介绍

借助捷米特ETH-S7300-JM01以太网模块,通过NetS7 OPC和NI OPC Servers,西门子S7-300与测控软件NI LABVIEW实现以太网通讯和监控。 功能简介 LabVIEW是一种程序开发环境,由美国国家仪器(NzI)公司研制开发,类…

Redis 宕机了,如何避免数据丢失?

前言 如果有人问你:"你会把 Redis 用在什么业务场景下?" 我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。…

英华特在创业板上市:总市值约50亿元,国产品牌持续向上

7月13日,苏州英华特涡旋技术股份有限公司(下称“英华特”,SZ:301272)在深圳证券交易所创业板上市。本次上市,英华特的发行价为51.39元/股,发行数量为1463万股,募资总额约为7.52亿元,…

直播 | SDS 容灾方案,让制品数据更安全

近日,腾讯 CODING WePack 制品管理系统 V1 以及腾讯 CODING DevOps 研发效能管理平台 V7 与 XSKY 星辰天合的统一数据平台 XEDP 及天合翔宇分布式存储系统完成互相兼容认证,在数据层面满足了共同客户敏捷开发的高可用建设合规要求。 联合解决方案可以帮…

Linux stress命令---压力测试

一、使用场景 CPU压力测试 内存压力测试 磁盘IO测试 Swap可用性测试 二、语法及常用参数 stress [选项] [进程数] -?, --help:显示帮助信息 --version:显示版本信息 -v, --verbose:详细输出 -q, --quiet:静默输出 -t, --timeout&…

基于python 和anaconda搭建环境

目录 1.先了解以下几点。 2 方案:pycharmanaconda 3.基本步骤 4 熟悉anaconda。 4.1 虚拟环境的创建方法 4.2 anaconda prompt中,常用指令 4.3 在Anaconda Navigate中的一些操作 4.3.1给已有虚拟环境安装包 4.3.2 新建虚拟环境 4.4 在pycharm中…

JavaScript 深度剖析-函数式编程(一)

文章介绍 为什么要学习函数编程以及什么是函数式编程函数式编程的特性(纯函数、柯里化、函数组合等)函数式编程的应用场景函数式编程库 Lodash 为什么要学习函数式编程 函数式编程是非常古老的一个概念,早于第一台计算机的诞生,函数式编程的历史。 那…

灵活利用ChatAI,提升你的码力—程序员篇

前言 ChatGPT目前还完全无法替代程序员,尤其是在一些强上下文的编程场景下,比如一些重业务的编程场景,但是可以利用它来完成一些编程相关的事,把它当做一个工具来大幅度提升我们的工作效率 ​开发:微信小程序 用户交互…

pg手动清理pg_wal文件

1、由于我是docker安装的,要先进入docker容器 docker exec -it a470585a9cdc /bin/bash2、查看哪个检查点之前的日志可以清除 pg_controldata $PGDATA表示00000001000000E7000000CE之前的pg_wal文件可以删除 3、手动清理pg_wal pg_archivecleanup -d $PGDATA/pg…

当我掉入计算机的大坑中时,遇到简单的题也很吃力,这可如何是好呢?

一支笔,一双手,一道力扣(Leetcode)做一宿!!! 一、分享自己相关的经历 我们可能经常听到这句话,人永远赚不到认知以外的钱,如果把它放到程序员行业来说,同样适…

微信加粉计数器后台开发

后台包括管理后台与代理后台两部分 管理后台 管理后台自带网络验证卡密系统,一个后台可以完成对Pc端的全部对接,可以自定义修改分组名称 分享等等代理后台 分享页 调用示例 <?php$request new HttpRequest(); $request->setUrl(http://xxxxxxx/api); $request->…

ROS:URDF、Gazebo与Rviz结合使用

目录 一、机器人运动控制以及里程计信息显示1.1ros_control 简介1.2运动控制实现流程(Gazebo)1.2.1为 joint 添加传动装置以及控制器1.2.2xacro文件集成1.2.3启动 gazebo并控制机器人运动 1.3Rviz查看里程计信息1.3.1启动 Rviz1.3.2添加组件 二、雷达信息仿真以及显示2.1流程分…