逻辑让我崩溃之日常APP抓包几法

#0x00 日常BB

文章首发是在先知社区“逻辑让我崩溃之日常APP抓包几法”

还是把自己平时发现的,自认为有点意思的点罗列出来,班门弄斧,师傅们别笑话→.→

本次想分享的是关于自己遇到的一些关于app测试抓包遇到几种状况,同时也看到好多身边的小伙伴很多时候根本不会折腾这些方式,另外自己暂且还没有将技术探究到多深入,希望文中的点能让人有所可用。

#0x01 关于代理

代理原理1

首先,通过一张图我们可以看到我们日常抓包一直说的“设置代理”,“走代理”到底对于C/S或者B/S的交互来说意味着什么,扮演了什么样的角色。

接着,我们设置代理之后,通过导入证书之类的操作之后就可以抓到http、部分https的包了。我尝试用两张图来直观展示代理软件证书的作用(此处是导入burpsuite证书),浏览器导入证书之后访问网站的情况截图,其实这中间涉及到ssl的一些点,我把参考文章放到了最后,有需要的可以看下具体的认证过程,如下图所示:

抓包原理1

抓包原理2

那么测试过程中有一些情况是只“导证书、设代理”这些是不够的,需要在借助一些其他工具或者使用其他方式的。我们说说这些情况下我们可以做些什么突破或绕过限制:

#0x02 借助框架&模块

如本标题所言,just trust me,我们自然要说的就是xposed的一个好用的模块JustTrustMe

json

**Point: disable**

An xposed module that disables SSL certificate checking for the purposes of auditing an app with cert pinning

使用的话已经有特别多的文章介绍使用,以夜神的安卓模拟器为例,也就只需要我们做几个简单的操作:

  1. 安装夜神模拟器;
  2. 安装xpose框架;
  3. 安装JustTrustMe
  4. 激活JustTrustMe模块;
  5. 操作结束;

你可以随便找一个常用APP测试即可,有很多部分App是使用此框架和模块后即可抓到包了。

与JustTrustMe类似的,SSLUnPinning自然针对SSLPinning而生,他也是Xpose下的一个模块。

json

**Point: bypass**

Android Xposed Module to bypass SSL certificate validation (Certificate Pinning).

在安装xposed之后

  1. 安装SSLUnPinning
  2. 激活SSLUnPinning模块;

结合上面的justtrustme模块使用,效果很好。

0x02 借助代理软件

这里的代理软件指的场景是结合安卓模拟器,不在模拟器本地设置代理,通过宿主机将模拟器流量全部代理到抓包软件的方式。

json

Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。

Proxifier可以通过设置,将进程流量定向到特定的代理,简单说就是可以全局走代理,也可以单独进行走单独代理。网上文章倒是有不少。我想要说的就是针对模拟器不能设代理的问题,将夜神的流量代理到抓包软件去。

你应该见到过这几种提示吧?

“XXX请检查是否设置代理” “XXX已停止运行”

已停止运行

应用运行检测本地是否设置代理,并终止应用运行,说白了就是不允许本机设置代理运行。OK,fine,那就不设置代理了呗。这时候Proxifier不就正好派上用场了么。

  • 找准进程

windows夜神1

  • 设置proxy

windows夜神2

  • 设置rules

windows夜神3

  • 验证结果

windows夜神4

试了一下,Mac下不管是夜神还是Genymotion都是同一个进程。

  • 找准进程

找了半天,中间像下面的图中看到的,一直设置进程为“Nox Player”,其实mac下的进程添加的时候应该是VBoxHeadless

Mac夜神1

  • 设置proxy

Mac夜神2

  • 设置rules

Mac夜神3

  • 验证结果

Mac夜神4

0x03 借助“虚拟机”

那,如果应用App运行时不允许在模拟器运行,直接终止运行咋个办,那你可以试试虚拟机了,也就是VirtualXposed

virtualxposed1

VirtualXposed一开始应该是为了让像我一样的不想刷Xpose、获取root一顿操作的懒人设计的,像图中看到的克隆应用等功能,或者是真实物理机双开应用。模拟了一个虚拟环境,其中还运行着Xpose,还有自己可以安装其他模块。

对于测试而言,正好应用于众多应用App模拟器不允许运行的状况,VirtualXposed内运行应用,手机设置代理,避免了模拟器运行的检测,同时可以设置代理进行抓包测试。

傻瓜式操作,所有功能大概一看就知道了。

  • 同一版本VirtualXposed,不同Android版本运行会直接影响是否可以抓到包

某次测试中,Android6以上机子使用VirtualXposed抓不到包,我Android6的红米note3可以

  • 同一Android,不同版本VirtualXposed影响一些Xpose module是否可以运行(不排除是因为我的Android6版本低了)

某次测试中,装了高版本的VirtualXposed导致Xpose module运行出现bug,无法脱掉App的壳儿,换了低版本的VirtualXposed可以。

  • 不用Android版本、不同版本VirtualXposed、不同xpose module开发时间,将这三者不同的方式组合可能会因为兼容性等问题导致运行不畅、不能抓包的问题,得折腾折腾

0x04 扩展一点

这么长时间,被动扫描这么好的方式,可以结合在我们的抓包过程,

  • 配合burpsuite插件passive-scan-client,将流量也全部抓发到chaitin的xray或者其他被动扫描服务

  • 将Proxifier代理出的流量直接全部代理到xray进行扫描,毕竟Proxifier相当好用

0x05 参考