1. DNS/KnotResolver/brau.internat.jp/brau.jpを乗取る/第一段
$dig -t txt brau.internat.jp
リゾルバーで起きること。(キャッシュが空からスタートしたとして)
- JPサーバーを知る。(a.dns.jp など)
- internat.jp NS+glue を知る。
- brau.internat.jp 委任・委譲情報NS(+glue) を知る。
- brau.internat.jp TXTを取り出す。
ここでは第3, 4の詳細を調べてみよう。(第1,2 は省略する。internat.jp 委譲情報はキャッシュにあるとする。)
1.1. 委譲情報
$dig -t txt brau.internat.jp @ns.internat.jp
または
$ dnsq txt brau.internat.jp ns.internat.jp 2 brau.internat.jp: 72 bytes, 1+0+1+1 records, response, noerror query: 2 brau.internat.jp authority: brau.internat.jp 300 NS ns.brau.jp additional: ns.brau.jp 300 A 150.42.6.9
additionalを受け入れるかどうか。mode("permissive") のKnot Resolver の脆弱性
- このadditionalは毒の可能性があるので、捨てるのが正しい実装である。
1.2. TXT
次の問い合わせはどこに送られるのだろうか。
$ dig -t txt brau.internat.jp @127.0.0.1 ; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> -t txt brau.internat.jp @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 38534 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;brau.internat.jp. IN TXT ;; Query time: 26 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 30 06:39:51 JST 2020 ;; MSG SIZE rcvd: 34
これは以下の返答を取り次いだものだろう。 ns.brau.jp. 85629 IN A 150.42.6.4
$ dig -t txt brau.internat.jp @ns.brau.jp ; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> -t txt brau.internat.jp @ns.brau.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 42347 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;brau.internat.jp. IN TXT ;; AUTHORITY SECTION: internat.jp. 60 IN SOA ns.internat.jp. tss.e-ontap.com. 2020061601 3600 600 86400 60 ;; Query time: 25 msec ;; SERVER: 150.42.6.4#53(150.42.6.4) ;; WHEN: Sun Aug 30 06:40:56 JST 2020 ;; MSG SIZE rcvd: 99