日本ソフトウェア科学会第 34 回大会 (2017 年度) 講演論文集

ハッキング競技 CTF を取り入れた情報教育のための教材作成支援システムの検討
松原 克弥

源 啓多

CTF (Capture The Flag) は，IT 技術に関する問題に対して適切な形で対処することで，その結果得られる得点で勝敗を決める競技である．CTF 競技では，計算機エンジニアリング分野に関する幅広い知識が求められ，実践的技術の習得も見込める．これらのイベント形式の学習は，参加者の技術習得に対する意欲が高く，アクティブラーニン
グによる実践的な教育効果が高いと推測される．しかし，実環境のシステム挙動やデバイス入出力への加工を必要とする CTF 問題作成は，出題分野に関する高度なハッキング能力が求められ，情報教育への導入障壁のひとつとなっている．本稿では，情報教育教材としての CTF 導入を目的として，CTF 問題作成支援のためのシステムを提案する．本システムでは，CTF で読み出す対象となる情報を様々なシステム媒体に対して透過的に仕込むことができ，かつ，容易には解き明かせないよう実装をブラックボックス化できる機構を実現する．また，CTF 参加者が自ら所有する PC 機材を使用できるように，特定の OS 環境に依存せずに実装できるように仮想化技術を活用して，OS よりも低レイヤで実装を行う．
CTF (Capture The Flag) is a game in which challengers compete that how fast find a flag obtained as aresult by dealing with IT problems, such vulnerability and obfuscation, in a proper way. CTF challengers
can deeply learn various subjects around computer engineering and acquire practical IT techniques. Suchthe event can sustain the participants’ motivation of learning and then it can eﬀectively encourage the active
learning. However, CTF requires advanced skills of hacking system behavior and device I/Os for making
contents. We think this may be one of the biggest barrier to introduce CTF into informatics education. In
this paper, we propose a system for supporting making CTF contents as a material of informatics learning.
The system implements mechanism for embedding flags transparently into various system media such display screen and network. Furturemore the processing code for embedding flags can be isolated from users.
In addition, the virtualization technology allows CTF paticipants to bring their own PCs because the wholesystem would be implemented in a lower layer than OS.

ることで，その結果得られる得点で勝敗を決める競技

1 はじめにスタイルのイベントである．CTF における競技形式

近 年 ，ハッカ ソ ン や ハ ン ズ オ ン ，LT(Lightningは 2 種類に分類でき，ファイルや画像，システム入出Talk) 大会などの IT 技術の向上を目的とした教育力データから指定された情報 (フラグ) を読み出す早系イベントが開催が国内外で増加している．また，情さを競うクイズ形式と，各チームに与えられた脆弱報セキュリティ分野では，CTF と呼ばれるコンテス性のあるシステムを攻撃から防御しつつ，他チームトが非常に注目されており，ホワイトハッカーと呼ばのシステムの脆弱性を突いて情報を読み出す攻防戦れる逸材の発掘やセキュリティに興味を持つ学生の形式がある．CTF では，暗号や符号理論，信号処理，IT 技術に関する研鑽に貢献している [4] [5] [6]．CTF

画像処理やネットワーク技術，プログラミング言語，は，IT 技術に関する問題に対して適切な形で対処す

データベース，ファイルシステムといった OS 技術なA Study on Supporting Making CTF Materials for
Informatics Learning.
Katsuya Matsubara, Keita Minamoto, 公立はこだて未
来大学 システム情報科学部, School of Systems Information Science, Future University Hakodate.

どのソフトウェアエンジニアリング分野に関する幅広い知識が求められる．また，問題を解くことを通して，脆弱性解析やデバッグ技術，ログ解析やツールの活用などの実践的技術の習得が見込める．大学にお表1

Jeopardy の出題形式と CTFVisor との機能的適合性

CTFVisor との出題形式

説明

Pwn

サーバ上で動くプログラムの脆弱性を攻撃して権限を奪取することで、サー機能的適合性

×

バ上のフラグ (ファイル) にアクセスする

Reversing

プログラムバイナリを読み解いて動作を理解して，プログラムが持つ (生成×する) フラグを見つける

Web

サーバ上で動作している Web サービスの脆弱性を見つけてフラグを得る

×Crypto

暗号文を解読してフラグを読み解く◦Network

ネットワークパケットのログなどを読み解いて、通信データ内に埋め込ま◦れているフラグを見つける

Forensics

メモリダンプやディスクイメージ，USB などのデバイス入出力 RAW デー◦

タを解析して，それらの中に埋め込まれたフラグを発見する

Stego

画像データや音声データに何らかの手法を用いて隠されているフラグ文字◦列を見つけ出す

Recon

Twitter，Facebook などの SNS や Internet Archive のデータを探索して，×出題側が過去に発信したフラグを見つけだす

PPC

ネットワークを介して送られてくる競技プログラミングの課題を順に解い×ていく速さを競う
ける従来の講義・演習と比べて，これらのイベント形を活用する CTF を取り入れた実践的な学習の機会を

式の学習は，参加者の技術習得に対する意欲が高く，提供することで，学生の当該教科に対する学習意欲のアクティブラーニングによる実践的な教育効果が高い向上と卓越した高度 IT スキルを持つ人材の育成を目と推測される．

指している．本稿では，対象学生の興味と意欲を引きこれまでの CTF で用いられている題材は，画像つける新たな CTF 教材の作成を支援するためのシスや通信パケット等を直接加工した静的なデータや，

テム CTFVisor の実現に関する検討について述べる．

Linux や Windows，Apache 等の特定バージョンのCTF 参加者が自ら所有する PC 機材を使用できるよ

システムに存在する既存の脆弱性を用いているもの

うに，Windows や macOS，Linux 等の特定の OS 環が多い．これら問題の作成には，高度な技術スキルを境に依存せずに実装できるように仮想化技術を活用し持つエンジニアが必要となる．例えば，ネットワークて，OS よりも低レイヤで実装を行う．CTF 教材作

パケットに埋め込まれたフラグを見つける問題では，成者は，特殊なツールに関する知識を持たなくても，Ethernet パケットや TCP/IP，UDP/IP パケットの本システムの設定，もしくは，簡易な処理関数を記述構造に対する深い知識を有したエンジニアが，Scapyすることで意図する CTF コンテンツを作成できる．

[1] などの特殊なツールを使用してパケットデータをCTFVisor で作成する CTF 教材では，仮想化技術加工し，その通信を Wireshark [2] などのネットワーを活用することで，通信データからファイル，デバクキャプチャ・ツールを用いてロギングすることで競

イス I/O 等の幅広い媒体を対象として OS 透過的に技題材を作成する．

CTF 問題を仕込むことができる．システム基盤で問本研究は，データベースや OS 等のソフトウェアエ題作成の支援機能を提供することで，各対象媒体へのンジニアリング教育において，当該分野の幅広い知識高度な技術スキルを持たない者でも出題が可能となり，大学等の情報教育における CTF 採用が広がることが期待できる．既存 CTF への参加経験が豊富な学

B#$CDEF45CDGÿH11I7JKGÿL1139Gÿ325MN生に対しても，仮想化技術による出題というこれまでにない形式により，新たな技術の習得や参加へのモチベーション向上に貢献することが期待できる．
以降，第 2 章では，CTF 競技における出題形式についてまとめ，本提案システムが対象とする CTF 問!"#$%&'()*

