安卓7.0+https抓包新姿势(无需Root)

0x01 前言

在平常的安全测试过程中,我们都会拦截应用程序的HTTPS流量。通过向Android添加自定义CA,可以直接完成此操作。但是,从Android 7.0以上开始,应用程序不再信任客户端证书,除非App应用程序自身明确启用此功能。

在下面这篇文章中,介绍一个新的 Magisk模块,通过Magisk模块自动将客户端证书添加到系统范围的信任存储区,这样就可以完成对App应用程序的Https抓包了。

0x02 常规的HTTPS拦截方式

拦截Android上的HTTPS,只需以下几步:

下面这些步骤做完后,就可以查看浏览器与服务器之间发送的HTTPS流量了。

  1. 将Burp设置为您的代理
  2. 手机访问http:// burp
  3. 将Burp证书安装为用户证书
  4. 开始抓包
image

这种方法同样适用于应用程序的Https流量,因为在默认情况下应用程序会信任所有已安装的用户证书。

补充说明

厂商阻止Https抓包的方式:
阻止应用程序流量被截获的一种方法就是为应用程序本身安装专有证书。这就意味着在每个SSL连接上,服务器提供的证书将与本地存储的证书进行比较。只有服务器可以提供正确的标识,SSL连接才会成功。这是一个很好的安全功能,但实现起来是比较麻烦的,

0x03 Android7.0+的抓包方式

我们知道从Android7.0开始,默认情况下,应用程序已经不再信任用户证书。
在开发阶段,开发人员可以通过更改应用程序中的AndroidManifest.xml文件,来配置networkSecurityConfig属性,选择接受用户证书,即可完成对应用程序的Https抓包分析测试。

还有一种方法是反编译App,修改和重新编译应用程序,如果该App应用程序有加壳,加密,等配置,那反编译的过程将非常困难。可以在warroom.securestate.com上找到App的反编译教程。

还有另一种方法是将用户证书添加到系统存储中。存储目录位于:/system/etc/security/cacerts,包含每个已安装根证书的文件。但这是需要对/system/etc/security/cacerts目录有读、写的权限,正常的手机没有Root,是不具备此项功能的。如果把手机Root,并且这是一项非常危险的操作。

image

0x04 使用Magisk 系统接口

Magisk是一个“通用无系统接口“,可以在不改变系统本身的情况下创建系统的修改掩码。”Magisk不修改/ system分区目录,所以这是一个非常好的抓包解决方式,其中应用程序已经增强了root检测。通过目标应用程序来激活“Magisk Hide”,使Magisk变得完全不可见。

Magisk还支持相当容易创建的自定义模块。为了将任何用户证书识别为系统证书,我们制作了一个简单的Magisk模块,可以在我们的github上找到:https://github.com/NVISO-BE/MagiskTrustUserCerts

该模块的功能如下,非常基础:

  1. 查找已安装的用户证书
  2. 将它们添加到 / system / etc / security / cacerts目录

安装完后,Magisk模块的内容安装在/magisk/trustusercerts/上。此文件夹包含多个文件,但最重要的是系统目录。此目录自动与real/ system目录合并,实际上不会触及到/system分区目录。因此,/magisk/trusteusercerts/etc/security/中的所有证书都将以/system/etc/ security结尾。

该模块使用如下:

  1. 安装模块
  2. 通过正常流程安装证书
  3. 重启您的设备

安装后,证书将显示在系统范围的信任存储中,并受应用程序信任:

image

当然,如果应用程序自身已做了专用SSL连接,仍然无法拦截HTTPS流量,但这个小模块使Android7.0+应用程序的运行方式与Android之前的7.0以下应用程序相同。

英文原版链接: https://blog.nviso.be/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/

你可能感兴趣的:(安卓7.0+https抓包新姿势(无需Root))