ntpのmonlistを確認してみた

ntpのmonlist機能の脆弱性を使ったDDoS攻撃が多発しているようですが、monlistって何ですか？って感じなので、ちょっと通信を確認してみました。

ちなみにCVE番号は [CVE-2013-5211](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-5211) です。

手持ちの環境でmonlistに答えてくれたNTPサーバがあったので、その出力を貼りますね。

```bash
$ ntpdc -nc monlist 10.123.1.253
remote address          port local address      count m ver code avgint  lstint
===============================================================================
10.123.7.30            35585 10.123.1.253         675 7 2      0    756       0
10.123.76.32             123 10.123.1.253         683 3 4      0   1024       0
10.123.39.49             123 10.123.1.253         982 3 4      0   1008       0
10.123.38.40             123 10.123.1.253         672 3 4      0   1024       3
10.123.3.83              123 10.123.1.253        1269 3 4      0    108       5
10.123.3.80              123 10.123.1.253        1148 3 4      0   1036      15
10.123.1.174             123 10.123.1.253         664 3 4      0   1051      22
10.123.12.30             123 10.123.1.253         672 3 4      0   1024      22
10.123.12.32             123 10.123.1.253         673 3 4      0   1024      24
10.123.19.100            123 10.123.1.253         672 3 4      0   1024      25
~~省略~~
10.123.19.126            123 10.123.1.253           2 3 3      0      2  429635
10.123.1.233             123 10.123.1.253          94 3 4      0   1050  589670
10.123.12.130            123 10.123.1.253          60 3 4      0    120  592082
127.0.0.1              14702 127.0.0.1              5 6 2      0      0  686994
$
```

###(ﾟдﾟ)！！
ntpdcコマンドでmonlistのクエリ投げると、出るわ出るわで、なんと300行超の結果が返ってきました。
時刻同期の問い合わせをしたクライアントのIPアドレスが全て返るようですね。

tcpdumpでパケットも覗いてみましたよ。

```bash
$ tcpdump -nX -r /tmp/todaemon.cap | less
09:28:02.148284 IP 10.123.7.30.44164 > 10.123.1.253.ntp: NTPv2, Reserved, length 192
        0x0000:  4500 00dc 0929 4000 4011 11f6 0a7b 071e  E....)@.@.......
        0x0010:  0a7b 01fd ac84 007b 00c8 1fcc 1700 032a  .......{.......*
        0x0020:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0060:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0070:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0080:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0090:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00d0:  0000 0000 0000 0000 0000 0000            ............
09:28:02.149852 IP 10.123.1.253.ntp > 10.123.7.30.44164: NTPv2, Reserved, length 440
        0x0000:  4500 01d4 8648 0000 3f11 d4de 0a7b 01fd  E....H..?.......
        0x0010:  0a7b 071e 007b ac84 01c0 5779 d700 032a  .....{....Wy...*
        0x0020:  0006 0048 0000 0268 0000 0000 0000 0000  ...H...h........
        0x0030:  0000 02a5 0a7b 071e 0a7b 01fd 0000 0001  ................
        0x0040:  ac84 0702 0000 0000 0000 0000 0000 0000  ................
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0060:  0000 0000 0000 0000 0000 0000 0000 03eb  ................
~~省略~~
```

出力が多くて省略してますがが、問い合わせはわずか192byteなのに、応答は440byte x 39回 = 17160byte も返っておりました。
こりゃ、増幅効果が高い通信ですね。

UDPなので送信元を詐称しやすいという話もあって、そこはどうすればいいのかよくわかりませんが、偽装された送信元アドレスに、大量のUDPパケットを送りつけるには都合のいい機能ってのがよくわかりますね。

ではでは。