Kaminsky攻撃から学ぶDNSセキュリティ|DNSキャッシュポイズニングを加速させた歴史的攻撃手法を理解する

Kaminsky攻撃

Kaminsky攻撃から学ぶDNSセキュリティ

DNSセキュリティを学ぶ上で避けて通れないのがKaminsky攻撃です。

2008年にセキュリティ研究者Dan Kaminsky氏によって公表されたこの攻撃手法は、DNS業界に大きな衝撃を与えました。

当時運用されていた多くのDNSサーバが影響を受け、世界中で緊急パッチ対応が行われる事態となりました。

この攻撃はDNSキャッシュポイズニングを現実的な脅威へ変えた歴史的な出来事として知られています。

本記事ではKaminsky攻撃の仕組みや影響、現在のDNSが採用している対策について解説します。

Kaminsky攻撃とは

Kaminsky攻撃とはDNSキャッシュポイズニングを効率的に成功させる攻撃手法です。

攻撃者はDNSサーバへ偽の応答を送り込みます。

DNSサーバがその偽情報を信じることでキャッシュが汚染されます。

従来のキャッシュポイズニングとの違い

従来の攻撃では成功率が低いという問題がありました。


DNS問い合わせ
↓
応答待ち
↓
偽応答送信

問い合わせ識別番号を正しく当てる必要がありました。

DNSのトランザクションID

DNSには問い合わせごとに識別番号があります。


Transaction ID

DNSサーバは問い合わせと応答の対応関係を確認します。

攻撃者の課題

偽応答を送信する場合、このIDを正しく当てなければなりません。


問い合わせ
↓
ID予測
↓
偽応答

そのため従来は成功率が低かったのです。

Kaminsky攻撃の革新点

Kaminsky攻撃は大量の問い合わせを発生させます。


www1.example.com
www2.example.com
www3.example.com
www4.example.com

存在しないサブドメインを次々に問い合わせます。

なぜ存在しない名前を使うのか

キャッシュを回避するためです。

通常の問い合わせです。


www.example.com

キャッシュ済みなら権威DNSへ問い合わせません。

しかし存在しない名前なら毎回問い合わせが発生します。

攻撃の流れ


攻撃者
↓
大量の偽ドメイン問い合わせ
↓
DNSサーバ
↓
権威DNSへ問い合わせ
↓
偽応答を大量送信

これを高速で繰り返します。

成功するとどうなるか

キャッシュDNSへ偽情報が登録されます。


www.bank.com
↓
本来
203.0.113.10

攻撃後
198.51.100.10

利用者は偽サイトへ誘導されます。

影響範囲

キャッシュDNSを利用する全利用者へ影響します。


利用者A
↓
偽サイト

利用者B
↓
偽サイト

利用者C
↓
偽サイト

非常に危険です。

なぜ大問題になったのか

当時のDNSサーバはUDP送信元ポートを固定的に利用していました。


53番ポート

そのため予測が容易でした。

攻撃成功率の向上

トランザクションIDは16bitです。


65536通り

大量の偽応答を送信することで成功確率を大幅に向上できました。

当時影響を受けたソフトウェア

  • BIND
  • Microsoft DNS
  • Cisco IOS
  • 各種キャッシュDNS

ほぼ全てのDNS実装が対象でした。

DNS業界の対応

世界中のベンダーが緊急対応を行いました。

最大の対策が送信元ポートのランダム化です。

ソースポートランダム化とは

問い合わせごとに異なるUDPポートを利用します。


問い合わせ1
↓
UDP 35000

問い合わせ2
↓
UDP 42000

予測が困難になります。

効果

攻撃者は次の両方を当てる必要があります。

  • トランザクションID
  • 送信元ポート番号

成功率が大幅に低下します。

BINDの対策

現代のBINDでは標準で実装されています。

  • ランダムポート
  • ランダムID
  • キャッシュ保護

Kaminsky攻撃への耐性があります。

DNSSECとの関係

Kaminsky攻撃がDNSSEC普及の後押しになりました。

DNSSECでは応答へ電子署名を付与します。


DNS応答
↓
署名確認
↓
正当性検証

偽応答を検出できます。

攻撃確認のポイント

DNS応答内容を比較します。


dig @8.8.8.8 example.com

dig @1.1.1.1 example.com

結果が大きく異なる場合は調査が必要です。

ログ確認


journalctl -u named

大量の異常問い合わせを確認できます。

企業で実施すべき対策

  • DNSサーバを最新化する
  • DNSSECを利用する
  • オープンリゾルバを禁止する
  • ログ監視を行う
  • アクセス制御を行う

現代でも重要な理由

Kaminsky攻撃そのものは対策されています。

しかしDNSキャッシュポイズニングという考え方は現在も有効です。

DNSセキュリティを理解する基礎知識として重要な位置付けにあります。

実務で覚えておきたいポイント

  • Kaminsky攻撃は2008年に公開された
  • DNSキャッシュポイズニングを実用化した攻撃である
  • 大量問い合わせで成功率を高める
  • 送信元ポート固定が問題だった
  • 現在はランダムポートで対策されている
  • DNSSEC普及のきっかけとなった

まとめ

Kaminsky攻撃はDNSセキュリティの歴史を大きく変えた攻撃手法です。

DNSキャッシュポイズニングを現実的な脅威とし、世界中のDNSソフトウェアに大規模な修正をもたらしました。

現在ではランダムポートやDNSSECなどの対策によって大きく改善されていますが、DNSセキュリティを理解する上では欠かせない知識です。

DNS管理者やインフラエンジニアは、Kaminsky攻撃を通じてDNSの脆弱性と防御の考え方を学んでおくことが重要です。