CTF(Capture The Flag)という遊びをご存知でしょうか、文字通り「旗を掴め」という意味の旗取りゲームですが、これのセキュリティ版があるのです。米国コンピュータセキュリティの会議「DEF CON」の余興で始まったハッキングコンテストが人気を博し、今や米国や日本でセキュリティ団体が主催するCTFコンテストとして開催されるようになりました。2021年の日本のCTFでは、優勝チームに100万円が提供されました。自社のスキルアップにも利用されるという、CTFにまつわる話題を紹介しましょう。

CTFとは、情報セキュリティのスキルを競い合うセキュリティの大会

セキュリティ業務は、問題が発生したらすぐに対応しなくてはならないため、じっくり考えている暇はありません。また学んだことを活かす為に、無理やり問題を起こすわけにはいきません。対して、CTFならクイズゲームのように、楽しみながら情報セキュリティを学べ、その中で実践的なスキルが身につくので、取り組みやすくなっています。

CTFでは、セキュリティ関連の課題がクイズ形式で提示され、制限時間内に解いたクイズによって獲得した得点が多い方が勝利です。個人でも団体でも参加でき、勝利を目指すためのWebサイトや書籍なども存在します。CTFの名前の通り、クイズを解くことを「フラグを探す」と称され、フラグの表記の仕方が、FLAG{[\x20-\x7e]+} のような形になっているのも特徴の1つです。

世界中で行われているCTF

