APP各种抓包教程

APP各种抓包教程
9/100
发布文章
wananxuexihu
未选择任何文件
new
前言

每当遇到一些 APP 渗透测试项目的时候,抓不了包的问题令人有点难受,但是抓不了包并不能代表目标系统很安全,那么接下来我会整理一下目前我所了解到的一些抓包方法

**声明:**该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

  • 1、Burpsuite

  • 2、Fiddler

  • 3、Burpsuite + Fiddler

  • 4、小黄鸟 HttpCanary

  • 5、Charles

  • 6、Charles + Burpsuite

  • 7、Postern + Charles + Burpsuite

  • 8、Frida + Xposed + Objection + Burpsuite

  • 9、Frida 写 Hook 代码来抓包

  • 以下抓包测试请确保手机和电脑是处于同一个局域网下

1、使用 Burpsuite 对 APP 进行抓包

环境:

  • Burpsuite Professional v2021.2

  • Pixel3 Android11 、已 root + Xposed

在 Burpsuite 里面 Proxy — Options — Proxy Listeners — Add然后在Speciffic address选择172网段的那个 IP 地址(即本机局域网 IP 地址)

在手机里面网络设置也要设置 手动代理模式 ,输入的 IP和端口 都要与 Burpsuite 一样

然后在手机浏览器访问 https://burp 这个地址,去进行下载并安装 burp 证书,因为抓取 HTTPS 流量是需要证书的,点击 CA Certificate 即可进行下载

下载之后要对证书文件后缀名进行更改,因为手机是无法打开 .der 后缀的文件,所以要吧 .der 改为 .cer ,然后再进行安装证书

那么安装之后就可以进行抓取 APP 数据包了

2、使用 Fiddler 对 APP 进行抓包

环境:

Fiddler v5.0.20204.45441

Pixel3 Android11 、已 root + Xposed

1、在 Fiddler 里面 Tools — Options

2、在 options 弹框中切换至 HTTPS ,勾选图中标记的 2 个选项并点击 OK

3、勾选后会弹出安装证书的提示,根据提示一直点击 即可安装成功 4、接着在Tools — Options — Connections,端口写 9999(可随意更改),并勾选 Allow remote computers to connect ,点击 OK

5、重启 Fiddler ( 修改fiddler配置要重启后才能生效 ) 6、修改手机网络设置

7、在浏览器访问上面设置的 IP 地址和端口号,我这里是 172.20.10.5:9999(这里要根据实际情况),然后 FiddlerRoot certificate 进行下载证书,并自行安装

那么安装之后就可以进行抓取 APP 数据包了

3、使用 Burpsuite + Fiddler 进行对 APP 进行抓包

配置 Burpsuite 使用的代理监听是 127.0.0.1:8080

在 Fiddler 里面 Tools — Options — Gateway 配置的代理监听是 127.0.0.1:8080(这里的配置与 Burpsuite 代理一致)

接着在 Tools — Options — Connections ,端口写 9999(可随意更改),并勾选 Allow remote computers to connect ,点击 OK

修改手机网络设置

也就是说从手机的流量经过 Fiddler 进行转发到Burpsuite

4、使用小黄鸟 HttpCanary 对 APP 进行抓包

环境:

HttpCanary v3.3.6

Pixel3 Android11 、已 root + Xposed 首先安装 HttpCanary APP 应用

HttpCanary 支持 HTTP/HTTPS/HTTP2 网络数据包的抓取和分析,其实和 Charles 类似,要抓取 HTTPS 需要使用 MITM 中间技术对 TLS/SSL 数据包进行解密以及明文输出,因此需要安装自签的 CA 证书

这里要提一下 Android 系统默认对证书信任证书的问题

因为我的 Pixel3 手机是已经 root 了,而且是 Android11 系统,在安卓 7.0 之前系统,直接下载证书装入即可,安卓 7.0 及以上系统对于证书的安全策略做了修改,意味着,从 sdcard 安装用户级 CA 将无法拦截应用流量。我们需要将证书命名为计算出的哈希值后缀 .0 或者直接在手机里面的 用户凭据 可以看到后缀 .0的证书文件 名字,然后导入到根证书目录:/system/etc/security/cacerts 让系统默认可信任。因此安装证书的方式也有所不同,默认它是安装在用户那里的。

首先按照我下面的图顺序进行安装证书

先导出 HttpCanary根 证书文件 .pem

点击它,即可完成安装证书

那么这里就看到它是安装在用户那里的,但是由于我的设备是已经 root 了,要把这个证书安装在 系统 那里才能进行抓取 HTTPS 流量

那么这时就需要把证书的文件移动到系统目录下就可以了,这里选择导出 System Trusted(.0)

那么就把证书进行移动到系统证书目录 /etc/security/cacerts/

在 Android 10 以及以上安装证书到 /system/etc/security/cacerts/会出现 system 无法写入使用 mount 报错如下:

'/system' not in /proc/mounts   '/dev/block/dm-4' is read-only   

由于 Android 10 采用了某些安全策略,将系统分区 /system挂载为只读,就算你 root 了也没用,无法写入系统分区也就无法导入系统证书,在使用 HTTPCanary 这样的软件抓包分析的时候,很多 app 只认系统证书,不认用户证书 遇见此类情况有两种方式解决:1、在 Magisk 里面安装 `Move Certificates模块`[1],该插件可以一键将所有用户证书自动转换为系统区证书

使用方法:所有证书安装为用户证书后,安装此插件,并重启。

2、创建一个新的挂载点来覆盖 这种方式是内存覆盖的方式所以手机重启后失效。(想要持久化需考虑搞一个开机启动服务)

# 创建一个临时目录,保存当前证书   mkdir /sdcard/tmp/   # 复制现有证书到临时目录   cp /system/etc/security/cacerts/* /sdcard/tmp/   # 创建内存挂载   mount -t tmpfs tmpfs /system/etc/security/cacerts   # 将现有证书复制回 tmpfs 挂载   mv /sdcard/tmp/* /system/etc/security/cacerts/   # 更新 perms 和 selinux   chown root:root /system/etc/security/cacerts/*   chmod 644 /system/etc/security/cacerts/*   chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*   

再进来这个看证书的界面就已经看到已经把 用户 的证书安装在 系统 那里了

虽然 HttpCanary 是一个很不错的抓包工具,但是它并不能跟其他抓包工具进行一个联动转发抓包,所以当渗透测试人员在使用它进行抓包之后,可以直接在手机上进行修改数据包进行测试,但是可能在手机上工作效率没那么高,于是就把要测试的数据包复制出来到 Burpsuite 上进行修改并发包,这个过程也会浪费很多时间。

下面是 HttpCanary 的工作原理

HttpCanary 采用 VPN 的方式将网络包转发给本地代理服务器,本地代理服务器将数据包转发虚拟网关,由虚拟网关进行不同策略地拦截和协议解析,最后再将数据发送给终端

