引入了一种用于隐藏系统和浏览器识别的新技术

来自格拉茨科技大学(奥地利)的一组研究人员,此前以开发攻击方法而闻名 MDS, 网络幽灵 и 飞锤, 裸露 有关新的第三方分析技术的信息,该技术允许您确定浏览器的确切版本、使用的操作系统、CPU 架构以及使用附加组件来打击隐藏识别。

要确定这些参数,只需在浏览器中执行研究人员编写的 JavaScript 代码即可。 在实践中,该方法不仅可以用作间接用户识别的附加来源,还可以用于确定系统环境参数,以便有针对性地使用漏洞利用,同时考虑操作系统、体系结构和浏览器。 该方法在使用具有隐藏身份识别阻止机制的浏览器时也有效,例如 Tor 浏览器。 带有方法实现的源代码原型代码 发表 在麻省理工学院的许可下。

根据JIT、CPU和内存分配机制的特点,根据不同浏览器在JavaScript中属性状态模式的分配特征和操作执行时间的特点来确定。 定义属性是通过生成 JavaScript 中所有可用对象的列表来完成的。 事实证明,对象的数量与浏览器引擎及其版本直接相关。

函数 getProperties(o) {
变量结果 = [];
while (o !== null) {
结果 = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
返回结果;
}

例如,对于 Firefox,在文档中声明了对 2247 个属性的支持,而某些属性的实际数量,考虑到未记录的属性,是 15709(在 Tor 浏览器中 - 15639),对于 Chrome,声明了 2698 个属性,但是 13570实际上提供(在 Android 版 Chrome 中 - 13119)。 属性的数量和值因浏览器版本和不同操作系统而异。

某些属性的值和存在可用于确定操作系统类型。 例如,在 Kubuntu 中 window.innerWidth 属性设置为 1000,在 Windows 10 中设置为 1001。在 Windows 上,window.navigator.activeVRDisplays 属性可用,但在 Linux 上不可用。 Android提供了很多具体的调用,但是没有window.SharedWorker。 为了识别操作系统,还建议使用 WebGL 参数的分析,其状态取决于驱动程序。 此外,调用 WEBGL_debug_renderer_infoextension 可以让你获得有关 OpenGL 渲染引擎的信息,每个操作系统都不同。

为了确定 CPU,使用了对各种典型代码块执行时间差异的评估,其处理取决于指令集的体系结构,同时考虑了 JIT 的行为(确定有多少 CPU 寄存器将涉及,在这种情况下,JIT 将生成具有优化和涉及扩展指令的高效代码,如果不是)。 为了判断内存分配系统和操作系统的类型,还测量了各种结构在内存分配时间上的差异,可以用来判断内存块的大小。

将脚本执行期间确定的参数与预测试环境的典型参考值进行比较。 在测试过程中,开发的技术可以准确地确定 40 种不同的测试环境,确定使用的浏览器版本、CPU 制造商、使用的操作系统,以及它是在真实硬件上运行还是在虚拟机中运行。

另外,还指出了定义浏览器插件甚至个别插件设置的可能性,包括旨在阻止隐藏识别方法或隐私浏览活动的插件。 在所提出方法的上下文中,此类添加成为识别数据的另一个来源。 添加是通过评估由添加引入的原始环境参数的扭曲来确定的。

在其他识别方法中,可以注意到对此类间接数据的考虑,例如 屏幕分辨率, 支持的 MIME 类型列表, 标头特定选项 (HTTP / 2的 и HTTPS), 建立的分析 插件和字体,特定于视频卡的某些 Web API 的可用性 产品特点 使用 WebGL 渲染和 帆布, 操纵 使用 CSS,分析使用的特性 и 键盘.

来源: opennet.ru

添加评论