CTF について

この記事は OIT Advent Calendar 2016 の 25 日目の記事です.
まさか空いているのが最終日しかなくてトリになるとは….

自己紹介

Twitteryuta1024 というアカウントでやっています.
OIT は 2008年入学・2012年卒業でその後は他大学院に進学したので,大学を離れてもう4年以上になります.
HxS コンピュータサークルに所属していて,サーバ管理者をやっていました.
今は,東京のとある企業で社内開発者向けのプラットフォーム開発・運用などを行っています.

大学の後輩である odan3240 君との繋がりで,初めて Advent Calendar を書くことになりました.

何を書こうかと最後まで悩んで,最終的には今自分がハマっている CTF についての紹介をしたいと思います.

CTF とは

CTF(Capture The Flag) とは,コンピュータセキュリティ技術を競うコンテストです.
CTF は大きく分けると, Attack & DefenceJeopardy と呼ばれる2つの種類があります.

Attack & Defence

Attack & Defence は,チームごとにサーバが与えられ,自分たちのサーバを守りながら,
相手のサーバの脆弱性をついて情報を奪ったり,ファイルを書き込んだりして点数を競います.
自分はこちらには参加したことがないので詳しくはないです….

Attack & Defence と少し似たものとしては Hardening というものがあります.
こちらも同様に,チームごとにサーバが与えられ,自分たちのサーバをひたすら守ります.
運営から8時間攻撃を受け続けながら,与えられたサービスを継続し続ける,というものです.
他チームに攻撃することはできず,ひたすら自分のチームのサーバを堅牢化(Hardening)します.
毎年2回沖縄で開催されているので,興味のある方は参加されてみてはどうでしょうか.
自分は,MINI Hardening と呼ばれる,1時間程度のまさしくミニなものに参加しました.
参加記録は以下の記事に書いたので興味のある方はご覧ください.
yuta1024.hateblo.jp

また,実は今年の夏に本家 Hardening にも応募し通ったので参加しました.
参加記録を書こうと思ったいたのですが,忙しく書く時間がないまま細かい記憶を失ってしまいました.
また,参加できたら今度こそ書きたい,と思っています.

Jeopardy

Jeopardy は,クイズ形式で問題が与えられその問題を解くとフラグを得ることができ,
回答サーバにそのフラグを送信すると点数を得れる,という形式です.
自分がよく参加しているのはこちらになります.
Online でよくコンテストが開催されているので参加しやすいという特徴もあります.

以下のサイトに今後のコンテストや過去のコンテストなどの情報がまとまっています.
ctftime.org

Jeopardy では,様々な問題がありジャンル分けされています.
代表的なジャンルについて簡単に私見を交えながら紹介したいと思います.
ジャンル内での代表的な問題を取り上げているので,同じジャンルでも少し異なる問題もあります.

Web

取っ付き易い反面,取っ掛かりがさっぱりわからなくて解けないことも多いジャンル.
XSSSQL Injection などが題材になることも多いです.
有名どころの脆弱性なども出題されることがあるので,
世の中のトレンド?的なものを日々収集しているととっかかりになることもあります.

Forensics

画像やディスクイメージなどに隠されたフラグを見つける問題です.
最近は Network もこのジャンルに吸収されつつある?ような感じで,
pcap などを解析もこのジャンルに含まれることがあります.

Crypto

暗号系の問題が出題され,復号することでフラグを得ます.
数学的知識なども必要でなかなか難しいジャンルです.

Reversing

WindowsLinux の実行ファイルを解析し,内部に隠されたフラグを取得するという問題です.
バイナリ力が必要となります. Web などに比べると取っ付きにくい印象があります.

Pwn

Reversing と似ていて実行ファイルを解析するのですが,その実行ファイルは運営側のサーバで起動しています.
そのため解析しバッファオーバーフローなどの脆弱性を見つけた後に,
exploit code を書きサーバに侵入することでフラグを得ることができます.
Reversing 同様,取っ付きにくい問題ですが,最近は pwn の問題が多いコンテストが多い印象を受けます.

コンテスト

初めてだとどのコンテストに参加して良いかわからない,ということも多いと思います.
が,自分もよくわかっていません.
とはいえ有名どころなどもあるのでそういったコンテストを紹介します.

DEF CON CTF

DEF CON と呼ばれるセキュリティカンファレンスにて毎年開催されるイベントの一つです.
予選は Online なので誰でも参加可能です.
しかし,最近の予選問題は Pwn まみれで binary con とか言われていたりします.
今年の予選の writeup を書いているので興味のある方はご覧ください.
yuta1024.hateblo.jp

SECCON CTF

国内で開催されているセキュリティコンテストです.予選は Online で誰でも参加可能です.
決勝はオンサイトで行われており競技内容は Attack & Defence なようです.
DEF CON CTF 同様に今年の予選の writeup を書いているので興味のある方はご覧ください.
yuta1024.hateblo.jp

CSAW CTF

難易度的にもほどほど(難しい問題は難しいですが)で比較的参加しやすい CTF だと思います.
毎年出ようと思って出れていない気がするのはなんでだろう….

Google CTF

Google 主催の CTF で今年から始まりました.来年があるかはわかりません.
内容は Android や Go など Google が開発したものが題材になっているものが多かったです.
こちらも参加した writeup を書いているので興味のある方はご覧ください.
yuta1024.hateblo.jp

IceCTF

個人的には難易度もほどほどで参加しやすかったような記憶があるコンテスト.
問題のジャンルも広くて,初めてでも手が出る問題も多いかも.

おわりに

さて,今回は CTF について紹介してみました.
うまく紹介できた気はまったくしませんが,これを機に興味を持たれた方は是非参加してみてください.
CTF の魅力はたくさんあると思いますが,自分が思う魅力は様々なことを問題を解きながら学ぶことができるというところです.
まだまだ自分も勉強が足りないので,来年も頑張っていきたいと思っています.

それでは皆様,メリークリスマス!そして,良いお年を.