工控网络基础入门篇之轻松的扩散污染
GFW 劫持搞定了所有对境外服务器发起的 DNS 解析请求的,就从源头上保证了我们的递归 DNS 服 务器只可能获得敏感域名的错误 IP。那剩下的工作就是扩散污染了。
我们前面说过,DNS 服务器有两种工作方式,分别是递归和迭代,迭代是一种很蛋疼的工作方式, 但现实中总还是有部分 DNS 服务器是在以迭代的方式工作的。按理说,这些 DNS 服务器几乎是没有什么 解析能力的。可实际上呢,大部分情况下他们又可以对几乎所有域名的解析请求都做出响应。
那么他们自己不能做递归查询去获取域名的各种记录,这些记录是哪里来的呢?DNS 体系里,还有一 个东西叫做 Zone Transfer。普通的 DNS 查询,一般只是查询域名的 A 记录,DNS 服务器也只是响应 一条 A 记录。但是 DNS 中还有一种特殊的记录查询,叫做 AXFR 记录。
当一个 DNS 服务器接收到这种记录查询的时候,如果系统的配置没有禁止这条命令的查询,他就会 把自己服务器内所存储的全部域名的全部记录都传输给请求者,这个过程因为数据量庞大需要进行持久 的连续传输,且安全性要求高,一般是通过 TCP 协议传输的,如果走 UDP 的话可以被黑客用于实现能量 恐怖的 DNS 放大攻击(指利用伪造 UDP 包的查询源 (被攻击者的 IP),通过 DNS 查询数据量大的域名记录 (例如 TXT 记录),最终让 DNS 服务器把这个庞大的响应包 返回到被攻击者的过程,而庞大的 DNS 响应一般会转以 TCP 协议传送,这就造成了被攻击者的 TCP 端口阻塞)。这样一个查询 AXFR 记录,并取得另一台 DNS 服务器上所有记录的过程,就叫 做 Zone Transfer。
不过一般来说 DNS 服务器都不会支持或允许你任意查询 AXFR 记录,否则负担会大的不可思议,一 般他们会有防火墙策略只允许特定的主机查询 AXFR 记录进行 Zone Transfer。对于那些不支持递归的 ISP 的 DNS 服务器,只可能是以这样的形式取得域名记录的 (别跟我说拿 U 盘拷啊)。 那么好了,支持递归解析的 DNS 服务器已经被劫持了,而只能迭代的 DNS 服务器又只能从递归服 务器那里通过 Zone Transfer 复制记录,毫无疑问复制到的也是被污染的数据,那么全国的 DNS 就已经被GFW 搞定了。你也许会说,万一我从国外的 DNS 服务器进行 Zone Transfer 呢,你不是说 Zone Transfer 还是走 TCP 的吗,这一般不会被劫持了吧。
我很感激你有这么聪明,这的确是个办法 (其实我也是临时想到的)。但是我们也说了,绝大部分 DNS 主机不会允许你做 Zone Transfer,这个负担太重了,基本上你只能自己去国外架设服务器,搜集递 归数据,然后 Zone Transfer 到国内了,所以国内确实有些私人的 DNS 是没被污染的啊。当然我觉得他们 更可能的是在服务器上用写死 hosts 的方式实现的,这种方式怎么说呢,事实正义,而程序不正义,任何 人为干预修改域名记录的行为我觉得本质都是劫持。而对于各大 ISP的 DNS 来说,你觉得很多企业,有这可能吗?