吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2039|回复: 2
收起左侧

[Android 原创] 第十一课、抓包环境安装与HTTPS.C/S校验原理

  [复制链接]
胡凯莉 发表于 2023-3-12 11:10
第十一课、抓包环境安装与HTTPS.C/S校验原理
  • https://mp.weixin.qq.com/s/ahPbBSfkkBsv4oy265rI2Q
Charles设置
  • 我们首先要把Charles当做一个SOCKS5的代理服务器,所以要先设置SOCKS5代理服务器。打开Proxy设置选项,开启SOCKS服务器,我这里开启的端口为8889,也可以随意填写。

Burp Suite设置在Proxy中的options选项中设置Web代理端口,设置完成后,点击确定。Postern设置在手机上打开Postern应用,设置SOCKS5代理服务器的地址,连接到Chalres服务器,让所有的数据包都通过Chalres的SOCKS5服务器,这样就能保证数据包不会丢失。vpn规则设置:我这里设置为所有地址都需要走SOCKS5代理服务器。
  • 多了一个ip  在网络层抓包  不是应用层
  • ip route show  table 0 |grep default  查看路由表
虚拟机设置
  • 路由器新分配ip到虚拟机
  • 本机ping手机
  • 保证了手机、虚拟机、本机的ip在同一个网段
  • 安卓7开始要把证书放在根目录
HTTPS原理部分
  • HTTP(80) + 加密 + 认证 + 完整性保护=HTTPS(443)
  • 查看远程端口
    • 找到PIDps -e |grep chrom
    • 查看端口lsof -p 8803 |grep TCP
  • https 使用多重混合加密
配置charles证书到根目录cd /data/misc/user/0/cacerts-added/mount -o remount,rw /systemcp * /etc/security/cacerts/systemmount -o remount,ro /Https服务器校验客户端
  • 在服务器上部署对app内置证书的校验代码。
  • 单一通信已经分裂成两个互相独立的通信,这时候与服务器进行通信的已经不是app、而是Charles了,所以我们要将app中内置的证书导入到Charles中去。
  • 这个操作通常需要完成两项内容:
    • 找到证书文件
    • 找到证书密码
  • 找到证书文件很简单,一般apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径,当然也有一些app比较“狡猾”,比如我们通过搜索p12没有搜到证书,然后看jadx反编译的源码得出它将证书伪装成border_ks_19文件,我们找到这个文件用file命令查看果然不是后缀名所显示的png格式,将其改成p12的后缀名尝试打开时要求输入密码
  • 想要拿到密码也很简单,一般在jadx反编译的代码中或者so库拖进IDA后可以看到硬编码的明文;也可以使用下面这一段脚本,直接打印出来,终于到了Frida派上用场的时候。
  • function hook_KeyStore_load() {
        Java.perform(function () {
            var StringClass = Java.use("java.lang.String");
            var KeyStore = Java.use("java.security.KeyStore");
            KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
                console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
                console.log("KeyStore.load1:", arg0);
                this.load(arg0);
            };
            KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
                console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
                console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
                this.load(arg0, arg1);
            };
    ​
            console.log("hook_KeyStore_load...");
        });
    }
    setImmediate(hook_KeyStore_load)
  • 有了证书和密码之后,就可以将其导入到抓包软件中,在Charles中是位于Proxy→SSL Proxy Settings→Client Certificates→Add添加新的证书,输入指定的域名或IP使用指定的证书即可



免费评分

参与人数 1威望 +1 吾爱币 +20 热心值 +1 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

snake88 发表于 2023-3-13 14:53
谢谢大神分享!
wanglaojiu 发表于 2023-3-27 22:05
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 06:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表