🌐

DDos攻撃の主な攻撃手法のうち4つのネットワーク帯域を圧迫する攻撃について

2024/11/11に公開

はじめに

私が調べたもののログです。それを踏まえてこの記事を読んでもらえるとありがたいです。

本記事では、以下の4つの攻撃手法について、その概要、動作、そして有効な対策をまとめます。
全てが正しいとは限らないため、参考する際には自己判断でよろしくお願いします。

  • DNS Flood
  • GRE Protocol Flood
  • WS-Discovery Flood
  • ARMS Reflection

まず、DDoS攻撃とは?

DDoS(Distributed Denial of Service)攻撃とは、DoS攻撃を不特定多数のPCなどのボットを使用してDoS(Denial of Service)攻撃を分散して行うものです。

では、DoS攻撃とは?

DoS(Denial of Service)攻撃とは、攻撃対象のWebサイトや、サーバーに大量のトラフィックを送り付け、サービスを停止させる攻撃です。標的のリソースを圧迫し、正常のサービス提供をできないようにするのが目的ですが、DoS攻撃では一つのIPでの攻撃が特徴であり、仕掛けてきている送信元を特定し、アクセスを遮断すれば簡単に防げるものです。

そのため、分散(Distribute)して簡単に防げないようにしたものがDDoS攻撃というわけです。
最近はなんでも分散ですね^^

以降では、DDoS攻撃の中でもネットワーク帯域を圧迫するような攻撃方法について紹介していきます。

DNS Flood

概要

DNS Flood攻撃は、DNS(Domain Name System)サーバーを標的としたDDoS攻撃の一種です。攻撃者は大量のDNSリクエストを送信し、DNSサーバーのリソースを圧迫することで、正当なユーザーからのDNSクエリに対する応答を妨害します。この結果、ウェブサイトやサーバーへのアクセスが困難になり、サービス提供が困難になるというものです。
実際、DNS Flood攻撃は、通常の大量のトラフィックと区別するのが難しい場合があるんですね~。これは、攻撃してくる大量のトラフィックが正当なクエリの模倣や複数のIPアドレス、ランダム性を持たせて攻撃なのか通常のアクセスなのかわからなくなってしまうのです。

DNS(Domain Name System)サーバーとは
簡単にいうと、インターネットの「電話帳」です!
名前と電話番号を記録してる的なイメージで大丈夫です。
ドメインネームシステムの機能としては、覚えやすい名前(例:takumi0706.comなど)とWebサイトサーバーの覚えにくいアドレス(192.168.0.1など)を変換するためサーバーです。

動作

DNS Flood攻撃は、以下のような手順で行われます:

  1. ボットネットの利用: 攻撃者は、不正に制御された多数のコンピュータ(ボット)を用いて攻撃を実行します。
  2. 大量のDNSリクエスト送信: ボットネットから同時に大量のDNSクエリをターゲットのDNSサーバーに送信します。
  3. リソースの枯渇: サーバーはこれらのリクエストを処理しきれず、CPUやメモリ、帯域幅が圧迫されます。
  4. サービス停止: 最終的に、DNSサーバーが正常に機能しなくなり、正当なユーザーからのリクエストに応答できなくなります。

対策

DNS Flood攻撃に対する有効な対策は以下の通りです:

  1. レートリミティングの導入: 一定時間内に許容するDNSリクエストの数を制限し、異常なトラフィックを自動的にブロックします。
  2. Anycast技術の利用: 複数の地理的に分散したサーバーにトラフィックを分散させることで、単一のサーバーへの負荷を軽減します。
  3. DNSキャッシュの最適化: DNSキャッシュを効果的に利用し、再帰的なクエリの負荷を減少させます。
  4. DDoS防御サービスの活用: クラウドベースのDDoS防御サービスを導入し、大規模な攻撃トラフィックを吸収・フィルタリングします。
  5. モニタリングとアラート設定: DNSトラフィックを常時監視し、異常な増加が検出された際に迅速に対応できるようにします。

GRE Protocol Flood

概要

GRE(Generic Routing Encapsulation)Protocol Flood攻撃は、GREプロトコルを悪用したDDoS攻撃の一種です。GREは、異なるネットワークプロトコル間でデータをトンネリングするために使用されますが、この特性を利用して大量のGREパケットを送信し、ターゲットネットワークの帯域幅やリソースを圧迫します。

