【CTFトレーニング】サイトksnctfを使って情報セキュリティ能力を向上させよう

パソコン

CTFとは「Capture The Flag」の略で、直訳すると、旗取りゲームとなります。

CTFをひと言で説明すると、情報セキュリティクイズです。

CTFは、出題された情報セキュリティに関する問題に対し、自分の知識や技術を使って、Flagと呼ばれる答えを見つける形式のイベントです。

参加者(回答者)がFlag(答え)を見つけると、ポイントを獲得することが出来るのですが、時間内にゲットしたポイントの合計を参加者同士で競います。

個人戦であったり、チーム戦であったり、回答の早さや問題の難易度によって獲得できるポイントが変わる等、イベントによってルールは様々です。

 

最も規模の大きいCTFのイベントは、アメリカで行われているDEFCONになりますが、日本国内では日本ネットワークセキュリティ協会主催のSECCONが最大手のイベントとして開催されています。

CTFトレーニングについて

CTFで要求される情報セキュリティの知識は多岐に渡ります。

ネットワーク、ソフトウェア、プログラミング、オペレーティングシステム、暗号等々…

幅広く深い情報技術の知識が求められるわけですが、逆に言えばCTFのイベントに参加したり、CTFのトレーニングを行えば自然と知識が身について行くわけですね。

CTFトレーニングがおすすめな理由

正直言って、私はいきなり情報セキュリティの参考書等を読んでも知らない分野のことだとさっぱり理解できません。

その分野の仕事に携わってみて、毎日やっている内にだんだんと知識がついてきて、参考書も理解できるというのがほとんどの人だと思います。

しかし、そんな環境に身を置くのは中々難しいので、とっつきやすいクイズ形式のCTFトレーニングをすることで情報セキュリティの知識を深めることができるわけですね。

そして何より、問題を解くのが楽しいです。難しいと感じる問題が多いですが、解けた時の感動は格別です。感動体験は記憶に深く残るので、そういった意味でもCTFトレーニングを行うのは効果があると言えます。

CTFトレーニングにおすすめのサイト「ksnctf」について

ネット上には、CTFの練習を行うサイトは数多くありますが、初心者でも参加しやすいサイトとして、

 ksnctf https://ksnctf.sweetduet.info/

をおすすめします。

このサイトには、CTFトレーニング用の問題で準備されていて、誰でも気軽に問題を解くことができます。

 サイトksnctfのトップページ(https://ksnctf.sweetduet.info/から引用)

さらに、ksnctfが良いのが、問題を解くとポイントが得られるというシステムであるのと、ユーザー参加型のサイトであるという点です。

問題については、難易度に合わせてポイントが設定されていて、解くとポイントを獲得できます。

例えば、簡単な問題なら5点、難しい問題なら100点という風にポイントが設定されています。

問題を解くとポイントが入るのは単純ですが良い仕組みですね。淡々と問題を解くのでは面白みもありませんので。

そして、ユーザー参加型のサイトなので、このポイントの合計点でランキング付けがされています。

問題を解く→ポイントを獲得→順位が上がる→もっと問題を解いてみようというサイクルでモチベーションを保ちながら繰り返しトレーニングができます。

このモチベーションの維持が結構重要なんですよね。CTFトレーニングをしていると、難しい問題も多いので、もういいやってなってしまう気持ちになりがちなんですが、ポイントが欲しいからもうちょっと頑張ってみようという気持ちになります。

このポイントは別に何かのサービスに利用できるわけではないんですが…人間って不思議なもんでポイントをくれる、順位が上がるとなるとやる気が出るんです。

必要なのはTwitterアカウントだけ

問題を解くだけであれば、ログインは不要です。

しかし、上記のポイントやランキング機能を利用するには、Twitterアカウントを使ってログインが必要です。

とはいえ、面倒な手続きは不要で

  TwitterアカウントのIDとパスワードを入力してログインする

か、

自身のTwitterにログインした状態でksnctfの連携を認証する

かのどちらかでログインできます。一瞬です。

ksnctfの利用方法(ksnctf#2 Test Problemを解いてみる)

それでは、実際に練習問題を解きながらksnctfの使い方をお伝えします。

まず、サイトトップページにある問題一覧の中からテスト問題を選択します。

 

ksnctfでは問題文の下に解答(Flag)を入力するフォームが設置されています。

問題の形式はそれぞれ異なっていますが、解答(Flag)を入力する形式はどの問題も同じです。

このテスト問題では、問題文に解答(Flag)がそのまま書かれているのでこれをコピーして解答フォームに入力すれば良いだけです。

正解していれば、Conguratirationというメッセージが表示されます。

ksnctf#2 Easy Cipherを解いてみる

続いて、ksnctf#2 Easy Cipherも解いてみます。

まず、問題タイトルEasy Cipherの英語の意味が分かりません。

このように英語で分からない場合はとりあえず翻訳してみます。

本番のCTFもそうですが、タイトルが問題を解くヒントになっていることが多いからです。

 

日本語に直すと、「簡単な暗号」という意味です。

そして、問題文は

EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT.

という意味の分からない英語の羅列になっています。

しかし、簡単な暗号という問題タイトルからして、この英語の羅列は簡単な暗号がかけられていて、それを複号すればいいんじゃないかと推測できますね。

問題文の英語の意味は分かりませんが、英語しか使われていないことからして、英語の文字が他の英語に変換されている(暗号化されている)のではないかと推測できます。

簡単な暗号と言えば、シーザー暗号があります。

シーザー暗号というのは、古代ローマ時代の指導者カエサル(英語読みでシーザー)が利用していたという暗号方式です。

シーザー暗号は、元の文字から数文字分ずらして暗号文とするというシンプルな暗号方式です。

例えば、Helloという単語の文字をそれぞれ3文字後ろにずらすと、

 Hello→Khoor

という意味不明な単語になりますね。

日本語でも、こんにちは3文字後ろにずらすと、

 こんにちは→すうのとへ

となります。単純ですが、暗号化されていますね。

今回の問題文もこのシーザー暗号が使われていると見て、文字をずらしてみます。

ちなみに、シーザー暗号を利用した暗号化、複合化を行うことができるサイトはネット上に複数あるので、これらのサイトを利用すれば楽ですね。

今回は、こちらのサイトを利用しました。

元の文(平文)とシフト数(何文字ずらすか)を入力すれば、暗号化できます。

逆に暗号文を複合することも当然可能です。

何文字ずらされているかわからなかったので、1文字ずつずらして行きました、13文字ずらすと意味の分かる英文になりました。

 

この英文を訳すと答えが出てきました。

この答えをFlagとして入力すると、無事正解メッセージが表示されました。

ちなみに、シーザー暗号の中でもこの13文字ずらす手法はROT13として認知されています。

どうやらアルファベットの数が26文字あるので、その半分の13文字をずらすという手法のようですね。

今回は、ちょっと力技で1文字ずつずらしましたが、ROT13という手法を知っている方はいきなり13文字ずらして、素早く正解にたどり着けたと思います。

まとめ

以上のとおり、CTFトレーニングを紹介しました。

CTFの面白い点は、いろいろな角度からでも正解にたどり着くことができる点です。

上のシーザー暗号の問題でもこの暗号文の意味がいきなり理解できる方はいないと思います。

しかし、

   ・問題のタイトル

 ・シーザー暗号の知識

 ・暗号文は英語のみで、ある程度の塊(単語)になっている

等の点から推測して、ネット検索等を利用して正解にたどり着けるはずです。

重要なのは、推測するということと自分で必要な知識を検索できるということです。

CTFトレーニングはまさにこの2つの力を鍛えていくのに最適な勉強方法と言えます。

また、別の問題尾も解説していけたらと思います。

コメント

タイトルとURLをコピーしました