Android 通用抓包方式

文章介绍了两种在Android设备上进行SSL/TLS抓包的方法:中间人攻击和hookandroid的libssl.so库获取sslkeylog。中间人工具如pcapremote配合wireshark,需要将证书导入系统证书目录以解决Android7及以上版本的信任问题。另一种方法是直接hooklibssl.so的回调函数,打印密钥日志供wireshark解密使用。这两种方法各有优缺点,适用于不同的场景和技术需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

抓包思路有两种

  1. 中间人
  2. hook android libssl.so 获取ssl key log

中间人的优势是简单方便,实时。hook的方式优势是原汁原味(比如可以看到两端握手的过程)。具体选哪一种,根据实际需求决定

中间人

可以利用的工具有pcap remote + wireshark、postman等等。这里就用我最常用的pcap举例

不管用什么工具,最核心的步骤就是:导入证书到系统证书目录。

为什么是导入到系统证书目录呢?因为从Android 7开始,默认是不信任用户证书的,所以普通的安装用户证书的方式很多都无法抓包,但是系统证书不存在这个问题。

导入证书到系统证书目录

准备:一台已经root的手机,我这里用的是Android 11已经root的手机。

  1. 将抓包工具需要安装的证书导出为pem文件

  2. 获取pem文件的hash

    openssl x509 -inform PEM -subject_hash_old -in xxxx.pem | head -1
    87bc3517
    
  3. 将pem文件重命名

    这里重命名为87bc3517.0

  4. 修改system分区权限

    adb root;adb disable-verity;adb reboot;adb wait-for-device;adb root;adb remount
    
  5. 拷贝到系统证书目录

    cp 87bc3517.0 /system/etc/security/cacerts/
    
  6. 修改权限

    chmod 644 87bc3517.0
    

抓包

导入后就可以抓包了,这里就不具体演示了,根据自己具体使用的工具来。我这里主要介绍下面的hook方式

hook android libssl.so 获取ssl key log

在pc上我们经常使用wireshark来抓包,但是wireshark不支持中间人抓包。抓到基于tls加密的包是无法解密查看的。然而Android内部的libssl.so有个设置SSL/TLS连接上下文中的密钥日志回调函数SSL_CTX_set_keylog_callback。所以我们只要想办法设置回调并将密钥打印出来,然后将密钥设置给wireshark,它就可以解密出抓到的加密内容了。具体操作详见这篇 意外发现的Android硬核https抓包, 在多个app亲测ok, 自定义ssl也无用哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值