0%

DNS-DNS DNS-Based De-NAT Scheme

主观评分:7/10

在Springer访问该论文

该论文通过分析不同操作系统的DNS包的差异性,利用差异性识别出隐藏在NAT后面的机器使用的操作系统及数量;还提出了“drum beats”,一种用来标示某一特地机器的DNS指纹特征;最后,作者还提出了一种简单直接的方法来将NAT后的TCP流与DNS流关联的方法。

该论文提出的De-NAT方法具有较大的局限性,文章中描述的“drum beats”似乎并没有通过实验验证,只是作者发现了这一现象。

1. Abstract

Network Address Translation (NAT) routers aggregate the flows of multiple devices behind a single IP address. By doing so, NAT routers masquerade the original IP address, which is often viewed as a privacy feature, making it harder to identify the communication of individuals devices behind the NAT. De-NAT is the reverse process: re-identifying communication flowing into and out of the NAT. De-NAT can be used for traffic management, security, and lawful surveillance.

网络地址转换(NAT)路由器将多个设备的流量汇总到一个IP地址后面。这样可以使用NAT路由器对原始IP地址进行伪装,这通常被视为一种隐私功能,使其更难识别NAT背后的个人设备的通信。De-NAT是相反的过程:重新识别流入和流出NAT的通信。De-NAT可用于流量管理、安全和合法监控。

We show how DNS requests provide an effective De-NAT mechanism by observing queries to open resolver, in addition to ‘classical’ provider-based De-NAT. This new method allows de-NATing in cases where known schemes fail, e.g., in Windows 8 and 10, and by remote DNS resolvers. We analyze use cases where the suggested DNS based De-NAT is effective, suggest a De-NAT algorithm and evaluate its performance on real (anonymized) traffic. Another contribution is identifying the phenomena of drum beats, which are periodic DNS requests by popular applications and processes; these can allow long-term de-NATing, and also provide fingerprinting identifying specific devices and users. We conclude with recommendations for mitigating de-NATing.

我们展示了除了基于”经典”De-NAT之外,提出了一种DNS请求如何通过观察对开放解析器的查询来提供有效的De-NAT机制。这种新方法允许在已知方案失败的情况下进行De-NAT,例如,在Windows 8和10中,以及通过远程DNS解析器进行。我们分析了基于DNS的De-NAT有效的使用案例,提出了一种De-NAT算法,并评估了它在真实(匿名)流量上的性能。另一个贡献是识别了‘drum beats’鼓点现象,这是流行的应用程序和进程的周期性DNS请求;这些可以允许长期的去NAT化,还提供了识别特定设备和用户的指纹。最后,我们提出了缓解去NATing的建议。

2. Introduction

下图展示了一个使用NAT的家庭网络拓扑结构,路由器通过维护一张(IP,port)映射表实现端口转发功能,从而扩展出更多的局域网IP地址,用于共享同一个IP。

图片

De-NAT定义:To identity the specific device or user sending a particular packet。识别出NAT后面的单个设备以及每个设备所产生的数据包。

De-NAT的motivation:

  1. 流量管理,家长控制等;
  2. 安全应用,检测设备的可疑活动;
  3. 用于合法或非法的拦截和监控;
  4. 广告推荐;
  5. 网络管理,防私接。

De-NAT方法:

通过数据包IP层的TTL来判断流量来源的操作系统。在使用Windows操作系统的设备中,数据包的初始TTL值通常是127,而在Android和Linux中通常是63,在iOS中是255。如果一个设备是SOHO网络中唯一一个具有该初始TTL值的设备,那么这个简单的步骤可能就足以去掉NAT;而当网络中存在使用不同操作系统的设备时,这也是去掉NAT的有用第一步。

相同操作系统的De-NAT方法:

IP-ID。IPv4报头中的一个16位字段,用于执行去碎片化。在Windows 7操作系统和更老的版本中,IP-ID字段是作为一个简单的计数器来实现的,并为每个从网络接口出来的数据包递增。

TCP时间戳。在基于Linux操作系统的各个版本中,TCP时间戳字段是随着数据包之间的经过时间单调递增的。

作者的一个发现:

在一些操作系统中,如Windows 8/10和某些Android系统,当向同一个IP地址发送数据包时,其IP层的ID是递增的。由于系统使用的DNS服务器的IP地址几乎不会变化,因此系统发送的所有DNS请求包具有递增的IP-ID。这一点我也通过了实验进行验证,这样就可以使用这一特征,将NAT后的混合流量区分开来,实现De-NAT,但这一方法具有很大的局限性,对于MacOS和IOS操作系统,其DNS请求包的IP-ID是一个随机数,不具有这一特征。

下表展示几种了De-NAT技术:

De-NAT scheme Operating system By whom?
IP-ID incremented for all packets Win NT/XP/7 ISP only
TCP Time stamp iOS, Android, Linux ISP only
DNS-based De-DAT (This paper) Win 8/10, Android ISP or Open resolver

3. DNS请求中的IP-ID

下图展示了3种操作系统的DNS请求包中的IP-ID递增现象:

图片

但是这样的递增规律可能由于数据包传输或抓包中的丢包、乱序、重传而产生一定的抖动,如下图所示,抖动在一定范围内:

图片

但是,对于具有以下特性的路由器(NAT),该现象消失:

  1. 使用了DNS代理;
  2. 删除(置空)或修改了IP-ID;
  3. 手动配置了OpenDNS,这种情况下ISP无法收到到DNS请求数据包。

4. De-NATing DNS 请求的算法

下图(a)展示了3台设备(限Win8/10和某些Android)的DNS请求包的IP-ID随时间的变化规律,其中存在A和B两个碰撞collision点;图(b)展示了一种具有时间空隙的情况,后续在算法中将处理这种情况。

图片

作者提出的算法首先将IP-ID按照时间递增进行聚类,如下图(a)所示,一共聚得了A,B,C,D,E,F,G,H,I 9个类,其中A和B为碰撞点;再通过合并算法(考虑时间差、IP-ID差和斜率),得到合并结果如下图(b)所示。

图片

具体算法详见原文。

5. 算法测试

下图(a)是作者在有20台Win8和Win10设备的NAT抓取的流量分析的结果,经过聚类后得到155个clusters,再经过合并后得到37个merged-clusters。

图片

按照作者提出了两个指标,The Total Coverage ratio was 0.977, and the Total Accuracy was 0.996 (several merged-clusters weren’t assigned to any device, so this number is higher).

6. 长期De-NATing

作者提出了‘drum beats’鼓点现象用来描述某一特定的设备,用于长期De-NATing以应对设备重启等情况。‘drum beats’鼓点现象是指受操作系统、硬件驱动、服务应用的影响,因为DNS的结果具有一定的存活时间,到期后需要更新,机器会定期的请求解析某些域名,如下表所示:

图片

7. 全数据De-NATing,将TCP数据包和DNS关联

在分析了同一机器TCP数据包和DNS数据包的时间关系后,本文直接将TCP数据包与向前最相邻的数据包直接关联,如下图所示。

图片

8. 反De-NATing的建议

作者也提出了如下几条反De-NATing的建议,用以保护用户的隐私:

  1. 路由器修改DNS数据包的IP-ID;
  2. 在路由器上运行DNS代理;
  3. 使用加密代理或Tor加密工具加密所有的流量。