IPv6 のための異常トラフィック生成プログラムの試作と評価
2011SE206 大平 峻也

2011SE304 山下 瑞樹

指導教員 後藤 邦夫

1

はじめにとがある．DoS 攻撃ならば Attacker が単数なので，比較的対策をしやすい．例えば，特定の IP アドレスに対するアクセス制限や，同一の IP アドレスからのリクエスト回数制限をすれば良い．しかし，DDoS 攻撃では数千・数万の Attacker からの一斉攻撃であるため，一つ一つ対応することは非常に難しい．したがって，現状では DDoS 攻撃を完全に防ぐ方法はない．有名企業が Target とされることが多く，近年の大きな社会問題となっている．サービスの妨害や個人情報の漏洩が主な目的だと考えられる．
図 1 に IPv6 ヘッダを示す．

近年，インターネットが急速に普及し，日常的に私た
ちは PC やスマートフォンを利用している．1981 年に現在の Internet Protocol version 4(IPv4) の基となる仕様が発表された．それから 10 年が経過した頃から，このままでは IP アドレスが足りなくなるのではないか，という懸念が出始めた．これが IP アドレス枯渇問題である．この問題を根本的に解決するための対策が早急に求められた．そこで考案されたものが，Internet Protocol version
6(IPv6) である．2011 年度の Worldwide Infrastructure
Security Report の調査では，回答者から IPv6 に対するDistributed Denial of Service(DDoS) 攻撃が初めて報告された [4]．IPv6 に対応した機器が被害を受けないためにも，脆弱性を把握し対策を講じる必要がある．
そこで，2013 年度 榊原，下方の卒業研究 「DDoS 攻撃検出と対策の実験による評価」[3] は IPv4 のみに対応したものであったが，本研究は IPv6 のための異常トラフィックを発生する手法を提案し，IPv6 固有もしくは IPv4/IPv6に共通する新たなセキュリティリスクの明確化と低減化に貢献することを目的とする．本研究では，悪意を持った攻撃者を Attacker，攻撃対象者を Target とする．具体的には，一般的なソケットではなく生のソケットを使い，事実上無制約なパケットを生成する．それを実際に送信することで Target に負荷を与え，通信妨害やサービス妨害を行う．
図 1 IPv6 ヘッダ
動作確認・模擬実験には，ネットワークエミュレータの Common Open Research Emulator(CORE)[5] を使用した．また，CORE を使用するにあたり，実験環境には2.2 新たな問題
Linux を採用した．これは，Linux の Network Namespace
IPv6 を利用するにあたり，新たなセキュリティ上の問という独立したネットワーク環境を作成でき，なおかつ題が発生してくる．以下は代表的なものである．
IPv6 を
他の Namespace や物理環境から干渉を受けにくい点を考安心して利用できるよう，これらの問題を解決しなけれ慮して決定した．CORE 上で動作する HTTP サーバにばならない．
は JavaScript 環境の node.js を採用した．
• 詐称したルータ広告メッセージ (Router Advertiseなお，大平はネットワーク構成などシステムの設計，山
ment：RA) を用いた通信妨害及び盗聴
下は攻撃プログラムの試作を担当する．

2

DDoS 攻撃と新たな問題

本節では，DDoS 攻撃の概要と IPv6 における新たな問題について述べる．

2.1

DDoS 攻撃の概要

DDoS 攻撃とは，Attacker が複数存在する DoS 攻撃のことである．まず，DoS 攻撃について説明する．DoS 攻
撃とは，ネットワーク上のトラフィックを増大させ，回線やネットワーク機器に対して何らかのダメージを与える攻撃のことである．それにより，通信妨害やシステム障害が引き起こされる．場合によっては，システムのダウンやネットワーク機器自体の誤動作，破壊にも繋がるこ• 不正な RA による通信妨害• 詐称した近隣要請，広告メッセージ (Neighbor Solicitation:NS，neighbor Advertisement:NA) を用いた通信妨害
2.3

IP Spoofing 攻撃

通常，ホストやネットワーク同士の接続において，ホストは特定の IP アドレスに制限をかけて接続先をフィルタリングする．しかし，IP Spoofing 攻撃は Attacker が IP
ヘッダ部の SrcIP アドレスを Target のアドレス空間のものに偽装することで，Target へのアクセス制限を突破する攻撃手法である．Attacker は Target の接続制限内の特定の IP アドレスになりすますことによって，接続認証が容易にできてしまう．そのため，Attacker が Target へ侵入できる可能性が高まる．また，Target 側のシステムのログにも偽装した SrcIP アドレスが記録されるため，Targetは Attacker を特定することは難しい．さらに，この攻撃手法を DoS 攻撃にも応用することができる．実際に，この手法を併用した攻撃が占める割合は大きい．DDoS 攻撃に使用される場合，Attacker は偽装した SrcIP アドレスを大量に生成するため，IP Spoofing 攻撃を単体で使用する場合に比べ，Attacker を特定することがより困難になる．また，特定の IP アドレスにアクセス制限を施すといった対策が無効となる．図 2 に IP Spoofing 攻撃の一例を示す．

