app渗透之抓包绕过&hook

admin 2024年8月7日15:36:00评论126 views字数 4378阅读14分35秒阅读模式

微信公众号:白昼信安

弱小和无知不是生存的障碍,傲慢才是!

目录

1、r0capture+ frida直接抓全局,通杀安卓app使用教程2、 burp联动hook脚本绕过ssl pinning保护3、利用 xp&frida&hook&绕过证书校验方法:利用 xp 和 HOOk 机制使证书检测失效插件一插件二

1、r0capture+ frida直接抓全局,通杀安卓app

第一步:本机安装frida

pip3 install frida
pip3 install frida-tools

第二步:虚拟机安装frida-server

使用adb pull xxx    具体在下面操作中

app渗透之抓包绕过&hook第三步:模拟器启动 frida-server

第四步:本地去连接 frida

# 使用教程:

这个 adb 程序如果是夜神的话默认在D:Program FilesNoxbin

建议将其加入到环境变量

app渗透之抓包绕过&hook

adb.exe  devices

app渗透之抓包绕过&hook

adb.exe  shell

进入到模拟器中,查看内核版本

x1q:/ # getprop ro.product.cpu.abi

app渗透之抓包绕过&hook然后下载对应版本的frida,使用push发送到模拟器的目录下

adb.exe push frida-server-16.1.1-android-x86 /storage/emulated/0/data

app渗透之抓包绕过&hook

然后继续进入模拟器,给frida-server-16.1.1-android-x86777权限,然后运行。这里/storage/emulated/0/data是没有权限运行的,所以我们还是放到/data/local/tmp/下。

app渗透之抓包绕过&hook然后执行frida

app渗透之抓包绕过&hook然后在 cmd 中使用 frida 读取模拟器进程信息

frida-ps -U

app渗透之抓包绕过&hook然后继续使用

frida-ps -R

注:如果和下面一样,失败的话就要进行转发

app渗透之抓包绕过&hook

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

然后再执行frida-ps -R ,如下说明成功

app渗透之抓包绕过&hook

然后我们随便打开一个app,在使用frida-ps -R查看是否出现应用名,如下就说明成功

app渗透之抓包绕过&hook

然后运行r0capture脚本

cd D:渗透工具app小程序渗透安卓应用层抓包通杀脚本r0capture-2.1

然后利用apk提取器或者其他工具获得到你要抓包的app包名字 例如途牛APP包名为:com.tuniu.app.ui

命令:
python3 r0capture.py -U -f com.tuniu.app.ui -p tuniu.pcap  (这里尝试抓途牛的包)

app渗透之抓包绕过&hook然后需要哪的包点哪就可以。最后数据包保存为了 tuniu.pcap 格式,我们需要使用 wireshark 打开慢慢搞即可

app渗透之抓包绕过&hook

2、 burp 联动 hook 脚本绕过 ssl pinning 保护

ssl pinning这玩意儿采用的是客户端和服务器双向验证(伪双向,其实还是单向认证的范畴之内)技术来防止 市场上常见的抓包工具进行抓包。

比如抖音、小红书, FaceBook ,Twitter 等 app,都有这种验证和防护。SSL Pinning 一种用来防止中间人攻 击的技术,广泛应用于阻止 app 的抓包和嗅探。将下面代码保存为 js 文件。将第 30 行的证书地址改为你虚拟机中 burp 证书的地址即可。

