meowの覚え書き

meowの覚え書き

write to think, create to understand

CTF OSINT 問題設計の留意事項

作問は難しい!

目次

はじめに

DIVER OSINT CTF 公式 Writeup が問題設計回りについて割と踏み込んだ内容まで開示していたのを見て、「そういえばCTFにおけるOSINTカテゴリを作る方の話って基本的に xryuseixさんが公開したものくらいしか他にないよな」と思ったので、事例増やしのために、私が過去に Open xINT CTF 2023 作問に携わっていた時の経験をもとに留意事項という形で共有する。

ほとんどはDIVER OSINT CTFの思想に類似しているが、それは実在の人物や組織をターゲットにしたコンテストとして問題の質を追求しようとすると留意する事項が似通うのだと思う。

なお、文中で、"mural"、"cosplayer"、"fireworks"といっているものは私が Open xINT CTF 2023で作問した問題の名前である。

オープンソースを扱うという性質について

オープンソースはコントロールできない

  • 作問時から時間が立つと難易度が大きく変わる
    • 検索エンジンのランキングが変わる
      • 例えば"cosplayer"は私が作問した時はGoogleレンズを使えば恐竜のCCさくらSNSは一発で引っかかった。しかし、CTF直前期になるとヒットしなくなり、すこし手強い問題になった。
    • コンテンツが増える
    • サービスの仕様が変わる
      • 私が作問した時は起きなかったものの、これも十分起きえた話である。
        • 最近の事例では、X(Twitter)で他人のfavが見られなくなったことなどがある。
  • CTF中に調査するサービスがダウンしたり、ページが非公開になり解答不可能になる可能性がある
    • 自分が過去に遭遇した事例としては、crt.sh が繋がりにくかったり、 wayback machineがダウンするなどがあったので、CTF中は肝を冷やしていた。また、過去のCTFで実在の人物の調査をする問題があったのだが、CTF中にそのターゲットのSNSアカウントが非公開になったこともある。
    • これらは起きるものとして作問しなければならない。*2

オープンソースにはダイナミズムがあるため、作った問題には鮮度があることは留意した方が良い。

問題設計に即したターゲットがいない、あるいは選べない

  • 私が作問する手順は基本的にラック社さん(のst98さん)の記事「CTFの問題を作ろう」と同様、私生活で収集したネタに基づいて問題を設計しようとするのだが、OSINTカテゴリ特有の事情として、その設計した問題に即したターゲットが現実空間上にいない場合が多い。
    • 例えば、「EPIEOSとwayback machineを使った調査スキルを試す」という問題を作ろうとしても、web上に自分のメールアドレスを公開し、かつ、そのメールアドレスからwebサービスを運営していることがわかり、webサービスアーカイブに興味深い情報が載っているようなアカウントはまず見つからない。
      • また、調査上の倫理の項目でも述べるが、倫理的観点からターゲットとして選んではいけないことも多い。
  • 自分で問題用のアカウントを作ることも検討したが、ノイズが少なすぎて、難易度が低めの問題にしかならなかった。
    • プレイヤーから見ると、当たり障りのない投稿の中に一個だけ意味深な内容があって、すぐに調査のアタリがついてしまう。
      • これでは、ただ単純にSNSを調査するステップを増やしただけで、無意味な調査な感を与えてしまうので良くない。

個人的には、OSINTカテゴリ作問において、適切なターゲット探しが一番難しいポイントだと思う。

調査時の安全性について

物理的な安全性

  • 危険なソースにアクセスしないように気を払う。
    • “mural”の話をする。OSINTカテゴリでは、ストリートアートのgeolocation問題を見かけることが多い。これは場所が伏せられてSNSで公開されていることが多いので問題として使いやすいためであるが、私は断念した。
      • 理由は、ストリートアート作者へのアクセスは危険が伴うと考えるためである。公共物への落書きは犯罪行為であり、"アーティスト"と言えど犯罪者であり、犯罪者のSNSにアクセスするのはリスクがあるためである。
        • 例えば閲覧履歴などからアーティストがプレイヤーにインタラクトしてくる可能性は否めず、プレイヤーが普段使いしているアカウントで調査した場合プレイヤーに危害が及ぶ可能性があるので、ストリートアートからの出題は諦め、"mural"になったという経緯である。
    • とはいえ、これは参加者がどういう層なのかによる。
      • recon village ctfでは、問題文でなんの警告もなく、pornhubにリダイレクトするURLがお題として出たこともあった。

メンタル面での安全性への配慮

  • ネガティブなトピック(戦争、災害など)を扱うことは悪くないのだが、慎重さが求められるため、私はなるべく避けるようにしていた。
    • 私の作問ストックにもそういうものはあったのだが、うっかり"beheading"(「斬首」の意味)というキーワードで調べてしまう可能性があることが発覚し、さすがに度が過ぎていると判断しボツにした。
  • nsfw関係への配慮
    • "cosplayer"作問の話。オタクカルチャーから出題しようと決めて作問しようとしたのはいいのだが、いともたやすくお色気コンテンツにリーチするので、題材の選定にはとても気を払った。
      • 特にAVTokyo現地会場は照明が暗く、PC画面が傍から丸見えだったことを考えると、現地参加組が不利になる可能性があったため、この判断は正しかったと思う。

調査上の倫理について

  • 調査によってターゲットを貶めないこと
    • 機微情報漏洩はテーマになりやすいが、実在の人物や組織のターゲット選定にあたっては気をつけなければならないポイントである。

