DNSはドメイン名(「www.xxxx.com」など)からIPアドレスを取得するための仕組みですが、これを悪用して偽サイトへアクセスさせたり、攻撃対象端末へ集中アクセスを集中させてサービス停止させるなどといったことができてしまいます。
本書はDNSを使った攻撃や対策を紹介します。
DNSキャッシュポイズニング
キャッシュポイズニングは、DNSキャッシュサーバのキャッシュに偽のIPアドレスを登録させる攻撃で、利用者が正しいドメイン名アクセスしたとしても偽サイトに誘導されてしまいます。
DNSキャッシュポイズニング攻撃手法
DNSキャッシュサーバは、クライアントからリクエストがあった場合にドメイン名が自身のキャッシュに無い場合は権威サーバへリクエストをして得たIPアドレスを、キャッシュに登録します。

DNSキャッシュポイズニングは、攻撃者が権威サーバからの応答より先に偽のIPアドレスをDNSキャッシュサーバへ返して、キャッシュに偽のIPアドレスを登録することで成立します。

DNSキャッシュサーバが汚染され、キャッシュが有効な間、多数の利用者に影響します。
■DNSキャッシュポイズニングの成立条件
・攻撃者の応答が権威DNS応答より先に届くこと
・トランザクションID、問い合わせ元ポート番号、問い合わせ内容(ドメイン名など)が一致すること
DNSキャッシュポイズニングは、DNSキャッシュサーバとDNS権威サーバやり取りが UDPだから成立する攻撃です。
TCPの場合はサーバ同士のやりとりでシーケンス番号、ACK番号という合言葉が必要なので、偽の応答を送り込むことが困難なのです。
DNSキャッシュポイズニングの防止策
DNSキャッシュポイズニングの防止策は以下があります。
| 防止策 | 説明 |
|---|---|
| DNSSEC | DNSSECは、DNSリソースレコードに付与された電子署名を検証。 正当性が確認できた応答のみをキャッシュすることで、DNSキャッシュポイズニングを防止。 ![]() ※実際には公開鍵も受け取り、公開鍵を使って検証しますが省略 |
| トランザクションIDや送信元ポート番号のランダム化 | ・トランザクションIDを予測困難な値にする ・ポート番号はUDP53固定ではなく高位ポートをランダムに使用 |
DNSリフレクション攻撃
DNSリフレクション攻撃は、送信元IPを偽装してDNSに問い合わせ、大量の応答を被害者に送りつける攻撃です。

DNSリフレクション攻撃の仕組み
- 攻撃者はボットネット(マルウェアに感染し、攻撃者の指示で遠隔操作できる多数のコンピュータ)を用意します。
- 次に攻撃者はボットネットを使って、送信元IPアドレスを攻撃対象のIPアドレスに偽装してDNSサーバに問い合わせを送ります。
- DNSサーバは「正当な問い合わせだ」と思い込み被害者にDNSの応答を返します。
- DNSの応答は問い合わせよりもサイズが大きいことが多いため、攻撃対象サーバに大量のトラフィックが集中してサービス停止します。

DNSリフレクション攻撃の防止策
DNSリフレクション攻撃の防止策についてまとめました。
| 防止策 | 説明 |
|---|---|
| オープンリゾルバ停止 | オープンリゾルバとは、インターネット上のどこからでも名前解決の問い合わせに応答する状態になっているキャッシュDNSサーバーのこと。 オープンリゾルバをやめて、DNS問い合わせを受け付ける範囲を制限する。 |
| BCP38(送信元IPアドレスフィルタリング) | ・BCP38は自ネットワークから、送信元IPアドレスを偽装したパケットを出させない対策 ・ISPや組織のルータで送信元IPが正しいかをチェックして不正なら破棄 ![]() |
まとめ
- DNSキャッシュポイズニングは、DNSのキャッシュに偽のIPアドレスを登録させ、偽サイトに誘導する攻撃である。
- DNSキャッシュポイズニングの対策には、DNSSEC(DNSレコードに付与された電子署名の検証)や、トランザクションID及び送信元ポート番号のランダム化がある。
- DNSリフレクション攻撃は、送信元IPアドレスを偽装してDNSに問い合わせ、大量の応答を被害者に送りつける攻撃である。
- DNSリフレクション攻撃の対策として、オープンリゾルバを停止することや、BCP38により送信元IPアドレスの偽装を防止することが挙げられる。




コメント