百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

安卓应用层协议/框架通杀抓包:实战篇

ccwgpt 2024-09-13 16:08 45 浏览 0 评论


(文章分为实战和源码分析,本文为实战篇)


环境和工具准备:

  • kali-linux
  • python 3.x
  • r0capture
  • frida / frida-tools
  • apkshell

  • 0x01.什么是 Frida

    英文原文介绍:

    Frida is Greasemonkey for native apps, or, put in more technical terms, it’s a dynamic code instrumentation toolkit. It lets you inject snippets of JavaScript into native apps that run on Windows, Mac, Linux, iOS and Android. Frida is an open source software.

    frida是一款轻量级的 Hook 框架,也可以说是一种动态插桩工具,可以插入一些代码到原生 app 的内存空间去,(动态地监视和修改其行为),这些原生平台可以是Win、Mac、Linux、Android或者iOS。

    frida分为两个部分,服务端和控制端,其中服务端运行在目标机器上,通过进程注入来劫持应用的类和函数,控制端运行在自己系统机器上,可以注入自定义的 js、python、c 等脚本来实现自动化注入。

    无论是针对 Java 层还是 Native 层,frida 均能 Hook,虽然持久化上没有 Xposed 等开发框架强,但是 frida 主要优势就是它的动态性和灵活性。


    0x02.安装 Frida

    frida 安装特别简单,直接 pip 安装即可

    $ pip install frida
    

    如果要指定版本安装,可以这样:

    $ pip install frida==12.8.0
    

    下载慢的话是源的问题,可以指定清华源:

    -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    另外pip只是下载了一个安装脚本,实际上最后请求去下载的还是默认官方的 pypi 源,这里写死了,所以很多人会卡在这很久.

    而有趣的是我看了一下网上很多提问的童鞋,回复中目前还没有人指出关键问题所在,回答的基本都是最开始的指定源之类的,而其实并不是那样:

    解决方案也很简单,将 pypi 官网源编辑替换成清华源,再手动构建即可

    另外还需要安装一下配套工具,frida-tools

    $ pip install frida-tools
    

    最后执行没有问题,环境就安装配置好了

    这里安装后的 frida 版本是 14.2.3,然后还要下载服务端,根据安装的 frida 版本和执行服务端的机器的系统架构,去下载对应的 frida-server( https://github.com/frida/frida/releases )

    下载后先放着,后面要用


    0x03.什么是r0capture

    r0capture 是一个 python 脚本,基于 frida_ssl_logger 开发,侧重点不同在于 frida_ssl_logger 是抓 ssl 和跨平台,而 r0capture 旨在抓到所有的包,其中安卓7、8、9、10 测试可用。

    优势:

  • 无视所有证书校验或绑定,不用考虑任何证书的事情;
  • 通杀TCP/IP四层模型中的应用层中的全部协议;
  • 通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf 等等、以及它们的SSL版本;
  • 通杀所有应用层框架,包括 HttpUrlConnection、Okhttp1/3/4、Retrofit/Volley等等;

  • 0x04.安装 r0capture

    $ git clone https://github.com/bin-maker/r0capture
    


    0x05.实战演示

    首先将之前下载的对应版本和系统的 frida-server 拷贝到手机上

    $ adb push frida-server /data/local/tmp/
    

    手机上运行 frida-server 监听

    $ cd /data/local/tmp/
    $ chmod +x frida-server
    $ ./frida-server
    

    kali 上用 frida-ps 看一下包进程

    $ frida-ps -U | grep "com"
    

    手机上运行我们的目标 app,再列一下当前包进程,把目标app的包名复制记录下来,后面要用

    r0capture 支持 spawn 模式和 attach 模式,首先用最新的 apkshell 查一下壳(工具地址:https://github.com/bin-maker/apkshell)

    发现应用加壳了

    所以我们这里使用 attach 模式来抓包,也叫实时 hook,主要用来针对有壳的应用

    运行 r0capture.py

    python r0capture.py -U 前面记录的目标应用包名 -p xxx.pcap
    

    其中 -p 参数用来保存抓包结果,.pcap 是数据报存储格式,包括 Wireshark 在内的很多主流抓包软件都可以生成或者导入 pcap 数据包并分析

    attach 后,我们手机上操作app,终端界面就会实时输出抓到的数据包

    如果中途提示 hexdump 名称错误,pip 安装一下即可

    pip install hexdump
    

    要想终止抓包,随时按 ctrl + c 终止 r0capture 脚本即可停止抓包

    接下来打开 wireshark 等网络数据包分析工具,导入我们通过 r0capture 导出的 pcap 包文件

    跟踪一下 http 流,数据非常直观了:

    后面该怎么操作想必大家都清楚了,不需要多说了,其实源码层非常有意思,下次有时间来通过源码层讲讲实现。

    相关推荐

    NET版本众多,傻傻分不清楚

    面对.NET众多的版本,尤其还有几个名称的情况下,相信很多初学C#的开发人员都很困惑,搞不清究竟该怎么选择。下面就列举一下.NET的主要版本及其区别:.NETFramework(传统版本,仅适用于W...

    .NET Framework 和 .NET Core 有啥区别?如何选择?

    .NETFramework和.NETCore都是由Microsoft开发的软件框架,用于创建Windows应用程序和Web应用程序。它们的主要区别在于:支持的操作系统:.NET...

    「分享」介绍一款倍受欢迎的.NET 开源UI库

    概述今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包,它许多开箱即用的好东西。目前支持的NETFramework...

    .NET 5.0正式版发布:应用可在ARM64上原生运行

    更多:o梵蒂冈图书馆频繁遭黑客攻击oNPM包被发现窃取敏感的Discord和浏览器文件o作者:硬核老王o(本文字数:712,阅读时长大约:1分钟).NET5.0正式版发布:应用可...

    盘点8个热门.Net开源项目

    一、SmartFormat:轻量级文本模板库,轻松替代string.Format项目地址:https://github.com/axuno/SmartFormatSmartFormat不仅继承了s...

    .NET与Java开发:一场从框架到应用实例的深度对决

    在软件开发这片广袤的战场上,.NET与Java两大开发平台如同两位身经百战的将军,各自率领着庞大的开发者队伍,在不同的应用场景中大放异彩。今天,我们就来一场从框架到应用实例的深度对决,看看这两大平台究...

    TouchSocket:一个功能强大且易于使用的 .NET 网络通信框架

    项目介绍TouchSocket是一个功能强大且易于使用的.NET网络通信框架,适用于C#、VB.Net和F#等语言。它提供了多种通信模块,包括TCP、UDP、SSL、WebSocket、Mo...

    远离报错烦恼!深入全面掌握.NET Framework

    由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...

    想自己搭建.Net Web框架,开源项目太庞大看不懂,可以看这个教程

    大家好,我是编程乐趣。一直以来,我都在运营知识星球,这个月也开始全职专心编写教程了。当时编写教程,就是发现很多程序员工作多年了,都没自己搭建过框架,也没接触过公司的框架底层代码。这就导致一些问题,无法...

    .NET 8 + React 18 一体化开发框架!苏州码农十年匠心打磨

    开篇前言从2014年入行至今,从WebForms到MVC,从JavaScript到React/Vue,从.NETFramework到.NETCore/8,技术栈的变迁伴随了我整个职业生涯。去年,我...

    .Net Framework详解

    相信有不少小伙伴遇到过这种情况:安装软件时提示.NetFramework未安装导致软件无法打开,或者需要安装.NetFramework4.0以上的组件。那.NetFramework是什么呢?....

    系统小技巧:深入全面掌握.NET Framework

    由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...

    前端架构师成长之路:如何在 Vue 的计算属性中传递参数

    在Vue中,计算属性(computed)是从其他响应式属性派生的属性,是用于自动监听响应式属性的变化,从而动态计算返回值。计算属性(computed)通常是一个没有参数的函数。当然如果需要像调...

    Vue2 vs Vue3:核心差异与升级指南

    Vue3自2020年发布以来,凭借其革命性的改进迅速成为开发者关注的焦点。本文将从架构设计、API模式、性能优化等多个维度深入对比Vue2和Vue3的核心差异,并提供代码示例帮助开发者...

    突发!Vue3 投屏神器引爆程序员朋友圈

    【AlarmLevel】重要【AlarmTitle】突发!Vue3投屏神器引爆程序员朋友圈【AlarmOverview】最近GitHub上名为vue-screen-share的仓库突...

    取消回复欢迎 发表评论: