ACKフラッドDDoS攻撃とは?| DDoS攻撃の種類

ACKフラッド攻撃では、攻撃者は、偽のACKパケットをターゲットに大量に送信しようとします。ACKパケットは、本来はデバイスが転送データを正常に受信したことを確認するのに使用されるものです。

Share facebook icon linkedin icon twitter icon email icon

ACKフラッド攻撃

学習目的

この記事を読み終えると、以下のことができます。

  • ACKの意味を知る
  • ACKフラッド攻撃の仕組みを理解する
  • ACKフラッド攻撃を阻止する方法を学ぶ

ACKフラッドDDoS攻撃とは?

ACKフラッド攻撃とは、攻撃者が大量のTCP ACKパケットを送信してサーバーを過負荷状態にする攻撃です。ほかのDDoS攻撃と同様に、ACKフラッド攻撃の目的も、ジャンクデータを使用してターゲットサーバーのスローダウンやクラッシュを引き起こして、ほかのユーザーへのサービスを妨害することです。ターゲットサーバーは、受信した各ACKパケットを処理しなければならないので、非常に多くの計算能力を使用することで正当なユーザーにサービスを提供できなくなります。

ボイスメールボックス(留守番電話)が偽メッセージでいっぱいになったために正当な発信者がメッセージを残せない状況を思い浮かべてください。それらの偽メッセージがすべて「あなたのメッセージを受け取ったことを伝えたくて電話しました」であることを想像してください。これと同じようなことが、ACKフラッドDDoS攻撃で起きます。

パケットとは?

インターネットを介して送信されるすべてのデータは、パケットと呼ばれる小さなセグメントに分割されます。誰かがTwitterで詳細な説明をしたい場合や長々しい話をしたい場合を考えてください。一度にツイートする代わりに、280文字に収めたセグメントに分けて何度もツイートしなければなりません。Twitterを使用しない人は、携帯電話で専用アプリを使用せずに、長いSMSテキストを短いセクションに分割することを想像してみてください。

Transmission Control Protocol(TCP)は、インターネット通信の重要な部分です。TCPプロトコルを使用して送信されるパケットには、パケットヘッダーに入った重要な情報が添付されています。TCPプロトコルは、パケットヘッダーを使用して、パケットの数と到着順序を受信者に通知します。また、ヘッダーはパケットの長さ、種類なども示します。

これは、中身がわかるようにファイルフォルダーに名前を付けるようなものです。先ほどのTwitterの例に戻ると、長い一連のツイートを投稿する人は、読者がフォローしやすいように、ツイートの合計数を知らせて、各ツイートに番号を付けます。

ACKパケットとは?

ACKは「acknowledgement(確認応答)」の略です。ACKパケットとは、メッセージまたは一連のパケットの受信を確認するTCPパケットのことです。ACKパケットの技術的な定義は、ヘッダーに「ACK」フラグが立てられたTCPパケットです。

TCP Handshake

ACKパケットは、インターネット上で接続されている2つのデバイス間で会話を開始する一連の3つの手順であるTCPハンドシェイクの一部です(人が会ったときに会話を始める前に握手するのと同じです)。TCPハンドシェイクの3つの手順は次のとおりです:

  1. SYN
  2. SYN ACK
  3. ACK

接続をオープンするデバイス(ユーザーのノートパソコンなど)が、SYN(「synchronize(同期する)」の略)パケットを送信することで3ウェイハンドシェイクを開始します。接続の反対側にあるデバイス(オンラインショッピングのWebサイトをホストするサーバーなど)がSYN ACKパケットで応答します。最後に、ユーザーのノートパソコンがACKパケットを送信して、3ウェイハンドシェイクが完了します。このプロセスは、両方のデバイスがオンライン状態であり、追加のパケットを受信できる状態である、この例では、ユーザーがWebサイトを読み込める状態であることを確認します。

しかし、ACKパケットが使用されるのはこのときだけではありません。TCPプロトコルは、接続されたデバイスがすべてのパケットを順番に受信したことを確認する必要があります。ユーザーが画像をホストするWebページを訪問したとします。画像はデータパケットに分割されて、ユーザーのブラウザーに送信されます。画像全体が到着すると、ユーザーのデバイスはACKパケットをホストサーバーに送信して、欠落しているピクセルがないことを確認します。このACKパケットがない場合、ホストサーバーは画像を再度送信しなければなりません。

ACKパケットは、ヘッダーにACKフラグが立てられた任意のTCPパケットであるため、ACKはノートパソコンがサーバーに送信するメッセージの一部である可能性があります。ユーザーがフォームに必要事項を入力してデータをサーバーに送信すると、ノートパソコンはそれらのパケットの1つを画像のACKパケットにします。別のパケットである必要はありません。

ACKフラッド攻撃の仕組み

ACKフラッド攻撃は、受信するすべてのパケットを処理する必要があるデバイスを標的にします。ファイアウォールとサーバーは、ACKフラッド攻撃の標的になる可能性が最も高いです。ロードバランサー、ルーター、スイッチなどは、こうした攻撃の影響を受けません。

正当なACKパケットと不正なACKパケットは、ほとんど同じように見えるため、Content Delivery Network(CDN))を使用して不要なACKパケットを選別しない限り、ACKフラッド攻撃を阻止するのは困難です。見た目は似ていますが、ACK DDoS攻撃に使用されるパケットには、データパケットの主要部分(ペイロードと呼ばれるもの)は含まれていません。TCPヘッダーにACKフラグを含めるだけで、正当なものに見えるようになります。

ACKフラッド攻撃はレイヤー4(トランスポート層)に対するDDoS攻撃です。レイヤー4とOSIモデルについては、こちらをご覧ください

SYN ACKフラッド攻撃の仕組み

SYN ACKフラッドDDoS攻撃は、ACK攻撃と少し異なりますが、大量のパケットでターゲットを圧倒するという基本的な考え方は同じです。

TCPの3ウェイハンドシェイクの仕組みを思い出してください。ハンドシェイクの2つ目の手順は、SYN ACKパケットです。通常、サーバーは、クライアントデバイスからのSYNパケットの応答として、このSYN ACKパケットを送信します。SYN ACK DDoS攻撃では、攻撃者は大量のSYN ACKパケットをターゲットに送信します。これらのパケットは、3ウェイハンドシェイクの一部ではありません。その唯一の目的は、ターゲットの通常の動作を妨害することです。

また、攻撃者がSYNパケットをSYNフラッドDDoS攻撃で使用することも可能です。

CloudflareはどのようにACKフラッドDDoS攻撃を阻止するのか?

Cloudflare CDNは、Cloudflareのお客様のオリジンサーバーとの間のすべてのトラフィックをプロキシします。CDNはオープンのTCP接続に関連していないACKパケットは引き渡しません。そうすることで、悪意のあるACKトラフィックがオリジンサーバーに到達しないようにします。Cloudflareネットワークのデータセンターは、ほぼすべての規模のDDoS攻撃を吸収するのに十分な大きさがあるため、ACKフラッド攻撃はCloudflareにほとんどあるいはまったく影響を与えません。

Cloudflare Magic TransitCloudflare Spectrumも、こうしたDDoS攻撃を阻止します。CDNのようにレイヤー7トラフィックではなく、Magic Transitはレイヤー3トラフィックをプロキシし、Spectrumはレイヤー4トラフィックをプロキシします。どちらのプロダクトも、攻撃パターンを自動的に検出して攻撃トラフィックをブロックすることで、ACKフラッド攻撃を阻止します。

ほかの種類のDDoS攻撃については、こちらをご覧ください。