Charles、Fiddler、WireShark 抓包

参考文章

在网络7层中,同层如果抓不到,就到更第一层去抓包!

协议层抓包(VPN抓包)

不使用HTTP代理而是VPN, VPN 代理层级更低一级!

缺点

容易被API检测, 也容易在网卡中检测出VPN

Kali 配置

需要wifi处于路由器上, 如果是主机上发射的wifi在虚拟机上是接收不到的

  1. 配置桥接模式
  2. 选择网卡, 设置桥接模式相当于让路由器也当把虚拟机当真机一样分配

Charles 配置

这里推荐使用 socks 抓包, 因为http是高层协议, socks 更第一级

charles 配置 https 抓包

证书

  1. 先链接vpn ,打开网址自动下载证书, 然后再在手机上手动安装用户级证书
  2. 安装完后会自动生成一个 xxx.0 的系统级证书在目录 /data/misc/user/00/cacerts-added
  3. 将证书拷贝到 /system/etc/security/cacerts/ 中即可

postern 配置

配置代理

配置规则
选择 直连

双证书认证

  1. 找到本地证书(通常格式为 xx.p12)当然是可以隐藏文件名的 tree -NCfhl |grep -i p12
  2. 找到本地证书密码(密码在java或者so层)可以先在java层关键词搜索
    // Frida hook 证书密码
    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) {
                printStack("KeyStore.load1");
                console.log("KeyStore.load1:", arg0);
                this.load(arg0);
            };
            KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
                printStack("KeyStore.load2");
                console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
                this.load(arg0, arg1);
            };
    
            console.log("hook_KeyStore_load...");
        });
    }

    证书导入charles

创建一个数据库,账号密码自己记住就行

Socket 抓包

java socket hook 思路: 要使用 socket 方法传输,那么他必定要调用系统 socket库,否则无法完成 socket 通讯,所以我们以系统的视角出发,hook系统级函数跟踪即可

推荐阅读文章

网络层抓包

俗称路由器抓包

网卡购置

配置wifi

  1. 在kali机插上无线网卡 802.11N (最好是 Kali 免驱的)
  2. lsusb 执行看看有哪些驱动设备(是否有刚刚插入的)
  3. ifconfig 看看是否有刚刚插入的无线网卡
  4. 制作 wifi
    nm-connection-editor


  5. 手机连接该wifi即可

保存抓包

  • 驱动转储:使用 tcpdump 将经过网口驱动时的数据包转储下来,再使用 Wireshark 进行分析;
  • 路由转储:自己做个路由器,运行 jnettop ,观察实时进过的流量和 IP,可以使用 WireShark 实时抓包,也可以使用 tcpdump 抓包后用 WireShark 分析。
  • jnettop0, 1, 2…来切换监控网卡
  • WireShark 当然 Kali 自带
  • WireShark 可以通过 搜索过滤 dns, http 等关键词来过滤

查看端口是哪个程序在使用

  1. 例如在 jnettop 上看到 9999 端口流量在占用
  2. 进入 adb 输入 netstat -tuulp|grep 9999 就可以看到是哪个包在使用

Fiddler 网页抓包

记住: 配置完后都需要重启

HTTPS

按照提示安装 SSL 证书

设置抓包类型

必须设置为可以远程捕获,因为要抓APP的包

开启网页抓包

火狐抓包

因为谷歌等浏览器是使用系统的代理,所以无需额外设置。

  1. 进入设置
  2. 选中高级
  3. 选择网络
  4. 选择链接设置
  5. 选择使用系统代理!

然后配置火狐可信任的证书

  1. 设置
  2. 高级
  3. 证书
  4. 查看证书
  5. 导入证书(证书在 Fiddler中导出)

Fiddler 手机端

安卓 7 以下

一。 获取本地IP 通常为192.

端口为配置的端口,默认 8888

二。在手机端配置
手机wifi设置上手动代理,配置上端口和IP

三。打开手机浏览器访问你的 IP:端口 来配置证书

打开页面有,点击最下面,下载 download 就可以导入了

安卓 7 以上

主要区别在于 https 证书必须放到系统目录才能正常使用

Fiddler WebSocket 抓包配置

加入代码如下

static function OnWebSocketMessage(oMsg: WebSocketMessage) {
        // Log Message to the LOG tab
        FiddlerApplication.Log.LogString(oMsg.ToString());
    }

配置之后,如果有 websocket 请求101 的,双击进入。

Fiddler 提升

清除无用记录

可以选择清空非200请求、图片请求、等指定请求删除

自动编码转换

你可以设置自动解码

隐藏大量握手包

这些都是属于无用的握手包,我们隐藏掉

Rules - Hide CONNECTS 勾上即可

清除浏览器缓存

过滤想要信息

重发请求

选中请求 -- replay -- 操作类型,这里还可以编辑后重发请求

父、子请求查看

有这么一个情况,我访问的是 666.cq.cn 这个网页,但是我想查看根据这个页面还访问了哪些子页面

右键–select–Child Request

当然通过子请求也可以同样方法查看父请求

比较不同请求以及相应文本比较

这个很方便的

  1. 下载 windiff
  2. 重新启动
  3. 选择要对比的请求链接,**右键--Compare**

不建议用默认8888端口

因为容易被检测到!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!