0'(;<$=>'(+,-.'(6/06122344ÿ 456113ÿ 711272ÿ86 9ÿ:723

題形式について検討する．第 3 章では，CTF 形式の01234ÿ6789 86

教材作成支援システム CTFVisor の機能と実現方式について述べる．第 4 章では，現在の実装状況につ?@A#いて示す．最後に，第 5 章でまとめと今後の課題について述べる．

2 CTF の出題形式
CTF の出題形式は，Attach&Defence と呼ばれる

図1

BitVisor のアーキテクチャ

サーバ攻略対戦形式と Jeopardy と呼ばれるクイズ形式の 2 種類のタイプに分類できる．前者は，脆弱性

うな出題形式において，CTFVisor の機能の活用がやアクセス制御などのセキュリティに特化した内容の考えられる．Network 形式では，CTFVisor が持つCTF だが，後者は，暗号や符号理論，信号処理，画像ネットワークパケットの監視・加工機能により，従来処理やネットワーク技術，プログラミング言語，デーの CTF 作問で用いている Scapy のような特殊なツータベース，ファイルシステムといった OS 技術などのルと同様の加工処理を実現できる．さらに，従来の多岐にわたる分野の出題が可能であり，ソフトウェアCTF ではネットワークトラフィックのログデータにエンジニアリング分野全般の実践的学習に活用するよる出題しかできないが，CTFVisor では，CTF 参ことができる．そのため，本提案の CTFVisor では，加者の持ち込み PC 上において，OS 環境への特殊なJeopardy (クイズ形式) の CTF 作問を支援対象とす

ドライバ等のインストールなしに加工処理されたパる．さらに，Jeopardy における問題は，形式に応じてケットを実際に送出するような出題が可能である．同

Pwn, Reversing, Web, Crypto, Network, Forensics,様に，Forensics 形式においても，画面出力や音声出Stego, Recon, PPC などのジャンルに分類できる (表力を CTFVisor で加工することにより，PC での実動参照)．Jeopardy の各形式について，CTFVisor で実作を伴う出題が可能になる．

現可能な機能との適合性について検討する．本提案のCTFVisor は，仮想化技術を使って，実際の PC やデ3 CTF 作問支援システムの検討

バイスの動作に対して加工を行う機能を実現する．そ本提案では，仮想化技術を用いて CTF 問題作成をのため，実動作させない Reversing や，プログラムの支援する機能の実現を行う．提案手法の実現と実装に既存脆弱性を利用する形式の Pwn や Web といった形

は，軽量仮想マシンモニタ・ソフトウェア BitVisor

式の CTF 問題は，CTFVisor との機能的適合性が低[3] のデバイス入出力に対する透過的介在機能を利用い．また，インターネットなどの外部にあるサーバやする．

データを利用する Recon や PPC においても，CTF参加者の持ち込み PC で動作する CTFVisor から作

3. 1 BitVisor

問支援することは難しい．Crypto では，ディスクやBitVisor は，ハードウェア上で直接動作する仮想マ

画面等のデバイスを介して暗号データを提示するよシンモニタとして設計・実装されている (図 1 参照)．

アプリケーション

CTF参加者のOS環境（Windows, macOS, or Linux etc.)
AbcHello透かしの挿⼊

BitVisor

dEF
暗号化
H e

図2llo\0空き領域へのデータ挿⼊
O K

BitVisor を用いた CTF 問題向けデータ加工処理

PC の情報漏えい対策として研究開発された BitVisor

3. 2 CTF 作問支援システム CTFVisor

は，OS 環境からのディスクやネットワーク，USB な

第 2 章で述べたとおり，本提案では，Jeopardy のどへの入出力を監視して，必要に応じて暗号化やアクCrypto，Network，Forensics の各形式の CTF を対セス制御を行う機能を持つ．本提案の CTF 教材支援

象として，作問を支援する機能を BitVisor に実装すでは，これらセキュリティ機能を実装するための基盤る．図 2 は，CTFVisor による CTF 問題に応じた技術として実現されているデバイス入出力への透過入出力データの処理例を示している．Crypto 形式の的介在機能を用いる．BitVisor では，仮想的なデバ

CTF に対しては，アプリケーションからディスクへイスを介して OS 環境を動作させるのではなく，実際の書き込みを捉えて暗号化する．CTF 挑戦者は，様々のハードウェア上で動作する OS 環境に対して，監視なデータをディスクへ書き込むことで，CTFVisor に対象のデバイスへの入出力のみを捕捉する．デバイスよる暗号化のアルゴリズムや鍵を推測し，ターゲッのインタフェース仕様が BitVisor 導入後も変わらなトとなる暗号化済フラグデータを解読する．Network

いため，OS 環境に特別なデバイスドライバ等を追加

形式 CTF に対しては，アプリケーションからのネッインストールする必要がない．また，監視対象ではな

トワーク送信のパケット内に CTFVisor がデータをいデバイスは，OS から直接アクセスすることができ挿入する．CTF 挑戦者は，様々なデータを送信して，るため，GPU などの性能を求められるデバイスに対その通信トラフィックをキャプチャし，CTFVisor がする性能への影響を最小限にすることが可能となる．

埋め込んでいるフラグを見つける．Forensics では，また，ハードウェアプラットフォーム全体の仮想化を

OS やアプリケーションの画面描画に対して，フラグ必要としないため，BitVisor が専有するメモリ容量データを埋め込む透かし処理 (ステガノグラフィ) をを 128MiB 程度に抑えることができる．BitVisor 上施してから画面表示する．CTF 挑戦者は，画面描画

では，Linux や FreeBSD などのオープンソース OSとキャプチャを繰り返すことで，CTFVisor によってだけでなく，Windows や macOS などの商用 OS を埋め込まれた画像片を見つけ出し，フラグを取り出す．

BitVisor 上で動作させることが可能となっている．