最重要的一层就是虚拟网关 Virtual Gateway ,需要对协议进行鉴定解析等等,包括数据包的拦截注入都是在这一层处理的,比如 HTTPS 的中间人(MITM)解析出明文包等

因此从上图观察它的工作原理进行分析之后,让我寻找到另一种方式抓包(它的工作方式也和 HttpCanary 有点相似 )可以用它来代替 HttpCanary —— Postern + Charles + Burpsuite组合,至于怎样操作,可以在文章下面 7、使用Postern + Charles + Burpsuite进行对APP进行抓包 进行详细阅读

5、使用 Charles 对 APP 进行抓包

环境:

Charles v4.6.2

Pixel3 Android11 、已 root + Xposed charles 是一款非常优秀的抓包工具,全平台支持,在 mac,windows,linux 上都可以使用,既可以抓取 web 端的包,也可以抓 app 端的包 charles 主要的功能包括如下几点:

截取 Http 和 Https 网络封包。

支持重发网络请求,方便后端调试。

支持修改网络请求参数。

支持网络请求的截获并动态修改。

支持模拟慢速网络。

代理服务器的工作原理如下所示:

客户端发起请求,请求通过 charles 转发给服务器,服务器返回响应,响应通过 charles 转发给客户端。

charles 所起的作用就相当于信使,把信息从 A 传递给 B,并且把回信从 B 传递给 A,正因为他这个信使的工作,所以他对信息的内容了如指掌(不管是原信还是回信),正因为如此,charles 也就可以篡改信息的内容,即篡改请求和响应。

Charles 下载地址:

https://www.charlesproxy.com/download/

然后自行安装之后,要对它进行激活

注册码生成地址:

https://www.zzzmode.com/mytools/charles/

激活 Charles 在 Help->Registered 输入 key 和生成的激活码即可

设置代理,在 Proxy — Proxy Settings ( 注意:此时我的Windows Proxy是去掉对勾的,因为这里我是想在PC端抓手机端的包,所以没必要打开电脑的本地代理 )

填入代理端口 8888(或者自定义,但不能和系统已占用端口冲突),并且勾上 Support HTTP/2Enable transparent HTTP proxying ,点击右下角 OK 即可

然后分别在 PC 端和手机端安装证书 选择 Help — SSL Proxying — Install Charles Root Certificate 就可以下载安装上 PC 端了

证书存储选择 受信任的根证书颁发机构

接下来再给手机端安装证书,步骤如下:选择 Help — SSL Proxying — Install Charles Root Certificate on a Mobile Device or Remote Browser

点击后会弹出窗口提示设置的方法,按照提示在手机端将代理设置为电脑的 ip:8888( 我这里是192.168.1.251:8888 ),这里要先确保手机和电脑连接同一个无线网络 。然后在手机的浏览器打开 http://chls.pro/ssl ,按提示下载证书即可。

如果 Charles 有弹出提示,一定要点击 Allow

首先按照我下面的图顺序进行安装证书

找到选择刚刚下载的证书文件,点击即可完成安装

它也是安装在 用户 那里,但是由于我的设备是已经 root 了,要把这个证书安装在 系统 那里才能进行抓取 HTTPS 流量

但是移动证书的前提要知道证书安装之后的证书文件是被命名为什么,于是可以在 用户凭据 这里可以看到

文件为 b905ae73.0 ,它目前是在用户目录下 /data/misc/user/0/cacerts-added/

然后把它复制到 /etc/security/cacerts/ 系统目录下

HTTPS 解析

然后在 Proxy — SSL Proxying Settings 进行 SSL Proxying Settings 设置 勾选 enable SSL Proxying 复选框代表开启 SSL Proxying 代理,并在 include 栏中添加域名和端口号。include 中的列表项代表 Charles 能够展示这些域名的 SSL 请求和响应的明文。

并且说明中也提示了我们 Charles 要想使用 SSL Proxying 代理,需要进行 SSL Certificates,即证书签名。这个我们在上面已经完成了。

Stop SSL Proxying 按钮可以控制 SSL 代理的开关。(必须要开启SSL Proxying)

到此,PC 端的设置都已经配置好了,然后就能进行抓包了

6、使用 Charles + Burpsuite 进行对 APP 进行抓包

选择勾选 Proxy — External Proxy Settings 就是要将 Charles 作为手机端的代理,再由 Charles 将包转发给 burpsuite,所以对于 Charles 来说,burpsuite 就成了一个 External Proxy Server —— 外部代理服务器

勾选 HTTPHTTPS 代理,这里 HTTPHTTPS 的代理服务器地址都是 127.0.0.1:8080(这里的配置与 Burpsuite 代理一致)

已经设置了外部代理了,就必须打开 burp(当然了主要是要打开 burp 中对 127.0.0.1:8080 的监听),否则就会出现 连不上网了 的现象。在 burp 的菜单栏中的 Proxy 选项下的 Options 中打开 127.0.0.1:8080 的代理监听(默认应该是已经打开的),在 Intercept 中关闭请求拦截。

完成上面的配置步骤后,从手机上打开浏览器搜索内容,应该已经可以在 Charles 窗口左侧的列表中找到想抓的包,并且也可以看到数据包从 Charles 转发到 Burpsuite 了

7、使用 Postern + Charles + Burpsuite 进行对 APP 进行抓包

在实际抓手机 App 包场景中,有很多种方案,经典的就是 FiddlerBurpsuite ,但是 FiddlerBurpsuite 会遇到一个问题,如果 App 为了防止中间人抓包,特意设置了不走代理这个选项,那单独直接用 FiddlerBurpsuite 这些抓包工具就不能抓包的,那总不可能说不能抓包就认为目标系统很安全吧?为了抓到完整的包,于是就衍生出 Postern + Charles 这个组合,是因为 Charles 没有直接监听到 App,Charles 是监听到了 Postern 上,Postern 就是一个VPN ,所以 App 设置不走代理也没用,它是通过 VPN 将所有流量转发到 Charles 的 socks 代理,再打开 Charles 的 External Proxy Server — (外部代理服务器)转发到 Burpsuite,从而实施中间人抓包

环境:

Postern 3.1.3

Charles v4.6.2

Burpsuite Professional v2021.2

Pixel3 Android11 、已 root + Xposed

先配置 Charles

Proxy — Proxy Settings ,勾选 Enable SOCKS proxy 进行设置 SOCKS 代理(按照下图的操作),端口号我这里设置 16666(或者自定义,但不能和系统已占用端口冲突)

配置代理

添加代理服务器

点击保存

配置规则

添加规则

按照下图进行操作并点击保存

打开/关闭 Postern

那么只要上面的 使用Charles + Burpsuite进行对APP进行抓包 设置好之后,打开你想要抓的目标 APP 就可以看到数据包已经转发到 Burpsuite 了

