首页
社区
课程
招聘
移动安全抓包笔记
发表于: 2021-4-6 20:17 15065

移动安全抓包笔记

2021-4-6 20:17
15065

首选抓包工具是非常多的,抓包的手段也是非常多,在本文中主要是结合实际的使用场景和工作需要,选择较为常见的抓包方式和工具。同时,现在开发者的安全意识也是在逐步加强,对流量的保护上也是在下苦功夫,因此针对不同的保护选择不同的绕过方式。本文大致分为以下两个部分:
1、抓包工具的使用和环境的搭建
2、常见的绕过解决疑难杂症

参考:
1、https://xz.aliyun.com/t/6551
就上面的参考文章中已经提到很多工具抓包,我这里就直接重复讲解,直接进入正题,我在抓包过程中经常使用的工具。

这个抓包工具相信都知道,可想而知其功能的强大,并且该工具的社区也是非常活跃,WEB必备工具之一,更新频繁。
首选我们来介绍环境的搭建
我喜欢使用Linux系统来搭建我的分析环境,当然其他环境下搭建是没有任何问题的。
下载地址:
https://down.52pojie.cn/Tools/Network_Analyzer/
至于版本可以根据自己的喜好来选择,尽可能的选择比较新的版本
当然该项目是基于Java开发,那我们肯定需要使用到Java环境,首选对于我们开发人员来讲,可以直接使用JDK就可,笔者使用的JDK11版本
图片描述
注:比较新的BP是需要JDK8以上,不太支持JDK8
使用比较新的JDK版本还是有很多好处的,比如可以兼容JEB pro工具
如下图是笔者使用版本
简单的修改一下启动脚本就可以直接运行起来,非常方便
图片描述
具体的注册方式在这里就不过多的讲解。接下来启动工具开始准备抓包环境

图片描述
1、首选在Options中选择配置我们的代理
2、设置端口
3、配置代理服务的IP
其中重要的是配置我们代理服务器的IP
如果我们是本地抓包,那我们可以直接配置本地地址就可以,浏览器代理上这个IP便可以实现抓包。
如果是借助路由器抓包,也就是手机或者其他设备抓包,只要处于同一局域网中,我们配置的IP就应该是本机的IP地址,然后被抓包的设备代理上就可以实现抓包。
大致的结构图如下:
图片描述
但是目前可能我们只讨论可以使用WIFI来进行上网服务的应用和设备,如果应用的流量是通过4G、网线上网那我们使用BP就不是这样来进行抓包,BP抓包的数据流量是位于应用层,如果是使用4G上网或者网线可能就需要借助接下来会介绍的TCPdump、wireshark等工具对网卡进行抓包分析。
图片描述
随着HTTP进入到HTTPS时代,上面这样简单的配置是没有办法实现抓包的。
我们用一张图片来解释HTTP->HTTPS的差异
图片描述
HTTPS的实现就是在传输过程中添加了一个SSL/TLS环节,使得我们的传输的流量是处于加密状态。
那是如何加密的呢?当然这里不是我们深入研究的主题
实际上就是使用RSA、DES等加密方式,在网络建立之前会使用秘钥协商来商定对称加密的秘钥,通常秘钥协商是会使用RSA算法,或者其他非对称的加密算法来实现(比如蓝牙中的秘钥协商就不完全采用RSA),协商完成后我们就可以使用对称加密来进行加密我们的流量。(具体的原理这里就不展开分析,后面开文章进行单独讲解)
图片描述
既然如此就引入了CA证书的概念
证书的作用验证我们客户端和服务端,但是在很多开发者这里就不会很好的使用这样的机制,因此出现安全问题。相关的演变或者难易变化在第二节中讲解。
图片描述