他に，DDoS 攻撃での実験も考慮したネットワーク構成にした．さらに，IP Spoofing 攻撃をするにあたり，Target側のアドレス空間になりすますための Host を作成した．
ルーティングについては，構築したネットワークがシンプルであるため，デフォルトもしくは静的ルーティングを設定した．また，本研究では内部からのアクセスを不正アクセスとして扱わない．つまり，内部からの攻撃は考慮しないものとする．

図 2 IP Spoofing の一例

図 3 CORE で構築したネットワーク構成図

3システムの概要

Attackers 側の IP アドレスの割り当て

Host: 2001:0::10/64

本節では，本研究で使用するネットワークエミュレーRouter(内側): 2001:0::1/64
Router(外側): 2001:3::1/64
タ CORE の概要とそのネットワーク構成について述べる．
また，ネットワークで使用するサーバ環境構築のための
Target 側の IP アドレスの割り当て
Node.js[2] について述べる．

3.1

CORE



Host: 2001:1::10/64
Router(内側): 2001:1::1/64
Router(外側): 2001:3::2/64



CORE とは，仮想マシンを用いて仮想的にネットワー

クを構築できるエミュレータである．Python モジュールのトポロジを描画するための GUI と，スクリプトネット 3.3 Node.js
ワークエミュレーション用の軽量仮想マシンで構成されNode.js とは，Google が Google Chrome 用に開発したている．使用する上での利点は，低コストで現実に近い 高速な JavaScript エンジンを利用したサーバ側で動作す結果を再現することが可能なこと，単純かつ使いやすい る JavaScript 環境である．HTTP サーバを構築する際，よう GUI が作られているため操作が容易なことである． Apache では 1 つのクライアントからの要求に対して 1 つ
また，仮想デバイスを用いるため，個人が実世界で再現 のスレッドしか作成されないが，Node.js は 1 つのスレッすることが困難であるようなシチュエーションやデバイ ドで複数の WEB ブラウザからの要求を処理できる．1 つス構成であってもテストすることが可能である．さらに， のスレッドで効率的に並列処理するために，特定のイベ今回は行わなかったが，高度なカスタマイズもできる．し ントが発生するとそれに対応する処理を実行する，イベかし，CORE に実装されていないデバイスを利用するこ ント駆動モデルとネットワーク I/O やデータベースへのとができないという欠点もある．
アクセスを非同期で実行するノンブロッキング I/O を採用している．そのため，WEB サーバのリソースを効率的に使い，高速で大量のデータ処理を実現できる．
本研究では，DDoS 攻撃を実現するために，Host A B
本研究では，Target 側の 80 番ポートで待機させる
C のように Attacker を複数用意する．Host 1 を Target，HTTP サーバを構築するために用いる.
Host 2 を TCP Connect のための IP Spoofing 攻撃の際に偽装に使用される Host とする．CORE によって作成 4 実現
したネットワーク構成を図 3 に示す．本研究では，TCP
本節では，試作した DoS 攻撃プログラムの概要についSYN Flood，UDP Flood，Ping6 Flood など DoS 攻撃の て述べる．またページの都合上，TCP SYN Flood 攻撃

3.2

ネットワーク構成についてのみ説明する.

4.1

DoS 攻撃プログラム大量に生成する．このようにして，異常なトラフィックを発生させ DoS 攻撃を行う．

SrcIP アドレス詐称箇所のソースコード

