| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android路由重定向+透明代理抓App包 -> 正文阅读 |
|
[移动开发]Android路由重定向+透明代理抓App包 |
前言前几天发了篇帖:https://www.52pojie.cn/thread-1492439-1-1.html 其中简单罗列了最近抓包的一点思路。发出后收到很多反馈,称有点乱、不够详细等。这里承认写的比较草率,也没有认真排版。所以打算重新做人。这次加餐打算只着重介绍我的通杀方法。行不通的,可以去上篇帖子看一下其他思路。 这里还想在开头说一下自己的一点拙见,放在最后怕看官们坚持不到。我自己在抓包的过程中,也有碰到过突然抓得到,突然又g了的情况。不可否认里面有我对原理认识不够深刻的因素,但同时,我觉得抓包,或者说逆向,作为一种黑盒测试,在现在各种App,特别是大厂,风控防御水位日益升高的情况下,出现问题也是难免的,重要的是放平心态。 思维导图? 怎么算抓包失败及失败原因我认为有两种失败: 1、抓不到。即抓包界面空空空空如也。 2、看不到。即抓包界面空空空空如也。 这里你可能以为我又草率了,但其实没有。因为两种失败在抓包工具界面的表现效果是一样的。下面我详细解释一下。 大家都知道最基础的手机抓包方案:手机电脑置于同一网段下,a.手机设置中配置wifi代理,b.手机安装中间人的证书。这两种失败恰恰对应了ab两步操作。 抓不到,对应a:是指你想要的数据包,压根没有经过抓包工具这个中间人,因此界面空空如也。为什么呢?因为它被发现了。我们在设置中配置的wifi代理,其实只是给了手机一个option,选择,所谓选择,就是我不选也可以。那App为了不被中间人抓到包,自然不会走你给的这条路,而是选择NoProxy。 看不到,对应b:该情况虽然也是在抓包界面什么都没有,但抓包工具会给你“友好”的提示。如Burp中,送你一堆certificate_unknown的alerts;Charles中,抓到的包前面有个红叉。其原因牵扯到两个关键字:https、证书。若证书不被信任,https连接就无法实现。在操作b中,安装的证书属于用户证书。那问题就来了,Android7.0及以上,默认只信任系统证书。同时,除了系统证书校验,还可能存在单向校验,即App自定义证书来校验;双向校验,App与服务端彼此校验。凡此种种,都会导致https抓包失败。 了解了失败,下面了解一下成功。 怎么抓到路由重定向+透明代理介绍:最推荐,最简单,需要root。 原理:通过控制手机iptables,我们将手机的流量全部转发到电脑。同时,电脑端的抓包工具开启透明代理模式,让App以为自己仍在与服务器直接通信。 操作: 1、不用去设置中配置代理! 2、路由重定向:手机电脑置于同一网段下,手机开启adb服务。电脑中执行以下命令: adb connect [手机ip] adb shell $ su # iptables -t nat -A OUTPUT -d 0.0.0.0/0 -p tcp -j DNAT --to [电脑ip] PS:取消重定向将-A改为-D。adb过程中出现问题的,可能是手机的adbd服务没有成功启动。可以借助一个小工具app:ADB工具安装器。它可以一键开启adb服务,同时也提供手机命令行的功能。 3、透明代理:不同于配置wifi代理到抓包工具监听的端口,让所有流量都流经它,所谓透明,是让App以为自己在正常地与服务器通信,因此,该发往a端口的报文还是发往a。我们要做的就是监听这些端口,比如80和443。以Burp为例,作出如下配置。其中的Invisible选项,就是通过DNS污染让App认为我们的中间人就是服务器。 4、配置好后,就能抓到NoProxy请求了。 怎么看到到此为止,本文富有技术含量的部分实际已经结束了,剩下的属于老生常谈,我就不展开讲了。 系统校验证书前面基础方案提到,我们安装的中间人证书作为用户证书已经得不到系统的信任。那解决办法也很简单,只要让用户证书变成系统证书就行。 这里我推荐使用Magisk的模块https://github.com/Magisk-Modules-Repo/movecert。安装证书后重启,它会帮你搞定。 单向校验证书大家熟知的方法是使用Xposed的JustTrustMe模块,但它已经很久没有更新了,可以尝试珍惜大佬的JustTrustPulsh:https://bbs.pediy.com/thread-254114.htm。 尾声以上三步,能够抓到大部分App的包(双向校验除外)。 感觉逐渐掌握了水文的技巧。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:02:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |