はじめに
ITの勉強において、やっぱり全範囲を網羅的に勉強しようと思ってもなかなか、先輩・上司に追いつき追い抜くことって時間がかかるものです。そのせいでモチベーション下がったり……
だったら、1つのことに1点集中して『これに関しては同レベルor僕の方が上だ!』と思える領域を少しずつ作っていきましょう!それを続けていけば、どんどんどんどん勝てる領域が多くなり、気づいたら自分が行きたい場所に登り詰めるでしょう!
ということで今回はDNSリフレクタについて知見を深めていきましょう!
DNSリフレクタ攻撃(DNS Amplification攻撃)とは
DNSリフレクタ攻撃(DNS Amplification攻撃)は、攻撃者がネットワークに対して大規模なトラフィックを送り込み帯域を圧迫するための手法です。この攻撃は、特にDNSサーバを利用して、ターゲットのネットワーク帯域を圧迫します。攻撃の核心は、「送信元IPアドレスを偽装し、DNSサーバを踏み台にしてターゲットに大量のデータを送信する」ことにあります。
DNSリフレクタのポイント
では、DNSリフレクタにおいて肝となる用語・概念を3つ抑えていきましょう!
1. IPアドレスの偽装:
DNSリフレクタでの攻撃者は、送信元IPアドレスをターゲットのものに偽装します。これにより、DNSサーバがターゲットに対して応答を送信するように仕向けます。
基本的にUDPが使われているサービスは偽装攻撃を受けやすいです。これは、UDPが本人認証・通信整合性を保証しないという特徴に起因します。
2. オープンリゾルバの利用:
攻撃者は、インターネット上のオープンリゾルバ(外部からのDNS問い合わせに対して再帰的な解決を行うDNSサーバ)を利用します。これらのサーバは、任意のドメインに対して再帰的に問い合わせを行うことができ、攻撃者が仕組んだ偽装されたリクエストに応じて大量のデータを送信します。
3. 増幅(Amplification):
DNSサーバが返す応答のサイズが、リクエストのサイズよりもはるかに大きくなるため、少量のリクエストで多量のデータをターゲットに送り込むことができます。たとえば、1KBのリクエストに対して、数十KBの応答が返ってくる場合があります。これが「増幅」の仕組みです。
DNSリフレクタ攻撃の別名はDNS amp攻撃です。ampとはamplification(増幅)の略です。
それでは、要点を抑えた所で「攻撃の流れ」を見ていきましょう!
攻撃の流れ
1. 攻撃者が送信元IPアドレスをターゲットのIPアドレスに偽装します。
2. オープンリゾルバを持つDNSサーバに対して、大量のDNSクエリ(特に応答が大きくなるクエリ)を送信します。
大量のクエリを送るので攻撃者の帯域も圧迫はされるものの、「DNS応答の方が大きくなる」という特徴から考えると、攻撃者の圧迫はターゲットのネットワーク圧迫に比べたら大したものじゃないんだ。
3. オープンリゾルバが、偽装された送信元アドレス(ターゲット)に対して大量の応答を返します。
4. これにより、ターゲットのネットワーク帯域が圧迫され、サービスが妨害される可能性があります。
では、対策を見ていきましょう!
対策
オープンリゾルバの管理:
自社のDNSサーバが外部からの再帰的な問い合わせを受け付けないように設定します。これにより、悪意のあるユーザーが自社のDNSサーバを攻撃の踏み台として利用することを防げます。
BCP38の実施:
BCP38(Best Current Practice 38)に従い、IPスプーフィングを防ぐための対策をネットワークレベルで実施します。これにより、偽装された送信元IPアドレスからのトラフィックをフィルタリングし、攻撃を減少させることができます。
他社との協力:
DNSリフレクタ攻撃は他社のオープンリゾルバも利用するため、広範囲な対策が必要です。他の組織やサービスプロバイダと協力し、オープンリゾルバを閉じるなどの対策を共有することが重要です。
結局、自分が攻撃を受けるときは、他社のオープンリゾルバが利用されます。つまり、自分たちだけがオープンリゾルバの対策をしても、他が対策をしなかったら被害を受け続けてしまうのです。そのため、一つ一つの会社で対策を講じることが大切です。
まとめ
要するに…
DNSリフレクター攻撃(DNS amp 攻撃)は、攻撃者が送信元IPアドレスを偽装し、オープンリゾルバに大量のDNSクエリを送信することで、ターゲットに対して大規模なトラフィックを送りつける攻撃手法です。この攻撃の仕組みは、まず攻撃者が送信元IPアドレスをターゲットのものに偽装して、オープンリゾルバと呼ばれる誰でも利用できるDNSサーバにクエリを送信します。オープンリゾルバは、そのクエリに対してDNS応答を返しますが、応答先は偽装されたターゲットのIPアドレスであるため、結果的にターゲットに対して大量のDNS応答が送られることになります。
この攻撃が有効なのは、DNSがUDPというプロトコルを使っているためです。UDPはコネクションレス型のプロトコルで、送信元IPアドレスの正当性を確認する仕組みがありません。このため、攻撃者は自由に送信元IPアドレスを偽装でき、ターゲットに対して直接攻撃せずとも、オープンリゾルバを通じて間接的に大規模なトラフィックを送りつけることが可能です。さらに、DNSリクエストに対して返されるレスポンスは、リクエストよりもデータ量が大きい場合が多く、少量のリクエストを送るだけで、ターゲットにはその数倍のデータが押し寄せることになります。これにより、攻撃者は少ないリソースで、ターゲットに対して非常に大きな負荷をかけることができます。
特に、オープンリゾルバは誰からのクエリにも応答するため、攻撃者にとって理想的な踏み台となります。攻撃対象が特定されていなくても、世界中に存在する多くのオープンリゾルバを利用することで、効率的に攻撃を拡大できます。このように、攻撃者は自分のネットワークリソースを最小限に抑えながら、ターゲットに対して大量のトラフィックを送り、結果的にターゲットのネットワーク帯域を圧迫し、サービス停止やダウンタイムを引き起こすことができるのです。
要するに、DNSリフレクター攻撃は、UDPの特性を悪用して送信元IPアドレスを偽装し、オープンリゾルバを通じてターゲットに対して大規模なDNS応答を送りつけることで、ターゲットのネットワーク帯域を圧迫し、少ないリソースで大きなダメージを与えることができる攻撃手法です。
おわりに
本日は『DNSリフレクタ攻撃』について知見を深めました!
これでまた、一歩成長しました!これからも焦らず、1つずつこれからも頑張っていきましょう!では、さらばじゃっ!また会おうぞ!