通过分析浏览器中的外部协议处理程序进行识别

Fingerprintjs 库允许您根据屏幕分辨率、WebGL 功能、已安装插件和字体列表等间接特征以被动模式生成浏览器标识符,该库的开发人员基于对已安装的典型应用程序的评估提出了一种新的识别方法用户并通过检查浏览器中附加协议处理程序的支持来工作。 实现该方法的脚本代码是在 MIT 许可证下发布的。

该检查是基于对处理程序与 32 个流行应用程序的绑定的分析进行的。 例如,通过确定浏览器中是否存在 URL 方案处理程序 telegram://、slack:// 和 skype://,可以断定系统存在 telegram、slack 和 skype 应用程序,并使用此信息作为标志生成系统标识符时。 由于系统中所有浏览器的处理程序列表都是相同的,因此当更改浏览器时标识符不会改变,并且可以在 Chrome、Firefox、Safari、Brave、Yandex 浏览器、Edge 甚至 Tor 浏览器中使用。

该方法允许您生成 32 位标识符,即单独使用并不能实现很高的精度,但与其他参数结合作为附加功能是有意义的。 该方法的一个明显缺点是用户识别尝试的可见性 - 当在建议的演示页面上生成标识符时,右下角会打开一个小但清晰可见的窗口,其中处理程序滚动相当长的时间。 这个缺点在 Tor 浏览器中不会出现,在 Tor 浏览器中可以在不被注意的情况下计算标识符。

为了确定应用程序是否存在,脚本会尝试在弹出窗口中打开与外部处理程序关联的链接,之后浏览器会显示一个对话框,要求您打开关联应用程序中的内容(如果正在检查的应用程序是)存在,或者如果该应用程序不在系统上,则显示错误页面。 通过对典型外部处理程序的顺序搜索和对错误返回的分析,可以得出结论:系统包含正在测试的程序。

在适用于 Linux 的 Chrome 90 中,该方法不起作用,浏览器会为所有检查处理程序的尝试显示一个标准操作确认对话框(在适用于 Windows 和 macOS 的 Chrome 中,该方法有效)。 在 Firefox 88 for Linux 中,无论是在正常模式还是在隐身模式下,该脚本都会检测到列表中是否存在已安装的其他应用程序,识别准确度估计为 99.87%(执行的 35 次测试中有 26 次类似匹配)。 在同一系统上运行的 Tor 浏览器中,生成了与 Firefox 中的测试相匹配的标识符。

有趣的是,Tor 浏览器中的额外保护开了一个残酷的玩笑,并成为在用户不注意的情况下进行身份识别的机会。 由于在 Tor 浏览器中禁用了使用外部处理程序的确认对话框,结果证明验证请求可以在 iframe 中打开,而不是在弹出窗口中打开(为了区分处理程序的存在和不存在,同源规则阻止访问有错误的页面并允许访问 about:blank 页面)。 由于防洪保护,检查 Tor 浏览器所需的时间明显更长(每个应用程序 10 秒)。

来源: opennet.ru

添加评论