CTFはとても人気があり、常に世界中のあちこちで行われています。CTF Time(https://ctftime.org)といったサイトでは、「Upcoming event」というコーナーで近々行われるCTFの情報が掲載されています。2022年7月には、Google主催の「Google Capture The Flag 2022」など7つのCTFが開催されました。

日本のCTF「SECCON 2021」

国内では「SECCON(Security Contest)」が有名です。直近では2021年12月11日 14:00時(日本時間)から24時間、SECCON 2021が開催されました。開催はオンラインで、個人でも複数人のチームでも参加できます。出題は「Jeopardy形式」というクイズ形式です。自由に問題を解いていき最終的な合計得点を競います。 この形式では、問題ごとに得点が異なっていて、難易度が高いほど得点が大きくなります。2021年は優勝者(チーム)に100万円の賞金が提供されました。

またオンラインのイベントらしく、参加したコメントもネット上に多数あります。「ゲーム感覚でセキュリティについて学べ、楽しみながら挑戦できた。他のCTFにも積極的に参加したいと思います!」といった感想を見つけることができます。

CTFではどんな問題が出るのか?!

CTFではセキュリティに関連した問題が、幅広く選ばれ出題されます。

主な出題分野を紹介

出題は以下のような分野から行われます。

●リバースエンジニアリング
提供されるファイル(画像、ソースコード、実行ログ)を解析して、フラグを探します。
●フォレンジクス
情報の秘匿に関する問題が出ます。ログ解析からフラグを探したり、HDDやUSBといった物理メモリのイメージファイルを解析してデータを復元する問題などが出題されます。
●脆弱性対策
プログラムの脆弱性を突き、サーバ内のファイルやメモリに記載されたフラグを探します。脆弱性を見つける必要がありますから、対象を解析する能力が要求されます。
●Webアプリケーション
ウェブアプリケーションの脆弱性、XSS・SQLインジェクション・OSコマンドインジェクションなどが課題になります。
●暗号化技術
暗号知識や、独自の暗号アルゴリズムの解読問題などが出題されます。

これらは主題分野の一部です、他にも広い範囲から出題されます。

どんな問題が出るのか?「サンプル1:暗号」

初心者向けの問題を1つ紹介しましょう。これでCTFのフラグ探しのイメージをつかんでください。

問. 簡単な暗号
Guvf vf n irel fvzcyr Ebgngvba13 rapelcgvba.
SYNT{EbgngvbaGuvegrra}

これだけの内容から、この暗号解読に挑戦します。ヒントは「簡単な暗号」という出題名です。暗号にはいろいろな方法がありますが、古くからあり一番シンプルなのはアルファベット文字を任意の数だけずらす方法です。例えば「A」を3つずらしたら「A、B、C、D」ですから「D」になります。ここでは問題文に13とあるので、13文字ずらすと想定できます。実際、問題文のアルファベットをすべて13文字ずらすと、以下になります。

This is a very simple Rotation13 encryption.
FLAG{RotationThirteen}

意味のある英文になりました。どうやらこれが正しい解答のようです。この時FLAG{   }で囲まれた文字列が解答になります。ですから解答欄には「RotationThirteen」を記載します。

どんな問題が出るのか?「サンプル1:ipアドレス」

もう1つ例題を紹介しましょう。

 問. 192.168.11.123 に聞けばわかる

この1行が問題文です。この数字の列は、エンジニアならピンとくるでしょう。そうですIPアドレスの数値です。そして問題文の「聞けばわかる」という文章から、指定されたIPアドレスを「聞いてみる」→「ポートスキャンしてみる」と想像できれば、nmap 192.168.11.123 という操作にいきつくはずです。

クイズでは、nmap 192.168.11.123 を実施すると、7というポートが開いています。そこで、さらにそのポートに聞いてみます。つまり、telnet 192.168.11.123 7 とアクセスします。するとFLAG{ } という文字が返されるという問題です。これは「空いているポートを探して、そこから侵入する」というクラッキング定番テクニックです。

注! これはあくまでもクイズです。実際にサーバーに、nmap やtelnetを行ってはいけません。攻撃されていると判断され、通報される場合があります。

問題が解けるようになるには?!

CTFの問題は、Googleで検索すれば解けるようなものから、セキュリティの知識や経験が必要なものまで、とても広い範囲から出題されます。初心者でも楽しめるとは言われていますが、先に紹介したターミナルからコマンドを入力するといったスキルは必要です。以下に、どのような知識が求められるか紹介しましょう。

CTFに必要な知識

以下は、備えておいた方が良い知識です。

●プログラミングの基礎知識やスキル
簡単なプログラムが読み書きできる知識やスキル。オススメの言語は、初心者でも取り組みやすいPythonです。他、PHPやJavaScriptなどの知識も有用です。
●Webアプリケーションの基礎知識
Webアプリケーションの脆弱性に関係した問題もあるので、Webサーバーソフトやデータベースの知識は大切です。
●Linexやコマンド操作の基礎知識
対戦相手のサーバーに侵入してフラグを取得する課題もあります。そのためには、Webサーバーに多いLinex のコマンドなどを理解しておく必要があります。
●ネットワークやネットワークOSの基礎知識
ネットワークトラフィックをキャプチャする問題など、ネットワーク関連の問題も多く出題されます。コンピュータがネットワークとどう繋がり、どんなプロトコルを使って通信しているのかの基礎知識は重要です。

トライアルができる常設CTFがある

CTFで勝利を掴むためには、常日頃の訓練が大切です。世の中には、そうした訓練に役立つ、CTFの出題に近い内容をトライできる常設サイトがあります。
初心者にオススメなのが「https://ctf.cpaw.site/」です。ページ右上の「SingUp」で登録するとすぐに問題に取り組むことができます。もう1つは「https://ksnctf.sweetduet.info」です。こちらも初心者向けですが、先のcpawよりも少し難しくなっています。Twitterのアカウントでログインすると、ランキングに参加できます。

暗号の問題を1つ紹介します。以下の図1から図3は「https://ksnctf.sweetduet.info」を参照しております(2022年7月現在)。課題は「2:Easy Cipher」のものです。回答は本原稿の筆者がトライした結果、得られた画面です。

(図1)「https://ksnctf.sweetduet.info」に掲載されている問題。特に説明もなく問題がドンと出てきます。

間違ったFLAGを入れると(図2)が、正しいFLAGを入れると(図3)が出てきます。

(図2)の回答を間違えた場合の画面表示。赤で消しているのは、間違えた回答
(図3)回答が正しかった場合の画面表示。赤で消しているのは、正しい回答

こうして1人でもどんどん問題にトライできます。

ワークショップもある

CTFに向けては、SECCONがワークショップなどを開催しているので、それに参加することでフラグ取りのスキルアップを目指せます。「シェルコード解析入門とそのDFIRハンドリング」といったワークショップや、初心者向けには「ビギナーズ向け CTF」「講演、CTF 問題解説等」といった内容が用意されています。また女性のみの「CTF for GIRLS ワークショップ」もあり、「フォレンジック」「web分野」などのお題目が挙がっています。どんなワークショップがあるかはSECCONのサイトで紹介されています。

社内でCTFを行っているところも

CTFがセキュリティスキルアップに役立つことから、社内で独自にCTFを行っているケースもあります。「社内CTF」で検索すると多数の事例を見ることができます。ある事例では、自社サーバー内に侵入して必要なファイルを奪取するという課題を設定しています。
ここではセキィリティパッチの適用状況をチェック、最新があたっているので既存の脆弱性からは進入不可、ではサーバー内部を調べ興味ある情報を次々にチェック…、といった形で、管理者権限のあるアカウントを特定、関連するパスワード暗号を復元し、サーバー進入に成功! とのことでした。

詳細は
三井物産セキュアディレクション:調査研究/ブログ:社内CTFで出題した問題
を参考ください。

参加するも良し、自習から始めるも良し、CFTのメリットとは

CTFに参加するメリットは、一般的に以下のようなことが言われています。

●セキュリティに関する必要な知識が身につきます
●セキュリティを中心に、ICTに関する広範囲な知識が身につきます
●現場で役にたつスキルが身につきます
●トラブルシューティングのカンが鋭くなります

学んだ知識を実際に活かすことで、使える知識になる点がCFTのメリットと言えます。

CTF問題を学びに活用する

ウェブには「CTF問題から学ぶセキュリティ基礎知識」といった形で、セキュリティのスキルアップを図れるサイトもあります。そこには…

「セキュリティ監視ベンダーから『会社の一部のPCがC&C(Command and Control)サーバと通信しているようだ』と連絡が。C&Cサーバと通信しているということは、PCがマルウェアに感染して機密情報が漏えいしている可能性がある。該当するパケットキャプチャーを解析して、その中に機密情報が含まれていないか確認できるか」
といったリアルな課題が提示されていて、知識をどう活かすかの参考にできます。

まとめ:「CTFはどんどん活用されている。セキュリティスキルアップに最適です」

当初、会合の盛り上げイベントだったCTFは、今やセキュリティスキルアップにまで活用されるほどに成長しました。そのため最近では、望めばCTF演習を提供するサービスまで登場してきました。
ぜひ、自社のメンバーを巻き込んでCTFに取り組んでみてください!

SHARE

  • facebook
  • twitter

SQRIPTER

Sqripts編集部

記事一覧

Sqripts編集部がお役立ち情報を発信しています。

Sqriptsはシステム開発における品質(Quality)を中心に、エンジニアが”理解しやすい”Scriptに変換して情報発信するメディアです

  • 新規登録/ログイン
  • 株式会社AGEST