不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

浏览器指纹检测破解办法与工具

近年来相关研究提出了浏览器指纹的获取和识别方法,借助于网页中的动态代码获取浏览器版本、字体、插件等用户指纹信息。但由于河览器指纹会随着用户的使用而发生变化,完全静态匹配指纹的方法无法完全识别变化后的指纹。

本文针对这一同题,提出了基于字符串相仪度匹配的升级浏览器指纹识别方法。该方法能够在用户指纹变化时,根据指纹信息的相似度来判断是否为同一用户的升级指纹。基于上述识别方法,我们实现了个基于升级浏览器指纹的用户识别原型系统,用于用户浏览器指纹的采集和识别,实验数据验证了该方法能有效地识别出升级浏览器指纹,也减少了错误增加的用户指纹数目。

关键词:浏览器指纹;静态匹配;相似度;升级指纹

随着计算机网络的飞速发展,Web站点逐渐成为当今人们进行日常信息交互的主要平台,而由于HTTP协议本身的无状态性,无法将用户访问站点的行为进行关联。为了支持Web应用中的用户身份识别和行为关联,

1994年 Lou montel-li提出了浏览器 Cookies这个概念,并被广泛应用于各种商业网站的用户识别中。与之相反的,用户为了防止自己的上网行为被跟踪,会启用浏览器的隐私模式、幽灵模式(等来删除或者控制 Cookies文件。

浏览器指纹的收集和识别最初是为银行开发,用于防止诈骗2。目前浏览器指纹已逐渐成为了一项提供给网站的服务,用于收集用户浏览器的特征数据,跟踪特定的用户3,提供了一种在无 Cookies情况下的用户识别方法。

对Web访问过程的信息交互进行了分析,发现浏览器可以向Web站点发送具有个体特征的信息,包括浏览器版本、操作系统、屏幕设置、字体等,而这些信息经过组合后就可以用来识别出用户个体。电子前沿基金会(EFF) Peter Eckersley搭建了一个专门用来测试浏览器指纹信息的站点 Panopticlick以验证浏览器指纹识别的可行性,验证结果表明浏览器指纹识别可以达到很高的识别率,可以和 Cookie一样的识别个体用户信息。

电子前沿基金会(EFF) Peter Eckersley搭建了一个专门用来测试浏览器指纹信息的站点 Panopticlick以验证浏览器指纹识别的可行性,验证结果表明浏览器指纹识别可以达到很高的识别率,可以和 Cookie一样的识别个体用户信息。

浏览器指纹技术也逐渐在现实的互联网中被广泛使用, Nick Nikiforakis等人对三大商业公司 Blue cava、 lovation、 Threat Metrix的指纹算法进行了分析。

把指纹分为了5种类别:浏览器定制;浏览器安全等级用户配置信息;浏览器类别和版本;操作系统和应用信息;硬件和网络信息7。随着浏览器的发展进步,逐渐会有新的技术和标准出现,现今HTML5逐渐的在浏览器端普及,据此 Keaton Mowery和 Hovay Shacham等人提出了 Canvas方法,实现了基于HTML5的指纹识别。),通过HTML5呈现的3D效果来获取GPU产生硬件指纹信息不同的浏览器以及不同的版本的 Javascript引擎也会产生一些细微的差别,这些差别又会产生一些不同指纹。例如有基于功能性的 Javascript指纹),还有基于效果区别的 Javascript指纹,可以根据特殊的字体以及不同浏览器引擎所显示出来的细微差别收集不同的指纹息。

很多事件会导致浏览器的指纹信息产生变化,在大部分的指纹算法下,升级浏览器版本、升级或更新浏览器插件、关闭 Cookies、安装了新的字体、连接了外接显示器影响了屏幕设置等都会使指纹信息产生变化。

还有些插件会关闭 Javascript等功能,来提高浏览器的安全性从而改变了浏览器的指纹信息文献中对浏览器指纹实验研究数据中表明,指纹的变化是比较快速的,实验采样了8,833个用户访问测试网站后二十四小时之内回访的用户中有37.4%的用户至少一个指纹信息发生了变化。