但是如果遇到某些比较敏感的 APP,检测 root 的话,可以参考下面的两篇文章进行设置

  • 隐藏 Root - Zygisk 版面具 Magisk 过银行 App 等 Root 检测,Shamiko 模块的妙用[2]

  • magisk 安装与配置[3]

Charles 和 Fiddler 的比较

Fiddler 虽然也可以完成对手机的抓包,但是如果 App 设置了不走代理,那 Fiddler 就失败了,并且 Fiddler 每次都需要手动修改网络设置的代理,但是 Charles 与 Postern 联动配合就不需要手动修改网络设置,只需要配置好 Postern 和 Charles 的连接就可以了,并且可以对绝大部分的 App 进行抓包,不使用代理时,直接关闭 Postern 即可

目前来说,Fiddler 和 Charles 都是很流行的,但是相对来说,还是 Postern + Charles 适用范围更广一些。

8、使用 Frida + Xposed + Objection + Burpsuite 进行对 APP 进行抓包

SSL 证书绑定

什么是证书绑定呢?其实网上叫法蛮多的,SSL 证书绑定、英文名字:SSL Pinning 或者证书检验。总之无论怎么叫都是检验证书是否可信任。我们知道从 HTTP 到 HTTPS 数据在传输过程中添加了一层 SSL/TLS,让我们数据流量处于加密状态,不再是明文可见。这时候便有了 CA 证书。

我们在抓取 HTTPS 数据包得时候,做的就是利用假的 CA 证书,来实现中间人劫持数据。一旦 app 校验了证书的指纹信息。我们的证书不再受信任了。自然而然就无法建立连接,所以必须想办法让 app 信任,才能继续抓包。当然这个分为两种情况:

(1)单项校验-客户端校验服务端的证书。

(2)双向认证-客户端不仅仅要校验服务端的证书,也会在 app 内放一张证书;服务端也会检验客户端里的证书。

单向校验

Android 系统中已经提供了检验证书的 api,我们只需要实现 checkClientTrustedcheckServerTrustedverify 等方法即可。

这类的对抗需要我们将这些函数的校验进行置空,默认信任所有证书即可。

使用 Xposed + JustTruestMe 来突破 SSL Pinning

Xposed 是一个框架,它可以改变系统和应用程序的行为,而不接触任何 APK。它支持很多模块,每个模块可以用来帮助实现不同的功能。JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。

环境:

Pixel3 Android11 、已 root + Xposed

SSLUnpinning 2.0 插件

JustMePlush 插件

Frida-server-15.1.27-android-arm64

PC 端的 Frida v15.1.27

Objection v1.11.0

首先下载 Xposed 框架插件 SSLUnpinning + JustTrustMeSSLUnpinning 插件可以直接在 Xposed 商店下载,而 JustTrustMe[4] 插件需要到下面的 GitHub 链接自行下载

我这里就使用 SSLUnpinning 2.0 插件和 JustMePlush 插件,效果都是一样的,插件安装完之后,记得启动插件,然后 重启手机 后插件才能生效

然后使用 Objection 进行绕过

Objection 是一款基于 frida 的 hook 框架,由于 frida 需要我们自己编写脚本,使用比较麻烦,objection 内置了在安卓和 IOS 逆向中常用的一些 hook 脚本,我们通过简单的命令行就可以进行 hook 动态篡改,非常方便

因为 Objection 是基于 Frida 的所以必须先安装 Frida 然后才能安装 Objection

pip3 install objection

按照上面的操作进行部署 Frida 环境之后,就启动 Frida服务端程序

接着用 Objection 注入到目标 APP 应用程序上

objection -g 包名 explore

如果不知道 APP 包名,可以用以下命令进行查看,但是依然前提要启动了 Frida服务端程序

frida-ps -Ua

然后输入关闭 APP 的 SSL 校验命令

android sslpinning disable

并在手机里面网络设置也要设置手动代理模式,输入的 IP 和端口都要与 Burpsuite 一样

即可完成绕过 SSL Pinning 进行抓包

如果出现还是依然无法绕过 SSL Pinning 的情况,可以参考下面两篇文章

  • Android 抓包总结[5]

  • [Frida.Android.Practice (ssl unpinning)](https://github.com/WooyunDota/DroidDrops/blob/master/2018/Frida.Android.Practice.md “Frida.Android.Practice (ssl unpinning “Frida.Android.Practice (ssl unpinning)”)”)

双向校验

APP 除了校验服务端的证书,服务端还会检验 APP 的证书。HTTPS 双向证书校验在实际中几乎很少用到,因为服务器端需要维护所有客户端的证书,这 无疑增加了很多消耗,因此大部分厂商选择使用单向证书绑定。对抗双向认证需要完成两个环节:

(1)让客户端认为 burp 是服务端 ,这一步其实就是破解 SSL pinning,方法和上述过程完全相同。

(2)让服务端认为 burp 是客户端 ,这一步需要导入客户端的证书到 burp,客户端的证书一定会存在本地代码中,而且还可能会有密码,这种情况下需要逆向客户端 app,找到证书和密码,并转为 pkcs12 格式导入到 burp。User options -> SSL -> Client SSL Certificate

双向校验的app 案例:   https://www.wandoujia.com/apps/8280413   

通常情况下应用会将证书放置在资源目录 app/asset下,后缀名为 p12pfx的文件。当然也可能会伪装成其他文件,例如图片文件等。

怎么找到证书密码呢?一般要么逆向分析找到密码,要么通过 hook api java.security.KeyStore 使密码自吐。

(1)Jadx 中搜索证书的名字、或者证书链 x509certificate 分析定位到关键位置。

(2)服务器对客户端进行校验过程中,客户端将证书公钥发送给服务器,以及从服务器获取 session 和私钥解密过程中,需要 API 进行操作,API 存在于 java 层框架内,所以 hook 框架层代码 java.security.KeyStore,使密码自吐。这里下图的案例 APK 解压之后在 assets 目录下有一个 client.p12 的证书文件,但是不知道它的密码,因此要使用 Frida 对目标 APP 进行 hook,让它密码自吐。

❗️❗️❗️ 注意:.p12后缀的证书文件是由 .crt证书和 key 文件合并成.p12证书文件,并且在合并生成 .p12 文件的时候必须对证书进行加密(也就是加个证书密码),不加密码 Burpsuite 是无法导入的

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)      

脚本可以在大佬博客这里复制,并命名为 ssl.js(可自定义) 抓包之服务器校验客户端证书[6]

执行下面的命令

frida -U -f APP 包名 -l ssl.js --no-pause

