CTFとは

はじめまして!はちまき副代表あきばです。
突然ですがCTFという競技を知っていますか?
私は大学に入学してからこの競技を知りました。CTFについて知らない方にも知っていただける機会になればと思います。


  ~もくじ~
1.CTFとは
2.CTFの形式
3.問題の種類
4.インタビュー
5.最後に


1.CTFとは

 CTFとは「Capture The Flag」の略称で旗取りゲームのことです。情報セキュリティに関する専門的な知識・技術を駆使して、隠されているFLAG(答え)を探しだし、獲得した合計点数を競うゲームです。
 問題の出題形式にはいくつか種類があります。また、問題もいくつかのジャンルが存在します。ここからはそれらについて少し紹介していきます。


2.CTFの形式

 CTFの代表的な形式にはJeopardy形式Attack & Defense形式King of the Hill形式があります。


【1. Jeopardy形式】
 この形式は開催者から複数の問題が与えられ、解けた問題の最終的な合計点数を競う競技形式です。オンラインで開催されるCTFのほとんどはこの形式を採用しています。問題ごとに異なる点数が設定され、点数の低い問題ほど難易度が低くなっています。


【2. Attack & Defense形式】
 この形式は各チーム間で攻撃、防御を行うことで得点を獲得する競技形式です。オンライン予選を勝ち抜いたチームが行う決勝大会など参加チーム数の少ない大会で採用される形式です。


【3. King of the Hill形式】
 この形式は問題を攻略した状態を維持し続けることで得点できる競技形式です。Attack Point と Defense Pointがあり、その合計ポイントを競います。
 Attack Pointは各問題サーバに用意された問題を解いてFLAGを解答サーバに送ることでポイントを獲得します。
 Defense Pointは問題サーバに一定時間ごとに変化するディフェンスキーワードを各問題サーバの指定の場所に書き込むことで得点を得ることができます。Defense Pointをとれるのは1チームのみとなっています。
 日本ではSECCON CTFという大会の決勝大会で長らくこの形式が採用されていたようです。(※2)


3.問題の種類

 CTFの問題にはいくつかのジャンルがあります。ここではジャンルごとに特徴を紹介したいと思います。代表的なジャンルとしては、WebCryptography(Crypto)Reversing(Rev)Pwnable(Pwn)の4つがあります。


【Web】
 Webアプリケーションを取り扱うジャンルです。
 SQLインジェクションやXSS(クロスサイトスクリプティング)などの脆弱性やWebアプリケーションに関する様々な脆弱性についての知識が必要です。


【Crypto】
 暗号の解読技術を問うジャンルです。
 RSA暗号や楕円曲線暗号のような現代暗号、シーザー暗号などの古典暗号についての知識が必要になります。現代暗号を解くには数学の知識が必要になります。


【Rev】
 プログラムのリバースエンジニアリング技術を問うジャンルです。リバースエンジニアリングとは、出荷された製品を入手して分解や解析などを行い、その動作原理や製造方法、設計や構造、仕様の詳細、構成要素などを明らかにすることです。(※3)


【Pwn】
 プログラムの脆弱性を利用してサーバに侵入するといった類の問題が出題されます。


4.インタビュー

 私が所属しているCTF同好会のメンバー3名にインタビューをしました!CTFに興味を持っていただいた方の参考に少しでもなればと思います。


Q1. CTFを始めたきっかけを教えてください。 

Aさん: 高校生のときにCTFについての記事を読んだのがきっかけです。ハッキングのスキルを競い合う競技があると知り、一瞬で自分の中二心が動かされました。
Bさん: 高校の時にLTのネタとしてCTFをやってみたのがきっかけです。
Cさん: 大学入学後のサークル紹介の中で知らない英語が並んでいるなと、不思議な名前が僕を引き寄せてくれました!


Q2. CTFの魅力はどんなところにあると思いますか? 

