美文网首页iOS表格绘制
Windows抓包http请求

Windows抓包http请求

作者: Yellowtail | 来源:发表于2023-02-11 19:21 被阅读0次

    概述

    玩了一段时间的逆向破解,对Windows上抓包有了一定的经验,在这里分享给大家

    限制:
    如果要抓包的对象,网络协议是tcp,那就只能用 wireshark了,此文方法不好使

    原理

    抓包大概分为两大类

    1. 嗅探
      wireshark eCapture,技术上比较底层一点,在驱动或者内核里,什么包都能抓到,一般来说无法修改
    2. 中间人
      技术上在应用层,适用面窄一些,但是可以修改请求和响应

    此文重点描述中间人这种模式,因为门槛低,UI界面友好

    中间人

    先简单介绍一下中间人原理
    假设有一个游戏A,游戏服务器B
    原本的流量路径是A->B
    中间人就是通过某种手段,把这条路径变成 A->C->B
    这里的C一般包含抓包软件,这样我们就能抓到所有的请求,看到发生了什么事情

    根据某种手段的不同,分为几类

    1. 代理模式
    2. 虚拟网卡
    3. hosts/dns

    代理模式

    有一些编程语言和框架,内部默认实现支持代理模式,如Java的 apache http client,我们可以通过修改环境变量来达到这个目的;
    如果是手机,那么还可以在WiFi设置里填写

    总而言之,要使用这种模式,需要应用或者操作系统支持

    比如Windows就提供了这种设置入口,但是不一定有用,因为应用程序可以不理会Windows的这种标准

    image.png

    同理还有 charles 的 windows proxy, IE的全局代理

    对于安卓手机或苹果手机,连上路由器wifi,或者电脑热点wifi(笔记本),再在手机上设置wifi代理
    成功率也不是100%
    流量的确会经过这个wifi,但是应用程序不一定认这个系统代理,程序员也可以手动关闭代理选项,如Java的OkHttp

    虚拟网卡

    代理模式,属于制定了一个标准,但是这个标准的执行,就听天由命了,完全看运气,目标程序可以遵循这个标准,也可以不遵循
    所以就有了另外一个技术路线虚拟网卡

    大概原理就是:不管你代码怎么写的,你想联网,肯定要通过物理硬件网卡才行,那么如果伪造一个网卡,那么目标程序的流量肯定100%经过这个网卡的,那么请求数据就肯定可以抓到了,这个就是虚拟网卡

    • Windows上常见的就是 Clash for Windows
    • 安卓手机上就比较多了,我喜欢用的是postern github

    hosts/dns

    现实世界中,目标程序访问互联网一般都是通过域名
    而域名最后都会转为ip来进行访问的
    所以也可以在这个环节来操作,修改解析的ip,让请求直接发到某个地方来抓包

    基本步骤是:

    1. 修改hosts,或者设置自定义dns,让指定域名解析到自定义ip(一般来说都是自己电脑)
    2. 在自定义ip这台机器上,起一个服务,开启80端口(http)和443端口(Https)
    3. 这个服务其实自己就可以抓包了,但是没有找到开源成品,所以我是自己写了一个(记得处理证书问题),把接收到的流量再转到抓包软件上,如Charles
    4. 不管是自己的服务还是抓包软件,现在能接收请求了,但是无法发出请求,因为dns变了,会死循环,所以需要借助Dns Over Http来修正这个问题,如果是 charles,可以通过设置 External DNS Resolver来解决
    image.png image.png

    整体而言,这个方案很繁琐,比较绕,不太友好
    不太建议使用

    clash 实战

    上面介绍了各种技术路线,这里用比较通用的虚拟网卡路线,选一个场景,给大家演示一下

    安装虚拟网卡

    image.png image.png

    操作好之后,修改配置文件


    image.png

    这里贴一份我的配置,大家看着改

    mixed-port: 7890
    allow-lan: false
    external-controller: 127.0.0.1:65360
    secret: 462a5c83-xxx
    
    proxies:
      - name: Fiddler
        type: socks5
        server: 127.0.0.1
        port: 1080
    // charles 代理
      - name: charles  
        type: socks5
        server: 127.0.0.1
        port: 8889
    proxy-groups:
      - name: Proxy
        proxies:
          - Fiddler
        type: select
    rules:
      - PROCESS-NAME,Python.exe,DIRECT
      - PROCESS-NAME,qbittorent.exe,DIRECT
      - PROCESS-NAME,WeChatAppEx.exe,Fiddler
      - PROCESS-NAME,WeChat.exe,Fiddler
      - PROCESS-NAME,WeChatPlayer.exe,Fiddler
      - PROCESS-NAME,WeChatBrowser.exe,Fiddler
    // 进程名
      - PROCESS-NAME,BloonsTD6.exe,charles   
      - MATCH,DIRECT
    

    关键点就是

    1. 首先配置一个代理,charles,协议细节是socks://127.0.0.1:8889
    2. 新增规则,指定进程名BloonsTD6.exe的流量转到 代理charles

    里面也有几个规则是针对微信小程序的,可以抓羊了个羊这种 🥰

    charles

    image.png image.png

    测试

    接下来启动游戏试一下


    image.png

    相关文章

      网友评论

        本文标题:Windows抓包http请求

        本文链接:https://www.haomeiwen.com/subject/snilkdtx.html