可以发现我们通过 hook 框架层代码得到了 client.p12证书密码为 111111,然后在 Burpsuite 里面选择 User options — TLS — Client TLS Certificates — Add 进行导入证书,Destination host*进行匹配所有地址,证书类型选择File(PKCS#12),然后选择Next

加载 assets 目录下的 client.p12 证书文件,和输入上面 hook 出的密码 111111

导入证书之后,就可以正常的抓包了,可以看下面的图,下面的 403 是没导入证书的时候,它就不允许你抓包访问,上面的 200 是我导入证书之后,就可以正常抓包了

还有就是在某些特殊场景 web页面 或者 APP 需要在 PC 电脑端安装证书才能进行访问抓包的,那么就要根据实际情况去操作

9、使用 Frida 写 Hook 代码来进行对 APP 模拟抓包

环境:

夜神模拟器 32 位 Android7.1.2 已 root

Frida-server-15.1.27-android-x86

PC 端的 Frida v15.1.27

Objection v1.11.0

使用 Charles 抓不到包怎么办呢,我们有 Frida,可以通过 frida 来 hook 住 APP 构造网络请求和接收数据地方的代码,然后打印出来请求和返回数据,这样 APP 向服务器进行的网络请求和接收的数据便一览无余了。

一般网络请求和接收数据的代码都会写在一个类中,我们只要找到一个点来追踪去找到这个类就可以了。

在大佬的 Github 项目里面找到一个Frida 实现拦截 okhttp 的脚本[7]

它的工作原理就是:

由于所有使用的 okhttp 框架的 App 发出的请求都是通过RealCall.java发出的,那么我们可以 hook 此类拿到 Request 和 Response, 也可以缓存下来每一个请求的 call 对象,进行再次请求,所以选择了此处进行 hook。find 前新增 check,根据特征类寻找是否使用了 okhttp3 库,如果没有特征类,则说明没有使用 okhttp; 找到特征类,说明使用了 okhttp 的库,并打印出是否被混淆。❗️❗️❗️ 这里我使用了真机进行测试,遇到下面的报错,应该是有检测到我真机的一些环境原因吧,因此我就使用了夜神模拟器进行下面的操作

首先将 okhttpfind.dex 拷贝到 /data/local/tmp/ 目录下,并赋予权限

adb push okhttpfind.dex /data/local/tmp/

chmod 777 okhttpfind.dex

然后启动Frida服务端程序

接着执行命令启动 hook 脚本

frida -U -l okhttp_poker.js -f APP 包名 --no-pause

如果有需要可追加参数 -o [output filepath] 保存到文件

okHttp 的 app 案例[8]

然后复制被混淆后的类名(上图红色框圈住的内容),粘贴到 okhttp_poker.js 文件中(如下图),并进行保存,Frida 会自动实时识别更新后的脚本内容执行相关操作

然后运行 hold() 命令开启 hook 拦截,然后操作 App 后,会出现拦截的内容如下:

如果想对 okHTTP 进行深入的研究可以前往这篇大佬的文章进行阅读 [原创] 如何实现 Https 拦截进行 非常规“抓包”(20.9.13-代码更新)[9]

总结

整理了以上九种不同的抓包方式其实是可以应对目前市面上各大的 APP 抓包场景,当然抓包的方式肯定不只这九种,比如还有肉丝大佬 `r0ysue` 的安卓应用层抓包通杀脚本[10],有兴趣的大佬可以去尝试一下。其实能多掌握一些抓包的技巧,也许能够在测试的过程中发现更多意想不到的新技术。


关于黑客&网络安全学习指南

学好 网络安全不论是就业还是做副业赚钱都不错,但要学会 网络安全 还是要有一个学习规划。最后给大家分享一份全套的 网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础等教程,带你从零基础系统性的学好网络安全。

1.学习路线图
在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.网络安全视频教程600集和配套电子书
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
在这里插入图片描述

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
在这里插入图片描述

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

前言 每当遇到一些 APP 渗透测试项目的时候,抓不了包的问题令人有点难受,但是抓不了包并不能代表目标系统很安全,那么接下来我会整理一下目前我所了解到的一些抓包方法

**声明:**该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

1、Burpsuite

2、Fiddler

3、Burpsuite + Fiddler

4、小黄鸟 HttpCanary

5、Charles

6、Charles + Burpsuite

7、Postern + Charles + Burpsuite

8、Frida + Xposed + Objection + Burpsuite

9、Frida 写 Hook 代码来抓包

以下抓包测试请确保手机和电脑是处于同一个局域网下

1、使用 Burpsuite 对 APP 进行抓包
环境:

Burpsuite Professional v2021.2

Pixel3 Android11 、已 root + Xposed

在 Burpsuite 里面 Proxy — Options — Proxy Listeners — Add然后在Speciffic address选择172网段的那个 IP 地址(即本机局域网 IP 地址)

在手机里面网络设置也要设置 手动代理模式 ,输入的 IP和端口 都要与 Burpsuite 一样

然后在手机浏览器访问 https://burp 这个地址,去进行下载并安装 burp 证书,因为抓取 HTTPS 流量是需要证书的,点击 CA Certificate 即可进行下载

下载之后要对证书文件后缀名进行更改,因为手机是无法打开 .der 后缀的文件,所以要吧 .der 改为 .cer ,然后再进行安装证书

那么安装之后就可以进行抓取 APP 数据包了

2、使用 Fiddler 对 APP 进行抓包
环境:

Fiddler v5.0.20204.45441

Pixel3 Android11 、已 root + Xposed

1、在 Fiddler 里面 Tools — Options

2、在 options 弹框中切换至 HTTPS ,勾选图中标记的 2 个选项并点击 OK

3、勾选后会弹出安装证书的提示,根据提示一直点击 是 即可安装成功 4、接着在Tools — Options — Connections,端口写 9999(可随意更改),并勾选 Allow remote computers to connect ,点击 OK

5、重启 Fiddler ( 修改fiddler配置要重启后才能生效 ) 6、修改手机网络设置

7、在浏览器访问上面设置的 IP 地址和端口号,我这里是 172.20.10.5:9999(这里要根据实际情况),然后 FiddlerRoot certificate 进行下载证书,并自行安装

那么安装之后就可以进行抓取 APP 数据包了

3、使用 Burpsuite + Fiddler 进行对 APP 进行抓包
配置 Burpsuite 使用的代理监听是 127.0.0.1:8080

在 Fiddler 里面 Tools — Options — Gateway 配置的代理监听是 127.0.0.1:8080(这里的配置与 Burpsuite 代理一致)

接着在 Tools — Options — Connections ,端口写 9999(可随意更改),并勾选 Allow remote computers to connect ,点击 OK

修改手机网络设置

也就是说从手机的流量经过 Fiddler 进行转发到Burpsuite

4、使用小黄鸟 HttpCanary 对 APP 进行抓包
环境:

HttpCanary v3.3.6

Pixel3 Android11 、已 root + Xposed 首先安装 HttpCanary APP 应用

HttpCanary 支持 HTTP/HTTPS/HTTP2 网络数据包的抓取和分析,其实和 Charles 类似,要抓取 HTTPS 需要使用 MITM 中间技术对 TLS/SSL 数据包进行解密以及明文输出,因此需要安装自签的 CA 证书

这里要提一下 Android 系统默认对证书信任证书的问题
因为我的 Pixel3 手机是已经 root 了,而且是 Android11 系统,在安卓 7.0 之前系统,直接下载证书装入即可,安卓 7.0 及以上系统对于证书的安全策略做了修改,意味着,从 sdcard 安装用户级 CA 将无法拦截应用流量。我们需要将证书命名为计算出的哈希值后缀 .0 或者直接在手机里面的 用户凭据 可以看到后缀 .0的证书文件 名字,然后导入到根证书目录:/system/etc/security/cacerts 让系统默认可信任。因此安装证书的方式也有所不同,默认它是安装在用户那里的。

首先按照我下面的图顺序进行安装证书

先导出 HttpCanary根 证书文件 .pem

点击它,即可完成安装证书

那么这里就看到它是安装在用户那里的,但是由于我的设备是已经 root 了,要把这个证书安装在 系统 那里才能进行抓取 HTTPS 流量

那么这时就需要把证书的文件移动到系统目录下就可以了,这里选择导出 System Trusted(.0)

那么就把证书进行移动到系统证书目录 /etc/security/cacerts/

在 Android 10 以及以上安装证书到 /system/etc/security/cacerts/会出现 system 无法写入使用 mount 报错如下:

‘/system’ not in /proc/mounts ‘/dev/block/dm-4’ is read-only
由于 Android 10 采用了某些安全策略,将系统分区 /system挂载为只读,就算你 root 了也没用,无法写入系统分区也就无法导入系统证书,在使用 HTTPCanary 这样的软件抓包分析的时候,很多 app 只认系统证书,不认用户证书 遇见此类情况有两种方式解决:1、在 Magisk 里面安装 Move Certificates模块[1],该插件可以一键将所有用户证书自动转换为系统区证书

使用方法:所有证书安装为用户证书后,安装此插件,并重启。

2、创建一个新的挂载点来覆盖 这种方式是内存覆盖的方式所以手机重启后失效。(想要持久化需考虑搞一个开机启动服务)

创建一个临时目录,保存当前证书 mkdir /sdcard/tmp/ # 复制现有证书到临时目录 cp /system/etc/security/cacerts/* /sdcard/tmp/ # 创建内存挂载 mount -t tmpfs tmpfs /system/etc/security/cacerts # 将现有证书复制回 tmpfs 挂载 mv /sdcard/tmp/* /system/etc/security/cacerts/ # 更新 perms 和 selinux chown root:root /system/etc/security/cacerts/* chmod 644 /system/etc/security/cacerts/* chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*

再进来这个看证书的界面就已经看到已经把 用户 的证书安装在 系统 那里了

虽然 HttpCanary 是一个很不错的抓包工具,但是它并不能跟其他抓包工具进行一个联动转发抓包,所以当渗透测试人员在使用它进行抓包之后,可以直接在手机上进行修改数据包进行测试,但是可能在手机上工作效率没那么高,于是就把要测试的数据包复制出来到 Burpsuite 上进行修改并发包,这个过程也会浪费很多时间。

下面是 HttpCanary 的工作原理

HttpCanary 采用 VPN 的方式将网络包转发给本地代理服务器,本地代理服务器将数据包转发虚拟网关,由虚拟网关进行不同策略地拦截和协议解析,最后再将数据发送给终端

最重要的一层就是虚拟网关 Virtual Gateway ,需要对协议进行鉴定解析等等,包括数据包的拦截注入都是在这一层处理的,比如 HTTPS 的中间人(MITM)解析出明文包等

因此从上图观察它的工作原理进行分析之后,让我寻找到另一种方式抓包(它的工作方式也和 HttpCanary 有点相似 )可以用它来代替 HttpCanary —— Postern + Charles + Burpsuite组合,至于怎样操作,可以在文章下面 7、使用Postern + Charles + Burpsuite进行对APP进行抓包 进行详细阅读

5、使用 Charles 对 APP 进行抓包
环境:

Charles v4.6.2

Pixel3 Android11 、已 root + Xposed charles 是一款非常优秀的抓包工具,全平台支持,在 mac,windows,linux 上都可以使用,既可以抓取 web 端的包,也可以抓 app 端的包 charles 主要的功能包括如下几点:

截取 Http 和 Https 网络封包。

支持重发网络请求,方便后端调试。

支持修改网络请求参数。

支持网络请求的截获并动态修改。

支持模拟慢速网络。

代理服务器的工作原理如下所示:

客户端发起请求,请求通过 charles 转发给服务器,服务器返回响应,响应通过 charles 转发给客户端。

charles 所起的作用就相当于信使,把信息从 A 传递给 B,并且把回信从 B 传递给 A,正因为他这个信使的工作,所以他对信息的内容了如指掌(不管是原信还是回信),正因为如此,charles 也就可以篡改信息的内容,即篡改请求和响应。

Charles 下载地址:

https://www.charlesproxy.com/download/

然后自行安装之后,要对它进行激活

注册码生成地址:

https://www.zzzmode.com/mytools/charles/

激活 Charles 在 Help->Registered 输入 key 和生成的激活码即可

设置代理,在 Proxy — Proxy Settings ( 注意:此时我的Windows Proxy是去掉对勾的,因为这里我是想在PC端抓手机端的包,所以没必要打开电脑的本地代理 )

填入代理端口 8888(或者自定义,但不能和系统已占用端口冲突),并且勾上 Support HTTP/2 和 Enable transparent HTTP proxying ,点击右下角 OK 即可

然后分别在 PC 端和手机端安装证书 选择 Help — SSL Proxying — Install Charles Root Certificate 就可以下载安装上 PC 端了

证书存储选择 受信任的根证书颁发机构

接下来再给手机端安装证书,步骤如下:选择 Help — SSL Proxying — Install Charles Root Certificate on a Mobile Device or Remote Browser

点击后会弹出窗口提示设置的方法,按照提示在手机端将代理设置为电脑的 ip:8888( 我这里是192.168.1.251:8888 ),这里要先确保手机和电脑连接同一个无线网络 。然后在手机的浏览器打开 http://chls.pro/ssl ,按提示下载证书即可。

如果 Charles 有弹出提示,一定要点击 Allow

首先按照我下面的图顺序进行安装证书

找到选择刚刚下载的证书文件,点击即可完成安装

它也是安装在 用户 那里,但是由于我的设备是已经 root 了,要把这个证书安装在 系统 那里才能进行抓取 HTTPS 流量

但是移动证书的前提要知道证书安装之后的证书文件是被命名为什么,于是可以在 用户凭据 这里可以看到

文件为 b905ae73.0 ,它目前是在用户目录下 /data/misc/user/0/cacerts-added/

然后把它复制到 /etc/security/cacerts/ 系统目录下

HTTPS 解析
然后在 Proxy — SSL Proxying Settings 进行 SSL Proxying Settings 设置 勾选 enable SSL Proxying 复选框代表开启 SSL Proxying 代理,并在 include 栏中添加域名和端口号。include 中的列表项代表 Charles 能够展示这些域名的 SSL 请求和响应的明文。

并且说明中也提示了我们 Charles 要想使用 SSL Proxying 代理,需要进行 SSL Certificates,即证书签名。这个我们在上面已经完成了。

Stop SSL Proxying 按钮可以控制 SSL 代理的开关。(必须要开启SSL Proxying)

到此,PC 端的设置都已经配置好了,然后就能进行抓包了

6、使用 Charles + Burpsuite 进行对 APP 进行抓包
选择勾选 Proxy — External Proxy Settings 就是要将 Charles 作为手机端的代理,再由 Charles 将包转发给 burpsuite,所以对于 Charles 来说,burpsuite 就成了一个 External Proxy Server —— 外部代理服务器

勾选 HTTP 和 HTTPS 代理,这里 HTTP 和 HTTPS 的代理服务器地址都是 127.0.0.1:8080(这里的配置与 Burpsuite 代理一致)

已经设置了外部代理了,就必须打开 burp(当然了主要是要打开 burp 中对 127.0.0.1:8080 的监听),否则就会出现 连不上网了 的现象。在 burp 的菜单栏中的 Proxy 选项下的 Options 中打开 127.0.0.1:8080 的代理监听(默认应该是已经打开的),在 Intercept 中关闭请求拦截。

完成上面的配置步骤后,从手机上打开浏览器搜索内容,应该已经可以在 Charles 窗口左侧的列表中找到想抓的包,并且也可以看到数据包从 Charles 转发到 Burpsuite 了

7、使用 Postern + Charles + Burpsuite 进行对 APP 进行抓包
在实际抓手机 App 包场景中,有很多种方案,经典的就是 Fiddler 、 Burpsuite ,但是 Fiddler 、 Burpsuite 会遇到一个问题,如果 App 为了防止中间人抓包,特意设置了不走代理这个选项,那单独直接用 Fiddler 、 Burpsuite 这些抓包工具就不能抓包的,那总不可能说不能抓包就认为目标系统很安全吧?为了抓到完整的包,于是就衍生出 Postern + Charles 这个组合,是因为 Charles 没有直接监听到 App,Charles 是监听到了 Postern 上,Postern 就是一个VPN ,所以 App 设置不走代理也没用,它是通过 VPN 将所有流量转发到 Charles 的 socks 代理,再打开 Charles 的 External Proxy Server — (外部代理服务器)转发到 Burpsuite,从而实施中间人抓包

环境:

Postern 3.1.3

Charles v4.6.2

Burpsuite Professional v2021.2

Pixel3 Android11 、已 root + Xposed

先配置 Charles

在 Proxy — Proxy Settings ,勾选 Enable SOCKS proxy 进行设置 SOCKS 代理(按照下图的操作),端口号我这里设置 16666(或者自定义,但不能和系统已占用端口冲突)

配置代理

添加代理服务器

点击保存

配置规则

添加规则

按照下图进行操作并点击保存

打开/关闭 Postern

那么只要上面的 使用Charles + Burpsuite进行对APP进行抓包 设置好之后,打开你想要抓的目标 APP 就可以看到数据包已经转发到 Burpsuite 了

但是如果遇到某些比较敏感的 APP,检测 root 的话,可以参考下面的两篇文章进行设置

隐藏 Root - Zygisk 版面具 Magisk 过银行 App 等 Root 检测,Shamiko 模块的妙用[2]

magisk 安装与配置[3]

Charles 和 Fiddler 的比较
Fiddler 虽然也可以完成对手机的抓包,但是如果 App 设置了不走代理,那 Fiddler 就失败了,并且 Fiddler 每次都需要手动修改网络设置的代理,但是 Charles 与 Postern 联动配合就不需要手动修改网络设置,只需要配置好 Postern 和 Charles 的连接就可以了,并且可以对绝大部分的 App 进行抓包,不使用代理时,直接关闭 Postern 即可

目前来说,Fiddler 和 Charles 都是很流行的,但是相对来说,还是 Postern + Charles 适用范围更广一些。

8、使用 Frida + Xposed + Objection + Burpsuite 进行对 APP 进行抓包
SSL 证书绑定
什么是证书绑定呢?其实网上叫法蛮多的,SSL 证书绑定、英文名字:SSL Pinning 或者证书检验。总之无论怎么叫都是检验证书是否可信任。我们知道从 HTTP 到 HTTPS 数据在传输过程中添加了一层 SSL/TLS,让我们数据流量处于加密状态,不再是明文可见。这时候便有了 CA 证书。

我们在抓取 HTTPS 数据包得时候,做的就是利用假的 CA 证书,来实现中间人劫持数据。一旦 app 校验了证书的指纹信息。我们的证书不再受信任了。自然而然就无法建立连接,所以必须想办法让 app 信任,才能继续抓包。当然这个分为两种情况:

(1)单项校验-客户端校验服务端的证书。

(2)双向认证-客户端不仅仅要校验服务端的证书,也会在 app 内放一张证书;服务端也会检验客户端里的证书。

单向校验
Android 系统中已经提供了检验证书的 api,我们只需要实现 checkClientTrusted 、 checkServerTrusted 、 verify 等方法即可。

这类的对抗需要我们将这些函数的校验进行置空,默认信任所有证书即可。

使用 Xposed + JustTruestMe 来突破 SSL Pinning
Xposed 是一个框架,它可以改变系统和应用程序的行为,而不接触任何 APK。它支持很多模块,每个模块可以用来帮助实现不同的功能。JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。

环境:

Pixel3 Android11 、已 root + Xposed

SSLUnpinning 2.0 插件

JustMePlush 插件

Frida-server-15.1.27-android-arm64

PC 端的 Frida v15.1.27

Objection v1.11.0

首先下载 Xposed 框架插件 SSLUnpinning + JustTrustMe , SSLUnpinning 插件可以直接在 Xposed 商店下载,而 JustTrustMe[4] 插件需要到下面的 GitHub 链接自行下载

我这里就使用 SSLUnpinning 2.0 插件和 JustMePlush 插件,效果都是一样的,插件安装完之后,记得启动插件,然后 重启手机 后插件才能生效

然后使用 Objection 进行绕过

Objection 是一款基于 frida 的 hook 框架,由于 frida 需要我们自己编写脚本,使用比较麻烦,objection 内置了在安卓和 IOS 逆向中常用的一些 hook 脚本,我们通过简单的命令行就可以进行 hook 动态篡改,非常方便

因为 Objection 是基于 Frida 的所以必须先安装 Frida 然后才能安装 Objection

pip3 install objection

按照上面的操作进行部署 Frida 环境之后,就启动 Frida服务端程序

接着用 Objection 注入到目标 APP 应用程序上

objection -g 包名 explore

如果不知道 APP 包名,可以用以下命令进行查看,但是依然前提要启动了 Frida服务端程序

frida-ps -Ua

然后输入关闭 APP 的 SSL 校验命令

android sslpinning disable

并在手机里面网络设置也要设置手动代理模式,输入的 IP 和端口都要与 Burpsuite 一样

即可完成绕过 SSL Pinning 进行抓包

如果出现还是依然无法绕过 SSL Pinning 的情况,可以参考下面两篇文章

Android 抓包总结[5]

[Frida.Android.Practice (ssl unpinning)](https://github.com/WooyunDota/DroidDrops/blob/master/2018/Frida.Android.Practice.md “Frida.Android.Practice (ssl unpinning “Frida.Android.Practice (ssl unpinning)”)”)

双向校验
APP 除了校验服务端的证书,服务端还会检验 APP 的证书。HTTPS 双向证书校验在实际中几乎很少用到,因为服务器端需要维护所有客户端的证书,这 无疑增加了很多消耗,因此大部分厂商选择使用单向证书绑定。对抗双向认证需要完成两个环节:

(1)让客户端认为 burp 是服务端 ,这一步其实就是破解 SSL pinning,方法和上述过程完全相同。

(2)让服务端认为 burp 是客户端 ,这一步需要导入客户端的证书到 burp,客户端的证书一定会存在本地代码中,而且还可能会有密码,这种情况下需要逆向客户端 app,找到证书和密码,并转为 pkcs12 格式导入到 burp。User options -> SSL -> Client SSL Certificate。

双向校验的app 案例: https://www.wandoujia.com/apps/8280413
通常情况下应用会将证书放置在资源目录 app/asset下,后缀名为 p12 、 pfx的文件。当然也可能会伪装成其他文件,例如图片文件等。

怎么找到证书密码呢?一般要么逆向分析找到密码,要么通过 hook api java.security.KeyStore 使密码自吐。

(1)Jadx 中搜索证书的名字、或者证书链 x509certificate 分析定位到关键位置。

(2)服务器对客户端进行校验过程中,客户端将证书公钥发送给服务器,以及从服务器获取 session 和私钥解密过程中,需要 API 进行操作,API 存在于 java 层框架内,所以 hook 框架层代码 java.security.KeyStore,使密码自吐。这里下图的案例 APK 解压之后在 assets 目录下有一个 client.p12 的证书文件,但是不知道它的密码,因此要使用 Frida 对目标 APP 进行 hook,让它密码自吐。

❗️❗️❗️ 注意:.p12后缀的证书文件是由 .crt证书和 key 文件合并成.p12证书文件,并且在合并生成 .p12 文件的时候必须对证书进行加密(也就是加个证书密码),不加密码 Burpsuite 是无法导入的

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.KeyStoreKaTeX parse error: Expected '}', got 'EOF' at end of input: …ng.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”). n e w ( ) ) ) ; c o n s o l e . l o g ( " K e y S t o r e . l o a d 2 : " , a r g 0 , a r g 1 ? S t r i n g C l a s s . new())); console.log("KeyStore.load2:", arg0, arg1 ? StringClass. new()));console.log("KeyStore.load2:",arg0,arg1?StringClass.new(arg1) : null); this.load(arg0, arg1); }; console.log(“hook_KeyStore_load…”); }); } setImmediate(hook_KeyStore_load)
脚本可以在大佬博客这里复制,并命名为 ssl.js(可自定义) 抓包之服务器校验客户端证书[6]

