专栏首页黑白安全基于DNS缓存的用户追踪

基于DNS缓存的用户追踪

本论文介绍了基于给每个用户分配独特的DNS记录来追踪用户长达一天的新技术,其主要解决了DNS缓存带来的识别问题。该技术可以突破浏览器隐私模式或者多浏览器模式并区分装载不同组件的计算机。

tagging技术(存储识别用户的数据,e.g. cookie)和fingerprinting技术(识别设备中已经存在的属性,e.g. 字体安装识别)是两种比较常见的技术。但都有其弊端,tagging具有存储独一性,不能在多应用和多浏览器间公用,特别在隐私模式下会失效;fingerprinting难以区分安装了统一系统和软件(golden image)的计算机群体。

新技术有一定限制,其会在用户重启设备或更改网络状态,达到TTL阈值后会失效。该技术在与其他追踪技术一起使用时能突破这些限制从而发挥最大效能。例如,当DNS ID失效时可能分配一个新的DNS ID,但与旧ID绑定的cookie也会绑定到新ID上,从而保证用户追踪不会断开。该技术也同时不受浏览器重启,历史清理,隐私模式,V**,软件映像,SOCKS4,IPv6,HTTPS等因素的映像。

基于DNS缓存的追踪技术主要是通过HTML和JS代码的作用下在用户的Stub Resolver中存储一个独特的DNS数据用于标记用户,存储时间长达一个缓存周期。例如,在用户发送HTTP请求时会向Stub Resolver发送DNS查询并接收一组跟踪器拥有的IP地址,然后浏览器会向组内第一个IP地址发送HTTP请求,然后由IP地址所对应服务器的响应数据,且附带一个跟踪ID,由于IP地址列表是随机的所以分配给每个浏览器的ID是独一的。

基本方法

红色部分是跟踪者实际可控的组件。

1. 浏览器加载跟踪代码片段;2. 浏览器向操作系统的Stub Resolver请求解析xi.anonymity.fail域名;3. 操作系统向解析平台传递解析请求,而解析平台分析得知需要向域名拥有者控制的DNS解析器解析。且该DNS解析器回应了RRset,即一系列随意排序的跟踪者可控的IP地址;4. Stub Resolver缓存RRset,并向浏览器返回IP地址列表;5. 浏览器向RRset中的第一个IP地址发送HTTP请求;6. 服务器向不同的IP地址发送不同的响应内容;7. JS收集从服务器传来的数据并组装成一个ID;

假设有K个IP地址,假设RRset的顺序是一致随机的,则服务器的IP地址值是均匀分布的。当使用N个主机名的时候就有K^N个可能性的ID值被分配给用户。所以当K最小即K=2时,足够多的N可能会让跟踪者向互联网范围内分配足够量的ID值。而在Stub Resolver的缓存过程中是可以用于维持DNS ID的持久性。那么唯一的问题就在于RRset的随机化,或者是解析平台的负载均衡会避开互斥情况的发生。

技术细节

具体讨论了新技术面临的一些挑战的解决过程。

DNS缓存刷新

计算机重启,网络状态变换时等会刷新缓存,或者缓存满了进行清空时会导致跟踪ID删除。但DNS刷新这种情况是不常见的无需考虑。

TTL

缓存的DNS记录的TTL决定了DNS跟踪ID的寿命,因为TTL决定了什么时候进行DNS缓存刷新。尽管跟踪者可控的DNS服务器会把TTL设为最大值,但是递传过程中DNS服务器都决定了各自的TTL cap,所以最终的TTL是由这两个之间小的那个决定。总的来说,TTL的长短是可以满足需要用户跟踪需求的。

DNS负载均衡

解析平台往往有很多解析器,尽管Stub Resolver使用一个单一IP地址作为其DNS解析器,但是这个IP地址可能是多个解析器负载均衡的入口IP地址。RRset也因负载均衡的存在能够保证IP地址序列的随机化。

DNS解析链

仅当存在不合理链才会导致技术失效。

HTTP转发代理和Tor代理

这两种情况该技术会失效,因为所有用户从一个代理出口进行DNS请求,分配到的是同一个DNS ID。

Stub Resolver缓存类型

1. 基于记录的缓存2. 基于查询的缓存

