前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓端PCAPdroid抓包指南: 无需Root或代理即可转储PCAP格式

安卓端PCAPdroid抓包指南: 无需Root或代理即可转储PCAP格式

原创
作者头像
RokasYang
修改2024-05-14 08:08:21
1.3K7
修改2024-05-14 08:08:21
举报
文章被收录于专栏:RokasYangRokasYang

一、前言

安卓客户端,时常遇到需抓包定位的问题,而想要在系统内抓包,目前已知比较流行的,无非以下几种情形:

  • 手机root后,安装某些抓包软件;
  • 市面上已知的代理软件,比如burpsuite、wireshark、Charles,需电脑开放端口代理给手机访问,并且burpsuite、Charles只能抓HTTP/HTTPS应用层;
  • 无需root,但只能抓HTTP/HTTPS应用层的交互,不能抓TCP/UDP原始数据包,比如HttpCanary。

以上几种情形,都或多或少存在弊端,那么有什么方法能全面覆盖抓包场景,既无需root、无需代理、又可以随时随地在手机上抓原生包,甚至导出报文在电脑上分析呢?答案就是今天要讲的PCAPdroid。

PCAPdroid是一款隐私友好的应用,允许你追踪并分析你设备中应用所有的链接,此外,允许你导出为PCAP格式进行转储,并且允许你进行TLS解密,提取元数据等其他更多功能。

二、安装

以下方式任选其一即可:

把上面的主程序安装好即可,下面的安装为可选功能,只是统一在此提供安装链接,下文会具体介绍如何安装和使用。

如需在手机内部看到HTTPS/TLS解密后的报文,还需附加组件PCAPdroid-mitm:

如需在wireshark中显示APP名称,则需要安装官方提供的lua脚本,脚本链接:

三、抓包实战

1.实时抓包

显示为就绪状态后,点击就绪或上面的开始按钮:arrow_forward:便可开始捕获,之后到连接页面可以实时查看所有的连接:

不难发现,这些连接会标注是哪些APP进程产生,并显示目的域名、协议、端口,以及连接状态等基本信息。

1)过滤特定目标

左图通过搜索框过滤特定目标主机,可以看到这些连接目前已经是关闭状态(CLOSED),因为用的是短连接场景;任意点选一个连接可以看到概览信息,包括连接持续时间,访问的URL、协议、进程APP和进程ID,以及产生的流量大小和载荷长度:

2)查看HTTP请求和载荷

此外,HTTP以及载荷选项可以清晰看到这条TCP连接,所请求的内容和响应的内容:

这些文本可以任意复制或导出。

甚至可以显示为十六进制格式,点击右上角的格式转换即可,如右图所示:

2.保存为PCAPNG格式进行分析

1)解锁并启用PCAPNG格式转储选项

存储为PCAPNG格式,付费后解锁的功能,目前价格是13港币即可解锁,并且解锁后允许进行TLS解密,在设置里面勾选即可:

2)设置数据包转储

数据包转储分为三类:

  • HTTP服务器转储:安卓将会启动一个HTTP服务,提供PCAP包的下载;
  • PCAP文件:直接以PCAP格式文件存储到手机;
  • UDP导出器:发送PCAP文件到一个远程UDP接收器。

没有特殊需求,最直截了当的方式建议选择第二种。

3)实时抓包并保存为pcapng格式

以第二种转储方式为例,点击就绪进行抓包,会以时间格式对数据包文件进行命名:

之后暂停抓包,在文件管理器里找到我们转储的抓包文件:

导出到电脑上使用wireshark打开看看:

打开后是标准的数据包格式和完整交互的报文,包括TCP握手、DNS查询、TLS握手等,到这一步几乎已经秒杀目前市面上所有的安卓端抓包软件。

ICMP和UDP也能全部捕获到:

4)wireshark安装lua插件显示APP名称

可选项,官方提供了一个lua脚本,在wireshark中启用此脚本后,可以看到每一个数据帧对应的进程APP是谁:

前提:

①PCAPdroid开启了PCAPdroid Trailer选项,并禁用了PCAPNG格式(禁用PCAPNG格式依然不影响你转储PCAP格式文件):

②安装官方提供的lua插件

在本文安装章节,有下载链接,把脚本下载到本地后,点击wireshark的 Help(帮助) --> About Wireshark(关于wireshark) --> Folders(文件夹)选项,找到Lua插件目录,可以是全局Lua插件目录也可以是个人Lua插件目录:

将pcapdroid.lua插件脚本放到以上两个目录之一里即可,之后重载报文。

之后在编辑选项里添加列,字段为pcapdroid.appname:

然后使用PCAPdroid抓包,转储为PCAP格式文件,用wireshark打开,可以看到可以正常显示每个连接来源的APP名称:

因此可以通过这个字段的值来过滤请求,比如,只想要Chrome浏览器产生的tcp 80/443端口的报文,可以是:

代码语言:txt
复制
pcapdroid.appname == Chrome && tcp.port in {80,443}

同时,如果APP名称包含中文,则中文部分可能会显示为乱码,在github给作者提过issue,表示后续版本会修复,因此如果对这个字段有强需求并且APP涉及中文字符的,可以将手机语言设置为英文临时解决。

使用tshark可以更方便的将报文的APP字段做文本统计分析,比如按照APP产生的报文数量从高到低排序可以是:

代码语言:txt
复制
tshark -X lua_script:pcapdroid.lua -n -q -r <抓包文件> -T fields -e pcapdroid.appname|sort -rn|uniq -c|sort -nr

3.解密https/tls报文

解密HTTPS/TLS报文,前提需要安装一个附加组件,并且使用这个附加组件来启动PCAPdroid。

1)安装PCAPdroid-mitm

在设置页面勾选TLS解密,点击下一步会提示你如何安装附加组件:

2)导出并安装CA证书

PCAPdroid mitm使用mitmproxy代理TLS会话,因此需要导出PCAPdroid mitmproxy的CA证书,并且在安卓系统设置里安装证书,证书名称任意:

3)启用TLS解密功能

安装完毕后,使用PCAPdroid mitm打开PCAPdropid,在设置里便可成功勾选启用TLS解密功能:

4)添加解密规则

这些规则指定解密哪些连接。规则指定可以从三个维度进行:

  • 应用程序
  • 主机Host
  • IP地址

比如我们添加两个APP的解密,华为浏览器和网易云音乐:

之后我们开始抓包,并且分别打开浏览器和网易云两个APP让其产生流量,再点击右图中的过滤器,选择左图中的已解密选项,即可过滤已解密的连接:

点击连接详情,便可看到解密后的明文内容:

4.应用程序统计分析

在应用程序选项可以统计分析各个引用所产生的流量和连接:

5.IP归属数据库

执行离线查询,显示国家和ASN信息。

设置里面可以下载IP地址数据库:

下载后,抓包信息里面会显示IP归属地和ASN号:

这是个离线数据库,存在手机内部,供PCAPdroid使用,不会调用任何第三方API接口查询IP归属地。

6.抓取IPV6流量

如需抓取IPv6流量,在设置选项最底部,选取即可:

如果是数据流量通信,部分流量可能会是V6协议通讯,因此此选项很有用。

V6也照抓不误,依然可以用wireshark打开分析:

7.提取SNI NAME/DNS查询/HTTP URL

虽然HTTPS加密了报文,但在TLS握手阶段,至少是会展示Server_name的,可以通过这个字段来判断哪条TLS流对应请求哪个域名,过滤规则可以是:

代码语言:shell
复制
tls.handshake.extensions_server_name

同理,可以通过dns查询字段过滤出DNS查询的域名:

代码语言:shell
复制
dns.count.queries >=1 && dns.flags.response == false

提取HTTP协议请求URL,在wireshark的Statistics(统计) --> HTTP --> Rquests(请求) 页面即可查询:

使用tshark提取:

代码语言:shell
复制
tshark -n -q -r <filename> -z http_req,tree

或者配合正则提取:

代码语言:shell
复制
tshark -n -r <filename> -V |& grep -Po '(?<=Full request URI:\s).*(?=])'

四、总结

PCAPdroid是一个开放源码的网络捕获和监控工具,无需root权限即可运行。常见的功能包括:

  • 分析安装到设备中的应用程序建立的连接
  • 将抓包流量转储为PCAP文件,以便使用Wireshark进一步分析
  • 解密特定应用程序的 HTTPS/TLS 流量

通过上面对PCAPdroid的详细介绍,不仅提高了对内部网络流量的可见性,还加强了对潜在攻击的防御能力。此外,能应对各种错综复杂的、需从底层抓包定位的场景,也更便于网络和应用之间的排障,并且无需root的情况下能像PC平台一样抓PCAP格式的包文件,光是此功能就已经秒杀目前市面上几乎所有的安卓端抓包软件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、安装
  • 三、抓包实战
    • 1.实时抓包
      • 1)过滤特定目标
      • 2)查看HTTP请求和载荷
    • 2.保存为PCAPNG格式进行分析
      • 1)解锁并启用PCAPNG格式转储选项
      • 2)设置数据包转储
      • 3)实时抓包并保存为pcapng格式
      • 4)wireshark安装lua插件显示APP名称
    • 3.解密https/tls报文
      • 1)安装PCAPdroid-mitm
      • 2)导出并安装CA证书
      • 3)启用TLS解密功能
      • 4)添加解密规则
    • 4.应用程序统计分析
      • 5.IP归属数据库
        • 6.抓取IPV6流量
          • 7.提取SNI NAME/DNS查询/HTTP URL
          • 四、总结
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com