为了保证用户指纹的稳定性,即当用户的相关浏览器指纹信息发生一定变化时,依然能够识别相应的用户。一些站点使用指纹和IP地址联合起来确定用户的信息。这时指纹信息将携带不高于15-20bits的身份信息,保留如IP,子网等信息,在用户删除 Cookie和升级指纹后,仍能通过保存其中的IP地址吏新用户指纹但这种方法在家用动态IP地址以及校园网等公共网络环境中,会因为IP地址多变性或者重复性,导致此方法无法正常识别个体用户。

本文中提出了一种基于升级浏览器指纹的用户识别方法,该方法基于指纹字符串的相似度对采集指纹信息进行匹配,通过设定相似性阈值,当变动在一定的范围内时,判定为升级指纹,并完成相应指纹更新。实验结果表明该方法提高了浏览器指纹的用户识别的准确性和稳定性。

浏览器指纹与获取方式

常用的测览器指纹特征,包括以下7种主要的指纹信息:useragent、HTTP头信息屏幕分辨率、时区、浏览器插件、系统字体、 cookie设置。各种指纹特征的含义与获取方法如表1所示。用于获取浏览器指纹的方法包括HTTP、FLASH和Javascript。通过用户递交的HTTP请求信息可以获取表征浏览器特征的信息,包括浏览器类型版本(useragent)和可接收类型信息http_accept)通过页面中嵌入Javascript代码,在用户端执行时可以获取用户的插件信息( plugins)显示器设置信息(vdeo)、所属的时区信息等指纹( timezone)、 cookie接收设置信息。同时可以结合使用FLASH的方法获得用户已安装的字体信息( fonts)。

由于这些信息都与用户的个人使用习惯和应用环境有关,当组合在一起时可以有效地区分用户个体特征,因此被称为是浏览器指纹特征,可以用作用户识别的依据。

2 指纹特征的变化分析

浏览器指纹本质上是用户使用Web浏览器习惯的反应,那么也就导致了用户浏览器指纹信息会随着时间而发生着或大或小的变化。为了更加细致地观测不同指纹的变化情况,我们采集了187个用户在30天内的各指纹项的变化数据。根据实验结果我们观察到httpaccepttimezonescreen、 fonts这4项指纹变化很少,在我们的测试样例中这四种指纹在30天内没有发生更新变化。而 plugins、 useragent和 cookie设置信息则随时间有所变化。图1为测试样例中三种变化指纹随时间的变化情况。变化率是指采集的187个指纹中发生变化的用户的比例。

从图中我们可以发现,插件指纹 plugins是最容易发生变化的。这是因为用户上网时,一些应用往往会要求用户安装新的浏览器插件或者对已有插件进行更新,从而导致插件指纹发生变化。

useragent和 cookie的设置也是变化率相对较高的指纹,这是因为浏览器的自身更新会引起 useragent的变化,但由于浏览器的更新周期较长,所以相对于插件指纹的变化来说, useragent产生的变动也较少。cookie设置项的变动主要是由于用户使用隐私模式,暂时关闭 cookie功能造成。

其他几种指纹在我们的测试样例中保持了相对的稳定性,这也说明了用户在日常使用浏览器的过程中,对诸如时区httpaccept屏幕设置的操作较少,所以这类指纹变化很少,较为稳定。图2给出了30天内187个用户的浏览器指纹随时间的变化率,而这里的浏览器指纹变化是指任意一个指纹项发生变化。

测试结果可以看出,两次访问间隔10天的时候有将近23%的用户的浏览器指纹发生了变化,间隔30天将近51%的用户的浏览器指纹发生了变化。因此,采用直接匹配识别的方法会导致无法识别用户指纹发生变化后的指纹,发生变化后的指纹会被认为新的指纹,从而影响指纹的稳定性。

3基于升级指纹的用户识别方法

为了识别用户指纹的变动,我们提出了一种能够识别用户升级指纹的方法。该方法的基本思想是首先对获取的用户指纹信息与已保存的用户指纹进行Hash比对,若有匹配项,直接得到识别结果;若无匹配项,则逐条将采集指纹与指纹库中的指纹进行相似度比对,选取最大匹配度,当最大匹配度大于某个阈值时,则判定为采集指纹为该保存指纹的升级指纹。升级指纹识别方法描述如下:1)Hash比对Hash比对的目的是直接找出未发生变化的指纹,存在匹配项则不必进行相似性匹配,以提高识别的效率。具体方法是首先将采集得到的用户浏览器指纹信息做 Murmur hash运算,Murmur Hash是一种非加密型哈希函数,适用于长度较长的字符串具有高运算性能,低碰撞的特点。将得到的Hash值与指纹库中的已有浏览器指纹Hash值逐条进行匹配,若存在匹配项,则表示是回访用户,直接识别出该用户,退出。若不存在匹配项,继续执行2)步 2)相似度比对对于易变的指纹项插件信息和字体信息,由于这两种指纹是添加或删除式的变化,其变化后的指纹与原指纹具有字符串相似性,因此在识别方法中采用与指纹库中的指纹项逐条进行相似度计算的方法。