競技としての公平性について

  • 日本語圏以外のプレイヤーでも解答可能で、過剰に不利にならないようにする
    • xINT CTF(というよりもAVTokyo)はグローバルな国内イベントなので、日本の文化的背景を持ってないと調査方針が立てられない、のようなことにならないように気をつけた。
  • 自分が過去に内輪で出した問題を使い回さない
    • 私の過去問を知っているプレイヤーがいるとは思えなかったが、念には念を入れて新規で作った。

問題の質の確保について

調査方法の妥当性

  • 実際に調査する方法や、考え方で答えにたどり着けるか。
    • 悪い例として私が過去に作問した問題を挙げる。昔、私のTwitterのサブアカを探させる問題を出題したことがあるのだが、想定解法を「Twitterで "meow_noisy サブアカウント" と検索する」としてしまったものがある。
      • おそらく、ほとんどの人はこのような方法でサブアカウントを探しはしないだろう。
      • ひらめきが必要と言えば聞こえは良いが、現実離れした調査方法だと、悪く言えばエスパー問であり、調査技能が試せない(競技にならない)問題になってしまうので気をつけるべきポイントである。

フラグの妥当性

  • 問題に対する正解を決める際に、正解の妥当性を調べる必要がある
    • これがないと、問題の題意を満たす別解がいくつもでてきてしまう
      • 必要十分かの裏取りは大変だが、ファクトチェックの練習になるのでやったほうがよい。

調査する意味を持たせる

  • "問題のための問題"になっていないか。調査活動が無価値でないか。
    • いくら複数の調査技能を試験したいからといって、例えば問題文を「ターゲットの投稿のアーカイブから、何月何日に食べた料理店のオーナーのパートナーの母親の旧姓」のようにごった混ぜにしたものは調査の目的がなく徒労感しかない。
  • 問題文がシンプルか。出題意図を読まれないか。
    • 上記のごった混ぜにしたような問題をpinjaに提出した時にいただいたコメント。確かにすぐに調査方針がわかってしまうと、難易度がぬるくなってしまう。

CTFカラーの保持

  • 私が作問したことでxINT CTFのブランドが落ちないように、「xINTっぽい」問題になるように気を払った
    • xINTっぽさ、について私は下記の要素があると考える。
      • 現実の人物・組織がターゲットとなることが多い。
      • 誰でも何も準備せずに当日参加できる
      • 面白いのでリピート参加したくなる
    • 「面白さ」についてもう少し言語化を行う
      • ぶっつけ本番でも成功体験が得られる
        • 経験がなくても、時間をかけてガチャガチャ調査すればフラグをもぎ取れて満足感がある
        • 「OSINTカテゴリはgoogle検索さえできれば誰でも始められる」と昔は思っていたのだが、この認識は間違っていた。作問者がgoogle検索を使えば解けるように問題設計してくれているからこそ解けるのだと悟った。
      • CTFを通して公開情報調査の学びがある
      • 解法の意外性
        • 「自分が普段見かけるこの情報から、こんなことがわかるの!?」という体験がある。
          • 私は xINT CTF 2020の SUN の解法(chronolocation)に大変感銘を受けてOSINT CTFを本格的にやっていこうと思ったこともあり、この要素が含まれるように"fireworks"は作ったつもりである。

その他の要素

  • 問題の題材探し
    • 写真を使う問題の題材選択に関して
      • 旅先で撮ったような写真をお題に使うことは難しいと思う。「珍しいから」という理由で撮ったものは、だいたい他の人も同じ意図で撮影し、SNSなどで公開しているためである。
      • 逆の発想で、他人が撮らないようなものを撮り、問題として使えそうな情報(番号など)を調べたほうがいいかもしれない。
    • 問題の題材の著作権
      • 出典を明記すれば基本的に良いはずだが、プレイヤーがwriteupで引用した場合、引用として成立するのかが不明だったので、googleストリートビューや航空写真サービス系からスクショを撮ることは避けた。
  • 作問者メタ推理への対策
    • 私のSNSでの発信活動全部を漁られても、たとえ私が誰なのか知っていても、問題の内容や解法が推測できないように、題材の選定をおこなった。
    • これは個人的に辛かったポイントの1つである。私は技術情報を発信したい派なので、面白いツールや調査技法を作問で使用するために黙っておかなければならなかったのは、もどかしかった。
      • 作問 と 発信活動 のトレードオフ問題、他の作問者の方々はどうしているのだろうと思っている。

おわりに

以上、CTFのOSINTカテゴリ作問の留意事項を、私の経験をもとに書き出した。
2ヶ月くらい必死で新規作問をしていたが、上記のような項目をなるべく満たそうとすると、出せるターゲットが絞られるし、いい問題になかなかならず、精神的にきつかった記憶がある。
とはいえ作問側だったからこそ、CTFだと候補全部サブミットしてごまかすような場面で、様々な情報源をもとに丁寧に絞り込むことは勉強になった。また、xINT CTFの参加者の感想で、「面白かった」、「またやりたい」という声も見受けられ、すごく嬉しかったし、個人的にやりきってよかったと思える終わり方をしたと思う。

作問側は大変だけど、質を追求するとその分良いこともあるということは言いたい。

*1:自分の作問ストックの中でも「激ムズ」ラベルをふっていた自信作だっただけに、さすがにショックだった。

*2:この点に関して、DIVER OSINT CTFでは、URLとクエリをセットにして運営にDMで問い合わせると運営がページのアーカイブを返すという運用が取られていたのは画期的で素晴らしいと思った。