DoS攻撃(ドスこうげき)(英:Denial of Service attack)は、情報セキュリティにおける可用性を侵害する攻撃手法のひとつ。ウェブサービスを稼働しているサーバやネットワークなどのリソース(資源)に意図的に過剰な負荷をかけたり脆弱性をついたりする事でサービスを妨害する。 DoS攻撃には2種類の類型があり、第一の類型はウェブサービスに大量のリクエストや巨大なデータを送りつけるなどしてサービスを利用不能にするフラッド攻撃(Flood=「洪水」)であり、第二の類型はサービスの脆弱性を利用する事でサービスに例外処理をさせるなどしてサービスを利用不能にする攻撃である[1][2]。 DoS攻撃の主な目的はサービスの可用性を侵害する事にあり、具体的な被害としては、トラフィックの増大によるネットワークの遅延、サーバやサイトへのアクセス不能といったものがあげられる[3]。 しかしDoS攻撃は被害者に経済的ダメージを負わせる事を目的として行われる場合もあり、EDoS攻撃(Economic DoS Attack)と呼ばれる。たとえばクラウド上で従量課金されているサービスにDoS攻撃をしかければサービスの運営者に高額な課金を発生させることができる[4]。 フラッド型のDoS攻撃には、大量のマシンから1つのサービスに、一斉にDoS攻撃を仕掛けるDDoS攻撃(ディードスこうげき、分散型サービス妨害攻撃、英: Distributed Denial of Service attack)という類型がある。 DDoS攻撃の類型は2つあり、第一のものは攻撃者が大量のマシン(踏み台)を不正に乗っ取った上で、それらのマシンから一斉にDoS攻撃をしかける協調分散型DoS攻撃である。 第二の類型は、DRDoS攻撃(Distributed Reflective Denial of Service attack。DoSリフレクション攻撃、分散反射型DoS攻撃)[5][6]と呼ばれる。DRDoS攻撃では、攻撃者が攻撃対象のマシンになりすまして大量のマシンに何らかのリクエストを一斉に送信する。するとリクエストを受け取ったマシン達は攻撃対象のマシンに向かって一斉に返答を返すことになるので、攻撃対象のマシンには大量の返答が集中し、高負荷がかかることになる[7]。DRDoS攻撃は協調分散型DDoS攻撃と異なりマルウェアなどで踏み台を乗っ取らなくても実行可能なため攻撃が発覚しづらい。 主なDRDoS攻撃として、Domain Name Systemを利用したDNSアンプ攻撃(DNS amplification attacks。DNS amp攻撃、DNSリフレクター攻撃、DNSリフレクション攻撃とも)[7]や ICMP echo を利用したSmurf攻撃
目次
1 概要
1.1 攻撃の目的
1.2 DDoS攻撃
2 攻撃手法
2.1 SYNフラッド攻撃
2.2 ICMPとUDP
2.3 ブラウザの再読み込み
2.4 その他
3 攻撃ツール
4 防御技法
4.1 各サイトにおける防御技法
4.2 インターネットサービスプロバイダにおける防御技法
5 事件
6 関連項目
7 脚注
8 外部リンク
概要
攻撃の目的
DDoS攻撃 図:Stacheldraht
DRDoS攻撃に使える主なプロトコルとして、TCPのSYN、ACK、DATA、NULL、ICMPのECHO Request、Time Stamp Request、Address Mask Request、およびUDP、IP pkt (low TTL) 、DNS query がある[8]。
NetBIOSネームサーバやRPCポートマップなどへのリクエストを利用する攻撃も観測されてる[9]。協調分散型DDoS攻撃とDRDoS攻撃が組み合わされることもある[10]。 フラッド型のDoS攻撃は、ウェブ上に公開されている様々なサービスに対して行うことができるので、攻撃対象となるサービスごとにフラッド攻撃が存在する。 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 ICMPやUDPのようなコネクションレスのサービスでは発信元の偽装が容易なので、DoS攻撃を行う攻撃者にとって身元がばれにくいという利点がある。ICMPを利用したものにはICMP echo request (を利用したping)を攻撃対象に大量に送り続けるICMP echoフラッド攻撃
攻撃手法
SYNフラッド攻撃詳細は「SYN flood」を参照
ICMPとUDP
他にも規格外の大きなサイズのICMPパケットを送りつける事で攻撃対象をクラッシュさせるping of deathという攻撃がかつてあったが、1996年に発見されて以降この脆弱性は防がれているためすでに過去のものとなっている。
UDPに対してもUDPポートに対して大量のトラフィックを送信するUDPフラッド攻撃(英語版)があり、UDPを利用したDRDDoS攻撃をUDPベース増幅攻撃(UDP-Based Amplification Attack)と呼ぶ。
UDPベース増幅攻撃の中でもNTPの実装であるntpdのmonlistコマンドを使った攻撃は増幅率が高く、19倍から206倍の増幅率に達する[11]。このコマンドはNTPサーバが過去にやり取りしたアドレスを最大で600件返すものであり、ntpdにおけるコマンドを利用した攻撃が2013年に観測されている[12][13]。なおntpdのバージョン4.2.7p26以降はこのコマンドを悪用できないよう修正されている[12]。
この他にもSSDPやRIPv1を利用したUDPベース増幅攻撃がある[14][15]。 ウェブブラウザに備わっているページの再読み込み機能を使用し、Webサーバに大量にリクエストを送りつける攻撃はF5アタック(F5攻撃)と呼ばれることがある。この名称は、「F5キーを連打する攻撃」であることに由来する。Windows上で動作するウェブブラウザでは、F5キーが更新機能に割り当てられていることが多いため、F5キーを押下するたびにWebサーバにリクエストが送られることになる。
ブラウザの再読み込み
その他
スローなHTTP系:長時間にわたってWebサーバがコネクションを維持してくれることを悪用して能力を浪費する[16]。次の攻撃がある[17]。
Slow HTTP Headers(Slowloris
Slow HTTP POST(RUDY:R-U-Dead-Yet?)
Slow Read DoS
メールボム:サイズの大きいメールや大量のメールを送り付ける手法。
HTTP GET/POSTフラッド:HTTPの規格には準拠しているが負荷のかかるリクエストを大量にWebサーバ宛てに送る。
TeardropおよびLand攻撃:かつてTCP/IP実装にあった脆弱性[18]を利用した攻撃。前者は分割されたIPパケットを再統合する際パケットの重複をうまく扱えない実装上の問題を利用した攻撃、後者は攻撃者が送り主と送信先を一致させたパケットを送りつけると無限ループにはまるなどの脆弱性を利用した攻撃[18]。
WinNuke(英語版) かつてMicrosoft Windowsの「NetBIOS over TCP/IP」に在った脆弱性が攻略された。
攻撃ツール
荒らしプログラムとは、主にWeb掲示板を荒らすために作られたプログラムを指すが、内容としてはHTMLの解析やHTMLFORMの送信機能を備え、連続投稿を可能としたHTTPクライアントで、DoS攻撃プログラムに準じている。F5アタックがWebブラウザからのGETメソッドによるhttpアクセスしか出来ないのに対し荒らしプログラムは様々なメソッドにおいてのアクセスを可能としている。また前述したDDoSに準じ、踏み台となったサーバからの一斉攻撃を行うものもある。少しHTMLの知識があれば使える物や、アドレスを入力するだけで使えるようになる(自動解析)ツールも存在する。主にPerlによって記述されるが、これも踏み台とされたサーバでの利便性を考えたものである。
LOICは、アノニマスの常とう手段となっていた。例えば2010年ペイバック作戦においても使われた。
HOIC(High Orbit IonCanon)は、LOICの後継として2010年ペイバック作戦の時期に開発された。