• 検索結果がありません。

DDoS疑似攻撃プログラムの試作と既存DoS攻撃プログラムを用いたDoS攻撃の実験

N/A
N/A
Protected

Academic year: 2021

シェア "DDoS疑似攻撃プログラムの試作と既存DoS攻撃プログラムを用いたDoS攻撃の実験"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

DDoS

疑似攻撃プログラムの試作と既存

DoS

攻撃プログラムを用

いた

DoS

攻撃の実験

2010SE183榊原広樹  2010SE198 下方章裕 指導教員:後藤邦夫

1

はじめに

近年,情報通信ネットワーク及び PC の普及が著しい. さらにインターネットの普及に伴い,不正アクセスによ る被害が増加傾向にある.特に,送信元アドレスを偽装 した上で,パケットを大量に送信し通信を処理している 回線やサーバの処理能力を占有することで,システムを 使用困難にしたりダウンさせたりする Denial of Service attack(以下 DoS 攻撃とする) や攻撃内容は DoS 攻撃と同 じだが,踏み台となる多数のコンピュータを利用して一 斉にターゲット・サーバに攻撃をする Distributed Denial of Service attack(以下 DDoS 攻撃とする) は,システム を停止に追いやることもあり,政府系サイトにまで被害 も出ている. 攻撃ツールが容易に入手でき,誰でも攻撃に参加する ことができることや,何も前触れがなく攻撃されること から,DoS 攻撃,DDoS 攻撃の対策は困難である.特に DDoS攻撃は攻撃手段が多く,送信元のアドレスを偽装 するため,通常の DoS 攻撃よりも防御が困難であるため, 攻撃による被害は DoS 攻撃よりも大きくなると考えら れる. 先行研究 [5] では,DDoS 攻撃のシミュレータの構成と 検出方法を示しており,結果は示していない.そこで,簡 単なネットワークを構築し,攻撃ソフトウェアを使用す る.ネットワーク負荷等を計測し,そこから対策を練る. 簡易ネットワークでの実験を終えたあとは,規模を大き くし,複雑なネットワークでの実験を行い再度計測する. 本研究では,エミュレータを用い,擬似攻撃を行う.ま ず,DoS 攻撃のエミュレーションを行い,さらに検知を 行う.その後にパケットフィルタリングを行い,パケット 受信量を減らす.次に,DDoS 攻撃をエミュレータ上で DDoS攻撃ツールを動作させることにより不正アクセス 状況を再現し,DoS 攻撃と同様,検知とパケットフィル タリングを行い不正アクセス状況の詳細の把握,対処方 法を検討する. 本研究の成果として検出ツールで攻撃先の IP アドレス を検出し,その IP アドレスをフィルタリングすることで DDoS攻撃を軽減できることが確認できる.ネットワー ク構築と文書作成は共同で行った.下方は自作プログラ ムの作成,iptables の設定,snort の設定を担当し,榊原 はシミュレーション,数値の計算を担当した.

2

DoS/DDoS

攻撃の種類

DoS/DDoS攻撃の中で,以下の 4 つを説明する [7].選 んだ理由としては,典型的な 4 つだからである. 過大な HTTP 要求 Webサーバにコンテンツを応答させる処理を大量に 実行する負荷計測ツールの apache bench を用いる. 多数のホストからこれを使用することで DDoS 攻撃 となる. TCP SYN Flood攻撃 3ウェイハンドシェイクの最初の SYN パケットを送 る段階で,クライアント自身の IP アドレスを送る ところ,偽った IP アドレスをサーバーに送り,サー バーは偽った IP アドレスからの ACK を待ち続ける ことを利用した攻撃. UDP Flood攻撃 原理は TCP SYN Flood 攻撃と同じであるが,コネ クションレスの通信であるため,一方的にパケット を送り付けることができる.また,UDP では,最大 1500バイトのパケットを正常の通信と偽って送るこ とができるので,膨大なパケットを送信することが できる. Smurf攻撃 ICMPエコー要求パケットを受信した多数の PC は, 一斉に詐称された発信元 IP アドレスに対して ICMP エコー応答パケットを返送する.詐称された発信元 のネットワークでは大量の ICMP エコー応答パケッ ト到着によりトラフィックが増大し,サービス不能 になる.