foo.example.com CNAME bar.example.com

bar.example.com A 10.2.3.4

基于记录的会把上述两条记录分别缓存,而基于查询的会缓存查询记录(foo.example.com),并只缓存10.2.3.4这个结果。

RRset顺序

1.  RRset可能有不同的措施来确定IP地址列表顺序。2.  Fixed:对每次请求都回复每次不相同但固定的顺序。该方法可能出现的问题时如果不适用负载均衡可能多个用户会获取到同一个ID值。3.  Round-robin:每次请求返回的数据按照Round-robin式循环的顺序。该方法困难在于拥有K个IP地址的RRset只可能产生K个ID,也就是限制了ID数目。有一种解决方案是不直接返回ID数据,而是返回将多个素数K作为一个列表返回,尤其拼凑出多达上亿个ID数据;另一种解决方法是使用如下算法,将当前获取的ID数据强制性再随机化进到RRset中保证下次不取出。

4. Random:随机顺序。

5. Time-based round-robin:每秒返回的数据按照Round-robin式循环的顺序。

跟踪系统

上述原理会导致DNS解析器缓存大量饱和并降低其可靠性,但是由于跟踪目的本具有集中性,所以此类部署了跟踪系统的DNS解析器不会太多。

DNS ID独特性

K值(IP地址数)和N值(DNS hosts/queries)的选择决定了DNS ID的冲突数(M)。且K或N越大,M越小。

未来可能性

•Resolvers:重排序RRsets;•Resolver platforms: 负载均衡;•Stub Resolvers: 维持一个固定RRsets;•Browsers: 使用RRset中的第一个IP地址

如上几个因素是保证该技术的基本属性,但在未来这些属性随时都可能发生改变导致该技术失效。

原文作者:Amit Klein, Benny Pinkas

原文标题:DNS Cache-Based User Tracking

原文会议:Network and Distributed Systems Security (NDSS) Symposium 2019

原文链接:https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_04B-4_Klein_paper.pdf

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • msf学习笔记

    root@kali:~# service postgresql start  ##启动pgsql数据库(5432接口未启动状态【netstat -pantu |...

    周俊辉
  • 后门攻击

    后门程序是一种恶意软件类型,它会阻止正常的身份验证过程访问系统。因此,远程访问被授予应用程序内的资源,例如数据库和文件服务器,从而使犯罪者能够远程发布系统命令并...

    周俊辉
  • 常见后门解释

    现实生活中有前门后门之分,前门一般守卫严格,难以突破,然而后门计较隐蔽,部位广大人们所知道,所以守卫比较松懈基本无人问津,所以后门的安全性很弱不能跟前门相比。在...

    周俊辉
  • [计算机视觉论文速递] ECCV 2018 专场4

    Amusi 将日常整理的论文都会同步发布到 daily-paper-computer-vision 上。名字有点露骨,还请见谅。喜欢的童鞋,欢迎star、for...

    Amusi
  • Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数

    本篇目录:     一、函数嵌套     二、函数名称空间与作用域     三、函数对象     四、闭包函数 ========================...

    Jetpropelledsnake21
  • [Java 进阶]异常

    异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。 世上没有百分之百完美的程序。程序总难免存在各式各样的问题。所以,程序中添加对于错...

    静默虚空
  • Leetcode: Construct Binary Tree from Preorder and Inorder Traversal

    题目: Given preorder and inorder traversal of a tree, construct the binary tree.

    卡尔曼和玻尔兹曼谁曼
  • python写的具有CRC16生成、校验

    crccreatearray是直接返回生成crc的数组,calcrc是校验数组是否符合crc16,返回0表示符合,1表示不符合

    py3study
  • 小朋友学经典算法(13):两数交换

    在学C语言的时候,学过两数交换:《小朋友学C语言(25):两数交换》 https://www.jianshu.com/p/64bc70f0abfe

    海天一树
  • 深入浅出了解OCR识别票据原理

    光学字符识别技术(OCR)目前被广泛利用在手写识别、打印识别及文本图像识别等相关领域。小到文档识别、银行卡身份证识别,大到广告、海报。因为OCR技术的发明,极大...

    机器学习AI算法工程

扫码关注云+社区

领取腾讯云代金券