执行下面的命令

frida -U -f APP 包名 -l ssl.js --no-pause

可以发现我们通过 hook 框架层代码得到了 client.p12证书密码为 111111,然后在 Burpsuite 里面选择 User options — TLS — Client TLS Certificates — Add 进行导入证书,Destination host写*进行匹配所有地址,证书类型选择File(PKCS#12),然后选择Next

加载 assets 目录下的 client.p12 证书文件,和输入上面 hook 出的密码 111111

导入证书之后,就可以正常的抓包了,可以看下面的图,下面的 403 是没导入证书的时候,它就不允许你抓包访问,上面的 200 是我导入证书之后,就可以正常抓包了

还有就是在某些特殊场景 web页面 或者 APP 需要在 PC 电脑端安装证书才能进行访问抓包的,那么就要根据实际情况去操作

9、使用 Frida 写 Hook 代码来进行对 APP 模拟抓包
环境:

夜神模拟器 32 位 Android7.1.2 已 root

Frida-server-15.1.27-android-x86

PC 端的 Frida v15.1.27

Objection v1.11.0

使用 Charles 抓不到包怎么办呢,我们有 Frida,可以通过 frida 来 hook 住 APP 构造网络请求和接收数据地方的代码,然后打印出来请求和返回数据,这样 APP 向服务器进行的网络请求和接收的数据便一览无余了。

一般网络请求和接收数据的代码都会写在一个类中,我们只要找到一个点来追踪去找到这个类就可以了。

在大佬的 Github 项目里面找到一个Frida 实现拦截 okhttp 的脚本[7]

它的工作原理就是:

由于所有使用的 okhttp 框架的 App 发出的请求都是通过RealCall.java发出的,那么我们可以 hook 此类拿到 Request 和 Response, 也可以缓存下来每一个请求的 call 对象,进行再次请求,所以选择了此处进行 hook。find 前新增 check,根据特征类寻找是否使用了 okhttp3 库,如果没有特征类,则说明没有使用 okhttp; 找到特征类,说明使用了 okhttp 的库,并打印出是否被混淆。❗️❗️❗️ 这里我使用了真机进行测试,遇到下面的报错,应该是有检测到我真机的一些环境原因吧,因此我就使用了夜神模拟器进行下面的操作

首先将 okhttpfind.dex 拷贝到 /data/local/tmp/ 目录下,并赋予权限

adb push okhttpfind.dex /data/local/tmp/

chmod 777 okhttpfind.dex

然后启动Frida服务端程序

接着执行命令启动 hook 脚本

frida -U -l okhttp_poker.js -f APP 包名 --no-pause

如果有需要可追加参数 -o [output filepath] 保存到文件

okHttp 的 app 案例[8]

然后复制被混淆后的类名(上图红色框圈住的内容),粘贴到 okhttp_poker.js 文件中(如下图),并进行保存,Frida 会自动实时识别更新后的脚本内容执行相关操作

然后运行 hold() 命令开启 hook 拦截,然后操作 App 后,会出现拦截的内容如下:

如果想对 okHTTP 进行深入的研究可以前往这篇大佬的文章进行阅读 [原创] 如何实现 Https 拦截进行 非常规“抓包”(20.9.13-代码更新)[9]

总结
整理了以上九种不同的抓包方式其实是可以应对目前市面上各大的 APP 抓包场景,当然抓包的方式肯定不只这九种,比如还有肉丝大佬 r0ysue 的安卓应用层抓包通杀脚本[10],有兴趣的大佬可以去尝试一下。其实能多掌握一些抓包的技巧,也许能够在测试的过程中发现更多意想不到的新技术。

关于黑客&网络安全学习指南
学好 网络安全不论是就业还是做副业赚钱都不错,但要学会 网络安全 还是要有一个学习规划。最后给大家分享一份全套的 网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础等教程,带你从零基础系统性的学好网络安全。

1.学习路线图
在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.网络安全视频教程600集和配套电子书
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
在这里插入图片描述

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
在这里插入图片描述

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

Markdown 23409 字数 707 行数 当前行 1, 当前列 0HTML 12263 字数 226 段落
发布博文获得大额流量券

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/712516.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux——自动化运维ansibe

一、自动化运维定义 自动化--- 自动化运维: 服务的自动化部署操作系统的日常运维:日志的备份、临时文件清理、服务器日常状态巡检、(几乎包括了linux服务管理、linux 系统管理以及在docker 容器课程中涉及的所有内容)服务架构的…

Android屏幕旋转流程(1)

(1)Gsensor的注册和监听 App -->I2C过程:App通过SensorManager.getSystemServer调用到SystemSensorManager,SystemSensorManager通过jni调用到SensorManager.cpp,后通过binder调用到SensorService。SensorService通…

【SpringBoot集成Spring Security】

一、前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权。 二者区别 Spring Security:重量级安全框架Apache Shiro:轻量级安全框架 关于shiro的权限认证与授权可参考小编的另外一篇文章 : …

基于python深度学习的CNN图像识别鲜花-含数据集+pyqt界面

代码下载: https://download.csdn.net/download/qq_34904125/89383615 本代码是基于python pytorch环境安装的。 下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。 或可直接参考下面博文进行…

Java—文件拷贝

将指定的文件或目录拷贝到指定目录夹下 import java.io.*; import java.util.Scanner;/*** 实现一个文件拷贝*/ public class FileCopy {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println("请输入要拷贝的源文件路径…

专业学习|博弈论-博弈论概述

(一)认识博弈论:解析复杂决策与策略 (1)认识博弈 博弈论广泛应用于分析个体间因利益冲突而产生的决策问题。通过构建不同模型来探讨如经贸关系、军事威胁等问题,旨在寻找均衡解并提供新知,相较…

用AI造谣每天收入1万元,最后只拘留5日?

关注卢松松,会经常给你分享一些我的经验和观点。 当时我就震惊了!800多个MCN的自媒体账号每天收入1万元,最后拘留5日?难怪群里这么多人在晒收益截图,原来都是这样来的。 央视刚刚曝光一家MCN机构用AI造谣的事件,该公司用AI一天…

原码、反码和补码

原码 原码是数字的二进制表示方式,由符号位和绝对值(数值位)构成。原码的第一位代表符号位(0 代表正数,1 代表负数);第二位开始就是数字的绝对值。 反码 反码的表示方法区分正负数。 正数时…

foxmai邮箱使用技巧图文板简单容易,服务器配置密钥配置

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持&#xf…

【有用】docker在windows下使用详情

在Windows下安装和使用Docker可以按照以下步骤进行: 安装 Docker Desktop 系统要求 • Windows 10 64-bit: Pro, Enterprise, or Education (1607 Anniversary Update, Build 14393 or later) • Windows 11 64-bit: Pro, Enterprise, or Education • Windows 10 …

Eclipse 单步调试的时候报错,通过一些设置处理下。

先帖张图: 勾选不提醒。 1、通过Java Compiler,进行设置: 然后设置以后,进入调试,还是 报上面的错,有的小伙伴说是先去勾选,然后确认。 然后再选择,确认。 2、设置Jdk为自己安装的。 设置成功后…

C++11默认成员函数控制

默认成员函数有 如果自己不显示声明,那么默认编译器会自己生成一个 如果有一个构造函数被声明了,那其他的默认函数编译器就不会再生成 这样的有时又不生成,容易造成混乱,于是C11让程序员可以控制是否需要编译器生成。 显式缺省函…

47.PyCharm P版突然无法启动

目录 1.启动cmd.exe,进到pycharm\bin目录,启动.\pycharm.bat,如果正常,就像下面这个样子,如果不正常,则会报错, 2.用记事本打开pycharm.bat文件,加上以下代码后 今晨,无…

小阿轩yx-Apache 网页优化

小阿轩yx-Apache 网页优化 网页压缩与缓存 对Apache服务器优化配置 能让 Apache 发挥出更好的性能 相反,配置糟糕 Apache可能无法正常服务 网页压缩 网站的访问速度是由多个因素所共同决定的 包括应用程序 响应速度网络带宽服务器性能与客户端之间的网络传…

音视频集式流媒体边缘分布式集群拉流管理

一直以来,由于srs zlm等开源软件采用传统直播协议,即使后面实现了webrtc转发,由于信令交互较弱,使得传统的安防监控方案需要在公网云平台上部署大型流媒体服务器,而且节点资源不能统一管理调度,缺乏灵活性和…

MOS开关电路应用于降低静态功耗

本文主要讲述MOS开关电路的应用,过了好久突然想整理一下,有错误的地方请多多指出,在做电池类产品,需要控制产品的静态功耗,即使让芯片进入休眠状态,依旧功率很大,所以在电路中加一组软开关,防止…

连锁门店收银系统源码!

1.系统概况 智慧新零售系统是一套针对零售行业的saas收银系统,线下线上一体化的收银系统。核心功能涵盖了线下收银、小程序商城、会员管理、50营销插件、ERP进销存管理、跑腿配送等行业解决方案。 2.适用行业及门店 智慧新零售是针对零售行业的saas收银系统&#…

【Pandas】已完美解决:AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例(结合实战场景)五、注意事项 一、问题背景 在Pandas的早期版本中,ix 是一个方便的索引器,允许用户通过标签和整数位置来索引DataFrame的行和列。然而&a…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 特惠寿司(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 特惠寿司(100分) 🌍 评测功能需要订阅专栏后私信联系清隆解…

苹果:创新引领下的科技传奇

自1976年创立以来,苹果公司(Apple Inc.)以其卓越的创新能力和独特的市场策略,从一家初创企业崛起为全球科技产业的领军者。本文将深入探讨苹果的发展历程,剖析其成功的关键因素,并展望其未来的发展前景。 初…