MENU

Give me your app - Schemeflood攻击

July 10, 2021 • Read: 4140 • 安全攻防阅读设置

0x01 背景介绍

同往日在那个夜高风黑,吃瓜冲浪的晚上,看到了一篇前端识别用户安装了哪些应用文章,奈何当晚精神不佳,阔乐见底,草草收藏关灯睡觉。今日绵绵细雨,无所事事,逛逛收藏,想起此事,遂灌满阔乐,音乐走起,研究一番,分享愚见,如有不妥,见谅指导!


0x02 什么是Schemeflood攻击

在理解Schemeflood攻击之前需要先了解下Deeplink以及实现Deeplink的URL Scheme方式。

  • Deeplink
Deeplink(Deferred Deeplink)深度链接技术是对于已经安装了APP,并把需要的参数通过URL的形式传递给APP,指向特定的页面,帮助开发者实现从外部链接到App内部页面的直接跳转的一项技术;深度链接打破了网站与App间的壁垒,成为实现网站与App相互跳转的桥梁。当我们点开App里的链接时,可以跳转到Web页面,也可以通过深度链接实现从任意渠道(微信、微博、短信、邮件、浏览器、搜索引擎、其他App)到应用内容页的一键跳转。Deeplink广泛用于移动设备,但也可在桌面浏览器中使用。Deeplink技术通常运用于APP社交分享、App广告引流、App裂变活动、Web to App、分享效果统计、沉默用户唤醒等场景,对广告引流、活动推广、新闻类、电商类、游戏类、视频直播类APP的引流推广。

很常见的场景,平时我们微信中给朋友分享一条淘宝链接,他点击后如果他的手机上有淘宝app直接跳转到对应的商品页面,如果没有该app则调整到下载提示页。这种打破web和app之间壁垒跳转直奔主题的支撑技术就是Deeplink

  • URL Scheme

Deeplink只是建立起了桥梁,但具体怎么去实现Deeplink,在不同操作系统下有着不同的实现方式,例如有Universal linkMobLinkURL Scheme等,其中和Schemeflood攻击相关的URL Scheme,它同URI定义差不多例如"weixin://dl/moments",weixin scheme表示我要打开什么APP,//后面uri表示打开具体页面的路径,约定这一套语法规范的即URL Protocol,就是一种针对APP中的URL协议,也叫伪协议。APP中的伪协议约定好了,此时在操作系统中只要进行和这些伪协议绑定关联即可实现跳转,Windows通过注册表进行关联,在MAC下通过每个APP下的info.plist配置文件进行关联。

了解了URL Scheme和Deeplink之后,Schemeflood也就很简单了,收集应用的scheme url,然后依次进行遍历枚举,如果弹框onfoucs聚焦到了则判定存在,反之判定没安装。


0x03 复现攻击Demo

  • FingerprintJS Demo

fingerprintjs/external-protocol-flooding: Scheme flooding vulnerability: how it works and why it is a threat to anonymous browsing

https://609d9f4d79c4f6000700782c--boring-visvesvaraya-dbefd4.netlify.app/

  • Drivertom Demo

TomAPU/schemeflood: schemeflood demo


0x04 危害及利用场景

评估一个敏感信息攻击行为的危害我觉得主要有几点:这个攻击它获取了什么,为什么要获取这个,获取了这个有什么用,能够在什么场景下用等等,结合Schemeflood来看就是访问一个链接然后获取到了用户安装的应用列表,应用列表直观感觉好像也没多么敏感,也不像访问网页获取到了手机号那种敏感程度,但我觉得应用列表潜在攻击的姿势还是挺多的,它的价值就有点像之前有人讨论用户名算不算敏感信息一样,它可能不会直接带来危害,但会成为一个攻击的潜在切入点

  • 通过获取的APP应用信息生成出相对唯一的访问标识,然后进行追踪访问用户

从别人的测试结果来看Schemeflood可以在Tor、隐身模式下识别出安装的应用信息,因此也可以用来做匿名的追踪取证。

Tor浏览器中的指纹:间谍和识别的新技术|英特尔®开发人员专区ITIGIC

利用第三方协议漏洞实现跨浏览器跟踪用户(主流浏览器甚至 Tor) - V2EX

  • 通过获取的应用信息类型结合算法能够大致猜测出用户身份画像

假设识别到用户安装了WebStrom、PostMan、Bilibili,猜测可能是一位20-35岁左右做前端的二次元。

  • 通过获取的应用信息数据关联以及寻找特征,放在蜜罐中实现溯源攻击者

假设在一些定向人群的论坛、网站进行采集相对唯一标识的身份ID,然后放在蜜罐中映射比对身份ID方式溯源攻击者,这有点类似WIFI探针,通过建立mac地址和手机号对应关系进行关联识别出访客身份。

  • 通过获取到的应用信息,可以有针对性的对这些应用漏洞进行水坑

XMind 2021 11.0 Beta 1 XSS漏洞导致命令执行

TeamViewer 全系版本曝无需密码即可入侵你电脑漏洞(CVE-2020-13699)

  • 通过获取到的应用信息,控制网站访问权限

假设识别到用户安装了BurpSuite,猜测可能是做安全的,那么这个网站我就直接不给你访问了或者跳转访问我的蜜罐,感觉这个用在护网也怪不错- -。


0x05 利用的局限

Schemeflood在利用的时候会存在以下的几点缺陷:

  • 比较依赖应用是否注册了伪协议,如果没有注册即识别不了,同时也依赖于大量的应用伪协议指纹进行遍历;
  • 在遍历应用伪协议时间比较长,并且必须要打开新的浏览器窗口,利用不够隐蔽;
  • 测试下来还是有误报的,并且有些应用卸载了不会取消注册的协议也会产生误报;

0x06 防护的方式

Schemeflood攻击在谷歌以及一些社交论坛上发现还是比较少的,根据作者的介绍这个攻击其实已经存在5年多了,但感觉并没有被太多重视,猜想应该跟它获取到的信息不能带来直接危害也就算一个切入口,并且采集也不太隐蔽有关,不过这并不影响平时访问网站时候需要多注意一些,特别是遇到打开一个网站就疯狂弹小窗口的情况,你以为它在跳广告可能夹杂在过程中开始收集你的应用列表了,以下有几条可以避免中招的防护方式:

  • 访问一些可疑站点用纯净虚拟机,或者直接禁掉JS;
  • 发现打开一个站点在频繁弹框的时候果断关掉,然后看看源网站JS做了哪些操作;
  • 有些必备软件用不到它的URL协议可以直接改掉;
  • 升级到最新的浏览器版本;

0x07 过程中的小彩蛋

  • 对嘛,没有任何理由完美的检测出每个应用 - -。

  • 有人问为什么命名叫scheme flooding,也有人一板一眼回答为什么叫scheme flooding,一片祥和~~

  • 网友所见略同,沮丧+1 - -。


0x08 参考链接

Schemeflood原理 - 玉明-BLOG

drivertom (@drivertomtt) / Twitter

Cross-browser tracking vulnerablity in Tor, Safari, Chrome and Firefox - FingerprintJS

fingerprintjs/external-protocol-flooding: Scheme flooding vulnerability: how it works and why it is a threat to anonymous browsing

---The END---
  • 文章标题:《Give me your app - Schemeflood攻击》
  • 文章作者:Coco413
  • 文章链接:https://coco413.com/archives/92/
  • 版权声明:本文为原创文章,仅代表个人观点,内容采用《署名-非商业性使用-相同方式共享 4.0 国际》进行许可,转载请注明出处。
  • Archives QR Code
    QR Code for this page
    Tipping QR Code