本研究では，異常トラフィックを発生させる手段としてsrand48(12345);
DoS 攻撃プログラムを試作した．そして，複数の Attacker
while(1){が同時に Target へ実行することによって DDoS 攻撃をunsigned int x;
char srcstr[100];実現する．本プログラムでは，Raw Socket を用いることで，通常では自動で割り当てられる情報を任意で設定でx = (unsigned int) (65536*drand48());
きるため，事実上無制約なパケットを生成することが可
sprintf(srcstr,"2001:db8:100::%x",x);能になる．しかし，Raw Socket プログラミングにより自printf("Src: %s\n", srcstr);
由度が向上する半面，普段意識することのないプロトコ
inet_pton(AF_INET6,srcstr,&src);
ip6->ip6_src = src;
ルの詳細まで設定しなければならない．そのため，Raw
Socket プログラミングに慣れていない人にとっては実装
データの送信には，sendto() 関数を用い，使用ソケッが容易ではない．
ト(raw socket)，データ (IPv6 ヘッダ，TCP ヘッダ，ペイ本プログラムでは，実行時にユーザが DstIP アドレス，Attacker 側のルータアドレス，interval(msec)，データ長 ロード長)，データサイズ (ペイロード長が 0 の場合，60(octets) を入力する．作成するソケットの内容は，sock- octets)，フラグ (0)，接続先のアドレス (2001::1)，接続addr in6 構造体，チェックサム計算のための擬似ヘッダ， 先のアドレスサイズ (0x1c) の情報を格納している．
IPv6 や TCP など各プロトコルのヘッダの値である．Raw 
データ送信箇所のソースコード

Socket による実現のため IP ヘッダとそれに続くヘッダに適切な値を埋めていく．表 1 に本研究で使用した DoS
攻撃プログラムの IP ヘッダ，TCP ヘッダに代入したパラメータ一覧を示す．

IPヘッダ

表 1 各ヘッダのパラメータ情報
ip6 vfc
0x60
IP ヘッダ (40 octes)
ip6 plen+TCP ヘッダ (20 octes)+ペイロード長
ip6 nxt
IPPROTO TCP(6)ip6 hlim
任意 例:225
ip6 src
任意 例:inet pton(
AF INET6,2001:db8::1,&src)
ip6 dst2001:1::10(Target のアドレス)

sourcedst

TCP
ヘッダ

seqdoff
synwindowcheck

任意 例:htons(80)任意 (攻撃対象ポート)
例:htons(80)任意 例:htonl(12345)
51
任意 例:htons(65535)
擬似ヘッダ1 +TCP ヘッダ+ペイロード長

n = sendto(sock, sendbuff,sizeof(struct ip6_hdr) + ntohs(ip6->ip6_plen),0, (const struct sockaddr*)&server,sizeof(server));
チェックサム計算 [1] には，checksumadjust 関数を用いる. 計算は擬似ヘッダ，TCP ヘッダ+ペイロード長の 2度に分けて計算する.

チェックサム計算箇所のソースコード
uint16_t tmp= 0;
tcph->check = 0;checksumadjust((unsigned char *) &tmp,0,0,(unsigned char *) &ip6ph,sizeof(ip6ph));checksumadjust((unsigned char *) &tmp,0,0,(unsigned char *)tcph,sizeof(struct tcphdr)+length);tcph->check = tmp;

5



実験

本節では，CORE で構築したネットワーク上で DoS 攻撃プログラムを実行した際の実験手順と実験結果について述べる．

5.1 実験環境
SrcIP アドレスの生成は，drand48() を使い 0 から 216 −1
実験で使用する PC のスペックを以下に示す．
までの整数の一様乱数を実現する. これを 16 進数表記
OS：Linux Ubuntu12.04LTS(32bit)で出力することで，0000 から FFFF までの SrcIP アド
CPU：Intel(R) Core(TM) i5 CPU M560 2.67GHzレスを実現する. また，IP ヘッダの SrcIP アドレスは，
kernel：3.2.0-57-generic-paeinet pton 関数を用い文字列形式からバイナリ形式に変換
以上の実験環境で TCP，UDP，ICMPv6 の各プロトコして実装する．そして，一連の流れをループさせること
ルで TCP SYN Flood，UDP Flood，Ping6 Flood，TCP
により，DDoS 攻撃の際に詐称した送信元 IP アドレスをConnect のための IP Spoofing，RA Flood，NA Flood 攻撃プログラムを実行する．
1 SrcIP アドレス，DstIP アドレス，ゼロ，ネクストヘッダ，パケッ
ト長が入る

5.2

実験手順

1. CORE で構築したネットワーク上で Attacker からTarget に各種攻撃プログラムを使用する
2. tcpdump コマンドで異常トラフィックが Target でキャプチャできているか否か確認する• パケットが正常に Target でキャプチャできた場
合は，Target 側の挙動など攻撃の有効性を確認
する• パケットが正常に Target でキャプチャできな
かった場合は，traceroute コマンド等を使い障害が発生している箇所を特定して修正し，1 から再度やり直す
3. トランスポート・プロトコルを切り替えて再度 1 から実行する
5.3

実験結果た．さらに，Target は SYN,ACK を代入したパケットをAttacker が偽装した SrcIP アドレスに再送信を繰り返していることが確認できた．そのため，TCP SYN Flood
攻撃は成功したと言える．

6

おわりに

CORE で構築したネットワークの静的ルーティング設定と TCP SYN Flood，UDP Flood，ICMPv6 Flood 攻撃プログラムの試作は完成した．また，実験結果からもその有効性を確認することができた．行数に換算すると，
各種 include とコメントを除いて合計 617 行であった．
しかし，TCP Connect のための IP Spoofing 攻撃プログラムを実行したとき，Target から誤ったチェックサムのデータをキャプチャしてしまい，本研究ではコネクションを確立するに至れなかった．この原因の一つは，IPv6
固有の tcpdump におけるバグだと考える．
以下は，本研究でやり残した今後の課題である• TCP Connect のための IP Spoofing 攻撃プログラム
CORE で構築したネットワーク上で Attacker が Targetの完成に向けて前述した各種攻撃プログラムを実行し，いくつ• さらに IPv6 に関係する異常トラフィックを用いた脅
か結果が得られた．ページの都合上，TCP SYN Flood の威を再現・試作する
みの tcpdump でのキャプチャ結果を示す．また NS，NA，RS，RA の情報も実験結果から省略する.
– 詐称した RA を用いた通信妨害及び盗聴
TCP SYN Flood のキャプチャ内容– 不正な RA による通信妨害
tcpdump -i eth0 -vvv

– 詐称した NS，NA を用いた通信妨害

IP6(hlim62,next-headerTCP(6) payload length:1460)
2001:db8:100::39ae.http>2001:1::10.http: Flags[S],cksum 0x4d94 (correct),seq 12345:13785,win 0, length 1440
IP6(hlim 64,next-header TCP(6) payload length:24)
2001:1::10.http>2001:db8:100::39ae.http:Flags[S.],cksum 0x8897(incorrect -> 0xeb13),seq 1585274118,
ack 12346, win 14400, options [mss 1440],length 0• 擬似攻撃ツールなども存在すれば，先輩方の卒業論文と混同しない範囲で利用する• 大 規 模 な ネット ワ ー ク を 想 定 し た 環 境 で の 実 験(CORE で実現)

参考文献
[1] Braden, R., Borman, D. and Partridge, C.: Com-IP6(hlim 64,next-header TCP(6) payload length:24)
puting the Internet Checksum, RFC1072 (1998).
2001:1::10.http>2001:db8:100::39ae.http:Flags[S.],cksum 0x8897(incorrect -> 0xeb13),seq 1585274118, [2] Node.js Developers: Node.js, http://nodejs.org/ (acack 12346, win 14400, options [mss 1440],length 0
cessed Jan. 2015).
IP6(hlim62,next-headerTCP(6) payload length:1460) [3] 榊原広樹，下方章裕 : DDoS 疑似攻撃プログラムの試2001:db8:100::eb4e.http>2001:1::10.http: Flags[S],
作と既存 DoS 攻撃プログラムを用いた DoS 攻撃の実
cksum 0x9bf3 (correct), seq 12345:13785,
験，南山大学情報理工学部システム創成工学科 2013win 0, length 1440

