複合チャレンジ|Web×暗号×ログをまたぐ侵入経路
JWT偽造・ECBパターン照合・ログ相関分析。これまでの実践編で別々に学んだ3つの技術を、1つの侵入シナリオの中で順番に繋ぎます。1つの手がかりだけでは犯人にたどり着けません。3つすべてを正しい順番で繋いだときに、初めて答えが見えます。
📋 目次
💭 前回までの振り返り|技術を「繋ぐ」総合力
8話分の技術を、今回は1つのシナリオに統合します
新しい技術は教えません
第1話から第8話まで、JWT偽造・プロトタイプ汚染・RSA・ECB・メモリフォレンジック・複合ログ分析と、1話ごとに新しい技術を学んできました。今回は新しい技術を教えません。その代わり、すでに学んだ3つの技術(JWT偽造・ECB照合・ログ相関分析)を、1つの侵入事件の調査として順番に繋ぎます。CTF実践編はいよいよ最終回の直前です。
本格的なCTF競技や実際のペネトレーションテストでは、1つの脆弱性だけで重要なシステムまで到達できることは多くありません。複数の小さな弱点を順番に踏み台にして、少しずつ権限や情報を獲得していく「攻撃チェーン」を組み立てる力が試されます。今回はその感覚を、3段階のステージで体験します。
セキュリティの世界では、こうした攻撃の流れを「初期アクセス」「権限昇格」「探索」「目的の実行」といった段階に分けて分析するフレームワーク(MITRE ATT&CK®など)が広く使われています。今回のステージ1は初期アクセスの突破、ステージ2は探索による手がかり収集、ステージ3は目的の実行(実行者の特定)に相当すると考えると、実務的な分析の流れにも自然になじみます。
🧩 複合侵入経路とは何か
1つの手がかりが、次の手がかりへの入口になる
複合侵入経路(マルチステージ・アタックチェーン)とは、複数の脆弱性や手がかりを順番に組み合わせて、最終的な目的(重要データへのアクセスなど)に到達する一連の攻撃の流れです。今回のチャレンジでは、ステージ1で得られる手がかりがステージ2の調査範囲を絞り込み、ステージ1とステージ2の両方の手がかりを組み合わせて初めて、ステージ3で本当の実行者を特定できるという設計になっています。
なぜ1つの手がかりだけでは足りないのか
ステージ2のECB照合では、トークンが一致する候補が2人見つかります。しかし、どちらが本物の侵入者で、どちらがただの偶然(トークンの重複というシステム側の別の不備)なのかは、ECBの結果だけでは分かりません。ステージ1で得た「不審なIPアドレス」と組み合わせ、ステージ3のログでどちらの候補がそのIPからアクセスしているかを確認することで、初めて実行者を1人に絞り込めます。
この「複数の手がかりの積集合(共通部分)を取る」という考え方は、第8話のIPアドレスとタイムスタンプの相関分析と本質的に同じです。今回はそこに「ECBで見つかった候補」というもう1つの軸が加わり、絞り込みの精度がさらに上がっています。
📊 今回の事件のシナリオ
やさいクラウド勤怠管理システムからの情報流出
架空の社内システム「やさいクラウド勤怠管理システム」から、給与情報がエクスポートされた形跡が見つかりました。あなたは調査担当として、3つの手がかりを順番に追っていきます。
| ステージ | 使う技術 | 得られる手がかり |
|---|---|---|
| ステージ1 | JWT偽造(alg:noneバイパス) | 不審なアクセス元IPアドレス |
| ステージ2 | ECBパターン照合 | セッショントークンを共有する2人の候補 |
| ステージ3 | ログ相関分析 | IPアドレスと候補を組み合わせた実行者の確定 |
各ステージの実装は、過去の話で使ったものと同じです
JWTラボ・ECB照合ラボ・ログ検索ツールは、第3話・第6話・第8話で使ったものと同じ仕組みで動いています。手順を忘れてしまった場合は、各ステージのヒントに加えて、前提知識ボックスのリンク先を読み返すことをおすすめします。
🧪 実践チャレンジ:3つの手がかりを繋いで犯人を特定する
ステージ1→2→3の順に解放されます
3つのラボが順番に解放されます。それぞれのラボで得た手がかりを忘れずにメモしておきましょう。
(まだ生成されていません)
🔓 管理者ビューに侵入成功!
本日の異常アクセス検知:不審なIPアドレス 203.0.113.84 からのアクセスが記録されています。また、セッショントークンの重複が検知されています。下のラボ2で確認してください。
各ステージをクリアすると、次のステージが解放されます。3つすべて解決した時点でスコアが確定します。
📊 ステージ進捗: 0/3|挑戦回数: 0回
ラボ1でalg:noneバイパスに成功すると表示されるチェックポイントコードを入力してください。
HEADERのalgをnoneに、PAYLOADのroleをadminに書き換えてから「トークンを生成」→「検証する」の順に押してください。
下のラボ2で、セッショントークンが一致する2人の名前を見つけ、MATCH-名前1-名前2の形式(アルファベット順)で入力してください。
「トークンを照合する」を押すと、暗号文ブロックが緑色でハイライトされ、一致しているペアが分かります。名前はアルファベット順に並べてください。
下のラボ3で、ステージ1のIPとステージ2の候補2名を組み合わせて実行者を特定し、ログに記録されたフラグを入力してください。
ステージ1で見つけたIPアドレスを検索欄に入力し、ステージ2の2人の候補のうち、どちらがそのIPからアクセスしているかを確認してください。そのユーザーのACCESS行にフラグが記録されています。
🛡️ なぜ複数の弱点を繋ぐ攻撃が危険なのか
1つずつ見れば「軽微」でも、繋がると「重大」になる
セキュリティ診断の現場では、個々の脆弱性の深刻度を評価するだけでなく、それらが「繋がったときにどこまで到達できるか」を検証することが重要です。alg:noneのような実装ミス単体では「管理者ビューが見える」程度の被害に見えても、そこから得た情報を別の弱点(トークンの重複)と組み合わせることで、最終的に給与データの流出という重大な被害につながることがあります。
多層防御という考え方
1つの対策だけに頼らず、複数の防御層を重ねる「多層防御(defense in depth)」という考え方が重要視されるのは、まさにこの「弱点が繋がる」リスクに対応するためです。JWTの検証を正しく実装し、トークンの生成にも十分なランダム性を持たせ、さらにログの監視体制を整えておけば、どこか1つの層が破られても、次の層で侵入の拡大を止められる可能性が高まります。
セキュリティ診断レポートでよく使われる「Critical(緊急)」「High(重要)」といった深刻度は、個々の脆弱性単体の評価であることが多く、複数の脆弱性が組み合わさったときの本当の被害規模を正確に反映できているとは限りません。診断担当者には、個別の指摘だけでなく、それらが繋がった場合の最悪のシナリオまで想定する視点が求められます。
次回はいよいよ最終回です。これまでの実践編全体で学んだ技術を結集し、侵入から権限昇格・横展開・データ窃取・実行者特定までの一連のインシデント対応を、1つの大きなシナリオで再現します。
📝 まとめ+FAQ+次回予告
3つの技術が、1つの答えに収束しました
第9話では、JWT偽造・ECB照合・ログ相関分析という3つの技術を、1つの侵入事件の調査として順番に繋ぎました。どの技術も単体では「実行者を1人に絞れない」という限界があり、3つを組み合わせて初めて答えが1つに収束する設計を体験していただけたはずです。これは実際のインシデント対応や本格的なCTF競技の上級問題に近い感覚です。
・複合侵入経路は複数の手がかりを順番に組み合わせて目的に到達する
・1つの手がかりだけでは、候補を1つに絞れない場合がある
・手がかりを正しい順番で組み合わせることで、初めて答えが収束する
・対策には「多層防御」、つまりどこか1つの層が破られても次で止める設計が重要
・採点ルールは前話までと同じ(ヒント-15pt、全ステージ解決でスコア確定)
Q. 3つのラボはそれぞれ独立していますか?それとも繋がっていますか?
技術的な実装としては独立した3つのラボですが、物語としては繋がっています。ラボ1で得たIPアドレスと、ラボ2で得た候補2名を、ラボ3で組み合わせることで初めて実行者を特定できる設計になっています。
Q. ステージ2の候補2人のうち、無実だった方は何か悪いことをしたのですか?
いいえ。今回のシナリオでは、もう1人はたまたまシステムの不備でセッショントークンが重複してしまった無関係な利用者です。トークンの一致だけで「侵入者だ」と決めつけず、別の証拠(IPアドレス)で裏付けを取ることの重要性を示すための設定です。
Q. 実際のインシデント対応でも、こんなにきれいに手がかりが繋がるのですか?
実際の調査では、今回のように手がかりがきれいに3つだけ、というケースは多くありません。無関係なノイズがもっと多く、手がかり同士の繋がりも一見分かりにくいことがほとんどです。今回は学習のために、繋がりが見えやすいように単純化しています。
Q. このチャレンジで使われている脆弱性は、実際の本番システムでも見つかることがありますか?
はい。JWTのalg:none、ECBモードの使用、セッショントークンの重複生成は、いずれも実際のセキュリティ診断やバグバウンティで報告される実在のパターンです。今回学んだ「繋げて考える」視点は、実務の脆弱性診断でも役立ちます。
インシデント対応リアルタイム演習
侵入・権限昇格・横展開・データ窃取・実行者特定という5つのステージで、CTF実践編全体の集大成となる最終チャレンジに挑戦します。
📚 参考情報
- MITRE ATT&CK® — 攻撃チェーンの分類体系
- OWASP「Defense in Depth」の考え方


コメント