我们可以在配置好代理后直接访问http://burp.cn就可以直接下载证书,并选择安装,这样安装的证书是用户证书,如果没有系统证书校验的情况下是可以实现多https流量抓包的。
当然我们也可以直接导出证书文件,将证书放置在系统证书的目录下来实现抓包。
图片描述
图片描述
导出der文件,并不能直接用于Android系统安装,如果想要安装用户证书,可以导出.cer后缀安装,如果想安装系统证书,我们还需要对证书进行处理。
我们可以去看一下我们的系统证书的格式是什么
下图使用的是 nexus6p Android 8.1.0
图片描述
如果想要转换成上面的形式,需要使用到openssl工具来进行转换,具体操作如下:
如果我们导出为der文件,先将der转换成pem文件
openssl x509 -inform DER -in burpder1545.der -out burpder1545.pem
然后我们再计算我们的hash值
openssl x509 -inform PEM -subject_hash_old -in xx.pem
然后可以直接改后缀,也可以使用cat xx.pem > hash.0生成我们的证书文件
注:这里的后缀是不一定为.0,如果出现hash值是一样的我们可以修改成.1、.2之类的。
如果为其他类型的文件我们可以使用下面的命令转换
openssl x509 -inform DER -subject_hash_old -in xxx.cer
证书生成后我们需要放到系统证书目录下,
如果是Android系统上,我们放置的位置是在system/etc/security/cacerts目录下
通常我们系统没有root权限的情况下是没办法操作的。
Android手机root情况下:
1、可以尝试重新挂载系统分区
mount -o remount,rw /
然后再复制我们的证书就可以成功。但是也是有失败的情况。这个时候建议推荐使用第二种思路
2、使用magisk插件
root的手机上,我们是可以任意折腾的,站在系统的高度下看APP可谓是降维打击。
https://www.freebuf.com/articles/terminal/158492.html
https://github.com/Magisk-Modules-Repo/movecert
当然使用未root的手机上也是可以实现,只是复杂一点
非手机设备上(比如车机、其他搭载Android系统的设备)
在这样的情况下我们想要移动证书就显得局促。
同样的使用Android手机端的第一种办法也是可以达到目的,前提是有root权限
如果不能重新挂载Android系统的根目录,可能想要绕过校验系统证书抓包的方式就不太可能。但是想要抓取流量也是可以实现的,比如使用frida hook + tcpdump来实现https流量抓取。
回归正题,在这里我们还是假设我们系统证书也是可以实现的,继续展开研究。
既然证书已经安装完成,那我们如何抓取的https流量,充当中间人攻击的呢?
我们还是用一张图片来解释这一个原理:
图片描述
如果开发者没有足够的安全意识,我们在这里是可以抓取到https流量的。在后面的章节中会讲解详细讲解如何防护又如何破除防护。
开始抓包
抓包之前我们是需要设置设备上的代理情况的,需要将我们待抓包的设备连接上我们的代理服务器中。
通常情况下我们有两种凡是来设置我们的代理:
1、更改wifi的代理设置
图片描述
图片描述
修改网络中的高级设置,设置我们的代理。
填入我们的代理IP和port就可以实现代理抓包。
2、设置全局代理
第二个方法设置全局代理,需要使用到如下的命令
adb shell settings put global http_proxy 192.168.xx.xxx:8888
这样设置全局代理效果和上面的手动设置是一样的效果。

Finder抓包原理上和burpsuite是相识的,具体的操作也是相似,可能差异就在使用上面。我们还是简单的把环境搭建代理抓包证书安全讲一下。
在官网上我们可以看到fiddler支持多个系统,我们windows下为例进行安装。
基本上就是next下去就行
我们就直接安装证书,在点击Tools->option->https
图片描述
就会给我们提示请求安装证书。
设置连接
图片描述
这里主要是配置我们的端口
可以在我们的电脑中看到代理配置
图片描述
fiddler已经将我们本地的代理给设置好了,现在本地的流量就是可以直接抓取。
比如我们访问的流量
图片描述
那我们如何去配置抓取移动设备的https流量呢?当然是需要配置证书。
首选我们是需要让我们的设备连接上我们代理,设置代理的方法和上一个抓包工具是一样的。设置完成代理,我们可以在待抓包设备上访问http://ip:port的方式去下载我们的fiddler证书,进行安装即可。当然这里想要安装系统证书也是一样的方法。
配置代理可以参考上一个工具的配置方法。

如果在上面的方法都不好使的情况下,我们可以采用TCPdump工具来进行流量分析,但是这种分析方法可能并没有上面的工具那么直接,需要借助wireshark工具来进行查看和分析。
通常情况下,使用tcpdump抓https流量是出于加密状态的,我们也没办法像BP一样设置中间人代理,但也不是不能分析,只是相对来讲复杂一点。
想要抓取https流量并且分析,这里推荐一种方法:
https://www.52pojie.cn/thread-1405917-1-1.html

在这一小节中主要就是从防护的难度从低到高进行讲解,攻防兼备。

这中情况通常是出现在测试版本中,为了方便开发者自己测试,发布版本中也不一定不存在这样的情况。忽略证书校验到底是什么意思呢?我们还是用图片的形式来进行说明。
图片描述
那这样的情况下,https流量和http流量是一样的效果,实际上达到的效果是信任所有的证书。我们以okhttp为例:
在okhttp中,默认是使用系统证书进行校验的。如果我们重写checkClientTrusted、checkServerTrusted、verify等方法,使其处理逻辑为空,便能够达到忽略证书校验的目的。
图片描述

证书都忽略了,那我们想要抓包不是直接代理上就可以抓包嘛。不存在什么对抗之法。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 11
支持
分享
最新回复 (8)
雪    币: 178
活跃值: (1306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2021-4-7 17:30
0
雪    币: 183
活跃值: (228)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢分享
2021-6-26 11:24
0
雪    币: 336
活跃值: (767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢分享
2021-6-29 01:43
0
雪    币: 202
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
搞了很多,最后请问magisk怎么防检测?
2021-7-29 22:31
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
mark 感谢分享
2021-7-29 22:54
0
雪    币: 631
活跃值: (3006)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
7
讲的很全面,感谢分享
2023-4-3 10:40
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
楼主,想请教下国密流量怎么用bp抓包啊
2023-4-12 14:07
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持一下
2023-4-17 21:16
0
游客
登录 | 注册 方可回帖
返回
//