Aさん: 自分が思うCTFの魅力は、ハッキングの楽しさを合法的に味わえることです。特に自分が勉強をしているpwnは、プログラムの脆弱な部分を見つけ、そこにハッキングを行っていくのですが、上手くシステムの制御を奪えたときはクイズを解いたような嬉しさと達成感を得ることができます
Bさん: CTFは手を動かしながらセキュリティに関する様々なことを学べて、難易度もいろいろあるので、うまくやれば挫折しにくいことが魅力だと思います。
Cさん: IT技術は幅が広く情報も多いので、どこまで勉強すれば良いのか分からず迷子になりがちです。CTFは問題形式で学んでいくので次の目標が分かりやすく、得点形式のゲーム感覚で学べるところがとても良いと感じます。


Q3. おすすめの分野とその理由を教えてください。

Aさん: 各分野についてひと通り調べてみたところpwnが一番ハッカーっぽいのでおすすめです。
Bさん: Reversingです。理由はセキュリティを専門でやらない人(プログラマー、SE)が開発する上で活かせる知識・技術を得ることができるからです。
Cさん: オススメはWeb分野です。WebはPCのブラウザのみで解ける問題も多く、敷居が低いからです。分野は他にも沢山存在するので興味があるものを選ぶと良いと思います。


Q4. CTFの楽しいところ、難しいところを教えてください。

Aさん: まずCTFの難しいところですが、必要な基礎知識がめちゃくちゃ多いです。pwnを例に挙げると、一番簡単な問題を解くのに、C言語やメモリのスタック領域について、CPUのレジスタについてなどの知識が必要になります。その分、今まで解けなかった問題が解けた時の喜びや、新しい攻撃手法を学んだときの「そんなこともできるのか」という感動も大きく、それがCTFの楽しいところだと思います。
Bさん: 楽しいところは、得点があるので、成長が見えやすかったり、周りの人とゲーム感覚で競ったりすることができるところです。難しいところは、分野によっては資料や参考書を探すのが難しかったり、必要な知識が多かったりするところです。
Cさん: 問題が解けてフラッグが出た瞬間が一番楽しいですね!
難しいところは、中級者の壁が分厚いところです。知識と仮説から攻撃の道筋を立てる、この難しさが壁であり解けたときの達成感でもあるわけですね。


Q5.最後にまだCTFをやったことがない人に一言お願いします。

Aさん: CTFは基礎知識をコツコツと勉強できる人であれば誰でも活躍できる競技だと思います。また、単純にセキュリティに興味がある人にもおすすめの競技なのでぜひ一度挑戦してみてください。
Bさん: 初心者向けCTFとかは少し調べたら解けたりするので、どんどん得点することができて楽しいです。是非やってみてください。
Cさん: 脆弱性に興味がある!競争が好き!自分の知識を試してみたい!と思う方は一度「CTF」と検索してみてください。入門者向けの記事が出てくるのでぜひ読んでみてください。北海道情報大学の学生であればCTF同好会も大歓迎です!


5.最後に

 ここまで、CTFについて説明させていただきました。CTFに少し興味を持ってもらえた方もいると思います。そんな方にはCTFをいつでも体験できる常設サイトにチャレンジしてみてほしいです!Cpaw CTF や ksn CTFpico CTF などいろいろと常設サイトがあります。簡単な問題から取り組めるのでぜひ試してみてください。    

 また、難しくてわからないという問題もwrite upとして解説しているサイトがたくさんあります。解説をみて知識をつけていくのもいいと思います。                        

 常設のサイトでは物足りないとなったら大会に参加してみるのもいいかもしれません。調べてみると様々な大会が開かれていることがわかります。興味があったら調べてみましょう!

 最後に、今回はCTFという情報セキュリティに関する競技について紹介させていただきましたが、私も大学に入ってから始めたことなのでまだまだ何もできません。今回記事を読んで少しでもやってみようと思う方がいたら嬉しいです。    

 最後まで読んでいただきありがとうございました。


[参考文献]
※1 詳解セキュリティコンテスト 
※2 SECCON Final(CTFの攻防戦)について: NECセキュリティブログ | NEC                                ※3 IT用語辞典 リバースエンジニアリング                                                                

この記事が気に入ったらサポートをしてみませんか?