GREプロトコルとは
GRE(Generic Routing Encapsulation、総称ルーティングカプセル化)を簡単に言うと、「別のネットワークプロトコルを利用して、特定のプロトコルのデータを送るための技術」です。
カプセル化とは、「箱の中に別の箱を入れるようにデータパケットを入れ込むこと」で、GREを使うとある種類のネットワークのデータを、別のネットワークを経由して送ることができるようになります。
たとえば、車とフェリーを例にとると、車(データパケット)は道路を走ることができますが、直接水上を移動することはできません。そこで、車をフェリーに積むと(水上を進める別の方法)、フェリーによって車を水上移動させられます。
この例で言うと、車は「本来のデータパケット」、フェリーは「GREによるカプセル化されたパケット」、水上は「他のネットワークプロトコル」を指します。
具体的なシーンとして、会社の2つのオフィスのネットワーク間通信を例にしましょう。
オフィスAとオフィスBは新しいIPv6というプロトコルで通信を行いますが、その中継に古いプロトコルであるIPv4だけをサポートするネットワークを通さなければなりません。この場合、GREを使ってIPv6パケットをIPv4パケットの中に包むと、IPv4しかサポートしていないネットワークを通過させて、目的地のIPv6ネットワークに届けることができます。
つまりGREは、異なるネットワークプロトコルを持つ環境同士の間でデータを送るために、データを一時的に別のプロトコルの形で包む技術と考えるとわかりやすいでしょう!

動作

GRE Protocol Flood攻撃の具体的な動作は以下の通りです:

  1. ボットネットの構築: 攻撃者は、多数の感染したデバイスを利用してボットネットを形成します。
  2. 大量のGREパケット送信: ボットネットからターゲットに向けて、大量のGREトンネリングパケットを送信します。
  3. 帯域幅の消費: GREパケットは通常のトラフィックに混在しやすいため、ネットワークの帯域幅を大量に消費します。
  4. リソースの枯渇: ターゲット側のネットワーク機器やサーバーがこれらのパケット処理に追われ、正常な通信が妨げられます。

対策

GRE Protocol Flood攻撃に対する有効な対策は以下の通りです:

  1. パケットフィルタリング: 不要なGREトラフィックをブロックするために、ファイアウォールやルーターで適切なフィルタリングルールを設定します。
  2. 帯域幅の監視: ネットワーク帯域幅を常時監視し、異常なトラフィックの増加を早期に検出します。
  3. DDoS防御ソリューションの導入: 高度なトラフィック解析を行い、異常なGREトラフィックを自動的に遮断します。
  4. インフラのスケーリング: ネットワークインフラをスケールアウトし、攻撃トラフィックを分散処理できるようにします。

WS-Discovery Flood

概要

WS-Discovery Flood攻撃は、WS-Discovery(Web Services Dynamic Discovery)プロトコルを悪用したDDoS攻撃です。WS-Discoveryは、ネットワーク上のデバイスやサービスを自動的に検出するために使用されますが、このプロトコルを大量に利用することで、ネットワークデバイスのリソースを圧迫し、正常なサービス提供を妨害します。

WS-Discovery(Web Services Dynamic Discovery)とは
WS-Discovery(Web Services Dynamic Discovery、略してWSD)は、ローカルネットワーク内のデバイスを探すためのプロトコルです。簡単に言えば、ネットワーク内にあるデバイス(IPカメラやスピーカーなど)が「自分はここにいるよ」と自己紹介し、他のデバイスがそれを見つけやすくする仕組みです。WS-Discoveryを使うと、ネットワーク上でのデバイス探索が効率的に行えます。
このプロトコルは、通信手段として主にUDP(ユーザー・データグラム・プロトコル)を利用し、WS-Discovery対応デバイスが「ビーコン」と呼ばれる信号を定期的に発信します。(UDPって言われると赤ちゃんが適当に投げ捨てられる画像が頭に浮かぶのは私だけでしょうか...?笑)
たとえば、DVRが近くにあるIPカメラを探し出すことができます。ONVIFというネットワーク機器の相互運用性を高める団体によって標準化されているため、WS-DiscoveryはIPカメラなどの多くのネットワーク製品に導入されているらしいです。
ただしWS-Discoveryはもともとローカルネットワーク用に設計されたため、LAN外(インターネット)に接続されることが想定されていませんでした。そのため、以上な攻撃がつくられたんですって。
でもこの攻撃方法としては、WSDデバイスがインターネットに公開されていないとできないんですよね…
まとめると、WS-Discoveryはローカルネットワーク上でデバイス同士を見つけやすくするための仕組みで、便利な反面、インターネットに直接接続するとセキュリティ上の問題が生じちゃう。

