-
摘要:
软件逆向分析作为网络空间安全领域研究的核心支撑技术,在软件漏洞分析、恶意代码行为分析等方面有着广泛应用. 二进制代码的模块划分是该领域研究中的关键问题,通过将复杂或者大体量软件合理划分为若干模块,对于帮助分析者快速、准确理解软件结构与功能,提高分析效率起着重要作用. 对此,常见方法是将代码中的函数及其调用关系看作复杂网络,通过社区发现算法来进行函数聚类,实现模块划分,该类方法通常只考虑节点之间的连接关系,忽略了节点的属性、节点之间的相似度等信息,且对噪声和异常值比较敏感. 为了解决这些问题,提出了一种基于图嵌入的二进制代码模块划分(graph embedding based binary code modularization,GEBCM)方法. 该方法首先将软件系统抽象为属性图,然后通过带有注意力机制和排名机制的图嵌入聚类方法对函数节点进行嵌入表示并聚类. 通过聚类将二进制文件分组为更具有完整功能的独立部分,揭示了复杂程序结构中分离的模块语义信息. 在2个数据集上进行的实验评估,验证了所提出的GEBCM方法的有效性. 评估结果表明,相比其他二进制模块化工作,GEBCM的F1值平均提高10.2个百分点. 此外,在针对恶意样本的评估实验中,GEBCM能有效地划分出恶意代码的模块,表现出优秀的可扩展性.
Abstract:Reverse analysis as a key technology plays a vital role in cyber security. It helps analysts gain insight into the behavior of software and vulnerabilities detection, in order to effectively prevent attacks. The growing software scale and complexity urge some research to break down software into modules for rapid analysis via structural and functional information using community discovery algorithms. However, these studies just regard software as a social network consisting of simple nodes and edges missing valuable attribute information. We notice that the contribution of different features to the modular structure of the program is different and varies from samples. Inspired by the innovative application of graph embedding technologies in program analysis, we propose a binary code modularization method called GEBCM. The method transforms an executable program into an attributed graph, and employs graph embedding clustering methods with attention mechanism and ranking mechanism to embed representations and cluster function nodes. The result clusters group binaries into independent parts with more complete functions, revealing the semantic information of complex program structures. Experimental results show that GEBCM outperforms other modularization tools by revealing the original modular layout with an average of 10.2% higher F1 score. Additionally, in the new task of malware decomposition, GEBCM also exhibits better accuracy.
-
Keywords:
- clustering /
- graph embedding /
- program analysis /
- modularization /
- reverse engineering
-
Web新技术不断地更新迭代,以及信息化时代下用户信息的爆炸式增长,直接促进了Web追踪技术的高速发展. Web追踪技术通过为用户生成唯一的身份标识,实现对用户以及行为活动的追踪. 其最初目的是服务不同的网站应用追踪用户,分析挖掘用户行为特点,实现个性化推荐. 但追踪技术本身存在一定的安全问题,且易被恶意利用获取用户敏感信息. 随着用户隐私敏感度的提升和信息保护意识的增强,以保护用户隐私为目标的追踪防御技术也在不断地升级和快速发展.
自2010年浏览器指纹[1]技术的提出,Web追踪技术的研究趋势从Cookie等类型的在用户客户端(即浏览器)存储身份标识的有状态的追踪,进入了基于浏览器获取特征信息的无状态[2]的指纹追踪时代. 与传统的Cookie类追踪技术相比,指纹追踪技术摒弃了在客户端存储信息的形式,而是获取了较多具有用户个人特点的、多元化的特征信息,利用一种或多种不同类型的特征信息,生成唯一的指纹,在用户无感知的情况下进行隐蔽追踪. 现阶段Web追踪领域的学术研究较多专注于某项特定的追踪或防御技术,因此,本综述针对Web追踪领域的技术发展和研究进行了总结和分析,并讨论了现有技术发展的优劣势,对该领域的下一步研究方向进行了展望.
本文研究了2010—2021年期间Web追踪领域的技术发展,按照实现机制将Web追踪技术分为了存储型追踪技术和指纹型追踪技术,从追踪技术的起源、技术实现、发展现状等多个角度进行介绍分析. 着重分析Web追踪及防御技术的研究及实现方案,将Web追踪技术按照追踪范围划分为3个层次,描述了不同追踪范围所使用特征的特点和获取方式. 从防御技术的不同形态进行分类介绍,对防御的技术实现进行深入分类讨论. 着眼于Web追踪和防御技术2个角度,分析其技术上的优劣性以及当前面临的挑战和问题,指出未来可能的研究方向.
本文的主要贡献有4个方面:
1)介绍了Web追踪的起源和分类,从存储型追踪和指纹型追踪2方面介绍Web追踪技术的发展和特点. 简要描述了现阶段Web追踪技术的实现和发展历程.
2)针对近些年Web追踪技术的发展进行深入调研,按照追踪范围将Web技术追踪分为了单浏览器、跨浏览器、跨设备3个不同层次. 基于追踪范围分别介绍指纹中的特征获取技术,描述指纹关联算法并对现有的指纹追踪进行讨论.
3)深入研究Web追踪防御技术,按照形态可将防御技术分为扩展防御,浏览器内嵌防御,防御框架、工具或机制、构建防御对策或环境. 分别介绍不同形态在防御技术上的实现方式,通过对比防御能力以及抵御追踪的手段,分析了Web追踪防御的现状.
4)基于Web追踪技术和防御技术2个角度分析了技术发展的优劣势,以及面临的挑战和发展方向. 在追踪技术方面进行了唯一性和持久性讨论;在防御技术方面针对防御形态和技术进行对比,分析防御技术的优缺点,并指出现有技术无法完全防止指纹追踪.
1. Web追踪概述
早期Web追踪技术的出现是为了保持用户与服务器之间的会话状态,在用户浏览器客户端中存储一定的用户隐私信息,在交互式Web中对用户进行识别和区分. 例如Cookie,FlashCookie,EverCookie,HTML5中新型的存储型API等均使用在客户端存储身份标识的方式进行追踪,我们将这种技术统称为存储型追踪技术. 2010年电子前沿基金会(electronic frontier foundation,EFF)的专家Eckersley[1]提出的一项划时代的Web追踪技术——浏览器指纹,其基于用户浏览器获取设备的软硬件特征,并结合现有的存储型追踪机制,在服务器端对用户进行唯一性识别和追踪. 随后,Web追踪领域掀起了使用各种不同类型特征信息作为指纹来追踪用户的研究热潮,我们将这类追踪技术统称为指纹型追踪技术. 依据Web追踪的发展历史以及追踪技术手段的不同,本节将Web追踪技术分为2类进行概述:存储型追踪技术和指纹型追踪技术[3].
1.1 存储型追踪技术
Cookie诞生自1993年,是使用较为广泛且最具代表性的存储型追踪技术,其最有效的功能是在网站中保持用户状态,提供用户个性化服务. 但直至2000年网络隐私权的提出,Cookie才开始引起社会的关注,之后诞生了一系列以存储关键信息为手段的追踪技术,包括FlashCookie,EverCookie,随后HTML5新技术也开放了更多的权限给开发者[4],例如增添了可直接在浏览器中进行内容存储和数据库存储的API,如表1所示. 这些存储机制也为追踪提供了更加便利的条件.
表 1 存储型追踪技术能力分析Table 1. Analysis of Storage Tracking Technology Capabilities存储型追踪 使用范围(常规浏览器) 是否跨域共享 多位置置存储 是否多浏览器共享 存储时长 其他 Cookie 全部 是(可使用前后端技术实现) 否 否 设置过期时间 安全性较低 Flash Cookie 全部 是 是 是 默认无过期时间 已弃用 UserData Windows + IE5 否 否 否 设置过期时间 已弃用 EverCookie 全部 是 是 是(使用Flash Cookie机制) 可通过各种存储机制重建 已弃用 SessionStorage 除IE8以下版本
之外浏览器否 否 否 浏览器会话时效内 安全性较低 LocalStorage 除IE8以下版本
之外浏览器否 否 否 非主动删除不过期 安全性较低 Web SQL 部分 否 否 否 无限制 已弃用 IndexedDB 全部 否 否 否 无限制 安全性较低 1.1.1 Cookie类存储技术
HTTP Cookie通常存储在Web客户端特定目录下,通过在与Web服务器的交互请求中携带Cookie值来辨别身份. 在设置并存储 Cookie 后,当用户再次登录网站时,浏览器都会检查本地的Cookie值,在Web请求中携带Cookie值发送给Web服务器. 服务器返回用户对应的个性化信息和其他权限内资源.
Flash Cookie[5]同样是记录用户浏览网页时保留的信息,是由FlashPlayer控制的客户端共享存储技术Share Object,它永久驻留在用户计算机上,使不同的浏览器共用同一个Flash Cookie,实现实时数据共享. Flash Cookie使用多个存储位置,较为隐蔽且难以清除. Flash Player在2020年已经被正式淘汰.
UserData是微软为IE浏览器专门在系统中开辟的一块存储空间,可用于对数据进行持久化存储,除非手动删除,否则即使IE浏览器被关闭或者刷新,数据也能够重新被载入而不会丢失,并且永远不会失效. 微软已经放弃了对IE浏览器的支持,将内置浏览器切换为Chromium内核的Microsoft Edge浏览器.
EverCookie[6]又称为“僵尸Cookie”,是一种更甚于FlashCookie的浏览器持久化追踪机制,它使用多达10种以上的存储机制将Cookie持久化存储在不同的位置,当在某个位置的Cookie被清除后,还可以通过其他不同位置的Cookie进行恢复. EverCookie所使用的技术不仅包含HTTP Cookie,UserData,Flash Cookie,还囊括了HTTP头中的ETags和 HTML5中的SessionStorage,LocalStorage,IndexDB,Java硬盘写入漏洞等多个存储机制. Acar等人[7]早在2014年针对EverCookie的研究中,就发现了EverCookie启用IndexDB技术进行存储,但EverCookie的野心不止于此,未来可能还会加入超文本传输协议(Hypertext Transfer Protocol,HTTP)身份验证缓存、TLS会话恢复(TLS session resumption)标识符、HTTP公钥固定(Http public key pinning,HPKP)认证等存储形式.
1.1.2 HTML5新型存储型API
Web Storage[8]是HTML5提出的存储型API,包括会话存储SessionStorage和本地存储LocalStorage,可在用户客户端保存大量的数据,数据仅存储在客户端且不与服务器产生交互,每个域都有独立的存储空间. 其中SessionStorage仅在当前会话下有效,关闭了浏览器窗口就会被销毁;而LocalStorage的生命周期是永久的,关闭页面或浏览器之后,数据也不会被清除,除非主动删除数据,否则数据永远不会消失,且2种存储机制均遵循同源机制.
Web数据库存储包括Web SQL和IndexedDB[9]2种类型,提供了在客户端直接进行数据存储的能力,理论上没有存储大小限制. Web SQL是前端的独立的功能模块,具有与实际数据库基本一致的增删改查等操作. IndexedDB是为了弥补LocalStorage存储缺陷诞生的,是浏览器提供的非关系型本地数据库. 可储存大量数据,提供查找接口和建立索引,但不支持关系型查询语句. IndexedDB使用键值对存储数据,可进行异步操作,支持事务操作,受同源限制,存储空间大,支持二进制存储.
1.2 指纹型追踪技术
指纹型追踪技术,是一种通过浏览器获取用户设备暴露给网站的可见特征信息,生成唯一标识用户的指纹,来跟踪用户的方法. 当用户访问并加载Web网页时,网站利用浏览器的能力获取设备、软件相关配置、用户个性化信息以及Cookie等存储型追踪标识等,将这些特征Hash为一个唯一值传递到服务器作为用户的唯一标识. 其依托于用户浏览器对Web网站页面的渲染和执行能力,以及设备对浏览器权限和能力的支持.
1.2.1 特征获取与指纹生成
JavaScript和HTML5[10]的API为追踪者提供了无需经过用户同意可直接获取用户设备和软件信息的能力. 例如可通过Navigator对象获取浏览器的用户代理、首选语言、是否设置不追踪(do not track,DNT)等,Screen对象和Date对象描述了浏览器所处设备的信息,包括屏幕、时区等,如表2所示.
表 2 JavaScript对象的API及对应获取的信息Table 2. API of JavaScript Object and the Corresponding Obtained InformationJavaScript对象 API 获取的信息 Navigator(宿主对象) navigator.platform 系统平台 navigator.userAgent 用户代理 navigator.language 浏览器首选语言 navigator.cpuClass 浏览器CPU等级 navigator.plugins 插件列表 navigator.doNotTrack 是否设置不追踪 Screen(宿主对象) screen.width/screen.height 屏幕分辨率 screen.availWidth/screen.availHeight 屏幕可用分辨率 colorDepth 色彩深度 Date(内置对象) getTimezoneOffset() 时区 Eckersley依托于前端语言的能力,构建了获取8项用户特征信息的指纹脚本,计算得出特征信息值至少包含18.1b的信息熵,使用Murmurhash算法[11]将8种不同特征的信息Hash作为唯一的值,指纹出现重复的概率只有1/286777. 在指纹生成后使用difflib库对指纹进行简单的关联. 通过大规模的数据收集和实验论证,结果显示指纹识别率可达到83.6%,在开启Java和Flash的情况下,指纹识别率可高达94.2%.
1.2.2 技术发展趋势
唯一性和稳定性是衡量追踪技术优劣的2大指标,指纹型追踪技术虽然弥补了一部分存储类追踪技术的缺点,减少了用户信息被窃取和欺骗的可能,但其本身存在较多不稳定因素:使用过程中的常规软件升级安装、添加插件扩展、更改分辨率、网络配置等均会影响指纹的唯一性和稳定性.
业界内也面向指纹追踪技术本身的问题展开了研究,技术的发展趋向于在指纹中使用不太稳定但含有较高信息量和较多用户特点的信息,如历史记录、字体、浏览器扩展等,以及较为稳定但唯一性较低的特征,如操作系统特征、硬件特征. 指纹型追踪技术结合现有的Cookie追踪、HTML5的存储类API等存储型技术特性,来提高指纹特征包含的信息量以及指纹所具备的独特性和稳定性. 如表3所示,按照特征属性将研究中获取的特征分为了5大类:浏览器特征、操作系统特征、网络特征、硬件特征、存储型追踪标识.
表 3 指纹型追踪技术特征分类及介绍Table 3. Classification and Introduction of Fingerprint Tracking Technology Features特征分类 可利用特征 变化因素 获取方式 浏览器特征 用户代理(user agent,UA) 随浏览器升级而变化,短期内稳定 API 语言 与用户设置相关,相对稳定 API 字体 与系统安装字体相关,不稳定 枚举探测 历史记录、浏览器缓存 随用户使用习惯变化,可清除,不稳定 枚举探测 插件 随系统安装软件变化,不稳定 API 扩展 随用户喜好和使用率变化,不稳定 枚举探测 操作系统特征 操作系统类型 与系统安装相关,较为稳定 API 时区 与用户设置相关,相对稳定 API 主机缓存 与用户行为相关,短期内相对稳定 枚举、间接利用 网络特征 公网IP 与网络环境相关,不稳定 HTTP头获取 内网IP、内网主机信息及开放端口 与内网环境相关,不稳定 漏洞利用、枚举探测 TLS会话追踪 与网站和浏览器设置相关,相对稳定 攻击利用 硬件特征 硬件平台、分辨率、色彩深度 与硬件本身相关,短期内无变化,较为稳定 API CPU、GPU、音频、电池 与硬件属性和性能相关,较为稳定 API、测量获取 用户交互特征 是否设置“不追踪”、鼠标键盘记录 与用户操作相关,不稳定 算法分析 存储型追踪标识 Cookie、HTML5存储型API 与用户操作相关,可清除,相对稳定 API 浏览器指纹技术的发展同样也带来了新的用户隐私问题,因此Web追踪防御技术迎来了技术的发展热潮. 研究学者们从使用安装扩展、防御框架、工具,以及浏览器内嵌防御等不同的形态和方式着手,针对性缓解一种或多种的指纹特征获取技术,减少被持续追踪的可能性,防止用户隐私被泄露. Web追踪技术和防御技术在不断对抗中快速发展,但技术的成熟还面临着诸多的问题和挑战.
2. Web追踪技术
指纹型追踪技术已经将存储型追踪技术以及常用于溯源的IP地址、网络等信息纳入了指纹的特征范畴,且指纹型的特征信息获取技术已经从单纯的API调用,延伸到了使用枚举、测量、漏洞利用等手段获取用户设备上的各种硬件和软件信息[12],以及使用指纹关联算法延长追踪持久性. 本节着眼于Web追踪技术的追踪范围,首先将Web追踪技术分为单浏览器追踪、跨浏览器追踪,跨设备追踪3个不同层次,针对较为复杂的特征及获取方式(不可通过API调用获取的特征)进行介绍. 同时介绍了可有效弥补了指纹中追踪唯一性的不足的指纹的关联技术,以及特征与追踪范围之间的关系.
2.1 单浏览器追踪
浏览器作为Web的入口,也是信息被暴露的直接出口. 基于Web浏览器所包含的用户特点、浏览器引擎及其所依赖的硬件条件,实现对用户浏览器的唯一标识,即浏览器范围内的用户追踪.
2.1.1 含有较为丰富信息的特征
近些年的Web浏览器追踪的研究热点集中在利用含有较多用户个人特点,且具有高信息熵的特征来产生较为稳定和持续的指纹,例如扩展、字体、历史记录、浏览器缓存等. 这些特征可在一个浏览器内实现对用户的追踪.
1) 历史记录
Felten等人[13]介绍了一种可以损害用户浏览器历史记录隐私的攻击,使得恶意网站可以嗅探用户对其他站点的访问[14],测量用户浏览器执行某些操作所需的时间来确定用户的浏览历史记录,进而对用户身份去匿名化,例如利用社交网站上可用的组成员身份信息唯一地标识此人,或者显著减少候选人集[15].
利用层叠样式表(cascading style sheets, CSS)中:visited样式表对页面中嵌入的“已访问”和“未访问”的地址链接(uniform resource locator, URL)颜色进行差异表示的漏洞[16],能够对一定数量的URL地址进行枚举,获取用户的访问列表. Janc等人[17]基于链接样式显示区别,使用了3种方式对历史记录进行嗅探,包括直接利用链接访问样式差异、间接为已访问链接和未访问链接设置不同渲染图片、时序攻击. Olejnik等人[18]通过大规模数据研究论证了69%用户的浏览历史是唯一的,且奇异值大于18b,具有较强的稳定性. 随后Yan[19]在圣地亚哥的安全会议Toorcon上示范了利用HTTP严格传输安全协议(Http strict transport security, HSTS)和内容安全策略(content-security-policy, CSP)2种安全策略探测历史记录的漏洞工具,并将其命名为Sniffly. Smith等人[20]提出了4种新的历史记录嗅探攻击:CSS Paint API、CSS 3D transforms、fill-coloring of SVGs构造链接点击攻击、字节码缓存攻击,并针对主要浏览器和具有安全防护性的浏览器进行了攻击测试,发现依然可以取得很高的信息泄露率. Huang等人[21]在Smith的方法技术上引入了多个辅助环节的自适应方法,并采用动态参数搜索算法对Smith方法进行了改进,实验结果表明,在最流行的操作系统和平台上的5种主要浏览器上,该自适应方法能够达到近100%的精度.
2)字体
Eckersley使用Adobe Flash和Java虚拟机(Java virtual machine, JVM)来探测系统中安装的字体的完整列表,并且在可检测字体的浏览器中,排序后字体的熵值为16.0. Boda等人[22]从将字体作为指纹的一个输入项的角度,分析了JavaScript的字体检测,发现字体列表可以为识别提供坚实的基础,并且论证了IP地址、特定字体集、屏幕分辨率、时区足够唯一的识别5种流行的浏览器. Fifield等人[23]指出浏览器中的字体渲染受到浏览器版本、安装字体以及抗锯齿设置等多方面的因素影响而导致,作者提出了一种基于测量字体字形的屏幕尺寸来对字体进行枚举,证实即使是相对较粗糙的测量字形边界框的工具也可以产生很强的指纹,且设备上的字体信息可用于识别已安装的应用程序以及操作系统的类型和版本[24].
3)扩展
用户安装浏览器扩展本意是为了更便捷地服务,或更好地防止用户隐私泄露,但扩展的可枚举性在无形之中为用户带来更多被泄露的隐私. 相比其他含有丰富信息量的特征,扩展能够为研究学者提供较为确定的结果,且便于进行大规模的数据研究.
依据对扩展检测方式的不同,可以将枚举探测分为2类:静态探测和动态探测. 静态探测通过枚举扩展ID、Web可访问资源(Web accessible resources,WAR)或通过URL泄露来探测扩展. 通过在用户浏览器中对扩展ID的既定路径进行探测[25],可枚举浏览器中的扩展. 在Firefox使用随机化ID的方式来避免扩展被探测的情况下,依然可以通过检测扩展的WAR路径判定扩展是否存在[26],识别90%的扩展[27]. Sanchez-Rola等人[28]讨论了统一资源标志符(uniform resource identifier,URI)泄露技术,颠覆Safari中实现的URI随机化机制,影响了多达到40%的Safari扩展. 动态探测方式主要通过监控扩展在页面上做出的改变,判断扩展是否存在. XHOUND[29]通过量化监测扩展在页面文档对象模型(document object model,DOM)做出的修改进行探测和识别,这是第1个对浏览器扩展进行指纹识别的全自动系统. Karami等人[30]基于已有检测WAR路径和页面DOM独特修改2种技术,结合传出HTTP请求和浏览器内部信息交换这2种新颖的扩展检测方式,构建了一个基于行为扩展的全自动创建和检测指纹的工具Carnus,并且使用Carnus创建了迄今为止最大的扩展指纹集. Laperdrix等人[31]利用扩展在Web页面注入CSS规则的操作,提前在Web界面中注入CSS规则,通过检测碰撞对扩展进行枚举,这种方式可以识别之前技术中未检测出的1074个扩展. 浏览器扩展枚举技术研究进展汇总如表4所示.
表 4 浏览器扩展枚举技术研究Table 4. Researches on Technologies of Enumerating Browser Extension研究技术 扩展数据集 技术形式 功性能 XHOUND[29] 10000个最流行的Google Chrome扩展 对页面DOM进行的独特的
修改进行检测几秒钟内对数十个扩展进行指纹识别 Discovering Extensions
via WARs[26]43429 个Chrome扩展 通过Web可访问资源,
检测扩展是否存在可检测前1000个免费的Chrome扩展中的50%以上和所有Chrome扩展的28% Extension breakdown[28] 718个Safari扩展 URI泄露技术 可识别40%以上的Safari扩展 Latex Gloves[27] 62994个Chrome扩展,
8646个Firefox扩展WAR检测,以及检测扩展
在网页中注入的代码能够识别90%的内容注入型扩展 Carnus[30] 29428个可检测的
Chrome扩展4种不同的检测技术 83.6%~87.92%的指纹在最先进的对策下仍然有效 Fingerprinting in Style[31] 116485 Chrome扩展 注入CSS的枚举插件Extension 可识别4446个扩展,且有1074个扩展(24%)未被之前的技术识别 4)API属性枚举和检测
Nikiforakis等人[32]证实了在不同浏览器家族、版本中,甚至在不同操作系统中相同的浏览器版本中,特殊对象的属性枚举顺序始终是不一致的,这种不一致性可以作为识别用户的依据来对用户进行追踪,基于此提出了一种基于浏览器JavaScript对象属性枚举的指纹追踪方法. Mulazzani等人[33]通过分析浏览器是否符合JavaScript标准,检测其支持的功能,从150多种浏览器和操作系统组合收集的数据集中,计算出了需要运行的最小测试集,以唯一地标识每个组合.
即便JavaScript被禁用依然能够对用户进行指纹追踪[34],利用CSS不同的API属性在不同渲染引擎中的展现形式的差异,使用字符串请求、媒体查询、字体规则检测等技术,收集浏览器的类型、版本、设备屏幕分辨率、字体等信息来生成指纹. Schwarz等人[35]提出了2种新的侧信道攻击来检测指令集体系和使用的内存分配器,使用一种完全自动化的手段发现由环境引起的浏览器引擎的细微差别. JavaScript引擎的固有性能签名也能够在传统形式的系统标识(例如用户代理标头)被修改或隐藏的情况下,检测浏览器版本、操作系统、微体系架构等信息[36].
5)浏览器缓存信息利用
Solomos等人[37]将网站头像(favorites icon, favicons)作为强大的跟踪向量,向量中的每一位对应用户在1个特定子域上的图标请求,将该信息生成32b跟踪标识符,唯一标识和追踪用户. Bansal等人[38]使用了细粒度的超时和HTML5 Web Workers来对网站进行并行化缓存探测,并在缓存请求中使用超时以防止缓存污染提高攻击效率,证实了缓存定时攻击的适用性和有效性.
6)交互式特征
文献[39-41]监控和跟踪鼠标的移动和点击,捕获用户与Web应用程序交互时的鼠标操作,推断用户输入的URL,评估Web应用程序的有用性和易用性[42],推断用户注意力变化,对定量数据进行预测. Lipp等人[43]介绍了通用按键定时攻击,能够使攻击在后台选项卡或最小化的浏览器窗口中运行,以此观察到用户个人识别码(personal identification number,PIN)或密码的确切击键时间,推断用户输入的URL,区分分时共享计算机的不同用户.
2.1.2 较为稳定的高级追踪特征
近些年陆续出现的Canvas指纹、WebGL(Web graphics library)指纹、Audio指纹是当前被广泛使用的且较为稳定的指纹追踪方式. 这些追踪技术依赖于设备的硬件性能,但会受浏览器的影响.
1)Canvas指纹
2012年Mowery等人[44]提出了Canvas指纹,揭露了不同硬件设备对字体和文本的图片场景渲染的差异性. Canvas图片处理依赖于浏览器图像处理引擎、压缩等级和导出选项,因此在不同设备上的绘制的图案会有细微的差别,可以被用来为不同的用户分配特定的编号. 使用Canvas技术在用户浏览器上进行隐秘的绘画,调用toDataURL()方法将图片转化为base64编码的字符串,其中编码后字符串的最后一块是可作为用户唯一表示的32b的循环冗余校验码(cyclic redundancy check,CRC). 截至2014年,Acar等人[7]调研发现在Alexa 前10万的网站中已经有5%在使用Canvas指纹,且Canvas指纹追踪在网站的二级页面中比在网站的首页中可能更多[45]. Laperdrix等人[46]也进行了大规模的Canvas指纹测试,论证了Canvas是最有区别性的指纹. 但Canvas指纹含有一定的碰撞率,Daud等人[47]通过网站测试研究,论证了不同操作系统和相同机器规格下,Canvas指纹识别值并不唯一. Canvas指纹的生成不会引起用户的注意,因此其已较多应用于网络安全领域[48].
2)WebGL指纹
WebGL指纹和Canvas指纹原理基本相同. 通过HTMLCanvasElement元素可以获取到WebGL对象canvas.getContext("webgl"),基于WebGL的API接口(例如:WEBGL_debug_renderer_info)获取用户的硬件信息,比如显卡名称、显卡型号、显卡制造商等. 只不过3D图像会和WebGL的某些属性值绑定在一起(比如显卡提供商、显卡型号、压缩等级等)拼接成很长的字符串,Hash后获得一个缩减过的信息量,保留具有信息差的字符串作为WebGL指纹.
3)Audio指纹
Englehardt等人[49]发现了一种通过音频为设备生成指纹的方法,即音频(audio)指纹. 操作系统提供了专门处理音频的接口AudioContext API,该API可以调用振荡器接口OscillatorNode来产生周期波形,然后调用信号处理模块将信号压缩,再通过实时频域和时域分析(time domain analysis)转换为频率域,最后生成指纹. 音频指纹与Canvas指纹类似,因浏览器和以及处理音频信号硬件的细微差别,产生不同的音频结果. 2016年,Englehardt等人[50]使用OpenWPM在Alexa前100万的网站中进行了测试,发现当前只有少数网站使用了音频指纹.
2.2 跨浏览器追踪
浏览器在接入网络时,都需要调用系统中的硬件、网络等信息获取网站内容资源并进行渲染. 获取系统和硬件层面特征的能力是所有浏览器的共性,可为攻击者提供更多获取设备信息的渠道,因此跨浏览器追踪也可称为设备追踪. 通过测量硬件特征、枚举缓存和网络信息,能够实现对用户的跨浏览器的标识和追踪[51],也为指纹追踪提供了更多的稳定性.
2.2.1 基于硬件信息的设备追踪
设备硬件信息具有较强稳定性,尤其是硬件属性信息几乎不会发生改变. 不同设备的硬件在提供特定功能时,往往会输出特定的属性信息,以及不同的功性能表现. 通过获取或测量设备硬件的运行差异性,提取其较为稳定的特征项,作为设备唯一标识的特征信息.
1) GPU特征信息
利用WebGL的API接口能够获取用户的硬件属性信息,比如显卡名称、显卡型号、显卡制造商等. 文献[52]基于设备的GPU时钟频率、GPU时钟偏差来对设备进行GPU指纹识别实验,论证了GPU的硬件特征不仅能够区分不同硬件配置的设备,甚至能够区分具有完全相同硬件配置的设备.
2017年,Cao等人[53]提出了一种依赖于设备操作系统和硬件功能的指纹识别技术,使用WebGL API呈现31个不同的计算机图形任务(包括纹理、反锯齿、线条、光线、音频、视频、旋转、语言库等不同类型和角度),然后从测试任务中提取信息Hash成指纹. 该指纹不仅支持单浏览器追踪,还支持跨浏览器对用户进行追踪. 即使用户切换浏览器,也能够唯一标识设备.
2) CPU特征信息
利用对浏览器进行基准测试可以推断用户设备的CPU中是否存在AES指令集(aes-ni)和英特尔睿频加速技术(turbo boost)2种扩展[54]的理念,Saito等人[55]使用侧信道技术识别了CPU的内核数、超线程技术(hyper threading technology)可用性、SSE2指令集(streaming SIMD extensions2)可用性、ASE-NI可用性以及CPU系列类型等信息. Schwarz等人[35]利用由环境引起的浏览器引擎的细微差别,自动化识别浏览器属性推断主机系统信息.
3)音频特征
频域在不同的浏览器中是不同的[53],因此Audio指纹会受浏览器的影响,不能完全反映出声卡的特征. 但是频率和峰值的比在浏览器之间是相对稳定的,在频率和值的坐标系上创建一个间距很小的列表,并将峰值频率和峰值映射到对应的表格项. 这种情形下的列表可用于跨浏览器的特征.
4)电池损耗度
Diaz等人[56]发现可利用火狐浏览器在Linux上提供的高精度读数发现用户的电池容量,实现短时间内跟踪网络用户,且旧电池容量或用过的电池的风险更高.
5)引擎性能监测
使用计时API函数获取指令序列的执行时间来计算硬件指纹,能够在同类场景以及异构场景中区分完全相同硬件和软件的计算机集[57].
2.2.2 基于网络信息的设备追踪
IP地址作为用户接入网络的“地址编号”,是在对用户进行Web追踪时非常重要的信息. 设备接入Web所使用的公网出口IP、内网IP和内网拓扑信息都有可能被用作用户追踪和分析的有效手段.
1) IP地址及内网拓扑
Mishra等人[58]论证了公网IP地址仍然是在线跟踪的主要载体,87%的参与者至少保留1个IP地址1个月以上. 文献[59-60]基于网页即时通信(web real-time communication,WebRTC)可获取内网IP地址的漏洞[61],提出了基于浏览器网络扫描器BrowserScaner,依据网络响应信息判断内网拓扑和内网主机存活情况,甚至能够探测活动节点的开放端口.
2)TLS会话
Sy等人[62]提出了一种可以将跟踪周期延长到会话恢复机制的生命周期之外的“延长攻击”,证实了通过TLS会话恢复能够跟踪用户平均长达8天的时间. 而TLS1.3草案使得至少65%的用户可由至少一个网站永久跟踪.
2.2.3 基于缓存信息的设备追踪
对缓存中的敏感地理位置实行推断攻击[63],可跟踪用户所处的国家和城市. Klein等人[64]利用可控的域名解析服务器(domain name system,DNS),为每个用户分配唯一的DNS解析记录,基于用户主机的DNS缓存机制,实现对用户的追踪,克服浏览器的“隐私模式”. 作为Internet的重要组成部分,许多网络应用提供商使用内容分发网络(content delivery network, CDN)部署的大量缓存代理,因此能够使攻击者获得缓存数据的未授权访问的Web缓存欺骗[65],使大量网络用户处于危险之中.
2.3 跨设备追踪
跨设备追踪(cross device tracking, CDT)[66]分为确定性追踪和概率性追踪,确定性跨设备追踪主要通过邮箱、手机号等登录账户实现跨设备追踪;概率性跨设备追踪则借鉴和分析了用户历史记录、行为等信息,实现统计学上的关联. 本文只讨论概率性的跨设备追踪.
2.3.1 跨设备特征分析
当前的追踪手段往往使用多种技术相结合进行综合性的用户追踪,且移动端对HTML5的支持相较于桌面客户端更为迅速且全面,因此用于指纹追踪的特征绝大部分可同样在移动端获取.
文献[46,67]对桌面设备和移动端设备进行了指纹研究,虽然移动端缺失了字体和插件2个较为有区别性的特征,但依然具备81%的指纹独特性,并且HTTP标头和 HTML5的Canvas指纹[59,67]在识别这些设备的浏览器方面起着至关重要的作用. 文献[68]证实了大部分网站与第三方网站定期收集的Cookie、IP、位置、行为数据等信息相同,而这些信息可允许第三方将多个设备与持续性的标识符关联起来. Kane等人[69]研究了用户在不同设备之间的信息共享方式和访问网页活动的重叠度,论证了信息共享的便捷性可提高移动网络的可用性.
Karakaya等人[70]总结了用于概率跨设备定位的常见物理和行为特征,分析了16个跨设备追踪的学术研究,其认为对行为模式的探索是实现概率跨设备跟踪的关键. 例如常用的属性是 URL 地址,以及通过该 URL 访问的内容或访问的网站和应用程序的上下文信息. 从站点内容或上下文分类中提取的自然语言处理(natural language processing,NLP)特征对跨设备匹配非常有用.
2.3.2 跨设备追踪方案
我们对常见标识符进行了大规模探索,并量化了它们揭示的主机识别信息的数量.
使用来自 Hotmail 和 Bing 的长达1个月的数据集,Yen等人[71]验证了通用标识符(包括用户代理、IP、Cookie、登录ID等)可以帮助以高精度和高召回率跟踪主机. 通过跨主机聚合信息,发现了超过 75000个将 Cookie 转发到分布式位置的机器人账户相关的隐蔽恶意攻击. Zimmeck等人[72]展示了一种检测跨设备跟踪发生的方法,基于从126位互联网用户收集的跨设备跟踪数据集,探索并论证了用户设备的IP地址和互联网历史记录的相似性能够将移动设备连接到桌面设备的数据集中,其匹配率为0.91. Díaz-Morales[73]提出了一种基于半监督机器学习方法来处理用户跨设备识别的解决方案,以识别哪些Cookie属于使用设备的个人.
2.4 指纹关联研究
指纹动态变化原因可分为3大类:浏览器或操作系统更新、用户操作更新和环境更新[74]. 指纹的不稳定性能够通过选取较为稳定的特征来进行缓解和弥补,但依然不能实现对用户长期追踪. 因此研究学者设计了指纹关联算法作为另一个使追踪更加持久化的手段.
当前的指纹关联研究均使用相似度分析对指纹进行关联度判定,也用以证明持续追踪的可能性[75]. 其中文献[76]引入了指纹的辅助属性判定,使用专家打分法和编辑距离计算相似度,文献[77]在此基础上提出了一种高性能的指纹识别模型,将存储型追踪标识符作为指纹关联的重要依据. 文献[78]通过实验证明了计算机在运行特定程序时产生的不同的CPU图形,可在指纹关联时辅助解决其他属性易被伪装的问题. 文献[79]提出了使用规则和算法进行关联的FP-STALKER,其可追踪浏览器54.48天,并且26%的浏览器能被追踪超过100天. 文献[80]针对安卓(Android)设备中的指纹进行了研究,提出了基于双向循环神经网络(recurrent neural network,RNN)的指纹识别模型.
但是关于指纹中特征组合和识别精度之间的相关性研究较少,文献[81]使用了在网站上收集的9457个指纹样例,来计算不同特征组合的识别精度. 与电子前沿基金会的结果相比,在Windows,Mac,iOS,Android系统上的测试,分别实现了1.006%, 3.894%, 7.456%,3.840%的识别精度提升.
2.5 追踪分析讨论
存储型追踪技术可以服务于所有范围的追踪,关联算法需要定向依据追踪技术的不同进行算法的改进和升级. 按照追踪的范围,发现跨设备追踪和跨浏览器追踪所使用的特征均可应用于单浏览器追踪. 跨浏览器追踪层面较多使用设备硬件等稳定且不易变化的特征,跨设备追踪本身的特殊性无法使用稳定的设备特征进行关联,但具有较多用户个人特色的历史记录、交互性特征可作为对同一用户不同设备进行分析和关联的重要特征.
一些研究学者对现有的指纹追踪进行检测[82-84],进行了大规模分析[85],评估其在全球范围内的使用情况,当前某些指纹追踪技术应用较为广泛,但是在实际生活中,较多的网站厂商使用一种或多种指纹追踪技术,隐秘地进行大数据杀熟、价格歧视[86]等操作. 且指纹可能被攻击者恶意利用,基于指纹的某些特征获取技术实施攻击和漏洞利用,窃取用户敏感信息. 这在一定程度上为用户造成了极大的隐私安全风险.
3. Web追踪防御技术
Web追踪防御技术是用户隐私保护大趋势下的必然发展方向. 传统的用户自我保护措施主要是禁用Cookie,设置DNT选项,使用虚拟专用网络(virtual private network,VPN)或HTTP代理、隐身浏览模式、隐私保护类扩展等方式来阻止广告追踪. 但这些方式依然无法阻挡指纹中多种多样的特征获取和追踪. 近些年的Web追踪防御技术大多集中在与指纹型追踪的对抗方面,本文按照防御技术的形态对当前研究进行了分类,并对使用的抵抗手段进行对比.
3.1 扩展防御
基于浏览器的扩展中,广告拦截器和内容拦截器比跟踪器拦截器的使用更广泛[87]. 且使用安装扩展形式的防御技术,能够在不影响用户整体使用习惯和环境的前提下,增加对Web追踪的防御能力.
早期的追踪防御技术大多着眼于隐藏和修改敏感信息,即通过干扰真实信息的方式来避免追踪. 例如TrackMeOrNot[88]扩展提供了与供应商共享足迹的选择权,依据用户指定的隐私要求有选择地向供应商披露自身活动. Torres等人[89]开发了一个原型工具FP-Block,在允许常规追踪的前提下,对抗基于跨域指纹的跟踪,确保任何追踪者在每个站点上都会看到用户不同且不相关的指纹,使指纹追踪无法再在网络上对用户进行持续性跟踪. Al-Fannah等人[90]发现大约有69%的网站可能涉及第一方或第三方浏览器指纹识别,且第三方浏览器指纹识别占据了很大比例,因此设计了FingerprintAlert来检测(可选)并阻止所访问网站的指纹尝试.
针对扩展信息泄露问题上,Latex Gloves[26]基于Web代理在网页和扩展之间进行控制,使用白名单的方式精细化地设置允许将哪些扩展程序加载到页面中,以应对使用WAR探测和ID枚举进行扩展识别. 但白名单的获取目前没有官方渠道,需通过用户自行判断设置. Starov等人[91]设计并开发了浏览器扩展程序BrowsingFog,通过不断评估用户的浏览习惯并模拟对随机类别网站网页的访问,从而将用户的真正兴趣隐藏在不相关信息的“雾化”中. 这是一种假设用户存在1个或多个浏览数据泄露扩展的情况下保护用户隐私的方法.
Canvas Blocker[92]是防止Canvas指纹的Firefox扩展,通过更改使用Canvas 2d, WebGL, Audio, Screen等API获取信息的值,欺骗追踪者对真实信息的获取. 除此之外,还使用了黑白名单机制对网站追踪进行允许和拦截. Canvas Deceiver[93]也是抵抗Canvas指纹的浏览器扩展,在网站发出请求调用画布指纹识别JavaScript文件时,拦截请求并提供脚本的修改版本,修改版本的脚本行为方式与原始版本相同,但使用了一个持久的、预先确定的字符串欺骗使用Canvas指纹的追踪者.
Leiva等人[94]提出了一种对抗性噪声方法,减轻利用鼠标光标大规模捕获用户行为数据,来跟踪预测人口统计变量的用户分析技术,并发布了数据和实现对抗性方法的Web浏览器扩展.
3.2 浏览器内嵌防御
现有防御技术存在修改现有浏览器,通过在浏览器中内嵌防御机制提升浏览器本身的防护能力的方式,提供更深层且更加全面的防护效果,我们称之为“浏览器内嵌防御”. 内嵌防御着眼于缓解或拦截特征信息的获取渠道,或防止指纹被关联,破坏持续追踪.
TrackingFree[95]是第1个反跟踪缓解唯一标识符的浏览器. 其没有禁用唯一标识符,而是将它们隔离到不同的浏览器主体中,使得标识符在不同网站之间不是唯一的,从根本上切断第三方Web跟踪的跟踪链. Laperdrix等人[96]开发了一个名为Blink的应用程序原型,探索了软件组件本身的多样性,利用虚拟化和模块化体系结构在多个级别自动组装和重新配置软件组件,修改平台指纹中展示的指纹,实现针对浏览器的移动目标防御指纹追踪. 经过在数千个平台中的测试和验证,Blink可使用户展示不同的指纹,甚至欺骗商业性的指纹脚本. Baumann等人[97]演示的防指纹策略可在不停用Flash指纹的情况下对其进行保护,并提供稳健且不易检测的反画布指纹(anti-canvas fingerprinting),在不使浏览器失去可用性的前提下,使用大量的真实信息来隐藏系统和浏览器属性. Yu等人[98]提出了一种基于k匿名(k-anonymity)方法的新技术,识别有可能唯一地标识单个用户的数据元素,并将其从请求中删除. 通过使用Cliqz浏览器和Cliqz扩展程序进行大规模在线跟踪研究,发现其中所访问页面的95%包含对潜在跟踪者的第三方请求,而78%试图传输不安全的数据,单个追踪最多可以达到德国所有页面访问的42%. 随后研究团队发布了对跟踪请求中用户标识符的算法检测[99],使用了2周内来自20万德国用户,涵盖了超过350000个不同站点的2100万次页面访问,结果彰显出了不同地区之间的追踪差异性,以及追踪厂商在不同地区市场上的差异. 同时也证明了谷歌和Facebook无处不在.
Starov等人[100]将完全不需要扩展功能的页面修改称为扩展膨胀. 经过分析来自Google Chrome商店的58034个扩展,发现有5.7%的扩展膨胀是不必要的,且这些扩展中的61%是唯一的,可以被滥用进行指纹识别. 为了保护用户免受由于膨胀引起的不必要的扩展指纹侵害,Starov直接修改Chromium,设计和实现了一个浏览器内的机制,为所有网站中的扩展提供粗粒度的访问控制. 该机制使用Chrome内置的企业策略特性,不仅可以保护用户不被指纹识别,还可以防止恶意扩展程序从敏感网站窃取用户数据.
FPGuard[101]是一种运行时指纹检测和预防方法,包含检测和预防2个阶段. 首先通过9种度量标准来检测网站中与指纹相关的活动,计算可疑分数,如果该分数超过特定阈值,将网页标记为指纹识别器,并将网站URL以及对应的度量标准存储到黑名单数据库中. 然后使用包含4个核心引擎(objectRand,pluginRand,CanvasRand,fontRand)的随机化技术,对属性值进行随机化修改. 例如objectRand引擎在运行时生成随机对象实现对象属性随机化,pluginRand引擎将不存在的虚拟Plugin和MimeType对象添加到浏览器的当前插件和mimeTypes列表中,以更改列表的顺序. FPGuard结合了随机化和过滤技术,在用户每次访问网页时更改指纹,这种方法可以有效地识别和缓解与指纹相关的活动,并将正常网页与异常的含有指纹追踪的网页区分开.
破坏指纹的可链接性可以防止指纹的关联,即阻止多次访问的指纹链接同一指纹的能力,破坏指纹的稳定性后,追踪器也难以跨浏览会话关联指纹. 基于此Nikiforakis等人[102]提出了利用随机化破坏可链接性来消除无状态跟踪的PriVaricator. 通过评估几个系列的随机函数来寻找可以在指纹预防和破坏现有站点之间达到最佳平衡的函数,进而集中对字体和插件相关的属性进行随机化. 在没有明显开销的情况下,可有效防止指纹的追踪,且对Alexa前1000个站点的内容造成的损害也最小.
Laperdrix等人[103]提出了基于Firefox的修改版FPRandom,通过“破坏”随时间推移的指纹稳定性减轻指纹追踪的风险. FPRandom在Firefox浏览器功能的计算中增加了随机性,为每个浏览会话提供略有不同的结果,其主要针对Canvas指纹、Audio指纹、通过JavaScript属性顺序对浏览器进行追踪的指纹. 主要缓解方法有:1)在CanvasRendering Context2D类的ParseColor函数内部引入随机性,在SetFont函数中将脚本设置的字体更改为操作系统中的字体;2)在AudioContext模块的AudioNodeEngine的AudioBuffers的核心中引入微小的噪声,使指纹脚本产生不同的Hash值;3)修改Firefox的jsiter类,激活浏览器中的特殊标志“JS MORE DETERMINISTIC”,通过在每次启动浏览器时生成唯一的枚举顺序来缓解指纹追踪.
3.3 防御框架、工具或机制
立足于用户的设备和浏览器的差异性,除重写指纹值外[104],一些研究学者设计了一些更高层次、更重型的防御技术,例如构建防御框架、进行属性重组和选择的工具或者一些深层的防御机制,来有效地防御指纹追踪.
基于WebGL指纹识别中的渲染差异是由浮点操作引起的,因此Wu等人[105]提出了一种称为UNIGL的新型系统. UNIGL重新定义了所有浮点操作,显式地用OpenGL着色语言(OpenGL shading language, GLSL)程序编写或由WebGL隐式调用这些浮点操作,实现了重写GLSL程序并在现有WebGL功能的支持下制作统一的WebGL渲染过程,来减轻指纹识别因素的影响. 经过众包测试评估表明,UNIGL可以通过合理的帧率(frames per second,FPS)防止基于WebGL的最新指纹.
Jueckstock等人[106]编写1个少于600行的补丁,完成了一个托管在Chrome浏览器的JavaScript引擎(V8)内部的动态分析框架VisibleV8. VisibleV8保存了网站使用JavaScript的所有数据,并为网站创建“行为配置文件”,研究人员可使用该配置文件以及所有支持数据来识别网站中使用JavaScript破坏Web浏览器和用户信息的行为. VisibleV8隐藏在JavaScript本身的引擎中,其性能优于同等内嵌式的安装模式,并且拦截了内嵌安装无法阻止的访问. 这种全面的覆盖模式可以隔离和识别使用JavaScript代码检测46个JavaScript命名空间和浏览器平台. 在补丁中只有67行修改了V8的现有行为,因此VisibleV8是非常轻量且易于维护的.
FPSelect[107]是一个属性选择框架,允许验证者调整指纹探针以进行Web身份验证,这种方法使用指纹的成本较低,并且达到了针对字典攻击的最低安全级别. 其根本是将问题转化为搜索满足安全要求并最小化可用性成本的属性集. 通过对其安全性和可用性进行比较,FPSelect生成的指纹属性集大小减小了97倍,收集指纹的速度提高了将近3361倍,而2次观测之间的属性变化平均减少达7.2倍.
随后Andriamilanto等人[108]开发了一种属性选择工具BrFAST. 它搭载了FPSelect算法,从数百个可用属性中选择要实施的属性,根据安全性和可用性之间的权衡来严格选择浏览器指纹属性. BrFAST还可以扩展为使用其他参数、其他属性选择方法,其他安全性和可用性度量或其他指纹数据集,有助于在搜索要使用的最佳属性时可视化对可能性的探索,比较属性集的属性以及比较几种属性选择方法.
当前研究针对跨设备的防御较少,2018年,Solomos等人[109]设计了一种通过模拟最终用户的真实浏览活动来触发CDT的方法,然后利用先进的机器学习工具对其进行检测和测量. 随后Solomos等人[110]设计构建了一个CDT测量框架——TALON,基于模拟用户在不同设备上的真实浏览活动来触发和检测跨设备定向广告,检测CDT并测量影响其性能的因素. 多项关键实验证明,该框架能够检测和测量平均 ROC(receiver operating characteristic)曲线下的面积(area under curve,AUC) 得分为0.78~0.96的CDT,还能够提供有关 CDT 实体行为和对用户隐私影响的重要见解. TALON能够成为隐私研究人员、政策制定者、用户的重要工具,来提高广告生态系统使用的跟踪实践的意识和透明度.
3.4 防御对策或环境
指纹型追踪在用户正常网站会话中以静默方式获取属性的组合来识别浏览器,从而确定该浏览器的用户. 与之前的在指纹信息获取后进行阻止或欺骗的防御方式不同,构建一种防御机制或者用户使用环境,能够在浏览器特征被获取的层面进行信息的统一化或者随机化,即从信息产生的源头进行防御.
CloakX[111]是一个基于客户端的防指纹对策. 通过在客户端重写扩展名且以与扩展名无关的方式运行,使客户端信息多样化. 可以防止使用锚定标记(由任何网页均可直接访问的工件组成的指纹)进行扩展检测,并降低使用结构指纹(根据扩展程序行为构建的指纹)进行扩展检测的准确性. 经过大规模自动化分析和深入的手动测试,评估CloakX在18937个扩展名上的功效以及启用CloakX的扩展的性能,证明了CloakX原型可以成功处理大多数浏览器扩展.
Gómez-Boix等人[112]提出一种缓解指纹追踪对浏览器配置及其运行环境进行信息收集的方法. 先使用算法识别易于共享相同或相似指纹的设备,并为其提供新的非唯一指纹. 然后在虚拟化的docker容器中,使用该指纹组装和运行Web浏览器,最终使得同一个集群的所有设备均运行使用同一个指纹的Web浏览器. 通过为用户提供一个通用的共享指纹的配置,最大程度地减少设备的可识别性和Web浏览器配置中的更改次数.
Web追踪防御技术的飞速发展是在信息爆炸式发展、用户隐私意识增强的社会条件下的必然发展趋势. 如表5所示,不同类型的防御方式也各自存在其自身的局限性. 例如用户对不同防御形态的接受度、防御实现技术对Web生态造成的影响、可能存在的对用户体验度的影响等. Web追踪和防御是相辅相成的技术,如何实现一个平衡,也是需要面对和解决的问题.
表 5 防御技术的形态与其使用的抵抗手段Table 5. The Forms and Used Resistance Means of Defense Technology防御技术 形态 抵抗手段 扩展 内嵌防
御机制框架/工
具/机制对策或
环境随机化
策略引入
噪音属性
重组重写/
欺骗访问
控制同质
环境算法 信息
隔离用户
参与FPGuard[101] √ √ √ PriVaricator[102] √ √ √ Blink[96] √ √ √ FP-Block[89] √ √ √ TrackingFree[95] √ √ Cliqz[98] √ √ √ √ TrackMeOrNot[88] √ √ 隐藏特征属性[97] √ √ Tor[113] √ √ √ √ √ √ √ BrowsingFog[91] √ √ FPRandom[103] √ √ √ √ Latex Gloves[27] √ √ PETInspector[114] √ √ FingerprintAlert[90] √ √ 抑制扩展膨胀[100] √ √ CloakX[111] √ √ UNIGL[105] √ √ docker集群组装[112] √ √ √ √ VisibleV8[106] √ √ √ Canvas Blocker[92] √ √ √ Canvas Deceiver[93] √ √ FPSelect[106] √ √ √ BrFAST[108] √ √ √ My Rules[94] √ √ 注:“√”表示防御技术具备某种形态或包含某种抵抗手段. 4. 面临的挑战与展望
Web追踪中指纹追踪技术的多样化在一定程度上满足了Web应用厂商的需求,但用户对于安全隐私的诉求也极大推动着浏览器指纹防御技术的快速发展. 本文从Web追踪和防御技术2方面分别进行剖析,分析当前Web追踪的现状,以及面临的挑战与未来可能的发展方向.
4.1 追踪技术分析
针对使用浏览器特征的指纹追踪研究(见第2节)中,包含具有较强用户特点的历史记录、扩展等类型的特征,以及依赖硬件属性和硬件功性能的较为稳定的设备特征. 但多数的指纹追踪结合使用多种不同维度的特征来提高指纹的唯一性[115].
1) 追踪唯一性讨论
Eckersley等人[1]在2周内收集了含有8个特征的470161个指纹,其中83.6%的指纹是唯一的,且在开启了Flash和Java的情况下,唯一性能够达到94.2%. Laperdrix等人[46]使用AmIUnique网站在一年中收集了包含17个特征的118934条指纹,得出89.4%的指纹是唯一的,并论证了Canvas指纹的稳定性. Gómez-Boix等人[67]在法国排名前15的一个商业网站中收集了1816776个普通用户的电脑端的浏览器指纹,经过评估得出,数据集中只有35.7%的唯一指纹,远低于过去报告的百分比.
Eckersley[1]和AmIUnique这2项大规模的数据统计,均是在通知用户了解使用指纹追踪的前提下进行收集的,其指纹的用户来源对在线隐私了解较多,相较于普通用户的操作更为谨慎,而文献[67]的指纹来源为网站中的普通用户. 通过数据对比分析,用于追踪的网站、使用的特征、地区等差异可能对数据的影响较小,但指纹收集的目标人群的差异可能会导致指纹唯一识别的有效性发生较大变化. 虽然指纹特征的信息熵能够识别足够多的用户,但在实际应用场景中,普通用户群体中指纹的唯一性远比对隐私敏感的用户低.
2) 追踪持久性讨论
虽然指纹经常变化,但依然可以在一段时间内跟踪相当一部分浏览器[116],指纹自身的稳定性是能够实现持久追踪的基本要素,而关联算法是能够实现持久追踪的关键因素. 不易变化的硬件特征信息能够有效地为指纹添加稳定性,并且可以在关联算法中作为相似性评估的重要依据. 当前的指纹追踪技术中,仅有少量的研究对追踪持久性[117]进行讨论,在指纹关联分析方面的研究较为欠缺.
部分研究学者着重于从跨浏览器和跨设备的角度实现指纹追踪,增强用户追踪的持久性. 确定性的跨设备追踪,较多依赖于用户的登录信息,因此能够具备较强的稳定性和关联性;而现有的概率性跨设备追踪的分析较多依赖于用户历史记录等不稳定的特征,用于关联分析的普适性较低,因此概率性的跨设备追踪在结合Cookie类存储标识的前提下会更加有效和稳定.
Web追踪防御技术可能会使浏览器更容易被识别[118]. 发现指纹中可能被修改的特征,将其还原成真实的特征值,加强有效的定位和追踪也是未来可能的研究方向. 例如测试套件FP-Scanner[119],能够探索浏览器中指纹的不一致性,检测潜在的更改,揭示改变的指纹属性的原始值. 如果这一结果可以被指纹识别技术利用,就能够更准确地定位使用防御技术的浏览器.
3) 挑战与展望
通过大规模的数据研究分析,可以得出指纹追踪技术的唯一性与其数据源有极强的关联关系,Web追踪领域需要一个或多个较大的指纹数据集,用于分析指纹追踪的有效性,以及关联分析研究. 在指纹追踪过程中,需要在保证指纹唯一性的同时对特征进行评估和择优选取,避免收集过多特征对数据传输和存储造成的压力.
针对指纹追踪的特征进行研究,尤其是含有较多用户习惯和交互式的特征,可为不同的用户构建稳定且全面的用户画像,或辅助Web安全领域针对恶意数据进行分析,以及对恶意行为的检测和追踪溯源等. 比如双重身份认证[120-121]和账户安全检测[122-123]、检测爬虫或者Web bot[124-125]、党派分析[126]等. 或者辅助安全研究,从访问记录中提取危险路径分析恶意URL的Web访问路径[127],将指纹应用到对攻击者的诱捕和欺骗中,实现主动的追踪溯源[128],协助网络攻击取证[129-130].
4.2 防御技术分析
尽管当前已经出现各种安装形态的、各种不同功能的指纹防御技术,但依然存在各自的劣势. 洋葱浏览器(Tor)[131]当前在匿名网络中被广泛使用,用以从多个方面防御各种不同类型的追踪技术,保护用户的隐私. 如表6所示,本文针对不同指纹防御所适用的技术进行了归类分析和概括,并结合Tor浏览器进行对比分析,指出了当前防御技术的挑战和方向.
表 6 防御技术对追踪技术的防御覆盖度Table 6. The Defensive Coverage that Defensive Technology Possessed to Tracking Technology防御技术 基本特征 IP Cookie Canvas
指纹WebGL
指纹Audio
指纹历史记录 字体 扩展 缓存 硬件信息 JS属性
枚举检测TLS会话 交互式
追踪FPGuard[101] √ √ √ PriVaricator[102] √ Blink[96] √ √ √ √ FP-Block[89] TrackingFree[95] Cliqz[98] √ √ √ TrackMeOrNot[88] √ 隐藏特征属性[97] √ Tor[113] √ √ √ √ √ √ BrowsingFog[91] √ FPRandom[103] √ √ √ Latex Gloves[27] √ PETInspector[114] √ FingerprintAlert[90] √ √ 抑制扩展膨胀[100] √ CloakX[111] √ UNIGL[105] √ docker集群组装[112] √ √ √ √ √ VisibleV8[106] √ Canvas Blocker[92] √ √ √ Canvas Deceiver[93] √ FPSelect[106] √ BrFAST[108] √ My Rules[94] √ 注:“√”表示防御技术覆盖了该项追踪技术. 1) 防御形态分析
扩展形态的防御较为轻量级,安装和使用较为便捷,多数扩展的功能集中于抵御某项单一的指纹追踪方式,例如防御当前应用较为广泛的Canvas指纹、历史记录等. 但这种类型的防御机制无法抵御使用多种特征追踪的指纹模式,即便某个特征值不一致或者缺失,网站追踪者仍可通过多重追踪技术,并使用相关算法将属于同一用户的指纹关联起来.
浏览器内嵌防御利用随机化、添加噪音、函数重写等方式修改内嵌的函数实现机制,防止追踪脚本获取到真正的属性特征值. 尽管为特定的单个属性或属性集提供人为或随机值可以至少部分成功地干扰指纹识别的操作,但这种方法也可能产生不利影响[132]. 这种形式需要用户以更换浏览器为代价,达到对单个或多个特征的追踪技术的防御,虽然在防御性能和效果上优于外在的扩展和工具框架等策略,但防御型浏览器如未经商业化加持的情况下,在推广和应用上面临着巨大的困难:一方面是Tor浏览器防御能力较强,并占据着绝大部分的市场;另一方面,用户对“被改装”过的浏览器接受度可能不够高.
工具和框架形态的防御,从独立于浏览器之外的角度出发,搜索配置选择进行展示的最佳属性,混淆追踪者获取的信息. 利用属性重组选择特征值的防御技术,一定会以消耗时间和减弱性能为代价,且随着指纹特征的增多,会导致浏览器中出现较多的异常组合[133].
构建防御对策或环境是从技术源头缓解指纹追踪的方式. 例如通过使用同质化环境可以从指纹产生的源头消除其唯一性,重写扩展名和更改扩展运行方式可以有效抵抗使用扩展ID和WAR对扩展的枚举. 但构建同质化环境和对扩展进行处理和运行的方式偏向于理想的防御方式,无法广泛地应用于实践.
2) 防御技术的对比分析
随机化和引入噪音是最常见且易于实现的防御技术,能够通过欺骗或者扰乱信息的方式,削弱实际设备和浏览器的独特性和唯一性,降低被追踪的可能. 属性重组、重写指纹值等技术的本质也是通过虚假或冗余的信息降低用户的可识别性. 这些技术形式都在追踪系统中生产了大量的虚假无效信息,消耗和占用服务资源. 这类数据可能会影响未来的Web追踪生态,对未来的技术发展造成不利的影响.
通过监控指纹追踪的属性获取情况,了解和控制可能被泄露或用来追踪的信息的输出和运行方式具有较好的实践性. 例如控制既定对象的枚举顺序、浏览器扩展在不同网站中的运行方式、可能被泄露的指纹信息等. 但无法做到全面和综合性的防御,对新追踪方式的自适应性不强.
通过一定的手段,对不同的访问网站实现信息隔离,使多个不同的追踪网站获取到的指纹信息各不相同. 这一方案能够较好地组织不同网站之间的追踪信息共享,但对同一网站的持续性追踪具有较低的防御力.
用户介入和参与的防御形式,虽然将选择权交到了用户手中,但绝大部分的网络用户没有较多的技术理解和专业知识,无法做出较为有利的判断. 且从长期来看,用户参与过多会降低良好的体验度.
3) 挑战与展望
当前有诸如欧盟相关法律为加强隐私做出了努力,例如第三方跨设备跟踪的公司将被要求在其隐私政策中明确数据会被跨设备使用,但违反行为还是很普遍且公然的[134],因此依然需要更有效的工具和框架来进行合规性监视和执行. Luangmaneerote等人[133]通过将所有的指纹防御技术应用到浏览器中,访问开发的混合指纹网站,了解指纹抵抗效率以及指纹防御对用户或网站造成的影响,结果表明,如今所有的防御对策,都无法阻止各种指纹追踪[135],Tor依然是当下最有效的指纹防御技术[107].
本文依据当前防御技术的能力,对能够抵御的追踪技术进行了整理和总结,如表6所示. 现有的防御技术大多能够实现对浏览器基本特征信息获取和主流指纹追踪技术的防御. 但是在缓解系统层面的缓存追踪、TSL会话追踪,以及硬件追踪方面表现较差. 最后我们从表6中可以得出与文献[135]同样的结果:当前的追踪策略均无法完整且有效地对指纹信息进行防御.
基于以上分析可以得出,对追踪防御的构建和实施,必须了解指纹追踪的技术原理,通过阻断其获取信息的渠道和可能存在的操作,或者使用信息干扰和隔离的方式扰乱攻击者对信息源的唯一确认. 防御技术的形态和最终形式也可能为指纹追踪提供新的特征识别线索. 当前而言,实现指纹防御的最佳状态,就像在 “严格”的Tor浏览器模式和正常的浏览器功能之间取一个中和的方法,在不影响用户浏览体验的前提下,尽可能地将指纹信息一致化,且在每次启动浏览器或会话的时候,将IP等特殊的特征随机化.
5. 总 结
在Web应用厂商对大规模用户群体的追踪定位需求,以及用户对隐私敏感度提升的双向作用下,Web的追踪防御技术也得到了迅猛发展. 本文首先对Web追踪中不同的追踪技术和发展形势进行了概述,其次着重针对2010—2021年间Web追踪技术和防御技术进行了研究和概述. 以追踪的范围划分追踪层次,介绍了特征的特点和获取方式,与此同时描述了指纹关联技术,并论述了特征与追踪范围的关系. 随后我们列出了指纹防御技术的研究热点,指出了当前防御技术的4种不同形态. 针对Web追踪技术,本文从唯一性和持续性2方面对追踪技术进行讨论,从实现形态和技术特点对追踪防御技术进行分析,基于对浏览器指纹追踪对抗技术的了解,我们针对指纹追踪和防御2个方面提出了面临的挑战与未来的展望.
作者贡献声明:王晓茜负责论文的撰写;刘奇旭梳理论文框架和指导论文的撰写;刘潮歌、张方娇和刘心宇收集和整理论文文献;崔翔负责论文的整体规划。
-
表 1 API函数分类
Table 1 Classification of API Function
类型 具体分类 基本系统服务 数据访问和存储、动态链接库、索引服务、进程间通信、进程和线程、远程桌面服务、同步、服务、
Windows系统信息、Windows消息系统管理 应用程序安装和服务、压缩、设备、文档和打印、增量压缩、内核事务管理器、内存管理、NT Native、
电源管理系、统管理、Windows驱动程序工具包、Windows环境开发系统安全 安全与认证 网络 互联网、网络、网络安全服务、无线网络 用户接口 Windows数据类型、虚拟化、Windows应用程序UI开发 运行时库 Microsoft.NET库、Netscape Portable运行时库、Visual C++运行时库、其他资源库 图形和多媒体 音频和视频、图形和游戏 其他 组件对象模型、诊断、Office开发、Web开发、未记录 表 2 3个数据集参数
Table 2 Parameters of Three Datasets
数据集 样本数量 平均函数
个数平均模块
个数样本平均
大小/KBS1 85 865 18 985 S2 1232 947 15 910 M1 136 264 14 331 表 3 实验样本信息
Table 3 Experimental Sample Information
样本 链接 LogMonitor https://github.com/microsoft/windows-container-tools Vcperf https://github.com/microsoft/vcperf Yara32 https://github.com/VirusTotal/yara Hp-socket https://github.com/ldcsaa/HP-Socket Omgocrprj https://github.com/imil/OMGOCRCAL TetrisSolver https://github.com/zsebastian/AI-Homework 表 4 在S1和S2上的实验结果
Table 4 Experimental Results on S1 and S2
数据集 方法 Prc NMI F1 平均时间/s S1 BCD 0.623 0.505 0.641 0.05 ModX 0.648 0.547 0.687 0.03 DeMal 0.651 0.595 0.704 8.79 DAEGC 0.738 0.676 0.778 12.15 GEBCM 0.783 0.737 0.802 15.67 S2 BCD 0.539 0.498 0.589 0.04 ModX 0.592 0.512 0.635 0.03 DeMal 0.551 0.495 0.643 7.63 DAEGC 0.668 0.676 0.657 11.28 GEBCM 0.703 0.687 0.701 14.53 表 5 S1的模块独立性评估
Table 5 Module Independence Assessment on S1
F1分位数 Prc NMI F1 CP SP DVI 前25% 0.809 0.787 0.864 0.152 1.384 0.694 前50% 0.755 0.725 0.805 0.161 1.372 0.524 平均 0.783 0.737 0.802 0.176 1.365 0.429 表 6 在M1数据集上的实验结果
Table 6 Experimental Results on M1 Dataset
方法 Prc NMI F1 平均时间/s DeMal 0.571 0.532 0.633 6.58 GEBCM 0.612 0.674 0.692 14.14 表 7 POSGrabber模块划分的结果
Table 7 Results of Modularization Partitioning for POSGrabber
模块序号 原始模块 函数 1 Common Atoi,Base64_decode,Base64_encode,Check_digit,CopyTill,Do_rand,Xor,From_hex,GetDebugPrivs,Url_decode,GetParentProcessId,Srand,IsPCx64,Ny_toLower,Rand,RandStrA,RandStrW GetOSInfo CryptEncodeCombine HttpInteract DownloadFile,GetDownloadFileSize,GetCookie 2 POSGrabber AddCache,AddItem,DigitsLen,IsDigit,IsEndDataValid,IsNameChar,IsValidCC,EntryPoint,ScanMemory,SkipProcess,Track1NameLength,TrackSearch,TrackSearchNoSentinels InjectSection BeginInjection Common Memset 3 GetOSInfo GatherInfo,GetOSVersion,GetIdleTime,GetProcList HttpInteract HttpMain Remotescript Uninstall 4 Remotescript ExecCommands,Downloader,Update 5 CRC32 PartialCRC,Reflect Infect Infect Common GenUnique,MonitorShutdown 6 Infect CheckIfInfected,ProtectRegistry 7 InjectSection CopySectionToProcess,MonitorChild POSGrabber ScanMemoryLoop,DetectShutdown Infect DisableOpenFileWarning Common Memcpy 8 HttpInteract HttpInteract -
[1] Statista. Number of available applications in the Google play store from December 2009 to March 2023 [EB/OL]. [2023-04-17]. https: //www.statista.com/statistics/266210/number-of-available-applications-in-the-google-play-store
[2] Mitre. Common vulnerabilities and exposures [EB/OL]. [2023-03-04].https://cve.mitre.org
[3] AV-TEST. Malware [EB/OL]. [2023-04-17]. https://www.av-test.org/en/statistics/malware
[4] Schwartz E J, Avgerinos T, Brumley D. All you ever wanted to know about dynamic taint analysis and forward symbolic execution (but might have been afraid to ask) [C] //Proc of the 2010 IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2010: 317−331
[5] D’Elia D C, Coppa E, Nicchi S, et al. SoK: Using dynamic binary instrumentation for security (and how you may get caught red handed) [C]//Proc of the 2019 ACM Asia Conf on Computer and Communications Security. New York: ACM, 2019: 15−27
[6] Chen Jinyin, Hu Keke, Yu Yue, et al. Software visualization and deep transfer learning for effective software defect prediction [C] //Proc of the 42nd ACM/IEEE Int Conf on Software Engineering. Los Alamitos, CA: IEEE Computer Society, 2020: 578−589
[7] Yasunaga M, Liang P. Graph-based, self-supervised program repair from diagnostic feedback [C] //Proc of the 37th Int Conf on Machine Learning. New York: ACM, 2020: 10799−10808
[8] Gibert D, Mateu C, Planes J. The rise of machine learning for detection and classification of malware: Research developments, trends and challenges[J]. Journal of Network and Computer Applications, 2020, 153: 102526 doi: 10.1016/j.jnca.2019.102526
[9] Bavota G, Oliveto R, Gethers M, et al. Methodbook: Recommending move method refactorings via relational topic models[J]. IEEE Transactions on Software Engineering, 2014, 40(7): 671−694 doi: 10.1109/TSE.2013.60
[10] Sarhan Q I, Ahmed B S, Bures M, et al. Software module clustering: An in-depth literature analysis[J]. IEEE Transactions on Software Engineering, 2022, 48(6): 1905−1928 doi: 10.1109/TSE.2020.3042553
[11] Zhou Yang, Cheng Hong, Yu J X. Graph clustering based on structural/attribute similarities[J]. Proceedings of the VLDB Endowment, 2009, 2(1): 718−729 doi: 10.14778/1687627.1687709
[12] Karande V, Chandra S, Lin Z, et al. BCD: Decomposing binary code into components using graph-based clustering [C] //Proc of the 2018 on Asia Conf on Computer and Communications Security. New York: ACM, 2018: 393−398
[13] Yang Can, Xu Zhengzi, Chen Hongxu, et al. ModX: Binary level partially imported third-party library detection via program modularization and semantic matching [C] //Proc of the 44th Int Conf on Software Engineering. New York: ACM, 2022: 1393−1405
[14] Xia Hong, Zhang Yongkang, Chen Yanping, et al. Software module clustering using the hierarchical clustering combination method [C] //Proc of the 7th Int Conf on Cloud Computing and Big Data Analytics. Piscataway, NJ: IEEE, 2022: 155−160
[15] Papachristou M. Software clusterings with vector semantics and the call graph [C] //Proc of the 27th ACM Joint Meeting on European Software Engineering Conf and Symp on the Foundations of Software Engineering (ESEC/FSE). New York: ACM, 2019: 1184−1186
[16] Pan Weifeng, Song Beibei, Li Kangshun, et al. Identifying key classes in object-oriented software using generalized k-core decomposition[J]. Future Generations Computer Systems, 2018, 81: 188−202 doi: 10.1016/j.future.2017.10.006
[17] Newman M E J. Fast algorithm for detecting community structure in network [J]. arXiv preprint, arXiv: cond-mat/0309508, 2003
[18] Newman M E J, Girvan M. Finding and evaluating community structure in networks [J]. arXiv preprint, arXiv: cond-mat/ 0308217, 2003
[19] Candela I, Bavota G, Russo B, et al. Using cohesion and coupling for software remodularization: Is it enough[J]. ACM Transactions on Software Engineering & Methodology, 2016, 25(24): 1−28
[20] Huang Yuyao, Shu Hui, Kang Fei. DeMal: Module decomposition of malware based on community discovery[J]. Computers & Security, 2022, 117: 102680
[21] Lian Wen, Kirk D, Dromey R G. Software systems as complex networks [C] //Proc of the 6th IEEE Int Conf on Cognitive Informatics. Piscataway, NJ: IEEE, 2007: 106−115
[22] Li Hao, Wang Tian, Xu Xinxin, et al. Modeling software systems as complex networks: Analysis and their applications [J]. Mathematical Problems in Engineering, 2020, 2020: 1−7
[23] Nielson H R. Principles of Program Analysis [M]. Berlin: Springer, 1999
[24] Hey-rays. IDA Pro-A powerful disassembler and a versatile debugger [EB/OL]. [2023-04-17].https://www.hex-rays.com/ida-pro
[25] Radare2. Libre reversing framework for Unix geeks [EB/OL]. [2023-04-17].https://github.com/radareorg/radare2
[26] NSA. A software reverse engineering suite of tools developed by, NSA’s research directorate in support of the cybersecurity mission [EB/OL]. [2023-04-17].https://github.com/NationalSecurityAgency/ghidra/releases
[27] Henderson A, Prakash A, Yan L, et al. Make it work, make it right, make it fast: Building a platform-neutral whole-system dynamic binary analysis platform [C] //Proc of the 2014 Int Symp on Software Testing and Analysis. Piscataway, NJ: IEEE, 2014: 248−258
[28] Song D, Brumley D, Yin Heng, et al. BitBlaze: A new approach to computer security via binary analysis [C] //Proc of the 4th Int Conf on Information Systems Security. Berlin: Springer, 2008: 1−25
[29] Yan S, Wang Ruoyu, Salls C, et al. SOK: (State of) The art of war: Offensive techniques in binary analysis [C] //Proc of the 37th IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2016: 138−157
[30] Cai Hongyun, Zheng V W, Chang C C. A comprehensive survey of graph embedding: Problems, techniques and applications[J]. IEEE Transactions on Knowledge & Data Engineering, 2018, 30(9): 1616−1637
[31] Wang Daixin, Cui Peng, Zhu Wenwu. Structural deep network embedding [C] //Proc of the 22nd ACM SIGKDD Int Conf on Knowledge Discovery and Data Mining. New York: ACM, 2016: 1225−1234
[32] Cao Shaosheng, Lu Wei, Xu Qiongkai. Deep neural networks for learning graph representations [C] //Proc of the 30th AAAI Conf on Artificial Intelligence. Palo Alto, CA: AAAI, 2016: 1145−1152
[33] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks [J]. arXiv preprint, arXiv: 1609.02907, 2016
[34] Velikovi P, Cucurull G, Casanova A, et al. Graph attention networks [J]. arXiv preprint, arXiv: 1710.10903, 2017
[35] Wang Chun, Pan Shirui, Hu Ruiqi, et al. Attributed graph clustering: A deep attentional embedding approach [C] //Proc of the 28th Int Joint Conf on Artificial Intelligence. San Francisco, CA: Morgan Kaufmann, 2019: 3670−3676
[36] Intel. Pin-A dynamic binary instrumentation tool [EB/OL]. [2023-04-07].https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html
[37] Levine J R. Linkers and Loaders [M]. San Francisco, CA: Morgan Kaufmann, 1999
[38] Hu Jie, Li Shen, Samuel A, et al. Squeeze-and-excitation networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(8): 2011−2023 doi: 10.1109/TPAMI.2019.2913372
[39] Garey M R, Johnson D S. Computers and Intractability: A Guide to the Theory of NP-Completeness [M]. New York: W. H. Freeman and Company, 1979
[40] Github. Dexter-POSGrabber [EB/OL]. [2023-04-17].https://github.com/whobin/Dexter-POSGrabber
[41] Xie Junyuan, Girshick R, Farhadi A. Unsupervised deep embedding for clustering analysis [C] //Proc of the 33rd Int Conf on Machine Learning. New York: ACM, 2016: 478−487
[42] Xiang Shunhua, Nie Feiping, Zhang Changshui. Learning a Mahalanobis distance metric for data clustering and classification[J]. Pattern Recognition, 2008, 41(12): 3600−3612 doi: 10.1016/j.patcog.2008.05.018
[43] Rokon M, Islam R, Darki A, et al. SourceFinder: Finding malware source-code from publicly available repositories [C] //Proc of the 23rd Int Symp on Research in Attacks, Intrusions and Defenses (RAID 2020). Berkeley, CA: USENIX Association, 2020: 149−163
[44] Fahad A, Alshatri N, Tari Z, et al. A survey of clustering algorithms for big data: Taxonomy and empirical analysis[J]. IEEE Transactions on Emerging Topics in Computing, 2014, 2(3): 267−279 doi: 10.1109/TETC.2014.2330519
[45] Kuhn H W. The Hungarian method for the assignment problem[J]. Naval Research Logistics, 2010, 52(1/2): 7−21
[46] Snoek J, Larochelle H, Adams R P. Practical Bayesian optimization of machine learning algorithms [C] //Proc of the 25th Int Conf on Neural Information Processing Systems. New York: Curran Associates, 2012: 2951−2959
[47] Xiao Xueli, Yan Ming, Basodi S, et al. Efficient hyperparameter optimization in deep learning using a variable length genetic algorithm [J]. arXiv preprint, arXiv: 2006.12703, 2020
[48] Maclaurin D, Duvenaud D, Adams R P. Gradient-based hyperparameter optimization through reversible learning [J]. arXiv preprint, arXiv: 1502.03492, 2015
-
期刊类型引用(1)
1. 楚小茜,张建辉,张德升,苏珲. 基于改进GraphSAGE算法的浏览器指纹追踪. 计算机科学. 2024(06): 409-415 . 百度学术
其他类型引用(3)