DoS攻撃(ドスこうげき、英: denial-of-service attack)は、情報セキュリティにおける可用性を侵害する攻撃手法のひとつ。

ウェブサービスを稼働しているサーバやネットワークなどのリソース(資源)に意図的に過剰な負荷をかけたり脆弱性をついたりすることでサービスを妨害する。

## 概要

DoS攻撃には2種類の類型があり、第一の類型はウェブサービスに大量のリクエストや巨大なデータを送りつけるなどしてサービスを利用不能にするフラッド攻撃(Flood=「洪水」)であり、第二の類型はサービスの脆弱性を利用する事でサービスに例外処理をさせるなどしてサービスを利用不能にする攻撃である。

### 攻撃の目的

DoS攻撃の主な目的はサービスの可用性を侵害する事にあり、具体的な被害としては、トラフィックの増大によるネットワークの遅延、サーバやサイトへのアクセス不能といったものがあげられる。

しかしDoS攻撃は被害者に経済的ダメージを負わせる事を目的として行われる場合もあり、EDoS攻撃 (Economic DoS Attack) と呼ばれる。たとえば、クラウド上で従量課金されているサービスにDoS攻撃を仕掛ければ、サービスの運営者に高額な課金を発生させることができる。

### DDoS攻撃

フラッド型のDoS攻撃には、大量のマシンから1つのサービスに、一斉にDoS攻撃を仕掛けるDDoS攻撃(ディードスこうげき、分散型サービス妨害攻撃、英: Distributed Denial of Service attack)という類型がある。

DDoS攻撃は、複数のシステムを使用して、サーバー、ネットワークデバイス、またはトラフィックとリンクして、利用可能なリソースを圧倒し、正当なユーザーに応答できないようにする攻撃である。

DDoS攻撃の類型は2つあり、第一のものは攻撃者が大量のマシン(踏み台)を不正に乗っ取った上で、それらのマシンから一斉にDoS攻撃を仕掛ける協調分散型DoS攻撃である。

第二の類型は、DRDoS攻撃(Distributed Reflective Denial of Service attack。DoSリフレクション攻撃、分散反射型DoS攻撃) と呼ばれる。DRDoS攻撃では、攻撃者が攻撃対象のマシンになりすまして大量のマシンに何らかのリクエストを一斉に送信する。するとリクエストを受け取ったマシン達は攻撃対象のマシンに向かって一斉に返答を返すことになるので、攻撃対象のマシンには大量の返答が集中し、高負荷がかかることになる。DRDoS攻撃は協調分散型DDoS攻撃と異なりマルウェアなどで踏み台を乗っ取らなくても実行可能なため攻撃が発覚しづらい。

主なDRDoS攻撃として、Domain Name Systemを利用したDNSアンプ攻撃(DNS amplification attacks。DNS amp攻撃、DNSリフレクター攻撃、DNSリフレクション攻撃とも) や ICMP echo を利用したSmurf攻撃などがある。

DRDoS攻撃に使える主なプロトコルとして、TCPのSYN、ACK、DATA、NULL、ICMPのECHO Request、Time Stamp Request、Address Mask Request、およびUDP、IP pkt (low TTL)、DNS query がある。

NetBIOSネームサーバやRPCポートマップなどへのリクエストを利用する攻撃も観測されている。
協調分散型DDoS攻撃とDRDoS攻撃が組み合わされることもある。

## 攻撃手法

フラッド型のDoS攻撃は、ウェブ上に公開されている様々なサービスに対して行うことができるので、攻撃対象となるサービスごとにフラッド攻撃が存在する。

### SYNフラッド攻撃

TCPの3ウェイ・ハンドシェイクでは2つのマシンA,BがTCP接続をする際、Aが通信要求SYNパケットを送信し、BがSYN/ACKパケットを送信し、最後にAがACKパケットを送るという手順をたどる。
SYNフラッド攻撃では攻撃者が攻撃対象のマシンに対しSYNパケットを大量に送りつけ、それらすべてに対するSYN/ACKパケットを攻撃対象に発行させる。しかし攻撃者はそれらのSYN/ACKパケットに対しACKパケットを返信しない。
これにより攻撃対象はタイムアウトになるまでいつまでもACKパケットを待ち続けることとなり、リソースを食いつぶされてしまう。
対策としてはRFC 4987にファイアーウォールやプロキシの利用といった一般的手法の他、SYN cookies、TCP half-open、SYN Cacheといった手法が記載されている。

### ICMPとUDP

ICMPやUDPのようなコネクションレスのサービスでは発信元の偽装が容易なので、DoS攻撃を行う攻撃者にとって身元がわかりにくいという利点がある。

ICMPを利用したものにはICMP echo request (を利用したping)を攻撃対象に大量に送り続けるICMP echoフラッド攻撃(pingフラッド攻撃)や、踏み台にICMP echo requestをブロードキャストする事でICMP echo replyを攻撃対象に集めるDRDDoS攻撃であるSmurf攻撃がある。

他にも規格外の大きなサイズのICMPパケットを送りつける事で攻撃対象をクラッシュさせるping of deathという攻撃がかつてあったが、1996年に発見されて以降この脆弱性は防がれているため、この手法はほぼ通用しなくなっている。

UDPに対してもUDPポートに対して大量のトラフィックを送信するUDPフラッド攻撃があり、UDPを利用したDRDDoS攻撃をUDPベース増幅攻撃(UDP-Based Amplification Attack)と呼ぶ。

UDPベース増幅攻撃の中でもNTPの実装であるntpdのmonlistコマンドを使った攻撃は増幅率が高く、19倍から206倍の増幅率に達する。このコマンドはNTPサーバが過去にやり取りしたアドレスを最大で600件返すものであり、ntpdにおけるコマンドを利用した攻撃が2013年に観測されている。なおntpdのバージョン4.2.7p26以降はこのコマンドを悪用できないよう修正されている。

この他にもSSDPやRIPv1を利用したUDPベース増幅攻撃がある。

### ブラウザの再読み込み

ウェブブラウザに備わっているページの再読み込み機能を使用し、Webサーバに大量にリクエストを送りつける攻撃はF5アタック(F5攻撃)と呼ばれることがある。この名称は、「F5キーを連打する攻撃」であることに由来する。

Windows上で動作するウェブブラウザでは、F5キーが更新機能に割り当てられていることが多いため、F5キーを押下するたびにWebサーバにリクエストが送られることになる。

なお、Ctrl+RでもF5アタックと同じリクエストを送ることができる。

### その他

- スローなHTTP系:長時間にわたってWebサーバがコネクションを維持してくれることを悪用して能力を浪費する。次の攻撃がある。
  - Slow HTTP Headers(Slowloris)
  - Slow HTTP POST(RUDY:R-U-Dead-Yet?)
  - Slow Read DoS
- メールボム:サイズの大きいメールや大量のメールを送り付ける手法。
- HTTP GET/POSTフラッド:HTTPの規格には準拠しているが負荷のかかるリクエストを大量にWebサーバー宛てに送る。
- TeardropおよびLand攻撃:かつてTCP/IP実装にあった脆弱性 を利用した攻撃。前者は分割されたIPパケットを再統合する際パケットの重複をうまく扱えない実装上の問題を利用した攻撃、後者は攻撃者が送り主と送信先を一致させたパケットを送りつけると無限ループにはまるなどの脆弱性を利用した攻撃。
- WinNuke かつてMicrosoft Windowsの「NetBIOS over TCP/IP」に在った脆弱性が攻略された。

## 攻撃ツール

