夜神模拟器Android5.1中安装Xposed + JustTrustMe 客户端安装mitmproxy抓取某网站数据

时间:2024-02-29 21:16:03

产生原理
是这样的,当我们使用抓包工具抓包时,抓包工具在拦截了服务端返回的内容并重新发给客户端的时候使用证书不是服务器端原来的证书,而是抓包工具自己的,抓包工具原来的证书并不是APP开发者设定的服务端原本的证书,于是就构成了中间人攻击,触发SSL Pinning机制导致链接中断,所以我们无法直接抓到包。

常见的开启了SSL Pinning的APP大致分为两种操作:
1、服务端使用了某个权威证书颁发机构(CA)颁发的证书,并且在APP中校验证书是否正常;
2、服务端使用了CA颁发的证书或者自己给自己颁发证书,并且在APP中校验证书本身是否正常的,需要将证书与APP本体一同下发。有把证书混淆在代码里面藏起来的,也有直接放在资源目录下的。

SSL Pinning介绍

客户端在收到服务器的证书后,对该证书进行强校验,验证该证书是不是客户端承认的证书,如果不是,则直接断开连接。
浏览器其实已经这样做了,但是如“前面”所说,选择权交给了用户,且浏览器由于其开放性允许让用户自导入自己的证书到受信任区域。
但是在APP里面就不一样,APP是HTTPS的服务提供方自己开发的客户端,开发者可以先将自己服务器的证书打包内置到自己的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后,先使用内置的证书信息校验一下服务器证书是否合法,如果不合法,直接断开。
当然攻击者也可以通过把这个APP源码给逆出来,然后找到证书校验这段逻辑,给他干掉,或者干脆把证书信息换成自己的服务器证书信息,然后重新打包签名,但是一旦APP做了代码加密和混淆,这个操作也会变得比较难搞。
因此这样看来,通过预先把服务器的证书信息“绑定“在APP的native端,然后建立连接时使用预先内置的绑定信息进行服务器证书校验,同时使用足够的代码加密或混淆,是比较合适的解决办法, 这个搞法就是“ssl pinning”.

 

Xposed框架介绍:

Xposed框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。

 

 Xposed框架安装和JustTrustMe安装

 

python安装mitmproxy

 

pip install mitmproxy

安装完成后,开启一个mitmproxy的服务,比如执行命令mitmweb -p 8889,然后在浏览器或者移动端中进行mitm.it进行证书下载,否则会出现访问网站时证书不受信任,在windows系统中可以使用mitmweb、mimtdump查看分析网站接口

 

1. 查看本地电脑的ip地址,修改夜神模拟器中的wifi,修改网络改成手动, 输入IP地址和抓包工具的开启的端口号。

2. 将模拟器开始开发者模式,打开usb工具。

3. 输入adb devices,查看链接的设备名称。

问题:

  如何查看app的包名、appActivity、deviceName。

  设备需要修改执行程序才能连接到移动端设备等。

  

最后:一般爬取分为自动化操作app + mitmdump抓取流请求或者响应拦截,最终将数据存入指定数据库中。