CTFVisor では，ネットワーク，ディスク，USB，画面のそれぞれに対する I/O 加工機能を実現する．
ネットワーク I/O 加工機能では，OS デバイスドライ

バから Ethernet デバイスハードウェアへの送信指示

式のデバイス I/O 情報による出題と比較して，CTFを監視して，デバイスによる送信直前で送信データを参加者は，持ち込んだ PC 上で CTFVisor を動作さ加工するためのコールバック関数を呼び出す．CTF

せ，様々なデバイス I/O を通して作問者により組み作問者は，コールバック関数を記述して登録するこ込まれたフラグを見つけることができる．とで，フラグの埋め込み等のネットワークパケットに今後，実装したシステムを用いた CTF 競技を開催

対する加工処理を実装できる．ディスク，USB デバ

して，CTF 参加者からのアンケート等を通してシスイス，画面に対する I/O 加工機能も，ネットワークテムが実現する CTF 教材の評価を進める．また，問I/O 加工機能と同様の流れで処理を実装する．現実

題開示から回答までの時間や正答率から，仮想化技術

装では，BitVisor の開発言語である C 言語を用いてを用いた問題作成が難易度や学習理解度に与える影コールバック関数を記述する．

響について考察する．さらに，CTF 参加者側の評価だけでなく，CTF 作問機能の評価方法についても検4 実装討する必要がある．高度な知識と特殊なツールを用い現在，CTFVisor のプロトタイプ実装を進めているを用いるこれまでの作問方法と比較して，本システる．Network 形式の出題例として，OS やアプリケーム機能である CTF 作問支援機能の有効性について評

ションから出力されるネットワークパケットを監視し価したい．て，Ethernet ヘッダや TCP/IP, UDP/IP ヘッダの空き領域へ指定したフラグを埋め込む機能を実装し

参 考 文 献ている．また，Forensics 形式の出題例として，スク[1] Biondi, P., Valadon, G., and Lalet, P.: theScapy network packet manipulation program, http://www.secdev.org/projects/scapy/.
[2] Combs, G.: the Wireshark network protocol analyzer, https://www.wireshark.org.
[3] Shinagawa, T., Eiraku, H., Tanimoto, K., Omote,K., Hasegawa, S., Horie, T., Hirano, M., Kourai, K.,
Oyama, Y., Kawai, E., Kono, K., Chiba, S., Shinjo,
Y., and Kato, K.: BitVisor: A Thin Hypervisor for
Enforcing I/O Device Security, Proceedings of the2009 ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, VEE’09, New York, NY, USA, ACM, 2009, pp. 121–130.
[4] 秋山卓巳, 前田優人, 矢倉大夢, 森越友祐, 竹迫良
範: オンライン CTF の運営の裏側〜問題作成と攻撃対処〜, コンピュータセキュリティシンポジウム 2016
論文集, Vol. 2016, No. 2, 情報処理学会, Oct. 2016,
pp. 52–52.
[5] 赤木智史, 中矢誠, 富永浩之: ハッキング競技 CTFを取り入れた情報セキュリティ教育の導入イベントの実
践報告, 情報教育シンポジウム 2014 論文集, Vol. 2014,
No. 2, 情報処理学会, Aug. 2014, pp. 169–172.
[6] 赤木智史, 中井智己, 中矢誠, 富永浩之: ハッキング競
技 CTF を取り入れたセキュリティを意識させる情報リ
テラシ教育の大会イベント: 大会運営サーバの機能と初心者向けの問題設定, 電子情報通信学会技術研究報告,
Vol. 114, No. 513(2015), pp. 39–44.

リーン描画されるビットマップデータを表示直前に加工して，フラグを埋め込むような透かし処理の実装を検討している．画面描画への透かし処理では，任意のタイミングで発生する OS による加工前画面データの再描画により透かしデータが消失してしまうことにより，透かしデータの表示時間を調整できないことで，問題の難易度が意図せずあがってしまう課題がある．

5 まとめと今後の課題
本稿では，情報教育教材としての CTF 導入を目的として，CTF 問題作成支援のためのシステム CT-FVisor を提案した．CTFVisor を用いることで，これまで特殊なツールを使って作成していた CTF 問題を CTF 参加者の PC 自体に組み込むことができ，対象となるフラグ情報を様々なシステム媒体に対して透過的に仕込むことができる．CTF 問題作成は，CTFVisor の設定ファイルや，CTFVisor 内にコールバック関数を登録するによりフラグ加工処理の記述が可能となる．従来の CTF で用いられているログ形