可怕不可怕,别人很可能可以通过你的IP地址,得到你的设备的名称(比如,“张三的手机”), 从而实现跟踪?

缘起

本人使用办公楼的Ethernet连接时,偶然发现ip地址的反向DNS记录里,竟然包括我的设备名称。

在MacOS上,运行

host $(ipconfig getifaddr $(route -n get default | awk '/interface:/ {print $2}'))

我得到的结果是

xx.xx.xx.xx.in-addr.arpa domain name pointer my-computer-name.dynamic.xx.xx.

研究了一番,发现罪魁祸首是DHCP。

DHCP协议

DHCP的作用是动态分配IP地址:

sequenceDiagram DHCP Client->> DHCP Server: Discover DHCP Server-->>DHCP Client: Offer DHCP Client->> DHCP Server: Request DHCP Server-->>DHCP Client: ACK

在MacOS上可以用以下方法观察DHCP lease renewal过程

#打开tcpdump,监听目前所用interface的DHCP流量
sudo tcpdump -i $(route -n get default | awk '/interface:/ {print $2}') port 67 or port 68 -e -n -vv
#在另外一个terminal窗口中,手动renew lease
sudo ipconfig set $(route -n get default | awk '/interface:/ {print $2}') DHCP

DHCP是怎样泄露设备名称的

个人设备名称是如何通过DHCP流入可以全球查询的DNS的呢?

观察MacOS上的DHCP lease renewal,可以看到,在Discover message中,客户端通过Hostname字段发送了设备的名称。

15:06:22.621461 e8:9f:80:cd:cb:45 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: (tos 0x0, ttl 255, id 32399, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from e8:9f:80:cd:cb:45, length 300, xid 0x41923858, secs 25, Flags [none] (0x0000)
	  Client-Ethernet-Address e8:9f:80:cd:cb:45
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message (53), length 1: Discover
	    Parameter-Request (55), length 12: 
	      Subnet-Mask (1), Classless-Static-Route (121), Default-Gateway (3), Domain-Name-Server (6)
	      Domain-Name (15), Unknown (108), URL (114), Unknown (119)
	      Unknown (252), LDAP (95), Netbios-Name-Server (44), Netbios-Node (46)
	    MSZ (57), length 2: 1500
	    Client-ID (61), length 7: ether e8:9f:80:cd:cb:45
	    Lease-Time (51), length 4: 7776000
	    Hostname (12), length 11: "MacBook-Air"

在MacOS上,经测试,被发送的是ComputerName(就是System Settings-> General->About中的设备名称), 可以通过scutil --get ComputerName获取。

DHCP服务器得到终端设备名称后,如果网络的IP管理软件(IPAM)设置不当,不但会将其用于本地DNS,甚至可能在全球DNS中插入PTR记录。

泄露的后果

可以被变态用来跟踪!

假设你叫张三,设备名称叫"zhangsan’s phone"。

知道你常用的IP段的变态,就可以通过扫描这些IP段的反向DNS记录知道你目前正在使用哪个IP段,从而获取关于你的活动的信息。
一般而言,当你的设备加入网络后,PTR记录就会进入全球DNS;而你的设备下线后不久,PTR记录就会被移除。变态可以通过密集查询PTR记录的状态得知你的设备的连接状态。

此外,如果你买了一个新电脑,起名叫"zhangsan’s macbook",变态马上知道这个电脑是你的。

有一篇文章Saving Brian’s privacy: the perils of privacy exposure through reverse DNS,就展示了通过反向DNS+设备名称进行跟踪/踩点的可能性。

RFC 7819,RFC 7844也注意到了这方面的风险。

应对措施

  1. 不要在设备名称中加入任何个人信息
  2. 建议网管更改网络设置,不要把设备名称从DHCP泄露到全球DNS