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

这篇具有很好参考价值的文章主要介绍了【学习笔记】在Android使用Frida进行https抓包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近需要在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
    

    实际操作图:

    【学习笔记】在Android使用Frida进行https抓包,实验操作,android,http,抓包

  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
    

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

    实际操作图:

    【学习笔记】在Android使用Frida进行https抓包,实验操作,android,http,抓包

5.配置 wireshark

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

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

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

【学习笔记】在Android使用Frida进行https抓包,实验操作,android,http,抓包

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

【学习笔记】在Android使用Frida进行https抓包,实验操作,android,http,抓包文章来源地址https://www.toymoban.com/news/detail-561261.html

参考资料

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

到了这里,关于【学习笔记】在Android使用Frida进行https抓包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web安全学习笔记【07】——非http\https抓包

    #知识点: 1、Web常规-系统中间件数据库源码等 2、Web其他-前后端软件Docker分配站等 3、Web拓展-CDNWAFOSS反向负载均衡等 ----------------------------------- 1、APP架构-封装原生态H5flutter等 2、小程序架构-WebH5JSVUE框架等 ----------------------------------- 1、渗透命令-常规命令文件上传下载 2、反

    2024年02月19日
    浏览(53)
  • android 7.0以上 https使用charles抓包 提示 unknow 解决方案

    关于android7.0以上https抓包问题,在charles都配置好的情况下依然提示unknow,解决方案如下 一、在res-xml下新建 network_security_config.xml 文件 network_security_config.xml 中的内容表示 系统的 和用户自己的证书均被信任 二、在AndroidManifest application 中添加 然后就可以了 注意该装的证书是少

    2024年02月16日
    浏览(49)
  • android12微信抓包https

    测试环境: redmi K30 android12 已root 安装magisk LSPosed 微信版本:8.0.32 抓包软件:Burpsuite 前言: 在新版微信中只会信任程序自带的证书,解决方法也很简单,就是安装TrustMeAlready模块。 TrustMeAlready:https://github.com/ViRb3/TrustMeAlready TrustMeAlready是Xposed的一个模块,通过hook的方式禁用

    2024年02月16日
    浏览(41)
  • 夜神模拟器12+Charles进行Https抓包

    Android从7.0开始,系统不再信任用户添加到系统的CA证书,如果应用的targetSdkVersion=24,则只有系统证书才会被信任。也就是说即使安装了用户CA证书,在Android7.0以上的机器上,targetSdkVersion=24的应用的Https包也无法正常抓到。 本文将讲解实现使用夜神模拟器12的版本,通过开启

    2024年02月02日
    浏览(56)
  • 【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

    macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 手机需要root,macbook上需要安装好mitmproxy 需要完成下文1-3: https://github.com/doug-leith/cydia (接入有线网并开启无线热点) 启用 IP 转发: sudo sysctl -w net.inet.ip.forwarding=1 保存文件: https://github.com/doug-leith/cy

    2024年01月22日
    浏览(45)
  • charles对iOS手机的https进行抓包(图文教程)

    Help→Local IP Address查看本机地址 电脑IP地址 3、设置手机HTTP代理 手机连上电脑,点击“设置-无线局域网-连接的WiFi”,设置HTTP代理: 服务器为电脑IP地址:如192.168.1.169 端口:8888 设置代理后,需要在电脑上打开Charles才能上网 4、配置手机端证书 打开手机Safari,访问下载地址

    2024年04月16日
    浏览(43)
  • Android高级架构师:Android平台HTTPS抓包解决方案及问题分析

    … ?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"? 这样即表示,App信任用户CA证书,让系统对用户CA证书的校验给予通过。更多相关信息,详见 Network security configuration: https://developer.android.com/training/articles/security-config 调低targetSdkVersion 24 =========================================================================

    2024年04月22日
    浏览(48)
  • Android Hook之Frida安装使用

    Frida 是一个动态检测框架,允许开发人员在 Windows、macOS、Linux、iOS 和 Android 上的原生应用程序中注入 JavaScript 或 Python 脚本。该框架可用于操纵应用程序的行为、从中提取信息或与其进行通信。Frida 通常被安全研究人员和渗透测试人员用来对应用程序进行动态分析,并执行钩

    2023年04月19日
    浏览(42)
  • Android笔记(二十八):在雷电模拟器安卓7.0+上使用Charles抓包详细教程

    由于手头没有合适的真机,所有经常使用雷神模拟器来跑项目,模拟器也需要能够抓包看看接口返回的数据,以便自测调试。本文记录了如何在雷电模拟器安卓7.0+上使用Charles抓包,其他模拟器没试过。 模拟器上浏览器打开百度网页,能抓到百度页面数据 模拟器开启root权限

    2024年02月09日
    浏览(45)
  • charles对iOS手机的https进行抓包(图文教程),web前端开发视频

    端口:8888 设置代理后,需要在电脑上打开Charles才能上网 4、配置手机端证书 打开手机Safari,访问下载地址: chls.pro/ssl   (如果我们显示的不同,则以提示中的地址为准) 正常情况下访问此地址会请求安装一个配置文件。 手机端安装证书2 网上很多教程到这就结束了,但返回

    2024年04月24日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包