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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8434|回复: 51
收起左侧

[Android 原创] 抓包问题进阶分析

  [复制链接]
psych1 发表于 2021-3-29 19:27
本帖最后由 psych1 于 2021-3-29 19:27 编辑

前言

发现距离上一篇文章已经过了好久了,给抓包做一个终结篇吧,建议配合上一篇食用。

各类抓包工具介绍

首先说一下市面上常见的Android抓包工具,Fiddler、Charles、HttpCanary、WireShark。

Wireshark

首先说一下Wireshark,因为他是一款功能十分强大的网络数据分析工具,可以显示网络封包的详细信息,正因为如此,我们在日常分析Android协议的时候反而用到不多,因为它相对于Fiddler跟Charles,它会展示服务器与客户端的每次“交流”,包括详细的握手流程,重复、缺失、乱序的TCP请求,重连请求等都可以看到。但是正因为它太过于详细,而我们每一次只需要分析某一个get或者post请求,所以一般情况下使用的频率不高。

Fiddler

Fiddler也是一款强大的工具,但是Fiddler是作用于应用层,使用时需要配置全局代{过}{滤}理,很容易被检测,容易被绕过。举个例子,假如说APP使用的是Okhttp框架,那我们只需要在源代码上加入proxy(Proxy.NO_PROXY)就可以让Fiddler抓不到包了,当然这个时候你可以hook掉它,但是要知道,我们使用工具的初衷就是为了更方便的分析,再来一次hook就显得没有必要了。

Charles

Charles是我比较推崇的,但是它其实也是有所不足的,第一个原因就是它收费。其次它作用的地方在会话层,对于某些包还是抓不到的。一般使用都是Charles+postern。使它作用在网络层。这样我们在抓包阶段就比较轻松了。
在这里插入图片描述

HttpCanary

功能强大,关于他的各种优点论坛都有文章介绍,当然也有一点点问题,这个东西需要自己适配。不过多介绍了就。

混淆型抓包

首先是混淆型抓包介绍,为了对抗JustTrustMe,开发人员可以使用混淆类名和函数名的方式使得JustTrustMe无法抓到包,这个时候我们就需要找到混淆的类进行hook然后再使用JustTrustMe就可以抓到包了。
在这里插入图片描述
在这里插入图片描述
可以看出这个APP就使用了okhttp框架,而且进行了混淆。
这是okhttp所用到的方法来避免被抓包,一般常用的就是证书锁定.certificatePinner(CPinner),它校验的方法一般就是它下面的check方法,我们需要找到这个check方法。

在这里插入图片描述
这个时候我们就需要去找他的底层特征函数,特征代码进行搜索。
进入CertificatePinner类,找到他的Check方法
在这里插入图片描述
我们可以搜索一下特征代码进行位置定位。
在这里插入图片描述
显而易见,就是第一个。我们进去看一下
在这里插入图片描述
这就很简单了,直接hook该方法就可以了。

    Java.perform(function(){

        var g = Java.use('okhttp3.g');
        g.a.overload('java.lang.String', 'java.util.List').implementation = function(a, b){
            console.log('checkFunc is called: ', a);
        }

    });

加固型抓包

加固型APP由于被加壳了,找到关键代码的想法是不太可能实现的,这个时候我们需要找到其他的类。
在这里插入图片描述
在这里插入图片描述
这个时候我么需要找到attachBaseContext类(一般都是这个类),在这个类里面会有Context,可以获取classLoader,通过它得到的都是壳的classLoader。在这里插入图片描述
所以我们要hook这个类。


Java.perform(function(){
    var CertificatePinner = Java.use(okhttp3.CertificatePinner);
    console.log('certificatePinner: ',CertificatePinner);

});

Java.perform(function(){
var StubApp = Java.use(com.stub.StubApp);
StubApp.attachBaseContext.implementnation= function (context){
    this.attachBaseContext(context);
    var classLoader = context.getClassLoader();
    console.log('classLoader: ', classLoader);
    Java.classFactory.loader = classLoader;//注意这一步需要加上(建议加上),需要将classFactory覆盖

    var CertificatePinner = Java.use(okhttp3.CertificatePinner);
    console.log('certificatePinner: ',CertificatePinner);
}
});

对于加固型的APP,收集了一些hook方法,在文末有惊喜!

双向验证型抓包

双向验证型APP,这个时候服务器会去校验客户端的证书,因此我们首先需要找到本地的证书,当然了,如果你是个黑客,那你就去把他的服务器一块黑了,管他什么证书校验,直接一把梭哈。不过我不是,{:1_937:}  一般证书的后缀名为p12,bks。储存位置一般是在assets文件夹下。并且一般都是会有私钥存在的。这次还是*oul这个倒霉蛋,这次我们采用hook方法来hook得到私钥。
在这里插入图片描述
我们需要知道一个类KeyStore。此类表示加密密钥和证书的存储设施。keystore.load是一个系统函数,直接hook。

