1. DNS/毒盛/キャッシュ上書き/NS変更毒/デモ

BINDリゾルバーはキャッシュにあるNSレコードを上書きする。
 ある種の返答に含めたNSを使うことで、容易に毒盛できる。

このことを示すのに便利なサイトが存在するので、そこを使ってデモを行なう。

flip.e-ontap.com ドメインのNSレコードを書き換えて、ハイジャックするという想定である。 デモは10分もあれば、行うことができる。

-- ToshinoriMaeno 2018-12-25 23:35:28

実際には自分でNSを書き換えている。これはNS移転だと考えれば、便利な機能だとも言える。


2. デモの目的

flip.e-ontap.com をハイジャックする。

このNSをns.internot.jpを指すようにしむけることができるリゾルバー実装(脆弱)が存在することを見せる。

説明では毒盛対象のリゾルバーは127.0.0.1 で動いているものとする。(BIND 9.12.3を使っている。)

3. 設定

flip.e-ontap.com ゾーンのための設定を確認する。(途中省略): 委任の確認

$dig +norec -t ns flip.e-ontap.com @ns.e-ontap.com

/設定1 flip.e-ontap.com のNSはns.flip.e-ontap.comであり、150.42.6.1 となっているはず。[TTL 86400]

このことをゾーンサーバーにも問合せて確認する。

$dig +norec -t ns flip.e-ontap.com @150.42.6.1

/設定2

4. 時刻により返答が変わる

5分後に再度確認してみると、返事が変わっていることに気づくはずだ。/設定3

変わっていたら、そちらのサーバーの返事も調べておくのがよい。/設定4

5. 実験手順

基本は以下のコマンドを実行するだけである。

*.flip.e-ontap.comを問合せる。*はa,b,c, ... と変化させる。 /返答1

$dig a.flip.e-ontap.com @127.0.0.1

このテストでは問合せ(dig)を実行する時刻が重要である。

注意:別の時刻に始めると、説明とは異なる現象が現れることがある。

6. 変化を確認する

リゾルバーによるが、+norec optionでキャッシュを覗くことができると便利である。(BIND)

$ dig +norec -t ns flip.e-ontap.com @127.0.0.1

; <<>> DiG 9.12.3 <<>> +norec -t ns flip.e-ontap.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54923
;; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1220
; COOKIE: 3270b0784222ec010cbdf8055c22ce90f97551754dde1c9b (good)
;; QUESTION SECTION:
;flip.e-ontap.com.              IN      NS

;; ANSWER SECTION:
flip.e-ontap.com.       1448    IN      NS      ns.flip.internot.jp.

;; ADDITIONAL SECTION:
ns.flip.internot.jp.    84260   IN      A       150.42.6.5

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 水 12月 26 09:42:56 JST 2018
;; MSG SIZE  rcvd: 122

7. 考察

BINDリゾルバーはAuthoritative Answer(返答)のAuthority Sectionを使って、 キャッシュにあるレコードを上書きすることがある。

NS名が変更されると、受け入れるのがBINDの脆弱性のようだ。

8. あとがき

default configのUnboundでも同様の脆弱性があるかもしれない。/unbound

Knot Resolverはmode次第だ。("strict"なら脆弱ではない)

-- ToshinoriMaeno 2018-12-26 01:00:24