CTFのカテゴリと考え方
Capture the Flag競技の仕組みを学びます。
「CTFのカテゴリと考え方」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
CTFとは何か
Capture The Flag (CTF)とは、セキュリティの問題を解いて、フラグと呼ばれる隠されたトークンを見つけ出すサイバーセキュリティ競技です。
フラグには採点システムが自動的に検証できるよう固定形式が定められています。たとえば次のような形式です。
flag{this_is_the_answer}CTF{s0me_l33t_string}
フラグをスコアボードに提出すると、ポイントを獲得できます。CTFは、攻撃を明示的に許可されたターゲットに対して攻撃技術を練習できる、合法的で隔離された環境です。
ジェパディ形式と攻防戦形式
CTFの主要な形式は次の2つです。
- Jeopardy — カテゴリと配点で分類された、独立した問題のボードです。自分で問題を解き、フラグを提出します。学習に適しています。
- Attack-Defense — 各チームが同一の脆弱なサービスを運用します。自分のコピーを修正しながら、対戦相手を攻撃してフラグを奪います。リアルタイムでチームワークが重視され、インフラへの負荷も大きい形式です。
多くの初心者は、これらのイベントを開催しているプラットフォームでJeopardy形式から始め、基礎的なスキルを身につけてからAttack-Defense形式に進みます。
主要な問題カテゴリ
Jeopardy形式のボードは、繰り返し登場するカテゴリで構成されています。カテゴリを知っておくと、自分の得意分野に合う問題を選びやすくなります。
- Web — Webアプリを悪用します(SQLi、XSS、SSRF、認証バイパス)。
- Crypto — 暗号方式を破ったり、誤った使い方を悪用したりします。
- Reversing (rev) — コンパイル済みのバイナリを解析して、ロジックを理解します。
- Pwn / binary exploitation — メモリ破壊の脆弱性を悪用します。
- Forensics — ファイル、メモリダンプ、パケットキャプチャからデータを復元します。
- OSINT — オープンソースインテリジェンスを使ってフラグを見つけます。
- Misc / stego — メディア内の隠しデータなど、その他のあらゆる問題が含まれます。
問題文の読み方
すべての問題には短い問題文が用意され、多くの場合、ファイルやURLも添付されています。問題文を飾りではなくヒントとして読みましょう。次の点に注目してください。
- カテゴリと配点 — 配点は難易度の大まかな目安になります。
- 添付ファイル — バイナリ、ソースアーカイブ、pcapは、必要なツールセットを示します。
- ターゲットのエンドポイント — IPアドレスとポート、またはWeb URLがあれば、稼働中のサービスを意味します。
- テーマを示す表現 — RSA、base64、映画への言及などの名前は、具体的な手法を示していることがよくあります。
ツールを使い始める前に、観察したことを書き出してください。CTFの半分は、問題文を注意深く読むことです。
列挙の考え方
熟練したプレイヤーは、悪用を始める前に徹底的に列挙します。原則は、低コストで集められる情報を、まずすべて集めることです。
ネットワークやサービスのターゲットに対しては、通常、最初にポートとサービスのスキャンを行います。
# Discover open ports and service versions on an authorized target
nmap -sC -sV -p- 10.10.10.5
# Enumerate web content once you know a port serves HTTP
gobuster dir -u http://10.10.10.5 -w common.txt覚えるのではなく見抜く
すべてのエクスプロイトを暗記することはできません。代わりにパターン認識を身につけ、手がかりを手法の系統に結びつけます。
- 入力をそのまま返すログインフォームなら、インジェクション(SQLi、XSS)を試します。
- 小さな公開指数と共通の法があれば、古典的なRSA攻撃を疑います。
gets()の呼び出しを含む、シンボルが削除された64ビットELFなら、スタックバッファオーバーフローを疑います。- HTTP通信で埋め尽くされたpcapなら、転送されたファイルや認証情報を抽出します。
系統を見抜ければ、使うべきツールや検索語がわかります。速さは丸暗記ではなく、この対応付けから生まれます。
スコアボードを戦略的に活用する
ポイントには限りがあるため、労力を賢く配分してください。
- 低配点の問題を最初に一通り解きます。勢いをつけながら、ツールが正しく動くことを確認できます。
- 解答数を確認します。解答数の多い高配点問題は、配点から想像するより簡単なことがよくあります。
- 動的スコアリング — 多くのイベントでは、解答するチームが増えるほど問題の価値が下がるため、早期の解答ほど高い価値を持ちます。
- 時間を区切ります。新しい手がかりが得られないまま30〜45分行き詰まったら、問題を切り替え、 freshな視点で戻ってください。
深追いを避ける
深追いとは、もっともらしく見える行き止まりに何時間も費やすことです。作問者がわざとおとりを仕掛けることもありますが、多くの深追いは自分で招いてしまうものです。
深追いを避けるには、次の点を意識してください。
- 検証する前に仮説を立て、その仮説だけを検証します。
- 試したことや除外したことをメモファイルに逐次記録し、同じところを繰り返さないようにします。
- ありそうにない仮定を何段も重ねる必要がある道筋は、おそらく間違っています。CTFの解法は通常、筋道が明快です。
- さらに1時間を費やす前に、チームメイトに推論の妥当性を確認してもらいます。
範囲を守って公正に競技する
CTFが合法なのは、競技の範囲が定められているからこそです。その境界を越えると、練習が犯罪行為に変わり、出場停止になります。
- 提供されたターゲットだけを攻撃してください。規則で明示的に許可されていない限り、スコアボード、インフラ、他のチームをスキャンしたり悪用したりしてはいけません。
- フラグを共有したり、提出エンドポイントに総当たり攻撃を仕掛けたりしてはいけません。
- 問題サーバーにDoS攻撃を仕掛けてはいけません。サービスを大量のリクエストであふれさせると、全員が利用できなくなり、ほぼ必ず禁止されています。
- 最初に規則ページを読んでください。不明な点があれば、イベントチャットで主催者に確認してください。
実務に活かせるスキル
CTFのスキルは、専門的な防御・攻撃セキュリティ業務に直接つながります。
- Web問題では、ペネトレーションテスターやAppSecエンジニアが実際の脆弱性を見つけるために使うのと同じ着眼点が鍛えられます。
- Forensicsは、インシデント対応や脅威ハンティングに通じます。
- Reversingは、マルウェア解析の基盤になります。
- Pwnでは、メモリバグがどのようにエクスプロイトになるかを正確に学べるため、防御やセキュアコードレビューの能力向上につながります。
競技は安全なトレーニングジムであり、そこで鍛えられる力は本物です。
練習のルーティンを作る
一夜漬けより継続が大切です。持続可能なルーティンは次のとおりです。
- すべてのカテゴリを浅く学ぶのではなく、1つのカテゴリを選び、数週間かけて深く取り組みます。
- 解けなかった問題のwriteupを必ず読みます。意図された解法を学ぶことが、最も速く成長する方法です。
- 解けた問題も、1週間後に最初から解き直して、手法を定着させます。
- 何度も調べ直しているコマンドやペイロードを、自分用のチートシートにまとめます。
未解決の問題は失敗ではなく、読むべき教材のリストとして扱ってください。
理解度チェック
CTFの形式と考え方についての理解度を確認します。
まとめ
これで、CTFに取り組むための基礎を理解できました。
- フラグとは、見つけ出してポイント獲得のために提出する、決められた形式のトークンです。
- Jeopardy形式ではカテゴリ別の独立した問題に取り組み、Attack-Defense形式では稼働中のサービス同士を対戦させます。
- 主要なカテゴリは、Web、Crypto、Reversing、Pwn、Forensics、OSINT、Misc / stegoです。
- 勝つための考え方は、まず列挙し、パターンを見抜き、時間を区切り、深追いを避け、範囲を守ることです。
- 身につけたスキルはすべて、実際の防御・攻撃セキュリティ業務に活かせます。
次は、実際のWebと暗号の問題を解き始めます。
よくある質問
「CTFのカテゴリと考え方」レッスンは無料ですか?
はい。「CTFのカテゴリと考え方」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「CTFのカテゴリと考え方」で何を学びますか?
Capture the Flag競技の仕組みを学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「CTFのカテゴリと考え方」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CTFのカテゴリと考え方
- Webと暗号のチャレンジ
- リバースエンジニアリングとPwnの基礎
- ツールとWriteup