TCP SYN Flood攻撃,UDP Flood 攻撃,Smurf 攻撃は 既存のツールがなかったため,自作プログラムを作成し 使用することにより再現し,シミュレーションをする.

3

システムの概要

本節では,システム全体の流れと本研究に使用したシ ステムの概要について説明する. 3.1 実験ネットワークの構成 本研究では図 1 に示す擬似ネットワーク上で実験を 行う.ネットワークの構築は Common Open Research Emulator[1](以下 CORE とする) を使用した.記入され ている IP アドレスは CORE の自動設定機能によるもの である.攻撃対象は n16 とし,DoS 攻撃の攻撃者は n7, DDoS攻撃の攻撃者は n7 n12 として同時に攻撃をする. また,効率的で大規模なものまで実現できること,GUI のため使いやすいこと,現実的なソフトウェアの再現が できることを理由に CORE を使用した. CORE COREは,1 つ以上のマシンでネットワークをエミュ レートするためのツールである.CORE は,描画のため の GUI 軽量仮想マシン,およびスクリプティングネット ワークエミュレーションのための Python モジュールの

(2)

トポロジで構成されている.それぞれのノードから端末 を起動することができ,その端末上で攻撃ツールや検出 ツールを動かすことができる. COREを使用した理由は,効率的で大規模なものまで実 現できること,GUI のため使いやすいこと,リアルなソ フトウェアの再現ができること等のことから使用した. 図 1 DoS 攻撃ネットワークモデル 3.2 攻撃ツール COREで作成したネットワークで以下の 2 つの攻撃ツー ルを使用する.それぞれ共通して DoS 攻撃は n7,DDoS 攻撃は n7 n12 を攻撃者とし,n16 を攻撃対象とする. slowhttptest[3] slowhttptestは攻撃パターンの多彩なツールであるので 本研究で使用する.slowhttptest とは、アプリケーション 層のサービス不能攻撃の高機能なオプションを持ったシ ミュレーションツールのことである.メジャーな Linux や OS X,Cygwin で動作する.サーバの読み込みに多大な時 間をかけさせる攻撃である.攻撃手段ではないが apache benchと同じようなツールとして扱う.このツールの初 期値は表 1 のようになっており,この初期値を基準とし て各項目の値を変更し実験を行う. 表 1 パラメータの初期値

Test type SLOW HEADERS Number of connections 50

URL http://localhost

Verb GET

Interval between follow up date 10 seconds Connections per second 50

Test duration 240 seconds Probe connection timeout 5 seconds Max length of followup date field 32 bytes

3.3 検出ツール 本研究では,DoS/DDoS 攻撃を検出するため以下のシ ステムを使用する. snort Snort[2]とは,コンピュータやネットワークへの不正な 侵入や,攻撃の検出を行うシステム IDS(不正侵入検知シ ステム) のひとつ.Snort は監視しているネットワークに 流れるパケット常時観測し,不正な侵入や攻撃をその手 法である「パターンデータ」と照らし合わせ,マッチン グしているものを検出し,アラートを通知しログとして 記録する.監視対象となるネットワークを記述する.var HOME NET anyではすべてのネットワークを監視する ことになるので本研究では,HOME NET で図 1,2 の 10.0.2.1/24を監視するための設定と内部からのアクセス を不正アクセスとして扱わない設定を以下の通り変更す る.この設定を図 1 の攻撃対象となる n16 の端末上で行う.

var HOME NETの設定

 

10.0.2.1/24を監視する var HOME NET any ↓

var HOME NET 10.0.2.1/24

内部からのアクセスを不正アクセスとして扱わない var EXTERNAL NET any

var EXTERNAL NET !$HOME NET

 

iptables

