セキュリティブログ

世界のハッカーが競う「DEF CON CTF Finals 2019」参加者インタビュー

世界のハッカーが競う「DEF CON CTF Finals 2019」参加者インタビュー

更新日:2022.07.21

広報の馬場です。 DEF CONの人気コンテンツの一つである「DEF CON CTF」は、熾烈な予選を勝ち抜いたチームのみが参加できる世界最高峰のハッキングコンテストです。今年のDEF CON27内で開催された「DEF CON CTF Finals 2019」は、指定された7大会の優勝チームと、1200を超えるチームが参加した予選にて見事予選を突破したチームの、合わせて16チームのみが出場権を手にしました。
その中で唯一、日本人チームとして出場した「TokyoWesterns」に、イエラエセキュリティでアルバイトをしている学生の古川和祈(ふるかわ・かずき)さんが、チームの一員として参加しました。順位は残念ながら14位に終わりましたが、古川さんに今年の「DEF CON CTF」はどんな大会だったのか、所属チームの「TokyoWesterns」についてインタビューしました。

◆古川 和祈(ふるかわ・かずき)さん
電気通信大学大学院 修士 1年。TokyoWesternsでは主にReverse Engineeringジャンルを担当。

51時間ぶっ通しで行われる頂上決戦!

DEF CON CTFはCTFの中で最高峰の大会と聞きます。「DEF CON CTF Finals 2019」出場に至るまでの予選から決勝戦(Finals)までの道のりについて教えてください。

今回のDEF CON CTFは16チームのみがFinalsに出場できます。出場するには二つの方法があり、一つはDEF CON CTFの運営が指定するCTF(※1)で優勝すること、もう一つはDEF CON CTFの運営メンバーが主催するオンライン予選で一定の順位を超えること(こちらは優勝でなくてOK)、このどちらかを満たすとFinalsに出場できます。
スケジュールとしては、昨年のDEF CON CTF後に運営が指定するCTFが4大会開催された後、運営主催によるオンライン予選があり、その後さらに2大会行われて最終的にFinalsに参加できるチームが決定する、というスケジュールになっています。今回TWは、初めに行われたCTFでは優勝できず、運営主催のオンライン予選に参加しましたが最終13位でした。運営が指定するCTFは全部で7大会あるため、必然的にオンライン予選では9チームが予選通過できることになります。Finalsの出場権は既に手にしながらも、オンライン予選で9位以内に入っていたチームが2チームいたので予選通過できるのは11位まででしたが、残念ながらTWは13位だったので、オンライン予選時点では出場権を得られませんでした。その後開催されたDEF CON ChinaのBCTFにてTWは優勝できたので、今回出場権を獲得できたという流れです。

(※1)今回DEF CON CTFの運営が指定するCTFは、「DEF CON CTF 2018」、「HITCON CTF 2018」、「RuCTFE 2018」、「35C3 CTF」、「PlaidCTF 2019」、「0CTF」、「BCTF 2019」の7大会。

Finalsはどのような形式で行われるのでしょうか。また昨年との違いについて教えてください。

Finalsは昨年と同じで大きく分けて二つあり、King of the Hill(KoH)形式とAttack & Defence(A&D)形式でした。スコアリングに関しても昨年と同様で、Attack & Defence形式のAttackを4、Defenceを4、KoHを2とした比率で合算し、最終的なスコアを出すという形式です。全体の傾向としてはKoHよりもA&Dの方が重視される傾向にありますね。
出題された問題は、KoHの問題が3問、A&Dが7問あり計10問ありました。全ての問題が初日に公開されるわけではなく、ある程度の時間で区切って問題を公開していました。各問題は公開された後に一定数のチームが解き始めるとその問題は閉じて、それ以降は攻撃は行えなくなります。一つの問題が閉じたらまた新しい問題が一つ追加され、やることがないという状況がないように出題されていました。常時大体2問から3問出題くらいはあったはずです。

KoHはどんな問題が出題されたのでしょうか。

KoHは全部で3問出題されました。その中の一つにエクスプロイトで使われるROP(※2)というテクニックを使って、宇宙船を操って攻撃をするという問題がありました。自分の宇宙船を操作(守り・攻撃・移動)して、他のチームの宇宙船を壊してできるだけ自分たちが生き残る。死んでしまうと点数が入らなくて、どんどん敵を倒していくというものでした。ROPを使っているので、一般的なshellcodingやpython、C言語を使ったプログラミングと比べて、非常に扱い辛くコーディングが難しかったです。一般的なプログラミング言語であれば、敵を探して攻撃して、撃ってきたらバリアを張って、ということができるのですが、コーディングが非常に複雑なので多くのチームはループと宇宙船を操作する命令だけで条件分岐すら用ずに、ある一定のルールで攻撃を行うことしかしていなかったと思います。
サンドボックスの環境下で参加者の入力がプログラムに与えられ、ROPでしか操作ができないような状況に強制的になっていて、それをバイパスするのは理論上サンドボックス側に脆弱性がない限りは無理な状況でした。今回はデータ領域であるスタックの領域しか書き込めなくて、それが実行権限にもならないので、そこに飛んでshellcodeに移すということもできなかったです。

(※2)ROP(Return-Oriented Programming)とは、エクスプロイトのテクニックの一つ。メモリ上に書き込み可能かつ実行可能なメモリ領域が存在しない場合に、スタックのメモリ領域を書き換えることで攻撃者の行いたい処理を実現するテクニック。

会場のディスプレイにKoHで出題された宇宙船を操作する問題が表示されていた。自分たちのチームの宇宙船を操り、敵を倒すと点数が入る。

会場のディスプレイにKoHで出題された宇宙船を操作する問題が表示されていた。自分たちのチームの宇宙船を操り、敵を倒すと点数が入る。

今回参加してみて面白かったところを教えてください。

面白かったところの一つとして、KoHでDOOMというFPSのゲームの問題が出て、それをXboxに移植した問題が出題されていました。参加者同士が攻撃をして敵を倒してある条件をクリアしていると点数が入る構成になっていて、これは一般的なゲームチーティングに近い感覚でした。プログラムとマップに関してはネットワーク経由で配布されていて、それらは署名がされていない為、ネットワーク上でMITM(※3)をして書き換えてXboxで実行することが可能でした。チーティングの対策もされていないので、どうやって他のチームより早くチートのコードを作るか、どのようなチートをすれば他のチームよりも有利なゲーム展開ができるのか、ということを競うところが面白かったです。

(※3)MITM(Man In The Middle)とは、通信を行う二者の間に攻撃者が割り込み、送信内容を盗聴・改ざんすること。

本物のゲームがそのまま使われていたのでしょうか。

ゲーム自体は、ほぼほぼオープンソースになっているはずなので少し変えてという感じだと思います。脆弱性というよりはチーティングが趣旨で、相手チームとのチートの仕合いですね。相手も銃弾に当たらないチートをしてきます。うちのチームとしては、まず一つはコード側修正によるチートと、マップの修正によるチートを行いました。コードの修正によるチートでは、例えば体力が減らなくなるとか、移動速度を早くするとか。この二つで十分に戦えていましたね。マップを操作して壁を取り壊すとゲーム側ではそれを元に銃弾の当たり判定を行うので、私達の攻撃は敵チームに当たるのに敵チームからの攻撃は当たらない状況が生まれます。

他のチームに邪魔をされる、ということはあるのでしょうか。

参加者のPCや持っているものなどへの攻撃は基本的にありませんでした。実際、何でもありの大会なので、もしかしたらそれをやろうとしていたチームはいたかもしれませんが(笑)。別の大会では、各チームのサービスがwi-fiでネット回線につながっているので妨害される、ということはあります。KoHでは、一般的に最初に侵入したチームが後から侵入しようとしたチームを妨害することがあります。今回に関しては、KoHが他のチームとスコアを競い合うという仕組みなので、今回は邪魔されることは無かったですね。

CTFはどのくらいの期間行われるのですか。開催期間中は皆さん寝ずに問題を解いているのでしょうか。

DEF CON CTFの予選は48時間通しで行われます。オンラインのCTFは48時間で行われることが一般的ですね。今回のDEF CON CTF Finalsは、1日目が10時に始まって3日目の13時に終わったので51時間通しで開催されました。CTFが行われている間は、いつもよりかは睡眠時間は少ないですね。寝たい人は寝るという感じで、各自が判断してます。

3校のチームから結成された学生チームTokyoWesterns

TokyoWesterns(以下、TW)とはどんなチームか簡単に教えてください。

電気通信大学のチーム(MMA)、東京農工大学のチーム(MCC)、東京高専のチーム(CureSecure)の合同チームです。元々は、オンラインのAttack & Defence形式のCTFへの参加がきっかけで2014年に結成されました。結成後は、海外の大きな大会に参加する際にTWで参加しています。
TWはCTFに参加するだけでなく、自分たちでCTFを開催しています。初回は2015年にMMAが単独で開催し、2016年からはTWとしてTokyoWesterns CTF(以下、TWCTF)を毎年開催しています。また、2017年からbinja(※4)と共同でCODE BLUE CTF(※5)を開催しており、今年はTWCTFを予選として10チームが招待されました。また、2019年のCODE BLUE CTFは来年のDEF CON CTFの予備予選に選ばれ、優勝チームはDEF CON CTF Finals 2020に招待されます。
また、TWのメンバーにはCTFに参加するメンバーの他に,CTFへの参加や運営に必要となるインフラの構築・運用をする人も居ます。CTFに参加する人は8名程度で、インフラを構築しているメンバーは2名です。
(※4)binjaは日本人のエンジニアや学生から構成されるチームで、「DEF CON CTF Finals」にも度々出場している。
(※5)CODE BLUE CTFは、日本のセキュリティカンファレンスである「CODE BLUE」にて開催されるオンサイトのCTF。

最近はどんな大会(CTF)に参加されていますか。

TWはFinalsがあるような大きな大会には、ほぼ全てに参加しています。出場する・しないについての判断は、基本的にはみんなで相談して決めます。国内外問わずFinalsがあるものは大抵事前に予選が行われるのですが、予選はオフラインで集まって集中してできるようにしよう、とか話し合って決めていますね。

古川さんはいつからTWで活動されているのでしょうか。今回のDEF CON CTFは何回目の参加ですか。

結成当時の2014年からです。当時は17歳の高専生でした。元々はCureSecureで活動していて、合同チームを作るということになって一緒に参加し始めた感じですね。TWが結成されてからはCureSecureでは無くTWとして参加しています。DEF CON CTFは、昨年初めて参加して今回は2回目の参加です。

最後に今後の意気込みについて教えてください。

TWは昔に比べると強くなりましたが、それでも自分たちよりも強いチームがまだ居ます。彼らよりも技術的に優れたチームになれるように、これからも継続してCTFに参加していきたいと思います。

 ※関連記事
・DEFCON 27 現地レポート
・「Black Hat USA 2019」トレーニング参加者インタビュー

セキュリティ診断のことなら
お気軽にご相談ください
セキュリティ診断で発見された脆弱性と、具体的な内容・再現方法・リスク・対策方法を報告したレポートのサンプルをご覧いただけます。
経験豊富なエンジニアが
セキュリティの不安を解消します

Webサービスやアプリにおけるセキュリティ上の問題点を解消し、
収益の最大化を実現する相談役としてぜひお気軽にご連絡ください。

疑問点やお見積もり依頼はこちらから

お見積もり・お問い合わせ

セキュリティ診断サービスについてのご紹介

資料ダウンロード
RECRUIT

私たちと一緒に、
脆弱性のない世界を創っていきませんか