年度卒業論文 (2014).
IP6(hlim 64,next-header TCP(6) payload length:24)
2001:1::10.http>2001:db8:100::eb4e.http:Flags[S.], [4] The Arbor Networks:
cksum 0x3a38(incorrect -> 0x0c88), seq 488688462,
7th Annual Worldwide
ack 12346, win 14400, options[mss 1440], length 0IP6(hlim 64,next-header TCP(6) payload length:24)
2001:1::10.http>2001:db8:100::eb4e.http:Flags[S.],cksum 0x3a38(incorrect -> 0x0c88), seq 488688462,
ack 12346, win 14400, options[mss 1440], length 0The Arbor Networks
Infrastructure Security
Report, http://www.arbornetworks.com/news-andevents/press-releases/2012-press-releases/4497the-arbor-networks-7th-annual-worldwideinfrastructure-security-report (accessed Jan. 2015).

[5] U.S.
NavalResearchLaboratory
NetworksandCommunication
Systems
Branch:CommonOpen
Research
Emulator,
http://www.nrl.navy.mil/itd/ncs/products/core
以上の結果から，Target 側にホップ・リミット，ネク(accessed Jan. 2015).
スト・ヘッダ，ペイロード長，チェックサムの計算結果の::値が正しく表示されているため，これらのパケットが正
常に Attacker から Target へ届いていることが確認でき