iptablesは,本来ホストで送受信する IPv4 のパケットの フィルタリングや,NAT(network address translation) を管理するためのコマンドである.DoS/DDoS 攻撃対策 のためパケット制限を行う. パケットをカウントし回数で制限するのに、iptables に は 2 種類のモジュールが用意されている.1 つは,「limit」 モジュールである.パケットをカウントし,回数に応じて 制限を実施する.ただし送信元の IP アドレスで回数制限 を加えるには,対象の IP アドレスを都度指定し iptables を実行する必要がある.そのため送信元を特定できない DDoS攻撃には役立たない.もう 1 つの「hashlimit」モ ジュールなら,クライアントの IP アドレスごとにパケッ ト数をカウントし,iptables 実行時にクライアントごと に制限を実施することができる.そのさい,個々の IP ア ドレスを指定する必要もない. limitで ssh のサーバポートへのアクセスの受け入れ制 限を設定した場合,攻撃的パケットもそうでない真っ当 なパケットも一緒に管理されるので,攻撃が行われてい る間は,権限を持った人もアクセスが制限されてしまう. 一方 hashlimit を使えば,アクセス元毎に管理できるの で,攻撃が行われている間でも,権限のある人は正常に アクセスすることができる. 最大応答回数を 10 回とする.10 回までは無条件に応答

(3)

図 2 limit モジュール し,11 回目の応答は破棄される.パケットの規制は 1 分 間に 1 回まで ssh 接続が可能とする.パスワードを総当 たりで解析するブルートフォース攻撃に有効である. 図 3 hashlimit モジュール 同一ホストからの最大接続回数を 1 回,その後は 1 分間 に 1 回まで接続を許可する.こうした接続回数は,管理 ファイルによりクライアントごとにカウントされる.limit の制限では,正常なリクエストも不正アクセスに紛れて しまうが,あるクライアントを不正アクセスで規制して いる間も,他のクライアントから接続することが可能と なる. 以下のコマンドを入力することで IP アドレス 10.0.0.20 か らくるパケットをすべて破棄することができる.iptables -F,iptables -X のコマンドを入力することで初期化を行 うことができる. webは 1000 回までは許可、以降は 1 分間に 120 回までに 制限する (limit) sshは 5 回まで新規接続許可それ以降は 1 分に 1 回に制 限、6 分間無接続なら制限解除.web は 700 回まで新規 接続許可それ以降は 1 秒に 1 回に制限、6 分無接続なら 制限解除 (hash limit) 以上の設定を図 1 の攻撃対象となる n16 の端末上で行う. iftop ネットワークトラフィック情報を表示するツール [4] で ある.IP アドレスとポート番号をベースに,それぞれの 通信にトラフィックの送信量,トラフィックの受信料,直 前 2 秒,10 秒,40 秒のトラフィック量の平均値を視覚的 に表示する.ターミナル全体に情報を表示し,定期的に 更新する.DoS 攻撃,DDoS 攻撃のシミュレーションで 観測したトラフィック量をまとめ表にする.

4

疑似 DDoS 攻撃プログラムの実現

TCP SYN Flood攻撃,UDP Flood 攻撃,Smurf 攻撃 のツールがないため,TCP,UDP,ICMP のプロトコル を持ち発信元 IP アドレスを偽装する 3 種類のプログラム を作成した.これらのプログラムは,IPv4 のネットワーク に対して,発信元 IP アドレスのネットワーク部を 192.168 と固定し,ホスト部を 0 から 255 までの数字を任意に摘 出し,送信するプログラムである.なお,プロトコルが TCP,UDP の場合,ポート番号は 100 に固定し,プロ トコルが ICMP の場合,Type と Code はそれぞれ 8,0 に固定した.IP ヘッダや UDP/TCP データグラムに対 し,通信時に起こったエラーを検出するために checksum を用意する.checksum[6] とは,データを送受信する際 の誤り検出方法の一つである.送信前にデータを分割し, それぞれのブロック内のデータを数値とみなして合計を 取ったものである.求めた checksum はデータと一緒に送 信される.受信側では送られてきたデータ列から同様に checksumを計算し,送信側から送られてきた checksum と一致するかどうかを確認する.送信側と受信側の値が 異なれば,通信系路上でデータに誤りが生じていること になる.checksum 関数はプログラム上で次のように使用 した. checksum計算部分と使用部分  