- 荒らしプログラムとは、主にWeb掲示板を荒らすために作られたプログラムを指すが、内容としてはHTMLの解析やHTMLFORMの送信機能を備え、連続投稿を可能としたHTTPクライアントで、DoS攻撃プログラムに準じている。F5アタックがWebブラウザからのGETメソッドによるHTTPアクセスしか出来ないのに対し荒らしプログラムは様々なメソッドにおいてのアクセスを可能としている。また前述したDDoSに準じ、踏み台となったサーバからの一斉攻撃を行うものもある。少しHTMLの知識があれば使える物や、アドレスを入力するだけで使えるようになる(自動解析)ツールも存在する。主にPerlによって記述されるが、これも踏み台とされたサーバでの利便性を考えたものである。コマンドで、ping -n ○○(回数)-l (1~65500) IPアドレス と入力することで、多少の負荷はかけられるが、大した攻撃にはならない。
- LOICは、アノニマスの常套手段となっていた。例えば2010年ペイバック作戦においても使われた。
- HOIC(High Orbit IonCanon)は、LOICの後継として2010年ペイバック作戦の時期に開発された。
- Slowlorisは、Slow HTTP Headers攻撃を再現する。
- Stacheldraht(独:「有刺鉄線」の意)は図に示すように、踏み台側のエージェントと、エージェントを操るハンドラーと、攻撃者がハンドラーを操るクライアントから成るDDoS攻撃ツールである。
- イギリスのGCHQは、'PREDATORS FACE'と'ROLLING THUNDER'というDDoS攻撃ツールをもっている といわれている。
- 田代砲はhttpリクエストを連続送信するスクリプトを組み込んだ極めて単純な攻撃ツールの一例である。メガ粒子田代砲や連装田代砲などのより攻撃的な亜種も多数開発された。
- :loop ping IPaddress -l 65500 -w 1 -n 1 goto :loop
- MHDDoSは、現在ITエンジニアやハッカーの間では有名なDDoSツールである。フォークが多く、数々の拡張版も存在する。更新が2年前ということで対策がされていることも多い。同様のツールとして、"Karma-DDoS"が存在する。
- 上記の派生版として、ウクライナIT軍が作った"MHDDoS-Proxy"や、北朝鮮などの東側勢力や宗教勢力が攻撃対象の反西洋主義者DDoSツールがある。いずれもプロキシの自動更新や他のDDoSツールの攻撃手法を組み込むなどして、防御手段を巧みに回避している。
- 他のツールとしては、バングラデシュのハッカー集団が使っている"Raven Storm"や他の攻撃ツールをパッケージにした"UFONet"といったツールも存在する。ウクライナIT軍が使用している"db1000"が存在する。

## 防御技法

### 各サイトにおける防御技法

- 侵入防止システム(IPS: Intrusion Prevention System)には、シグニチャに基づく防御機能と閾値に基づく防御機能が実装されている。シグネチャに基づく防御機能は、Smurf攻撃やLand攻撃のように特徴あるパケットに対して有効であったが、プロトコル実装側の脆弱性もすでに解消されている。
- SYNクッキーは、SYNフラッド等への対策として各OSごとに開発され、それぞれのプロトコルスタックに実装されている。
- WAF(Web Application Firewall)には、スローなHTTP系の攻撃に対する設定を行える。WebサーバについてはQoSやタイムアウトについての設定も見直す価値がある。

### インターネットサービスプロバイダにおける防御技法

- イングレスフィルタリング:送信元IPアドレスを偽ったパケットをフィルタリングすることによって攻撃元とならないようにする。
- 代理応答
- 帯域制御
- ブラックホール
- OpenFlow

## 攻撃の副作用

### バックスキャッター

コンピュータネットワークセキュリティでは、スプーフィングされたDoS攻撃の副作用としてバックスキャッターが発生する。この種の攻撃では、攻撃者は被害者に送信されたIPパケットの送信元アドレスをスプーフィング (偽造)する。一般に、被害者のマシンはなりすましパケットと正当なパケットを区別できないため、被害者は通常どおりになりすましパケットに応答するが、この応答がバックスキャッターと呼ばれる。

攻撃者が送信元アドレスをランダムにスプーフィングしている場合、被害者からのバックスキャッター応答パケットはランダムな宛先に送信される。バックスキャッターの観測は、DoS攻撃の間接的な証拠となる。

「バックスキャッター分析」とは、IPアドレス空間の統計的に有意な部分に到着するバックスキャッターパケットを観察して、DoS攻撃と被害者の特性を判断することである。