相似度计算的算法采用了经典的字符串之间相似度的计算方法 Levenshtein Distance算法,该算法通过计算两个字符串之间的最短编辑路径来计算字符串之间的相似度。得到的各项相似度用F表示。

依据公式(1)计算采集的指纹与指纹库中的每一已有指纹的相似度Rm其中aB,分别是各个指纹项的权值。选取其中最大的Rm值。3)比较最大Rm和相似度阈值R的大小,当Rm≥R,表示该指纹是升级指纹,录入升级指纹,替换原有指纹;反之则认为是新的指纹信息,直接录入新指纹。升级浏览器指纹识别方法的流程如图3所示。

实验结果分析

为了测试浏览器指纹识别方法的正确率以及升级浏览器指纹识别方法的可行性,我们搭建了一个测试网站,用于搜集每个访问用户的浏览器指纹信息并验证指纹的准确性和升级指纹的可行性。共搜集了187个用户在30天内的浏览器指纹信息我们对发生指纹变化的用户,进行升级指纹识别,其识别率如图4所示。图中间隔天数是指本次访问与上一次访问所间隔的天数,识别率为能够正确识别出变化了的指纹为同一用户的升级指纹的概率。三根曲线分别是在相似度阈值R分别取90,95,98时的识别率。考虑到指纹项在识别中的不同重要性,对不同指纹项取不同权值,即公式(1)中不同的3,和β,值。测试中对插件和字体信息的权值都设定为0.25,对HTTP头部的useragent和httpaccept都设定为0.15,video项的权值为0.1,而 timezone和 cookie设置项的权值为0.05。从图4可以看出,两次访问间隔天数的增加会导致识别率的降低。这是由于间隔的天数越长,浏览器指纹的变化幅度也会增大。阈值越大,识别率越低。当取阈值为90时,30天内有指纹变化的回访用户的识别率可达到85%以上。

在识别升级指纹的过程中也会发生识别错误的情况,即将某个采集到的指纹错误地识别为其他用户的升级指纹,将这种情况出现的概率称之为误判率。显然,阈值的设定会影响识别率和误判率,如果阈值设置较高,可以降低误判率,但识别率也会降低。而阈值设置偏低则可以提高识别率,但也增加了误判率。图5是针对几种不同的阈值下,测试了其误判率。三种阈值情况下,访问间隔30天内误判率都在8%以下。

普通的静态指纹识别方法具有很好的准确性,但指纹的轻微变动就会影响用户指纹的识别,同时会错误的生成新的指纹保存。而升级指纹算法只有当变化的指纹没有被识别出来的情况下才会错误地生成新指纹。

图6给出了使用升级指纹识别方法与常见的典型指纹识别算法即静态指纹识别方法指纹错误增加率的比较。指纹错误增加率是指错误生成的新用户指纹数与真实的总的用户数的比值。从图6中可以看出,使用静态识别指纹的方法任意细微的指纹变化都会造成系统无法识别,从而生成一个新的指纹。访问间隔越长,指纹错误增加率就越高当访问间隔达到30天时,指纹错误增加率达到了50%以上。而采用了升级指纹识别方法后,能够很好的进行指纹升级更新而不作为新的测览器指纹入库,在访问间隔达到30天时,指纹错误增加率小于8%。从而可以大大减小错误增加的用户指纹信息。

5总结本文

我们提出了一种基于升级浏览器指纹的用户识别方法,通过浏览器指纹的相似性计算,可以识别出升级指纹。通过原型系统对指纹信息的采集和计算,验证了该方法可以有效地识别出升级浏览器指纹,增强了浏览器指纹识别的有效性,也减少了错误增加的用户指纹数目。

赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » 浏览器指纹检测破解办法与工具

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