void checksumadjust(unsigned char *chksum, unsigned char *optr, int olen, unsigned char *nptr, int nlen) {        :        :        : //擬似ヘッダ分だけchecksum計算 //icmpfake4は擬似ヘッダを使わないので不要 u_int16t tmp = 0; ipph.src = ip->saddr;

tmp=checksumadjust((unsigned char *)&tcph->check, 0,0,

(unsigned char *)&ipph,sizeof(ipph)); //TCPヘッダ + データ分を追加したchecksum計算

tmp=checksumadjust((unsigned char *)&tcph->check, 0,0,

(unsigned char *)tcph, tcph->doff*4); tcph->checksum=sum;   IPアドレスを偽装するため,rand 関数を利用しホスト 部を任意な数字とするプログラムの一部を次に記載する. IPアドレス偽装部分   unsigned x,y; char srcstr[100]; x=(unsigned)(255*(random()/(1.0*RAND_MAX))), y=(unsigned)(255*(random()/(1.0*RAND_MAX))), sprintf(srcstr,"192.168.%u.%u",x,y); printf("Src: %s\n", srcstr); inet_pton(AF_INET,srcstr,&src); ip->saddr = src.s_addr;   パケットを送信する部分を次に記載する.

(4)

パケット送信部分

 

n=sendto(sock,sendbuff,sizeof(struct iphdr)+8, 0, (const struct sockaddr*) &server,sizeof(server));

 

5

実験と結果

本節では,本研究で提案したシステムの動作実験をし, その結果を述べる.

5.1 実験環境

本研究では Ubuntu Linux12.04(32bit OS) をインストー ルした PC を用意し CORE を起動する.この PC で図 1 のネットワークを構築する. COREで構築したネットワークは以下の,攻撃を行う攻 撃者 (図 1 でいう n7),攻撃者からの攻撃を受ける攻撃対 象 (図 1 でいう n16) で構成される. 5.2 実験の手順 まず,ネットワーク全体が通信可能であるかを ping コ マンドで確認する.通信が確認できたら slowhttptest や 自作プログラムで DoS 攻撃のシミュレーションをする. そのさい,iftop と snort で通信状況を確認する.大量の パケットが送信されている (攻撃されている) ことが確認 できたら,iptables でパケットフィルタリングの設定を行 い,再度 DoS 攻撃のシミュレーションと通信状況の確認 をする.パケットの送受信量にはばらつきが生じるため, 攻撃を 5 回行いその平均を取ったものを結果とする.そ の結果,攻撃先からの受信パケットの量が減っていれば フィルタリングができているということなので実験成功 とする.また,複数のノードから攻撃をすることで DDoS 攻撃とし同じ手順で実験をする. 5.3 実験結果 まず,slowhttptest で DoS 攻撃のシミュレーションを した.実験で得られた結果の比較を以下に示す.以下の表 から分かるように,iptables でフィルタリングをする前後 でパケットの送受信量が減っていることを確認した.同様 に DDoS 攻撃のシミュレーションをしたところ,iptables で,フィルタリングをする前後でパケットの送受信量が 減っていることを確認した.よって,攻撃先からの IP ア ドレスが分かれば,有効にフィルタリングできることを 確認した. 表 2 接続回数 50 での DoS 攻撃の場合 接続回数 フィルタリング前 フィルタリング後 -c 50 TX(送信量) 46.3kB 0kB RX(受信量) 34.0kB 12.2kB 自作プログラムではフィルタリング前後で送受信量が 変わらなかった.理由として,プログラムが間違ってい る可能性があることが考えられるが解決することができ なかった. 表 3 接続回数 50 での DDoS 攻撃の場合 接続回数 フィルタリング前 フィルタリング後 -c 50 TX(送信量) 275.0kB 0kB RX(受信量) 211.4kB 72.9kB

6

おわりに

本研究では DoS,DDoS 攻撃のシミュレーション,お よび対策の実験を試みた.実験環境が整わなかったため, snortで検知することが出来なかったが,ログを見て攻撃 元や攻撃手法を判断することが可能であることを示した. また判断できた攻撃先を iptables で設定し,有効にフィ ルタリングをすることも確認できた. また,自作プログ ラムは送信することは可能だが,応答が返ってこず納得 する結果を得ることができなかったが,応答が返ってこ れば slowhttptest で成功したようにフィルタリングが可 能であると考えられる. 今後の課題としては,自作プログラムを改善し,攻撃を 再現可能にすることである.それから,再度実験をする 必要がある.また,snort での設定に DoS 攻撃のパター ンデータを登録し,検出させる必要がある.さらに本実 験の iptables の設定は必要最低限なものだったが,TCP SYN Flood攻撃対策,smurf 攻撃対策など細かい使い分 けができる設定が可能であるので,さらに細かい軽減が 可能であろう.今後の課題を以下に述べる. 1. 自作プログラムの改善と実験. 2. snortでパターンデータとマッチしているものを検 出,通知し,ログとして記録する機能の追加. 3. 各攻撃ごとに iptables の設定を作り替える.

参考文献

[1] Ahrenholz, J.: Comparison of CORE Network Em-ulation Platforms, Proc. of IEEE MILCOM

Confer-ence, IEEE, pp. 864–869 (2010).

[2] ITmedia Inc.: snort (accessed Jan. 2014). http://www.itmedia.co.jp/help/howto/security/ids/01/. [3] Shekyan, S.: slowhttptest (accessed Jan. 2014).

http://code.google.com/p/slowhttptest/.

[4] Warren, P.: iftop (accessed Jan. 2014).

http://www.ahref.org/tech/server/server-tips/801.html.

[5] 永島秀己,大野浩之:DDoS Attack シミュレータ,横河 技報,Vol. 45, No. 4, 横河電機,pp. 201–204 (2001). [6] 山 本 和 彦:checksum (accessed Jan. 2014).

http://www.mew.org/ kazu/doc/bsdmag/cksum.html. [7] 寺田真敏:DoS/DDoS 攻撃とは,情報処理, Vol. 54,

図 2 limit モジュール し,11 回目の応答は破棄される.パケットの規制は 1 分 間に 1 回まで ssh 接続が可能とする.パスワードを総当 たりで解析するブルートフォース攻撃に有効である. 図 3 hashlimit モジュール 同一ホストからの最大接続回数を 1 回,その後は 1 分間 に 1 回まで接続を許可する.こうした接続回数は,管理 ファイルによりクライアントごとにカウントされる. limit の制限では,正常なリクエストも不正アクセスに紛れて しまうが,あるクライアントを不正アクセ

参照

関連したドキュメント

18 で示すように,進行が遅く黄変度の増加やグロス値の低下も緩 やかで衝撃試験では延性破壊を示す ductile fracture

顧  粒 減少︑飛散︑清失︒ 同上︑核消失後門モ粟酒スルアリ︑抵抗力強シ︒

攻撃者は安定して攻撃を成功させるためにメモリ空間 の固定領域に配置された ROPgadget コードを用いようとす る.2.4 節で示した ASLR が機能している場合は困難とな

この数字は 2021 年末と比較すると約 40%の減少となっています。しかしひと月当たりの攻撃 件数を見てみると、 2022 年 1 月は 149 件であったのが 2022 年 3

12月 米SolarWinds社のIT管理ソフトウェア(orion platform)の

この国民の保護に関する業務計画(以下「この計画」という。

試験項目 試験方法 判断基準 備考 (4)衝撃試験 (ダビット進水式救命いか