お久しぶりです。例によってセキュリティキャンプのリレーブログです。
前回はこちら。
攻撃の概要から対策手法まで簡単にまとめていきましょう。
DoS/DDoS攻撃とは
まずは定義から。
IPAのネットワークセキュリティ関連用語集からの引用です。
DoS攻撃
コンピュータ資源やネットワーク資源を利用できない状態に陥れる攻撃。 例えば、インターネットサーバーによって提供されている各種サービスを標的として妨害する攻撃が、一般に入手可能なツールを利用して行われている。このような DoS攻撃には、下記の種類がある。
インターネットプロトコルの特性を攻略して、ネットワークに接続されたコンピュータに過剰な負荷をかけて、サービスを提供することをできなくしてしまう攻撃
ネットワークの帯域を渋滞させる攻撃
サーバーアプリケーションの脆弱性を攻略し、サービスに例外処理をさせてサービスを提供することをできなくしてしまう攻撃(IPA)
DDoS攻撃
上記DoS攻撃には、インターネットプロトコルの特性を攻略して、ネットワークに接続されたコンピュータに過剰な負荷をかけて、サービスを提供することをできなくしてしまう種類の攻撃がある。このようなDoS攻撃の攻撃元が複数で、標的とされたコンピュータがひとつであった場合、その標的とされるコンピュータにかけられる負荷は、より大きなものになる。このような攻撃が DDoS( Distributed Denial of Service:分散サービス妨害)攻撃と呼ばれている。攻撃元は、攻撃者(人間)自身であるとは限らない。むしろ、攻撃者が事前に標的以外の複数サイトに、攻撃プログラムを仕掛けておいて、遠隔から攻撃を仕掛ける操作を行うことをきっかけとして一斉にDoS 攻撃をしかける手法の方が広く知られている。(IPA)
一言でまとめると、過剰な負荷をかけてトラフィックを増大させ、サービスの可用性を侵害するものがDoS攻撃。それらを複数のコンピューターから一斉に行うのがDDoS攻撃ということになります。
また、アプリケーションの脆弱性をついてサービスを停止させることもDoS攻撃に分類されていますね。ここら辺は知らない方も意外といたのではないのでしょうか。
F5アタックなんかもDoS攻撃に分類されますが、実際にサービスが提供できなくなるほどの負荷をかけるのは現代では難しいですね。
SYN flood攻撃
SYN flood攻撃はDoS攻撃の手法の一つです。
標的に対してTCPのハンドシェイクが確立しない要求パケットを大量に送ることでリソースを消費させます。 具体的には、
- まず、クライアントがSYNパケットを送信します。
- サーバーはSYN/ACKパケットを応答します。(ここまではただのTCPハンドシェイク)
- クライアント側はACKパケットを返さず、そして続けざまに大量のSYNパケットを送りつけます。
3でACKパケットを待つためにサーバー側は1で受け取ったクライアントの情報を一定時間メモリに保持します。 SYN flood攻撃は過剰にメモリリソースを消費させるほどのSYNパケットを送信することで行われるのです。
また、多くの場合攻撃者側のIPアドレスはスプーフィングされていて、身元の特定を困難にしています。
対策
有名な対策方法として SYN cookie というものがあります。
これは上記の手順の中の2でSYN/ACKパケットを送信する時、パケットのシーケンス番号に本来保持するべき1で受け取った情報を入れ込みます。 こうすることで3で受け取るACKパケットで同じシーケンス番号が帰ってくるはずです。
そして正しいシーケンス番号のACKパケットをサーバー側が受信した段階でシーケンス番号から情報を再構築し初めてメモリリソースを割り当てることで、SYN flood攻撃を防止できるのです。
Smurf攻撃
こちらもDoS攻撃の一種(厳密にはDDoS攻撃の一種)ですが、上記のSYN flood攻撃とは違ってネットワーク資源についての妨害攻撃となります。
手順としては、
- 送信元IPアドレスを標的サイトのアドレスに偽装してICMPエコー要求パケットをネットワークのブロードキャストアドレスに送る
- エコー要求パケットに応じてネットワーク上の各端末が応答パケットを標的サイトに送る
こうすることで大量のICMPエコー応答パケットがネットワーク上に流れ、帯域の渋滞を引き起こすのです。
これはブロードキャスト指図(directed broadcast)機能のあるICMPだからこそできる攻撃です。
個人的に単純明快でとても好きな攻撃なのですが、今日のネットワークではブロードキャスト指図機能を無効化することでSmurf攻撃への対策が確立されており、このような対策が取られていない脆弱なネットワークは殆どありません。
ボットネット
最後にDDoS攻撃で使われるボットネットについても簡単に書いておきましょう。
まずDDoS攻撃は主に二種類に分けられます。
一つはDRDoS攻撃(分散反射型DoS攻撃)と呼ばれるもので、攻撃者が攻撃対象になりすまして大量のコンピューターにリクエストを一斉に送信し、受け取ったコンピュータが攻撃対象に向かって返答を返すことで高負荷をかける攻撃です。上記のSmurf攻撃も典型的なDRDoS攻撃です。
もう一つは、攻撃者が大量の踏み台マシンを乗っ取ってそれらを使って一斉にDoS攻撃を仕掛ける、協調分散型DDoS攻撃と呼ばれるものです。
後者では基本的に攻撃者が事前に複数のコンピューターに対して攻撃者側が指示・制御を可能とするマルウェアを感染させておきます。
そして指示・制御を行う攻撃者側のコンピューターないしアプリケーションをC&Cサーバー(C2サーバー)と呼び、C&Cサーバーとマルウェアに感染したコンピューター(ボット)のネットワークをボットネットと言います。
ボットネットによって攻撃者はDDoS攻撃を行うことは勿論、多くのメールを送信してフィッシング詐欺を行うといったこともできるのです。
おわりに
ここで紹介した攻撃手法や対策は一部でしかありません。
調べていくと意外にも多くの攻撃手法や対策があって驚きました。 単純な攻撃だからこそ応用が効いたりして対策が複雑になることも多いのですかね。
ちなみに2018年にGithubで最高1.35テラビット毎秒のDDoS攻撃が観測されていたらしいです。Akamaiのサービスによって無効化に成功しているらしいのですが、1.35テラビット毎秒ってエグいですよね。どのぐらいのスピードで何人がF5を連打したのでしょうか(そういうことではない)。
次回はこちらで更新予定です。
参考資料
ネットワークセキュリティ関連用語集(アルファベット順):IPA 独立行政法人 情報処理推進機構
https://www.cloudflare.com/ja-jp/learning/ddos/syn-flood-ddos-attack/