セキュリティの技術・知識を競うCTF(Capture The Flag)とは?

こんにちは!管理人のうみねこ(@penta59631)です。

CTFとは簡単に言うとセキュリティの知識・技術を競うゲームのようなものです。この記事ではCTFの概要、ルールについて紹介していきます。

スポンサーリンク

CTFとは?

CTFとはCapture The Flagの略で、セキュリティの知識・技術を競い合うゲームです。名前の通り、参加者は旗(Flag)を取ることで得点をゲットできます。その得点の高さで勝負します。
CTFの大会も開かれており、そういった大会ではセキュリティ業界に限らずITに詳しい猛者たちが集結します。会社によっては社内で開いてる所なんかもあるみたいですね。

競技には大きく2つの種類があります。

Attack&Defense

まず1つ目が「Attack&Defense」です。
この競技はチームで行います。
それぞれのチームにサーバが与えられ、お互いのチームが相手チームのサーバを攻撃します。攻撃に成功すると得点がゲットできます。相手のサーバを攻撃するためには深い知識が必要となるため、大会では決勝戦等で採用されることが多いです。

ドラマや漫画なんかで見るクラッキングに近いですね。
ちなみに私はこの形式の競技は参加したことありません。というかそこまでの知識・技術がない。笑

また、少し特殊ですがチームにサーバを割り当てるのではなく運営者のサーバに対して攻撃を仕掛け得点を取るというような形式もあります。

Jeopardy

2つ目が「Jeopardy」です。
こちらは、アメリカのクイズ番組にちなんでつけられた名称で、参加者は複数のジャンルのセキュリティに関するクイズを解くことで旗(以下、FLAGとします。)を取得します。FLAGを送信し、正解すると得点をゲットできます。
大会の予選ではこちらの形式が採用されることが多いです。また、大会に限らずインターネット上で誰でも無料で参加できるオンラインCTFというものもあるので後ほど紹介します。

今回はこの形式のCTFについて解説していきます。

スポンサーリンク

Jeopardyについて

Jeopardyには大きく7つのジャンルの問題があります。(運営元によってその他にも細かいジャンルがありますが、大体はこの中のどれかに当てはまります。)
それぞれの問題を解くとFLAG{xxx}のような形式で答えが表示されます。それがクイズの答えとなっており、回答することで得点をゲットできます。※FLAGの文字列はサイトや大会によって異なります。

問題には難易度が設定されており、難しくなるほどひねって考える必要があります。その分ゲットできる得点も高いです。

Crypto

このジャンルは、暗号に関する問題が出題されます。
インターネットのサイト上で簡単に解くことができる問題から様々なツールやプログラミング言語を駆使して解く問題までさまざまです。

Network

このジャンルは、ネットワークに関する問題が出題されます。
ネットワーク通信を記録したファイルの中身を解析し、FLAGを探す問題をよく見かけます。

Web

このジャンルは、Webセキュリティに関する問題が出題されます。
クロスサイトスクリプティングやSQLインジェクション、Javascript、HTML、CSSなどさまざまな知識を駆使してWeb上に隠されたFLAGを探します。

Reversing

このジャンルはリバースエンジニアリングに関する問題が出題されます。
リバースエンジニアリングとはソフトウェアの構造を分析し、仕様やソースを明らかにしていく手法です。名前の通り、リバースエンジニアリングを行う中でFLAGを探します。

Forencic

このジャンルはさまざまなデータを解析する問題が出題されます。
画像ファイルやQRコードからHDDのデータなどさまざまなデータが提供されその中からFLAGを探します。

Pwn

このジャンルはプログラムの脆弱性に関する問題が出題されます。
プログラムの脆弱性をついて攻撃することでFLAGがゲットできるという問題が多いです。

Misc/Trivia

このジャンルは他のジャンルのどれにも当てはまらない問題が出題されます。
雑学的な問題が出題されることもありセキュリティ知識がなくても解けるような問題もまれにあります。

スポンサーリンク

CTFへの参加

CTFは大きく3つの方法で参加できます。ユーザーの登録は必要ですが、無料でできるので気軽に参加してみてください。!

大会に参加

1つ目はCTFの大会に参加するという方法です。
CTFの大会はいろいろ開催されていますが、大きなものではSECCONがあります。
今年度は終わってしまいましたが、毎年1回開催されています。

予選はオンライン形式、決勝はどこかに集まってチーム単位で競います。

CTF初心者向けの講義等も行っているので初めて参加するという方にもおすすめです!
私はここ5年ほど毎年参加しています。

オンラインCTFに参加

2つ目は常時開催されているオンラインCTFに参加するという方法です。
こちらは大会形式と違い、期間が決まっているわけではないのでいつでも好きなときに参加できる特というメリットがあります。
私はksnctfakictfというサイトに参加しています。どちらもTwitterのアカウントが必要ですが、参加者も多くおすすめです。

会社のCTFに参加

3つ目は会社で開催されるCTFに参加する方法です。
こちらは会社で開催されるということが前提になってしまいますが、会社によっては社内向けにCTFを開催しているというところもありようです。
NTT Comグループなんかは開催しているみたいですね。

CTF参加にあたっての心構えと注意点

CTFはFLAGが見つかると達成感がありとても面白いです!
ただ、初めて参加する場合は問題の解き方がそもそもわからないでしょう。
まずは「CTF 初心者」などでググって見ましょう。問題の解き方について解説した記事がたくさん出てきます。
また、問題を解くときは以下の点に注意しましょう。

  • 問題サーバへ大量の通信を送る等サーバに負荷がかかるようなことをしない
  • 攻撃用のコードを直接検索しない

1つ目、2つ目は思いもよらぬ攻撃につながってしまい、場合によっては犯罪となってしまうということもあります。特にクロスサイトスクリプティングに繋がるタグやコードは直接検索するのは避けましょう。検索したことで、関係の無いサイトを攻撃してしまったということにもなりえます。

問題の答え

無事FLAGを見つけて解けた問題はいいですが、どうしても解けない問題もあると思います。そのような時、答えを見たいですよね。
ですが、CTFは運営元から答えが公開されるということがほとんどありません。
少なくともこれまで私が参加したCTFでは見たことありません。

じゃあどうするか?

CTFは答えを解いた人がWriteupという形で解き方を公開する文化があります。
試しに「CTF Writeup」と検索してみてください。一般の方が公開した記事が大量に出てきます。
ただし、Qriteupを書くことが決まっているわけではないので、問題によってはないものもあります。そのような場合は…頑張って解きましょう。笑
他の大会などで似たような問題が出題されていることも多いのでそういった問題のWriteupは参考になります。
もし自分で解けたらWriteupを書いてみるのも面白いと思います!

最後に

今回はCTFの概要とルールについて紹介しました。私もいろいろなCTFに参加していますが、まだまだ知識・技術不足を実感しています。ただ、CTFを行うことで勉強のモチベーションも上がるので楽しいです。自分の今の実力を試してみたいうという方はまず気軽にオンラインCTFからはじめてみみてはいかがでしょうか。次回の記事ではCTFにおすすめのツールを紹介していきます!