吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11487|回复: 70
收起左侧

[Android 转帖] 抓包那些事

    [复制链接]
Andy0214 发表于 2022-6-13 15:14

抓包那些事

抓的是包不是人,包也不是那个包,是数据包,为什么要抓数据包呢,因为信安人要分析数据包,分析数据包做什么,看看数据包有没有什么信息泄漏,有没有什么漏洞,当然还有很多用途,以后我们慢慢介绍。
以下的内容足以解决95%的抓包问题,请大家饭后食用。

代理

简单来说代理就是一个中间人:

没有代理的时候,客户端只接请求服务器,有了代理,客户端就请求代理,代理再去请求服务器。服务器返回时先返回给代理,代理,返回给客户端。

有了代理我们就可以看到客户端的请求数据,和服务器的返回数据。常见的代理软件:Fiddler 、Charles、Burp Suite Professional,我最常用的就是 Burp Suite Professional,它是 CTF 最常用的抓包工具,内部集成不少实用工具,Java 开发,轻量级,Windows 和 Mac 通用。

什么是全局代理,什么是局部代理?


使用全局代理,则计算机中的所有程序都会走这个代理,即你本机的IP地址会变成这个代理的IP地址。
如上图,可以看出,所有的进程的请求都先通过代理服务器,再通过代理服务器发给目标服务器。


而局部代理,只是部分请求经过代理服务器,而其他请求还是直接发送到目标服务器的。
如上面的两张图,图1的进程A的请求经过了代理服务器,而图2的进程B的请求则是直接发送到目标服务器。

为什么要设置全局代理?

原因1——检测代理

APP在发起网络请求前会检测系统是否设置了代理,如果发现有代理,就不发起请求。以下是一段APP检测系统是否有代理的实例代码:

public static boolean isWifiProxy(Context context) {
    final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
    String proxyAddress;
    int proxyPort;
    if (IS_ICS_OR_LATER) {
        proxyAddress = System.getProperty("http.proxyHost");    //获取代理主机
        String portStr = System.getProperty("http.proxyPort");  //获取代理端口
        proxyPort = Integer.parseInt((portStr != null ? portStr : "-1"));
    } else {
        proxyAddress = android.net.Proxy.getHost(context);
        proxyPort = android.net.Proxy.getPort(context);
    }
   Log.i("代理信息","proxyAddress :"+proxyAddress + "prot : " proxyPort")
   return (!TextUtils.isEmpty(proxyAddress)) && (proxyPort != -1);
}
特征

设置手机代理后,APP无法获取网络数据。

解决方案
方案一

适合在 PC 电脑上进行。通过修改 host 文件,让客户端认为代理服务器就是目标服务器。比如客户端请求 xxxxxx.com,我们的代理服务器是 192.168.3.9:80,那就在 host 里面添加 "192.168.3.9 xxxxxx.com" 然后代理服务器收到请求后在转发到 xxxxxx.com。

方案二

适合移动设备或 PC,简单来说就是使用 VPN 将终端设备的流量转发到代理服务器。VPN 软件上添加一个 HTTP 服务器,就是代理服务器的 IP 和 端口,然后设置全局代理,这样所有的请求都会走 VPN,也就是走代理服务器了。这样就可以抓包。亲测有效。

原因2——# No Proxy

除了上述情况外,有些 app 默认就是不走系统代理,或者某些关键的请求不走代理,实际情况还真不少,这种情况下,设置了代理也没用。
以下是一段使用No Proxy参数发起网络请求的代码:

public void run() {
    Looper.prepare();
    OkHttpClient okHttpClient = new OkHttpClient.Builder().
        proxy(Proxy.NO_PROXY).      //使用此参数,可绕过系统代理直接发包
        build();
    Request request = new Request.Builder()
        .url("http://www.baidu.com")
        .build();
    Response response = null;
    try {
        response = okHttpClient.newCall(request).execute();
        Toast.makeText(this, Objects.requireNonNull(response.body()).string(), Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
    }
        Looper.loop();
}
特征

设置代理后,APP依然能正常获取网络数据,但抓包工具无法抓到该APP的数据包。

解决方案
方案一

直接在系统底层使用iptables强制转发流量(ProxyDroid:全局模式)

方案二

以VPN形式设置代理(Drony,启动后手机状态栏上会显示VPN图标)

方案三

直接hook上面代码所在点,使其强制走代理,具体hook代码可到星球自取。

全局代理怎么设置?

我们介绍一下针对移动端设备的全局代理的设置。

Android系统

推荐从Google Play下载ProxyDroid,目前最新版本是V3.2.0,对于我们基本的全局代理抓包只需要做如下的基本配置即可。

对ProxyDroid进行配置(基本配置):
  • Auto Setting不勾选,我们手动进行配置。
  • Host:输入代理服务器IP。
  • Port:输入代理服务器端口。(HTTP默认808,SOCKS默认1080,具体视服务器情况而定)
  • Proxy Type选择代理服务器提供服务类型:我这里选择Socks5。
  • Auto Connect为当2G/3G/WIFI网络开启时,自动开启代理服务。不勾选,我们手动启动,以获取最大灵活性。
  • Bypass Addresses:相当于黑名单列表,选择排除代理的IP范围,有需要的可以自己手动设置。
    认证信息配置:
  • Enable Authentication :如果代理服务器需要账户、密码认证,勾选。
  • User :认证账户名。
  • Password :认证密码。
  • NTLM Authentication:NTLM/ NTLM2,Windows早期的一种认证方式,不用勾选。
    特征设置:
  • Global Proxy:一定要勾选,即为全局代理,代理所有App。
  • Individual Proxy:单独代理所选App ,勾选了(1)的不用管。
  • Bypass Mode:勾选了代表(2)中所选App不代理,勾选了(1)的不用管。
  • DNS Proxy:开启DNS代理。
    通知设置:
  • Ringtone :选择通知铃声。
  • Vibrate :选择连接发生变化时是否震动提醒。
iOS系统

我们使用小火箭Shadowrocket,简单好用,不过现在不太容易下载到对应系统版本的包。

添加节点

  • 我们点击右上角的+号添加节点
  • 类型一般选择HTTP
  • 添加服务器和端口即可
打开VPN

  • 选择我们刚才配置的节点,最前面显示小黄点
  • 全局路由选择代理
  • 开启上面的开关即可

按照以上配置,我们就可以针对一些不走系统代理的客户端进行抓包了。

BurpSuite高级用法透明代理抓包(不用设置代理,不用安装证书)

路由重定向
原理

HTTP/HTPS的默认端口分别是80和443我们在BurpSuite并设置透明代理,模拟并监听这两个端口,在透明代理中应用认为我们用BurpSuite模拟服务器开放端口就是真实服务器,实际上将手机的TCP协议的路由都重定向到我们的电脑IP地址中进而BurpSuite会进行代理服务器转发。

操作
  • 添加80、443、8080端口,设置透明代理

    Pasted image 20220519175549.png
    Pasted image 20220519175619.png

    按照上面步骤依次添加其他几个端口:
    Pasted image 20220519175941.png
  • 接下来进入手机shell进行配置(手机需要root)
    iptables -t nat -A OUTPUT -d 0.0.0.0/0 -p tcp -j DNAT --to (电脑IP地址)   #设置重定向
    iptables -t nat -D OUTPUT -d 0.0.0.0/0 -p tcp -j DNAT --to (电脑IP地址)   #取消重定向

其他全局代理工具——Drony(不建议)

不管是Drony,还是上面介绍的ProxyDroid,其实都是一款VPN工具,即将手机上的所有流量都重定向到drony自身 ,这样drony就可以管理所有手机上的网络流量,甚至可以对手机上不同APP的流量进行单独配置。

安装drony

您可以在网络上搜索drony选择自己想要的版本进行安装,或者在到星球下载最新版,安装完成后打开软件如下图

开启代理抓包软件(我使用的是Charles)

我用了burp好像有点问题,两款抓包工具实现原理略有差别,有时候这个不行的时候可以试试另外的,说不定就有奇迹。
其他证书相关内容不做赘述,可参考之前的文章。

配置drony转发(左右划动切换功能页面)

点击选择Networks Wi-Fi 进入配置

选择我们手机连接的wifi
Pasted image 20220520083753.png
配置要为当前网络使用的代理入口(这里直接填写burp代理地址就可以),选择代理模式为手动(Manual)

注意Proxy type代理方式要选择 Plain http proxy

Filter default value 选择 Direct all ,然后点击下面的Rule设置应用规则

  • Network id处 选择当前wifi的SSID
  • Action 选择 Local proxy chain
  • Application 选择需要强制代理的APP
  • Hostname 及 Port 不填 表示所有的都会被强制代理,因为APP可能会使用其他的网络协议不一定都是http,可能不希望把所有流量都引流到http代理服务器,这个时候就会使用这个配置指定ip及端口才转发

完成后保存即可,然后返回到SETTING主页,滑动到LOG页,点击下面按钮,使其处于ON的状态(表示启用)

adb命令行设置代理

  • 设置代理
    adb shell settings put global http_proxy ip:端口
  • 关闭代理,建议第一种(三条都要执行)
    adb shell settings delete global http_proxy
    adb shell settings delete global global_http_proxy_port
    adb shell settings delete global global_http_proxy_host

    或者

    adb shell settings put global http_proxy:0

实验(失败)

我们可以用iptables命令查看经过上面的ProxyDroid配置之后的网络配置参数具体是什么情况,看看能不能通过iptables的命令完成ProxyDroid的配置,事实证明是可以完成对应的配置,但是结果不太一样,无法抓包的还是无法抓包,不知道问题出在哪里,有大神知道可以指导一下。

  • ProxyDroid配置后的参数:
  • 通过iptables命令进行配置:
    iptables -t nat -A PREROUTING -p tcp -d 192.168.43.0/24 -j RETURN
    iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 8124
    iptables -t nat -A OUTPUT -p tcp -d 172.31.253.158 -j RETURN
    iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to 8123
    iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to 8124
    iptables -t nat -A OUTPUT -p tcp --dport 5228 -j REDIRECT --to 8124

    经过以上命令后,配置参数和上图一致,但是还是无法达到ProxyDroid的效果。

拓展分析

无奈之下打算分析一下ProxyDroid代码,看看代码中具体怎么实现

所有工具可到星球下载。

参考文章:
1、https://blog.csdn.net/codezjx/article/details/8872071
2、https://blog.csdn.net/somenzz/article/details/124113506
3、https://blog.csdn.net/weixin_44575208/article/details/107345190?spm=1001.2014.3001.5501
4、https://xz.aliyun.com/t/9843
5、https://www.cnblogs.com/lulianqi/p/11380794.html

Pasted image 20220520084624.png
Pasted image 20220519182328.png

免费评分

参与人数 20吾爱币 +23 热心值 +16 收起 理由
jasondon + 1 + 1 我很赞同!
werner + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
junjunjs + 1 + 1 谢谢@Thanks! 真心感谢
naoguazi001 + 1 我很赞同!
下页生活的情调 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
_左畔 + 1 我很赞同!
1.shui + 2 + 1 我顶~~~~~
ksiv + 1 + 1 谢谢@Thanks!
miaoj29 + 1 谢谢@Thanks!
DQQQQQ + 1 + 1 我很赞同!
kelvar + 1 + 1 谢谢@Thanks!
h07799486 + 1 + 1 谢谢@Thanks!
杨辣子 + 1 + 1 热心回复!
Moical + 1 我很赞同!
asdnasiudn + 1 + 1 我很赞同!
chinawolf2000 + 1 + 1 热心回复!
manyou + 1 + 1 谢谢@Thanks!
li6893 + 1 用心讨论,共获提升!
兜兜风f + 4 + 1 谢谢@Thanks!
Danger_Robot + 1 + 1 MARK一下

查看全部评分

本帖被以下淘专辑推荐:

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

李潇遥 发表于 2022-6-14 09:47
咱、不帅 发表于 2022-6-13 20:49
我想咨询一下,如果不是通过https的包要怎么抓,比如我再打一个怪,要怎么抓到这个打怪的动作的请求数据?

此贴的重点是当一些 app 不走系统代{过}{滤}理时的解决方案, 解 https 包是代{过}{滤}理服务器软件需要解决的问题, win 上可以用 fiddler , mac 上有 charles, 具体方法版内应该有很多文章介绍了。
 楼主| Andy0214 发表于 2022-6-14 08:54
传闻中的喜哥哥 发表于 2022-6-13 18:19
抓包 这个问题  一下子出来好多数据  都不知道怎么筛选想要的数据

首先你肯定要知道你抓的客户端或者网站的域名信息之类的,然后根据基本的信息判断保留自己想要看到,如果你抓手机的包,那么只有手机的包,这样你可以卸载无关的app,或者强制停止程序运行,这样抓到的就只是正在运行的app的包了
Hmily 发表于 2022-6-13 16:18
 楼主| Andy0214 发表于 2022-6-13 16:26
Hmily 发表于 2022-6-13 16:18
不要加引流链接,具体排版有什么问题了?

我加在文中的图片,怎么都跑到最后面了

点评

我看你现在的正文好像没问题,是不是传多了,或者穿好了没插入到正文?  详情 回复 发表于 2022-6-13 16:55
441430954 发表于 2022-6-13 16:47
不太懂,我看好多APP需要卡密的东西,特别是一些手机游戏辅助,就是直接开代{过}{滤}理重定向到自己的接口,直接就破解了。。比如EY的验证
Hmily 发表于 2022-6-13 16:55
Andy0214 发表于 2022-6-13 16:26
我加在文中的图片,怎么都跑到最后面了

我看你现在的正文好像没问题,是不是传多了,或者穿好了没插入到正文?
 楼主| Andy0214 发表于 2022-6-13 17:24
Hmily 发表于 2022-6-13 16:55
我看你现在的正文好像没问题,是不是传多了,或者穿好了没插入到正文?

我在编辑里面看是没问题的,发布了就成那样了

点评

你贴图咋操作的?好像不对啊,缺少2个图对应的ID应该是: 我从文章搜没看到插入。 插入操作方法是这样:https://www.52pojie.cn/misc.php? ... &id=29&messageid=36 点一下图片就插入了。  详情 回复 发表于 2022-6-13 17:37
Hmily 发表于 2022-6-13 17:37
Andy0214 发表于 2022-6-13 17:24
我在编辑里面看是没问题的,发布了就成那样了

你贴图咋操作的?好像不对啊,缺少2个图对应的ID应该是:
2529960
2529942


我从文章搜没看到插入。


插入操作方法是这样:https://www.52pojie.cn/misc.php? ... &id=29&messageid=36

点一下图片就插入了。
YANGLIGHT 发表于 2022-6-13 18:06
电脑的全局代{过}{滤}理用什么软件,fiddler只能抓取网页的包,想抓其他软件的包怎么弄呢
传闻中的喜哥哥 发表于 2022-6-13 18:19
抓包 这个问题  一下子出来好多数据  都不知道怎么筛选想要的数据
咱、不帅 发表于 2022-6-13 20:49
我想咨询一下,如果不是通过https的包要怎么抓,比如我再打一个怪,要怎么抓到这个打怪的动作的请求数据?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 04:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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