Fiddler利用Edxposed框架+TrustMeAlready来突破SSL pinning抓取手机APP数据 |
您所在的位置:网站首页 › edxposed和面具 › Fiddler利用Edxposed框架+TrustMeAlready来突破SSL pinning抓取手机APP数据 |
一、背景
在使用fiddler做代理抓取应用数据包时,如果要抓取到HTTPS数据,需要将fiddler证书导入到浏览器或手机。浏览器或手机设置好fiddler的代理地址,即可抓取到https数据包。 如果APP应用采用证书锁定后,将无法抓取到https数据,因为此时APP应用校验证书不通过,通常APP应用会断开网络连接,防止网络传输数据被抓取。 自从android 7.0之后xposed的开发者rovo89基本就不维护了,针对android 8.0的版本草草发布了一个测试版本撒手不管了。 现在越来越多的新机型出厂就是android 9.0系统,那么怎么才能继续使用xposed框架呢? xposed虽然死了,但是还有后来的Edxposed框架,Edxposed全称 Elder driver Xposed Framework,简称edxp。 Edxposed框架现在支持android 8.0 -android 9.0 ,如果是android 7.0或更早的版本,推荐使用xposed框架。 二、证书锁定证书锁定(CertificatePinning或SSL Pinning),即HTTPS的证书校验。HTTPS库在接收到证书以后,对证书进行校验,确保其跟自己保存的本地证书或硬编码数据相同,才可放行。否则视为被中间人监听,拒绝通信。 三、绕过证书锁定绕过证书锁定,可使用xposed框架下的两大神器来突破证书锁定。使用JustTruestMe就可以绕过证书锁定。前提是手机已ROOT并且安装好xposed框架。 四、Magisk手机ROOThttps://github.com/topjohnwu/Magisk/releases 版本:Magisk-v25.2.apk 教程:https://blog.csdn.net/u014644574/article/details/123501668 5、安装Riruhttps://github.com/RikkaApps/Riru/releases 版本:riru-v25.4.4-release.zip 复制zip文件到手机,在 Magisk 模块界面点击从本地安装,选择 zip 模块文件,安装后重启手机。 6、安装EdXposed框架https://github.com/ElderDrivers/EdXposed/releases 版本:EdXposed-v0.5.2.2_4683-master-release.zip 复制zip文件到手机,在 Magisk 模块界面点击从本地安装,选择 zip 模块文件,安装后重启手机。 7、安装EdXposedManagerhttps://github.com/ElderDrivers/EdXposedManager/releases 版本:EdXposedManager-4.6.2-46200-org.meowcat.edxposed.manager-release.apk https://github.com/Fuzion24/JustTrustMe/releases 版本:JustTrustMe.apk 我测试时使用 JustTrustMe 并没有成功,使用 TrustMeAlready 后成功。 https://github.com/ViRb3/TrustMeAlready/releases 版本:TrustMeAlready-v1.11-release.apk 安装好TrustMeAlready后,打开EdXposedManager的模块,勾选启用TrustMeAlready 大部分的app都可以用此方法解决ssl-pinning检测,不过有少部分app可能依然抓不到,需要专门去逆向app找ssl-pinning逻辑并解决。 9、测试代码后端源码https://gitee.com/gloweds/myhttps //https请求:https://192.168.137.1:8443/hello?name=123 @GetMapping("/hello") public String hello(String name) { return name; }该代码涉及到的ip需要替换成自己的ip地址,该代码使用的https单向验证。 测试发现,当信任所有证书,https变得毫无意义,中间人可以随意抓取数据。 10、测试代码移动端源码https://gitee.com/gloweds/httpsapp 打包后app:https://gitee.com/gloweds/httpsapp/raw/master/app/release/app-release.apk 测试时,将ip地址改成自己的ip,点击https按钮就行了。 11、fiddler配置
手机与电脑连接同一wifi,或者手机连接电脑热点。我这里手机连接的电脑热点。
手机浏览器输入上面的配置的地址:http://192.168.137.1:8888
小米手机在,设置 》密码、隐私与安全 》 系统安全 》加密与凭据 》信任的凭据 若要删除fiddler证书: 小米手机在,设置 》密码、隐私与安全 》 系统安全 》加密与凭据 》信任的凭据 》用户凭据 除了校验HTTPS证书防止中间人抓包以外,常见的方法还有通过检测系统代理防止抓包,其原理是检测到设备开启系统代理后,APP中通过代码实现禁用代理,以OkHttp框架为例,示列代码如下: /* * 检测代理 * 目前仅限OkHttp发出的请求 */ switch_check_proxy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ client = new OkHttpClient().newBuilder().proxy(Proxy.NO_PROXY).build(); }else { client = new OkHttpClient(); } } }); }很多APP中会设置如下检测,我就知道一款app被检测出代理就被直接重新转发到一个固定的ip:127.0.0.1:7000 String proxyHost = System.getProperty("https.proxyHost"); String proxyPort = System.getProperty("https.proxyPort"); if(!TextUtils.isEmpty(proxyHost)){ return new Proxy(Proxy,Type.HTTP, new InetSockerAddress(proxyHost, Integer.parseInt(proxyPort))) }为了绕过系统代理检测,可以使用iptables对请求进行强制转发或使用Proxy Droid,ProxyDroid全局代理工具就是通过iptables实现的,所以使用ProxyDroid开启代理,可以比较有效的绕过代理检测。手机root后,使用Proxy Droid 或Postern实现强制全局代理,让ssl代理证书生效,proxy Droid可以在UpToDown,ApkHere等的地方下载 另外一款软件Drony 不需要root,也不需要手机在 wifi 里设置代理。可以通过该 app 直接指定目标 app 才走代理,对其他 app 不可见 Drony镜像下载地址:https://www.apkmirror.com/apk/sandrob/drony/ Drony设置Drony英文翻译成繁体、简体对比如下: LOG(日誌):日志 SETTINGS(設置):设置 Wi-Fi(無線網絡):无线网络 Proxy type(代理類型):Manual(手冊/手動/手动) Hostname(主機名):ip地址 Port(端口):端口 Filter default value(過濾默認值):Direct all(引導全部/直连全部不做任何处理),也可以选择Deny all拒絕全部 Rules(規則):规则 Action(行動):Local proxy chain(本地代理鏈全部) Application(應用程序):应用程序 Filter default value(過濾默認值)是全局拦截设置,Rules(規則)是局部设置。 Rules(規則)的优先级高于Filter default value(過濾默認值)全局设置。 假如全局设置为直连,局部设置某个app为拒绝,那这个app所有请求都会被拒绝。 假如全局设置为拒绝拦截所有请求,局部设置某个app为直连,那这个app所有请求都会放行不会拦截。 方式一打开Drony,切换到“設置”(左右滑动切换),选择“無線網絡” 选择电脑热点,或者一个wifi(手机和电脑都要连在这个wifi下) 我这里手机连接的电脑热点,选择电脑热点。 设置代理的ip地址和端口 返回到日志,运行。 这样设置默认全都都有走代理。 方式二基础设置和方式一相同,多加如下配置 点击“過濾默認”,全局设置。 Filter default value(過濾默認值)是全局设置。 Direct all(引導全部):就是直连,转发,不做任何处理。 Deny all(拒絕全部):拒绝所有请求,在局部处理,防止不必要的请求干扰。我推荐这种。 点击“規則”,新增局部设置。 设置局部处理方式。 拒绝所有:拦截所有请求。 引導所有:直连,所有请求都放行,不做任何处理。 本地代理鏈全部: 所有请求,都会转发到代理ip和端口处理,也就是转发fiddler处理。 400 No required SSL certificate was sent 这个错误是双向认证,请求没有携带客户端证书, 这种要逆向app,一般在证书放在assets目录下,还需要动态调式找出客户端证书密码 涉及到的安装包,打包下载https://download.csdn.net/download/u014644574/87149375 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |