はじめに
こんにちは。セキュリティエンジニアのT.D.です。
先日CTFに挑戦してみたので、今回はCTFとはなにか、CTFの魅力などを紹介したいと思います。
CTFとは
CTFとは「Capture The Flag」の略で、OSやミドルウェアなどからFlagと呼ばれる情報を探すためにログを調べたりする旗取り競技のことをいいます。意図的な演習環境で、技術習得や競技のために使用されます。
CTFには大きく分けて「常設型CTF」と「イベント型CTF」2つの種類があります。
常設型CTF
常設型CTF(Permanent CTF)は、参加者がいつでもアクセスできるものです。
イベント型CTFとは違い、特定の期間に限らず、常に問題が提供されています。
問題はさまざまなレベルとジャンルが用意されており、参加者は自身のスキルや目的に応じて問題を選ぶことができます。時間に追われることなく、じっくりと問題を解くことができるため、必要な知識を深めるために多く使用されます。
常設型CTFについて、下記に一部紹介します。
PicoCTF:初心者向けに設計されたCTFで、特に中高生を対象としています。多様な問題があり、プログラミングやセキュリティに関する基礎的なスキルを学ぶのに適しています。公式サイト: PicoCTF
TryHackMe:初心者から中級者まで、インタラクティブな環境で学べるプラットフォームです。一般的なセキュリティの概念や技術を学ぶための様々なシナリオや問題が用意されています。公式サイト: TryHackMe
WebGoat:Webアプリケーションの脆弱性を学ぶための環境が意図的に設定されており、自身で攻撃を行うことで実践的なスキルを身につけることができます。公式サイト: WebGoat
イベント型CTF
イベント型CTFとは、特定の期間に開催される競技形式のサイバーセキュリティイベントです。制限された時間内に用意された問題に挑戦し、Flagを獲得(解決)することを目的とします。海外の大規模大会から地域限定、大学主催、企業主催など様々なイベントがあります。参加者は、個人またはチームとして参加し、他の参加者と競い合います。得点システムがあり、問題に正解すると得点を獲得できます。イベント期間終了後、期間中に獲得した合計得点に基づいて参加者の順位が決定され、上位の参加者には表彰や商品授与が行われることがあります。
イベント型CTFには「Jeopardy形式」と「Attack-Defense形式」の2つの形式があります。
Jeopardy形式
問題が複数用意されており、各問題には点数が設定されています。参加者は自由に問題を選び、解決することで点数を獲得します。最終的に得た点数が多い個人またはチームが勝利します。
Attack-Defense形式
各チームが自身のサーバーを守りながら、他のチームのサーバーを攻撃します。相手陣地の旗をつかむことが目標であり、防御と攻撃の両方のスキルが求められます。
イベント型CTFについて、下記に一部紹介します。
DEF CON CTF:DEF CONは、世界最大級のハッカー・カンファレンスの1つで、毎年ラスベガスでイベントが開催されます。CTFとして非常に有名で、世界中の参加者や観客から注目を集めています。開催時期: 毎年夏(通常、8月)にラスベガスで開催。
Google Capture The Flag (Google CTF):Google主催のCTFイベントで、オンラインで参加可能。初心者から上級者まで挑戦できる問題が用意されています。開催時期: 不定期。
0CTF:アジアで非常に有名なCTFで、中国企業やセキュリティコミュニティの協力のもとで開催され、国内外の優れたチームが参加します。開催時期: 年に1回、通常は秋に開催。
CTFの魅力
CTFを始めたきっかけ
業務をこなしていく上で、自分の知識や経験のなさに絶望したことがきっかけでした。上司や先輩との差をどうにか埋めたいという思いで、もともと興味があったCTFに挑戦してみました。資格取得や記事購読などとは違い、実際に手を動かして学習できることで経験値の差を埋めることができると思いました。CTFには多くの課題が用意されていることも魅力的でした。
PicoCTFの始め方
さて、長くなりましたが、ここからは実際にCTFに挑戦してみた実体験を紹介していきます。
今回私は、先ほどご紹介した、常設型CTFの「PicoCTF」に挑戦しました。
PicoCTFはメールアドレスなど登録すればすぐにでも挑戦できます!
アカウントを登録すると下記のような画面が表示されます。
「Next」を押すと「Practice(練習)」するページに誘導されます。
練習画面を表示すると「picoGym」というタイトルとともに様々な問題が表示されました!
PicoCTFでは「カテゴリー」が複数あり、それぞれ下記のような意味になります。
Web Exploitation:Webの脆弱性
Cryptography:暗号化
Reverse Engineering:リバースエンジニアリング
Forensics:デジタルフォレンジック
General Skills:一般的なスキル
Binary Exploitation:バイナリの脆弱性
挑戦してみて
CTF初参加なので、どのカテゴリーでもまずは簡単(Easy)なものから順番に挑戦してみました。
10問くらい挑戦してみた感想としては、ヒントがあってギリギリ回答できるかな?くらいでした…orz
「Easyでもこんなに難しいのか…」と解きながら感じました…。
課題をスムーズに解いていく上でどのカテゴリーでもエンジニアとしての中級者以上のスキルは必要だなと感じました。課題で求められている内容を理解することは簡単ですが、回答を出すまでに様々なスキルを駆使して行くことが必要でした。
ただCTFに挑戦することで知らなかったコマンド、知識、ツールなどにも出会えることが多く、自身のスキルアップにはとても魅力的だと感じました。エンジニアとして知識、スキルの引き出しの多さは、それだけで武器になると思いました。
終わりに
非常に勉強になりました。今まで開発、インフラ、エンドユーザーPCの保守運用など様々な業務を多岐にわたり経験してきたので、「全くわからない…。」とはならず、どの経験も活かされたと感じました!
まだまだ知らない技術、知識があり、CTFの世界は奥深く、技術や知識の習得には終わりがないので、これからもCTFの挑戦は継続していきたいと思います!
個人的には「Webの脆弱性」と「暗号化」が得意分野だと感じたので、次回はそのカテゴリーに重点的に挑戦します! 引き続きCTFへの挑戦や、セキュリティに関する時事ネタの記事を投稿していきます。
次回の投稿は、私の後輩のH.D.くんがAnsibleについての記事を投稿します。Ansibleは私が管理するシステムでも大変お世話になり、一緒に運用しているツールです。
山あり谷ありな導入エピソードもお楽しみに!!
レイスシステムソリューションズ株式会社のソフトウェア開発や、
採用に関するお問い合わせについては、下記のリンクにてお問い合わせください。
-1.png)