動作

WS-Discovery Flood攻撃の具体的な動作は以下の通りです:

  1. ボットネットの利用: 攻撃者は、多数のボットを用いて攻撃を実行します。
  2. 大量のWS-Discoveryメッセージ送信: ボットネットからターゲットネットワークに対して、大量のWS-Discoveryプローブやアドバタイズメントメッセージを送信します。
  3. リソースの消耗: ネットワークデバイスやサーバーがこれらのメッセージを処理するためにリソースを消耗し、正常な通信が遅延または停止します。
  4. サービスの妨害: 結果として、ネットワーク上の他のサービスやデバイスの検出・利用が困難になります。

対策

WS-Discovery Flood攻撃に対する有効な対策は以下の通りです:

  1. WS-Discoveryの無効化: 必要ない場合は、WS-Discovery機能を無効化することで攻撃の対象を減少させます。
  2. ネットワークセグメンテーション: WS-Discoveryトラフィックを特定のネットワークセグメント内に制限し、攻撃の影響範囲を限定します。
  3. トラフィックモニタリング: WS-Discoveryトラフィックを監視し、異常な増加を検出した際にアラートを発します。
  4. ファイアウォール設定の強化: 不正なWS-Discoveryメッセージをブロックするために、ファイアウォールのルールを適切に設定します。

ARMS Reflection

概要

ARMS(Apple Remote Management Service)Reflection攻撃は、Appleのリモート管理サービスを利用したリフレクション型DDoS攻撃です。攻撃者は、被害者のIPアドレスを偽装して大量のリクエストを送信し、被害者のネットワークに対して反射トラフィックを引き起こします。これにより、被害者の帯域幅が消耗され、ネットワークサービスが停止する可能性があります。

ARMS Reflection攻撃の実際
実際、ARMSプロトコルを使ったリフレクション攻撃は理論上可能ではあるものの、普及率や効率の観点から一般的ではないためあまり行われない。私が調べた4つのなかでは格段に資料が少なかった。
しかし、大企業などはAppleのPCを管理していたりするので警戒はすべきではある。

動作

ARMS Reflection攻撃の具体的な動作は以下の通りです:

  1. IPアドレスの偽装: 攻撃者は、被害者のIPアドレスを偽装してリクエストを送信します。
  2. 大量のリクエスト送信: ARMSサービスに対して大量のリクエストを送信し、被害者のIPアドレスに応答を返すよう仕向けます。
  3. 反射トラフィックの集中: 被害者のネットワークに対して大量の反射トラフィックが集中し、帯域幅が圧迫されます。
  4. サービスの停止: 帯域幅の消耗により、正当なトラフィックが通過できなくなり、ネットワークサービスが停止します。

対策

ARMS Reflection攻撃に対する有効な対策は以下の通りです:

  1. IPソース検証の導入: 不正なIPアドレスを使用したトラフィックを検出し、ブロックします。これには、反射攻撃を防ぐためのIngressフィルタリングが含まれます。
  2. ARMSサービスの設定強化: ARMSサービスの設定を見直し、不要なリクエストを拒否するようにします。
  3. DDoS防御ソリューションの活用: 反射トラフィックを検出・遮断するための高度なDDoS防御ソリューションを導入します。
  4. ログの監視と分析: ARMSサービスのログを定期的に監視し、異常なトラフィックパターンを早期に発見します。

まとめ

本記事では、DNS Flood、GRE Protocol Flood、WS-Discovery Flood、ARMS Reflectionの4つのDDoS攻撃手法について、その概要、動作、そして有効な対策を紹介しました。

DDoS攻撃は常に進化しており、新たな手法が登場する可能性があります!最新の情報を常にチェックし、セキュリティ対策を強化することが重要であることは明らかですね。自己判断のもと、適切な対策を行ってください。

この記事が皆様のセキュリティ対策の一助となれば幸いです。

参考文献

著者について

takumi0706です。エンジニアになりたい人でして、現在はバックエンド開発(フロントもちょっと)に注力しています。技術的な挑戦を続ける中で学んだことをアウトプットすることをなるたけ努力してます。

これからも技術的な知見を深め、共有していくことを目指していますので、ぜひフォローやフィードバックをお寄せください。



takumi0706

Discussion