/*
Android SSL Re-pinning frida script v0.2 030417-pier
$ adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt
$ frida -U -f it.app.mobile -l frida-android-repinning.js --no-pause
https://techblog.mediaservice.net/2017/07/universal-android-ssl-pinning-bypass￾with-frida/
UPDATE 20191605: Fixed undeclared var. Thanks to @oleavr and @ehsanpc9999 !
*/
setTimeout(function() {
            Java.perform(function() {
                        console.log("");
                        console.log("[.] Cert Pinning Bypass/Re-Pinning");
                        var CertificateFactory = Java.use("java.security.cert.CertificateFactory");
                        var FileInputStream = Java.use("java.io.FileInputStream");
                        var BufferedInputStream = Java.use("java.io.BufferedInputStream");
                        var X509Certificate = Java.use("java.security.cert.X509Certificate");
                        var KeyStore = Java.use("java.security.KeyStore");
                        var TrustManagerFactory = Java.use("javax.net.ssl.TrustManagerFactory");
                        var SSLContext = Java.use("javax.net.ssl.SSLContext");
                        // Load CAs from an InputStream
                        console.log("[+] Loading our CA...")
                        var cf = CertificateFactory.getInstance("X.509");
                        try {
                            var fileInputStream = FileInputStream.$new("/data/local/tmp/cert_der.crt");
                        } catch (err) {
                            console.log("[o] " + err);
                        }
                        var bufferedInputStream = BufferedInputStream.$new(fileInputStream);
                        var ca = cf.generateCertificate(bufferedInputStream);
                        bufferedInputStream.close();
                        var certInfo = Java.cast(ca, X509Certificate);
                        console.log("[o] Our CA Info: " + certInfo.getSubjectDN());
                        // Create a KeyStore containing our trusted CAs
                        console.log("[+] Creating a KeyStore for our CA...");
                        var keyStoreType = KeyStore.getDefaultType();
                        var keyStore = KeyStore.getInstance(keyStoreType);
                        keyStore.load(null, null);
                        keyStore.setCertificateEntry("ca", ca);
                        // Create a TrustManager that trusts the CAs in our KeyStore
                        console.log("[+] Creating a TrustManager that trusts the CA in our
                            KeyStore...");
                            var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
                            var tmf = TrustManagerFactory.getInstance(tmfAlgorithm); tmf.init(keyStore); console.log("[+] Our TrustManager is ready..."); console.log("[+] Hijacking SSLContext methods now...") console.log("[-] Waiting for the app to invoke SSLContext.init()...") SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", " [Ljavax.net.ssl.TrustManager;
                                    ", "
                                    java.security.SecureRandom ").implementation =

                                    function(a, b, c) {
                                        console.log("[o] App invoked javax.net.ssl.SSLContext.init...");
                                        SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", " [Ljavax.net.ssl.TrustManager;
                                                ", "
                                                java.security.SecureRandom ").call(this, a,
                                                tmf.getTrustManagers(), c); console.log("[+] SSLContext initialized with our custom TrustManager!");
                                        }
                                    });
                            }, 0);

我这里保存的名字是:hook2.js,然后在虚拟机和burp直接配上代理

app渗透之抓包绕过&hook

切换到 hook2.js所在的目录下,打开cmd然后就执行以下命令

frida -U -f com.p1.mobile.putong -l D:渗透工具app小程序渗透安卓应用层抓包通杀脚本
fridahook2.js

app渗透之抓包绕过&hook这样就可以了。

app渗透之抓包绕过&hook

2、利用 xp&frida&hook&绕过证书校验

常见证书校验三种情况:

情况 1,客户端不存在证书校验,服务器也不存在证书校验【随便搞】

情况 2,客户端存在校验服务端证书,服务器也不存在证书校验,单项校验【可简单绕过】

情况 3、 客户端存在证书校验,服务器也存在证书校验,双向校验【麻烦难度高】双向校验绕过需要逆向 app,找到私钥,然后逆向出证书密码等操作,难搞!!!下面工具插件均为单向证书校验绕过

# 方法:利用 xp 和 HOOk 机制使证书检测失效

插件一

夜神直接安装 xp 框架,游戏中心搜索即可 ,然后安装这两个 xp 模块

app渗透之抓包绕过&hook然后选择你要 hook 的软件

app渗透之抓包绕过&hook这样即可绕过大部分的证书检测的 app(单项证书检测)。

插件二

此外我们还可以使用另一个插件来绕过单项证书检测,也是就是我们上面说的ssl pinnin检测绕过技术。这里用到的插件叫SSLUnpinning,下载安装后打开软件,选择你要hook的软件,然后就可以去愉快的抓包了。app渗透之抓包绕过&hookapp渗透之抓包绕过&hook

对大部分证书锁定的 APP 使用 xposed 框架+SSLUnpinning+justme 即可绕过(大多数 APP 只验证服务端证 书)。

注意:xp 插件可能会导致 frida 环境出问题,所以建议建立两个虚拟机,一个 xp 过单项,一个 frida 搞全局

原文始发于微信公众号(白昼信安):app渗透之抓包绕过&hook

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月7日15:36:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   app渗透之抓包绕过&hookhttps://cn-sec.com/archives/3042680.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息