在这里插入图片描述
写出hook脚本

function keystorehook(){

    Java.perform(function(){
        var StringClass = Java.use("Java.lang.String");
        var KeyStore = Java.use("java.security.KeyStore");
        KeyStore.load.imptementnation = function(arg0){
            console.log('KeyStoreLoad: ',arg0)
            this.load(arg0);
        };

    });
};

keystorehook();

这个时候会报错,也不算报错吧。它会显示有两个重载函数,因此我们需要加上重载函数再进行hook。(注意该app有模拟器检测,因为真机测试机在宿舍没有带来,手头没有真机所以无图,但是代码是跑的通的)。

function keystorehook(){

    Java.perform(function(){
        var StringClass = Java.use("Java.lang.String");
        var KeyStore = Java.use("java.security.KeyStore");
        KeyStore.load.overload('java.io.InputStream','[C').imptementnation = function(arg0,arg1){

            console.log("KeyStore.load: ",arg0,arg1 ? StringClass.$new(arg1):null);
            this.load(arg0,arg1);
        };

    });
};

keystorehook();

这时候就跑出结果了。

总结

抓包到此告一段落,发现时间隔得太久了。自己是懒狗一只,希望以后能高产似母猪吧。{:301_998:}

fridaTrustMe.7z

3.97 KB, 阅读权限: 10, 下载次数: 122, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 31威望 +1 吾爱币 +47 热心值 +30 收起 理由
hrdom + 1 + 1 我很赞同!
S1mba + 1 + 1 谢谢@Thanks!
maerpei + 1 我很赞同!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wdmic + 1 + 1 用心讨论,共获提升!
Kristin_ + 1 谢谢@Thanks!
君同青空 + 1 + 1 我很赞同!
陈世界 + 1 + 1 我很赞同!
pojiecainiao + 1 + 1 谢谢@Thanks!
人行竖道 + 1 + 1 谢谢@Thanks!
心动形尚 + 1 用心讨论,共获提升!
woaipojie121 + 1 + 1 谢谢@Thanks!
努力加载中 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
半步散人 + 1 + 1 谢谢@Thanks!
qsws3344 + 1 + 1 用心讨论,共获提升!
_小白 + 1 + 1 我很赞同!
qwertyuiop1822 + 1 + 1 热心回复!
零夜夜 + 1 + 1 谢谢@Thanks!
ermao + 2 + 1 热心回复!
小菜鸟一枚 + 1 + 1 用心讨论,共获提升!
wangyujie96 + 1 + 1 用心讨论,共获提升!
ma4907758 + 1 + 1 谢谢@Thanks!
fls + 1 + 1 谢谢@Thanks!
LСG + 1 谢谢@Thanks!
魔-沫 + 1 谢谢@Thanks!
a9421z + 1 谢谢@Thanks!
dijihui + 1 + 1 用心讨论,共获提升!
batcd + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xmy00000 + 1 + 1 谢谢@Thanks!
jihousai + 1 + 1 用心讨论,共获提升!
芽衣 + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

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

batcd 发表于 2021-3-29 21:51
这个抓包帖子分析的有技术含量,目前手机用小黄鸟比较多了,网页是fd,程序使用HttpAnalyzerStdV7或者HTTPDebugger当然还有tcp的SmartSniff
dijihui 发表于 2021-3-29 23:20
闷骚小贱男 发表于 2021-3-29 19:58
大大大大大大佬在上。。
下午我刚研究了一个360加固的https的AES(MD5(data))的例子。。
用了反射大师3.5 ...

闷骚小贱男都喊楼主大佬,那楼主真的是大佬了,,坛里看过闷骚小贱男的某妲己的抓包教程,可惜自己小白按步骤也学不会,
闷骚小贱男 发表于 2021-3-29 19:58
大大大大大大佬在上。。
下午我刚研究了一个360加固的https的AES(MD5(data))的例子。。
用了反射大师3.5脱壳,jadx。。
最后终于研究明白了
dogzxcn 发表于 2021-3-29 19:59
学习了。
nanaqilin 发表于 2021-3-29 20:12
哎,可惜我不写java程序了
anlovedong 发表于 2021-3-29 21:14
学习了,谢谢分享
zhrmghgtw 发表于 2021-3-29 21:35
谢谢分享
.KK 发表于 2021-3-29 22:39
学习下,谢谢分享
OO2OO 发表于 2021-3-30 00:07
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-3-28 19:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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