💬

謎解き・ARGプレイヤーのための「OSINT CTF」超入門

2024/10/27に公開

最近、謎解きゲームやARG(代替現実ゲーム)のプレイヤーの方の間で、OSINT CTFに関心を持っている方が少しずつ増えているようです。

この状況はプレイヤー規模の拡大につながるため、とても喜ばしい一方で、ゲームとOSINT CTFは異なる点が多く、取り組むにあたって注意点があるのも事実です。

この記事では、「謎解きやARGのプレイ経験があり、"OSINT CTF"という言葉を聞いたことがあって参加してみたいが、経験がない」という方のために背景知識から注意点、実際に参加する場合のノウハウなどを説明します。少々長くなりますが、ご興味のある方はご一読いただけると幸いです。

筆者について

2022年頃からOSINT CTFのプレイヤーとして活動しており、Open xINT CTF 2022/2023で2年連続優勝したほか、フランスのOSINT CTFでも上位の成績を収めたことがあります。また、2024年にはDIVER OSINT CTFを開催しました。得意分野はジオロケーション(写真からの位置特定)および交通機関に関する情報の分析です。

謎解きは得意ではないのですが[1]、ARGでは調査スキルを要するような問題を得意としています。たとえば「Project:;COLD」case.674を追っていたときは、貨物列車の時刻表を引っ張り出してきたり、"Linux謎"の回線環境[2]を調べたりといったことをしていました。

普段はUX系のエンジニアとして働いており、情報セキュリティ業界や報道業界のバックグラウンドを持っている訳ではないことには留意してください。

また、この記事はチームや所属組織としての見解ではなく、筆者(ryo-a)個人の見解を示すものです。

OSINT CTFって何?

OSINTとは?

原義のOSINT

OSINT(Open Source Intelligence)とは、元々は諜報・スパイ用語の1つで、公開されている情報源(open source)から合法的にアクセス可能なデータを収集、分析、決定する活動を指します。日本語では「オシント」と読みます。

なお、OSINT以外にも電波・信号傍受によるインテリジェンスはSIGINT(シギント)、対人諜報はHUMINT(ヒューミント)と称します。OSINTはこうしたインテリジェンスの手段の一つです。

諜報やスパイと聞くと、潜入や盗聴といった、映画で描かれるような違法な情報収集が思い浮かぶかもしれませんが、実は公開情報から得られることも多いのです。
例えば、敵国が新たな兵器を導入した疑惑があるので、その情報を掴みたい――という状況を考えてみましょう。兵器に関する情報はトップシークレットかもしれませんが、何か漏れてくるものはあるかもしれません。

例えば、以下のような可能性が考えられるでしょう。

  • 軍隊をPRする新聞記事に、少しだけ映り込んでいる
  • 国内向けに公表されている人事異動から、兵器の開発者や運用者の配属状況がわかる
  • 入札情報や貿易に関するデータに兆候がある
  • 関係者がうっかり、あるいは意図的にSNSに情報を流してしまった(リーク)

これら1個1個は小さい情報であっても、積み重ねていくと全体像が見えてきます。このような「公開情報を使った分析」は諜報において長く行われており、各国の情報機関や軍隊はOSINTを専門に担う部門を抱えています。

この「OSINT」という用語や手法、考え方はサイバーセキュリティ調査報道などにも使われるようになりました。

IT・サイバーセキュリティにおけるOSINT

サイバーセキュリティ分野では、攻守両方でOSINTが使われています。

たとえば、近年増加する標的型攻撃(特定の企業・人物を狙ったサイバー攻撃)において、攻撃者はターゲットの情報を知る必要があります。標的型攻撃では「取引先や社内の人物になりすましてメールを送りつける」といった事が行われるわけですから、なりすますために詳細な情報が必要となります。

この過程において、企業が自ら公開している情報や、SNSの情報などを組み合わせて必要な情報を得るOSINTが行われます。

ほかにも、サーバーやアプリケーションの設定ミスなどによって不必要に公開されている情報をOSINTによって収集し、それを基に攻撃が行われることもあります。


標的型攻撃の例

防御側の観点においては、自社(あるいは依頼者)に対してOSINTを行い、どういう情報が漏洩しているか(≒攻撃者はどういう情報を得られる状態にあるのか)を把握するというものが挙げられます。

また、サイバー犯罪の捜査でもOSINTの手法が用いられることがあります。公開されている情報を基に、攻撃者集団や無断転載サイトの運営者情報などを特定し、検挙や対策に繋がるといった事例もあります。

調査報道におけるOSINT

公開情報を調査・収集するという手法は、報道・ジャーナリズムでも有効活用できます。

OSINTを用いた調査報道集団として有名なのがbellingcat(ベリングキャット)です。
https://d-jedi.jp/n/n3b07e37db0a4

また、2022年のロシアによるウクライナ侵攻以降、戦争の分析・報道に関するOSINTが注目されるようになりました(もちろん、それ以前から手法としては使われています)。
https://globe.asahi.com/article/14757737

最近では、日本経済新聞社がOSINTの手法を活用した記事で受賞したことも話題になっていました。

OSINTを活用した記事として、以下の記事は非常に完成度が高く、一読の価値があります。
https://vdata.nikkei.com/newsgraphics/haneda-runway-collision/

CTFとは?

"Capture the Flag"(キャプチャー・ザ・フラッグ)の略で、旗取りゲームを意味します。情報セキュリティの技術を競う大会を指し、「ハッキングの大会」と表現されることも多々あります。運営者は様々で、Googleのような大きな企業が開催することもあれば、グループや個人が主催するものもあります。

CTFでは、答えのことをFlagと呼びます。Flagとは flag{c4ptur3_th3_fl4g_15_3x1c1t1ng} のような文字列のことで、これを得ることができると正解です。

たとえば、お題となる攻撃対象のアプリケーションが与えられ、「このアプリケーションの管理者権限を奪い取れ」という問題があったとします。通常通りアクセスしても得られるものはないのですが、無事に攻撃に成功し、管理者としてログインできるとFlag文字列にアクセスできるようになります。
このFlagを解答として送信すると正解扱いになります。


CTFの仕組み


通信記録を解析する問題の例。flagがファイル内に隠されている。(DEADFACE CTF 2024より)

CTFは様々なカテゴリの問題で構成されており、アプリケーションの脆弱性を突く問題、ファイルの解析を行う問題、暗号文の問題、通信を解析する問題などがあります。

では、「OSINT CTF」とは?

上述した通り、CTFには様々なカテゴリの問題が存在するのですが、その中でちょっと変わったものとして OSINTカテゴリがあります。

OSINTカテゴリでは、与えられた問題に対して合法的に入手できる公開情報を分析することでFlagを得られます。例えば、SNSのアカウントを特定したり、写真の撮影場所を特定したりといった問題が挙げられます(問題の例は後述します)。

他ジャンルの問題と比べて色物感はあるのですが、ハッキングやプログラミングのスキルが不要であることも多く、CTF初心者が取り組みやすいジャンルだと言えるでしょう。
そして、こういったOSINTカテゴリに特化したCTFはOSINT CTFと称されます。全体的に調査スキルが中心となるため、情報セキュリティに詳しくない人でも参加しやすいかもしれません。


OSINT分野のCTF

Web上の情報を探索して分析し、積み重ねて答えを導くという部分ではARGと共通する点も多く、そういったゲームの経験者との親和性は高いと思います。

OSINT CTFの特徴や注意点

アプローチは謎解きやARGと似ているかもしれませんが、OSINT CTFはセキュリティ分野に起源を持つ競技であるため、文化的に異なる点や注意点がいくつかあります。

ここでは、謎解きやARGとの差にフォーカスして、参加する前に必ず知っておきたいことをご紹介します。

CTFとしてはキワモノの部類に入る

前述の通り、OSINTカテゴリ自体がCTFでは色物・キワモノです。OSINT CTFはそれに特化したCTFですから、開催数も少ないですし、「OSINT CTF=よくあるCTF」のように勘違いしてはいけません。

ただし、謎解きゲームやARGのプレイヤーにはマッチすると思います。

大半はオンラインで時間を定めて開催される

CTFは大会形式(時間を定めて実施される)のものと、常設型のものがあります。OSINT CTFは検索結果が問題の解答可否や難易度に影響を及ぼしてしまうため、常設型はかなり少ないです。

大会形式のCTFでは、時間を定めて開催され、その時間内に獲得できたスコアを競います。ほとんどがオンラインです。
週末に実施されることが多く、例えば「土曜のAM11:00~日曜のAM11:00の24時間」「金曜22:00~日曜22:00の48時間」などといった形式で開催されます。時には6~8時間のような短時間のCTFもありますが、いずれにせよ決まった時間内で集中して解く必要があるといえるでしょう。

もちろん、海外のイベントの場合は時差があるので要注意です。

また、一部オンサイト(=オフライン会場)のCTFもあるのですが、これは決勝戦などに限ることが多いです。

原則として個人戦あるいはチーム戦であり、競技中は他者に情報を漏らしてはならない

謎解きゲームやARGでは、SNSやDiscord上で協力して解答する「全体戦」形式を取るものも多くあります。こういった全体戦ゲームでは参加者間が協力して集合知で問題を解くのですが、CTFは基本的に個人戦あるいはチーム戦です。

そのため、開催時間中にうっかりSNSやDiscordなどに「答え○○じゃない?」「この問題は難しいけど、××のサイト見て解けた~」といったことを書いてしまうと、競技妨害として失格になることもあります。また、チーム外の人に「解けないのですが、どうしたらいいですか」と助けを求めるのも違反行為となります。
もちろん、これはネタバレを気にしているのではなく、競技としての公平さを保つためのものですから、Discordのスポイラー機能を使ったとしても許されるものではありません。

感想の共有は開催時間が終了してからにしましょう。むしろ、終了後の情報・感想の共有は歓迎されています。

運営者とは連絡を取ってよい

チーム外の人に問い合わせるのはNGですが、基本的に大半のCTFにおいて運営者への質問は許容されています。例えば、「この問題はこういう理由でFlagが○○だと思ったのですが、不正解になりました。問題に不備があるのでは?それとも本当に不正解なのですか?」といった問い合わせがよく行われます。

OSINT CTFでは問題の不備や意図しない別解が存在してしまい、問い合わせによって問題や正解が変更されるケースもあります。自信のある解答が不正解になってしまったら、質問してみるのも手です。

ただし、運営者はヒントを教えてくれるわけではありません。そのため、あまりにも無礼な質問をしたり、無理にヒントをねだるような問い合わせを送ることはやめましょう。

どのように質問を送るかはCTFによって違うので、開始前に確認しておきましょう(DiscordのDMやプライベートチャットを使うケースが多いように思われます)。


やりとりはこんな感じになる。ほかの参加者も見える場所では内容について触れないようにしよう


やりとりはこんな感じになる。DMやプライベートチャットでは踏み込んだことを聞いても大丈夫だが、教えてくれないこともある。

現実世界の事象が調査対象となることも多い

ARGでは、ストーリー上の人物がSNSアカウントやWebサイトを持っており、それを特定していくというものが多いと思います。

OSINT CTFでもそういった架空人物のSNSを掘り下げていく問題はありますが、それだけでなく、実在の国・企業・人物などが調査対象になることもあります。

これらは公開情報から得られる情報ではありますが、その情報の先に現実の世界があること(ゲームではないこと)を強く認識する必要があります。


実在する食品メーカーの経営者を特定する問題。Flagは実在人物の名前である。ちなみにこの寿司キットは米が不味いらしい。(Open xINT CTF 2022より)


実在する企業の脆弱性や攻撃対象領域を調査してレポートする競技も存在する。この競技では「ウチの会社の危ない点を洗い出してほしい」と2社が志願し、参加者がそれを2日間で分析し、報告書を作った(Live Recon at DEFCON32 Recon Village

また、時にはショッキングな事件が題材になることも知っておく必要があります。
特に海外のCTFでは、実際の戦争や事件にまつわる画像・動画などが分析対象になることもあります。そういった問題を頻繁に見かけるわけではないのですが、OSINT CTFはあくまで「情報調査の競技」であって、単なるエンターテイメントやコンテンツではないという点には注意が必要です。

指示がない限り、調査対象と接触してはならない

ARGでは調査対象となる登場人物のSNSやブログにコメントを書き込み、物語の一員となることで、ストーリーが進展するシナリオもあります。


集団戦ARGの実例。ブログのコメント欄にプレイヤーが書き込み、物語の登場人物の一員となることでストーリーが進展する。様々なプレイヤーが答えを試行錯誤している様子(SNSミステリー『Project:;COLD』の登場人物「大澤すみれ」のブログより)

しかし、一般的なOSINT CTFでは前述の通り、実在の組織や人物がFlagになることもあるため、調査対象への接触(コメント、リプライ、電話など)は原則として禁止されていると考えてください。

これは対象に迷惑をかけないためだけでなく、そもそもOSINTでは原則的に調査を実施している事を相手に気付かれてはならないからです(OpSec)。これは攻撃側・防御側両方に当てはまるものです。たとえば、攻撃者は「この企業のどこを狙おうかな」とOSINTするわけですが、その物色がバレると攻撃に失敗する可能性が上がります。また、防御側も、攻撃者を分析するためにOSINTをしている際、追っていることがバレてしまうと証拠が隠滅されてしまうなどのリスクがあります。

他にも、「調査対象と関係があるように見せかけた釣りアカウントを作成し、フォロワー欄で他プレイヤーを混乱させる」など、競技妨害となる行為も禁止されています。CTFでは怪しいアカウントを見つけても、問題上必要とされていないかぎりはフォローしない方がよいでしょう。

なお、ここで「指示がない限り」と書いたのは、ARGに近いスタイルのストーリー形式のOSINT CTFでは、Discordやメールでの調査対象との接触が求められるケースがあるからです。こういった形式の場合は接触することが明示されています。もし本当に接触して良いか少しでも不安に感じたら、運営者に「○○の問題で@XXXXXというアカウントに接触しようと思っているのですが、問題ないですか?」と質問してみましょう。基本的には可否を教えてくれるはずです。


指定されたDiscordサーバ上で調査を進めると、鍵チャンネルが解放されていき、最終的にはボイスチャットに参加できるようになる。口頭で説明し、内容が合っているとFlagを貰えるという問題 (HEXA OSINT CTF v2より)


オンサイト(現地)型のCTFで、アイスクリーム型のおもちゃを持っている人に話しかけてFlagをもらう問題(Open xINT CTF 2023より)

想定解は重視されない

謎解きゲームでは、作問者によって想定された解法があり、ある程度そのステップを踏んで解答に至ることが推奨されていると筆者は理解しています。例えば、ひらめきや技術的手段によって何かしらの飛躍があり、答えだけが先に出たとしても、後追いで想定解のルートを回収することも多いのではないでしょうか。また、あまりにも想定解がスキップされた場合、不満を述べるプレイヤーを見かけることもあるでしょう。

CTFでも想定解が用意されてはいるのですが、プレイヤーが全く別の解法でFlagを見つけることが多々あります。たとえば、通常の(ハッキングの)CTFであれば、仕組まれた脆弱性以外にも別の脆弱性が存在していたり、OSINT CTFであれば、作問者が想定していない別のツールを使うことで容易に問題が解けるといった例があります。
しかし、このような解法はCTFにおいて全く問題ありません。「Flagが通れば正解」というのが唯一の判断基準で、想定解を確認する必要はありません。正解が通ったら次の問題に進んで大丈夫です。

仮に問題に不備があり、難問だったはずの問題が「別解」によって一瞬で解かれてしまったとしても、「プレイヤーがよい別解を見つけた」と評価されますし、作問者もそういった別解を楽しみにしています。このあたりの雰囲気はセキュリティ系の文化圏に由来するものだと思われ、謎解き・ARGと温度感に差があるかもしれません。

もちろん、問題サーバに対する攻撃や禁止された方法による解答など、不正行為がNGであることは言うまでもありません。

終了後に "writeup" を書く文化がある

CTFでは競技時間終了後、writeup(ライトアップ)と呼ばれるブログ記事を投稿する文化があります。要は「この問題はこのように解けました」ということを説明するものです。

過去のwriteupを検索してみると、どのような雰囲気か分かると思います。
https://zenn.dev/topics/writeup

もし記事を書く余裕があれば、是非書いてみてください。簡易的なもので差し支えありません。自分のブログがない場合、ZennやQiita、noteなどに投稿してもOKです。
なお、writeupは全く義務ではないので、記事を書くのが苦手な人は心配しなくても大丈夫です!

OSINT CTFに参加する

OSINT CTFについての概要がわかったところで、実際に参加するための情報を収集してみましょう。

過去問・writeupを見る

まず、どのような問題が出るのかを調べてみましょう。

前述の通り、CTFでは参加者がwriteupというを書く文化があるので、「OSINT CTF writeup」などとGoogle検索をして、過去問や解き方を見てみると心構えができるでしょう。

国内外の有名なOSINT CTFを知る

ほぼ例年開催される有名CTFがいくつかあるので、時期が合えばこれらへ参加してみるとよいと思います。

なお、OSINT専門のCTFは少ないため、OSINT問が多く出題されるCTFもここに列挙しています。

これ以外にも面白いOSINT CTFがあれば、コメント、DM、リプライなどで教えてください。

国内

  • Open xINT CTF(OSINT専門)
    • リアル会場とオンラインで同時開催されるCTF。リアル会場の場合、SIGINT(信号傍受)、HUMINT(対人)といったOSINT以外の要素もあるため、xINTと称しているそうです。
    • 例年10~11月に開催されるセキュリティイベント「AVTOKYO」内で開催されます。
    • 全体的な難易度は高めですが、初心者向けの問題もあります。
    • 競技時間は5~6時間程度、個人戦(過去にチーム戦だった時代あり)。
  • TsukuCTF(OSINT問を含む通常CTF)
    • OSINT問が多く出されているCTFです。普通の(いわゆる「ハッキング」の)問題もあります。ただし、OSINT CTFとは明言されていないため、問題の比率は変わる可能性があります。
    • OSINT・通常問題ともに易しめの問題も用意されており、初心者でも楽しめると思います。
    • 2021年から毎年開催されていますが、時期は不定期のようです。
    • 競技時間は29時間40分(2023年)。
  • DIVER OSINT CTF(OSINT専門)
    • 2024年に初開催。世界中から800名以上のプレイヤーが参加し、OSINT特化CTFとしては大規模な部類に入ります。(筆者が運営チームの一員なので、自分で「有名」と紹介するのは気が引けるのですが……)
    • DIVERでは、xINTおよび後述するフランスのOSINT CTFの影響を受けており、初心者から上級者まで楽しめるように幅広いレベルの問題を揃えています。
    • 次回開催日は2025年6月です。詳細はXで告知されます。
    • 競技時間は24時間。

海外

フランスのOSINTコミュニティが活発な印象です。特に「OSINT CTF」と明確に銘打ったCTFはフランス語圏に多いように思われます。

  • HEXA OSINT CTF(OSINT専門)
    • フランスのチーム HEXA が開催したCTF。
    • 毎回ストーリー仕立てなので、ARGプレイヤーはかなりハマるはず。
    • 難易度は高めですが、ポイントが付かない代わりにヒントがもらえる救済措置など、初心者向けの工夫もありました。
    • HEXA OSINT CTFシリーズは2024年の"v3"で完結したものの、続編も計画中とのこと。Twitterをフォローして続報を待ちましょう。
  • Recon Village CTF(OSINT専門)
    • ラスベガスで開催されるセキュリティイベント「DEF CON」のOSINT分野(Recon Village)で開催されるCTF。
    • 難易度は極めて高いとされます。また、最低でも1人は現地参戦していないと厳しいと思われます。
    • ちなみにOpen xINT CTFの運営チーム「pinja」が優勝しています(記事
  • Challange OSINT CTF(OSINT専門)
    • フランスのコミュニティ「OSINT-FR」で運営されているCTFです。OSINTにしては珍しく常設型です。
    • フランス語がわからなくても、Google翻訳があれば解けます
    • 難易度はかなり高い上に、時折ショッキングな画像・問題が出てくるので、万人にはおすすめできませんが、一応ご紹介しておきます。
  • DEADFACE CTF(OSINT問を含む通常CTF)
    • 様々なジャンルから出題されるCTF。OSINT問の割合は低いですが、それでも十分なボリューム感があります
    • 例年10月ごろ開催。

X(Twitter) で情報収集する

定期的にXを 「OSINT CTF」というワードで検索することで、開催されるCTFの情報や、OSINT CTFに参加している方々の投稿が見つかることがあります。
どの分野でも同じですが、そういうタイムラインを構築することで自然と情報が流れてくるようになります。

CTF Timeを見る

CTF TimeはCTF開催情報が登録されているサイトです。残念ながらOSINTに特化したCTFは少数派なので、探すのは少し大変かもしれません。
https://ctftime.org/

OSINT CTFの問題を解くために必要な準備

必須

ここで挙げるものは、OSINT CTFに参加するためには必ず用意しておきたいものです。これさえあれば、ある程度の問題が解けるようになります。

  • パソコン
    • 一般的なWindowsやMacのパソコンで差し支えありません。スマホだけでは解けない問題もあるので、PCの使用を強く推奨します。
  • スマートフォン
    • 逆に、スマートフォン版で閲覧しないと解けない問題もあります。Android、iPhoneどちらでも可。
  • ある程度安定して使えるインターネット回線
    • テザリングなどを使ってもかまいませんが、画像や動画などを大量に閲覧する必要がある点には注意してください。
  • 普段使っている各種Webサービスのアカウント
    • Google (Gmail)
    • Discord
  • 翻訳ツール(Google翻訳、DeepL)、Google Lens
    • 使い方を把握しておきましょう。
  • QRコードリーダー
    • アプリによって挙動が違うので、複数入れておくと役立つ場面があると思います。

あると望ましいもの

一部の問題では、ここで挙げるものを用意しておく必要があります。しかし、これが用意できなかったからといって全く楽しめない訳ではないので、分からない場合は用意しなくても大丈夫です。

  • チームメンバー
    • 限られた時間で多くの問題を解くため、なるべくチームメンバーを集めておく方が有利です。Discordでチームメンバー募集チャンネルが用意されていることもあるので、そこでチームに入るのも手だと思います。
  • Linux環境
  • VPN
    • 海外CTFでは、日本からアクセスできないサービスを使う問題もあります。そのような問題に取り組むには必須です。
    • 有償ではありますが、NordVPNなど、有名どころのVPNを使うとよいでしょう。
  • Photoshopなどの画像編集ソフト
    • 反転やコントラストの調整などで役立つ場合があります。GIMPなど、フリーソフトでも十分です。
  • アカウント
    • Twitter (X) / Instagram / Facebook / TikTok / LinkedIn
      • SNS問題では必須になります。普段使っていないSNSのアカウントも作っておきましょう。
    • GitHub
      • ソフトウェア開発者でなければアカウントを持っていない方も多いかもしれませんが、問題の舞台となることも多いため、アカウントを持っておいて損はないです
  • 各種アカウントのサブ垢
    • プライバシーを守ったり、spamを避けるために必要になることがあります
  • Google検索のスキル
    • Google Dorks (Dorking) と呼ばれる、コマンドを使った細かい検索でしか見つからない情報もあります
  • プログラミングのスキル
    • あった方が有利な問題も存在します。

実際にOSINT CTFの問題を解いてみよう

ここでは、実際に過去のOSINT CTFで出題された良問をご紹介します。

画像検索をするとGoogle LensでCTFのwriteup記事がヒットするため、実際に出題された当時の難易度で解くことはできませんが、解説は表示・非表示を切り替えられるようにしているので、自分で解いてみたい方は是非チャレンジしてみてください。いずれも良問ではありますが、易しい問題ではないので解き方が分からなくても心配は不要です!

なお、今回の解説は普段のwriteupと異なり、ある程度初心者でも再現可能な解き方を提示しているほか、ツールの紹介なども行っています。

ジオロケーション

Geolocation(ジオロケーション)とは、画像から撮影位置を特定することです。GEO問とも呼ばれます。Geoguessrと近いところはありますが、OSINT CTFでは検索を活用してもかまいません。

BUS2 (Open xINT CTF 2023より)

このバスの位置を求めよ。
フラグ形式: Nxx.xxx Exxx.xxx

解答方法はこちら(クリックで表示)

まず、画像を見たらExif情報を確認しましょう。Exif(イグジフ)とは、カメラの情報などを記録するもので、スマホやデジタル一眼などで撮影された画像には詳細な情報が記録されており、設定次第では位置情報がそのまま残っていることもあるからです。

このような情報を確認するツールは色々あるのですが、初心者にお勧めなのは、Jimpl というサイトです。ここでは、アップロードした画像のExif情報を確認できます。もし、写真に位置情報が記録されている場合、以下のように閲覧できます。


画像はGIS実習オープン教材より

しかし、この「BUS2」で与えられた画像には位置情報が記録されていませんでした。

実際、Exifで位置情報が記録されているとツールに入れるだけで瞬殺できてしまうため、CTFの問題では基本的に位置情報が省かれていることが多いのです。しかし、易しい問題ではExifに答えがあったり、答えに直接繋がらなくてもExifが何かの手掛かりになることは多いため、画像を見たらまずはExifを確認する癖はつけておくと良いでしょう。

画像から撮影位置を特定する基本は、文字情報です。地名や店名から大まかな場所が絞り込めることがあります。

今回の写真も拡大すると、いろいろな文字情報があることが分かります。


路肩駐車禁止


青い標識に「25」の数字。下は潰れて読めない


バスは「ファミリー??」ナンバープレートは「472」、地域名は読めない

使えそうな情報を考えていきましょう。
路肩駐車禁止」はどこにでもありそうなので、これを使うのは厳しいかもしれません。

青い標識に「25」の数字は道路の番号ではないでしょうか。使えるはずです。
道路標識を知っている人は「六角形なら県道(都道府県道)だな」とわかりますが、知らなくても「道路 番号」で検索すると解説ページがヒットします。
しかし、47都道府県のどこかは分かりません。1個ずつ調べるのも手ですが、各県の25号線を調べていくのは非常に大変です。
標識の下にある文字で何か絞り込めそうな気もしますが、漢字が潰れていて読めないので厳しいかもしれません。

次に「ファミリー??」のバスを見てみましょう。??の部分、実は「観光」なのですが、初見では厳しいかもしれません。しかし、「ファミリー」が読めれば十分です。「ファミリー バス」でGoogleを検索してみましょう。


Google画像検索の結果

ファミリーという名前がつくバス会社はいくつかありますが、塗装が似ているのは「ファミリー観光岩手」という会社です。こちらに着目して調査を続けてみましょう。

https://familykanko.co.jp/

この会社のサイトにアクセスすると、早池峰山への登山客向けのバスを運行していることがわかります。


シャトルバス

登山客向けのバスに関するリンクを辿ってみると、どうやら「主要地方道紫波江繋線」という道路は一般の車が入れないように規制されており、登山客向けのバスはそこを走っているということがわかります。


https://familykanko.co.jp/wp-content/uploads/2024/05/hayachine1.pdf

この道路の名前で検索すると「岩手県道25号線」と記載されています。先ほどの25号線は岩手県道を示していたわけですね。

https://ja.wikipedia.org/wiki/岩手県道25号紫波江繋線

先ほどのバスに関するPDFで、いくつかのバス停名が記載されていましたね。「小田越」でGoogle検索すると、登山口がヒットします。


登山口の場所

ストリートビューを確認すると、似た景色が見つかります。標識も一致していますね。


小田越登山口のストリートビュー

ここの座標が答えになります。

Google Mapsを右クリックすると座標が得られるので、これを使いましょう。

Flag形式はNxx.xxx Exxx.xxxであると問題文に書かれているので、この形式(N=北緯、E=東経)に整えれば大丈夫です。

特別な知識を使わなくとも、検索だけで辿り着けることがわかったと思います。

Bolt to be alive (HEXA OSINT CTF v3)

次はフランスのCTFで出題された問題です。

この容疑者はかなりの旅行好きと思われます。我々は、彼女が訪れた地域の人々に聞き込みし、その存在を裏付ける証拠を集めたいです。
「bridge」というタイトルの写真に写っている道の名前を特定しましょう。
(注:問題の原文は英語)


問題で与えられた「bridge」というタイトルの写真

解答方法はこちら(クリックで表示)

少なくともCTF開催時にはGoogle Lensでヒットしなかったため、地道に探していくタイプの問題です。

まずは大まかに地域を絞る必要があります。

フランスのCTFということもあり、出題もヨーロッパの街並みである可能性は高いですが、明確な根拠は持てませんね。

もし、このあたりに旅行で行ったことがあるとか、何らかの映像や写真で見たことがあるといった土地勘があればそういう知識を使っても構いません。「たまたま知ってた」はOSINTにおいて正当な解法です。
ただ、こういったヨーロッパの小道に土地勘がある人はなかなか居ないと思いますので、普通の方法を探りましょう。

奥に海が見えますね。湖や大きな川の可能性も排除できませんが、いずれにせよ水に面していることはわかります。よく見ると手前に水面があり、奥に陸地があり、さらにその奥に水面があるという地形です。ちょっと特徴的なので、航空写真があれば見つけやすいかもしれません。


海?湖?

写り込んだナンバープレートが見えますね。


白い車のナンバープレート。ちなみに自動車のロゴは韓国のヒョンデ(現代)だ。


黒?紺?の車のナンバープレート。画質が悪く、読み取りづらい。

世界各国のナンバープレートには国ごとに特徴があります。
ナンバープレート 世界」でGoogle検索すると、国土交通省の資料などがヒットします。

https://www.mlit.go.jp/common/000190843.pdf

ヨーロッパ、より正確に言うならEU諸国のナンバーは横長であることがわかります。
しかし画像からどの国であるかの判別は難しいでしょう。
そこで「EU ナンバー」で検索してみましょう。Wikipediaの記事に辿り着くはずです。

https://ja.wikipedia.org/wiki/欧州連合のナンバープレート

先ほどの白い車のナンバープレートは左右両側の端っこが青色になっています。先ほどの記事に各国の一覧がありますが、この条件を満たすのはイタリアかフランスです。
この画像からは数字とアルファベットが AA-123AA のようにハイフン1つで区切られているのがイタリア、 AA-123-AA のようにハイフン2つで区切られているのがフランスといえるでしょうか。そうなるとフランスのナンバープレートだと考えてもよさそうです。


Wikipediaより

もう少し情報が欲しいので他言語版のWikipedia記事、とりあえず英語版を見てみましょう。Wikipediaでは、同一ページに他言語版がある場合、リンクで飛べるようになっています。リンク先は機械翻訳で読んでも大丈夫です。


Wikipediaの他言語版

フランスのナンバーに特化したページが見つかります。

https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_France

ページをザッと読む限り、残念ながらナンバーの数字から地名は特定できない(全国的に同じものが連番で使われている)ようです。右端には地域を示すコードがあるのですが、解像度的に読むのが難しいですね。

しかし、興味深い画像があります。どうやら、古いナンバーは黄色だったようです。そして、これには地域コードがあるそうです。


Wikipediaの記事を日本語に機械翻訳したもの

黒っぽい車のナンバープレートはこれに当てはまりそうです。上記の画像で75がパリのコードだとされているので、例の画像のナンバーから読み取れる地域コードはおそらく83か何かではないでしょうか。解像度的にすごく読みづらいので、もし間違っていたら後でここに戻りましょう。

この地域を探すため、地域コードと地名の対応表が欲しくなります。先ほどの記事からリンクされている以下のページを見てみましょう。

https://en.wikipedia.org/wiki/Departments_of_France

便利な表がありました。ヴァール県であることがわかりました。県庁所在地はトゥーロンです。

Wikipediaより

とりあえず、ヴァール県をGoogle Mapsで見てみましょう。衛星写真表示に切り替えるとよいかもしれません。

とりあえず海沿いを探します。手前に「海、陸、海」の構造になっていて、高台から見下ろす構図はトゥーロン付近が怪しそうです。


こういう方向で写真を撮れば、市街地、海、陸、海……と見えるのではないか

トゥーロンの市街地から場所を探しましょう。PCからGoogle Mapsを見ると3D表示にもできるので、これで地形のアタリを付けていきます。


3D表示が便利

斜面がありつつも山ではない住宅地、そして道路をまたぐ橋がある場所……を頑張って探していきます。道路をまたぐ橋は思ったよりも少ないので、しばらくするとこういうものが見つかるはずです。


道路をまたぐ橋が2カ所あった

ストリートビューから、写真と同じ場所が見つかりました!座標でいうと 43.13604, 5.93789付近です。


ストリートビュー

問題で求められているのは道の名前でしたね。海外CTFなので現地語で答える必要があります。

Google Mapsで道をクリックすると、現地語表記も得られます。

フランス語表記

Av. Val Fleuriが答えです(AvはAvenueの略)

このように、海外の写真であったとしても、Google翻訳などを活用して他言語の情報を参照することで現地の特定が可能になります。

SNS情報・アカウント情報

SNSやメールなどのアカウントを調査する問題もよくあります。

ad_directiare (DIVER OSINT CTF)

これは筆者が運営に関わったCTFの問題なので、「良問」として紹介するのは気が引けるのですが、作問チーム側の視点もご紹介したいということでここに挙げました。

この名刺の人物が、東京出張時に食べた昼ご飯の値段を答えよ。
Flag形式: Diver24{値段}
1000円の場合、Flagは Diver24{1000} となります。


原寸大の画像はこちら

解答方法はこちら(クリックで表示)

京都にある「よねくらデザイン事務所」のyone.junさんが何者であるかを調べる必要がありそうですね。残念ながら、よねくらデザイン事務所は検索でヒットしません。

これは架空の人物と事務所だからです。

OSINT CTFでは、問題によってはこのような架空人物・架空組織が登場することがあります。
問題で架空人物をテーマにする場合、作問者は実在人物や組織に間違ってヒットしないように工夫することが多いといえます。そのため、Google検索やSNSの検索でそれらしきものがヒットしない場合、「これは架空のものでは……?」と疑って解き進めるとよいのではないかと思います。

架空の事務所のホームページでもあれば、そこにFlagが隠されている可能性もあるのですが、この問題では何も用意されていないようです(というか用意していないです)。

ということは、写真に残っている他の情報だけで問題が解けるようになっているはずです。

背景からコメダコーヒーにいることはわかりますが、店舗がわかる情報はなさそうです。

ということで、残った情報は名刺に載っているメールアドレス(Gmail)だけになります。

しかし、Gmailアドレスを見るだけでは何も絞り込めません。

ここで Gmail OSINT と検索してみましょう(何かツールや手法がありそうだけど知らないという場合、「○○ OSINT」というワードで調べてみるのはおすすめです)。

すると、「Gmailアドレスから個人情報を調べるツール」が複数ヒットします。こういうものが出てくるということは、Gmailアドレスにはそれが実現できる仕組みがあると考えてよさそうです。

何を使ってもよいですが、ここでは簡単に使えるサービスとしてEpieosを紹介します。
https://epieos.com/

名刺に載っているメールアドレスを入力すると、yone.junさんの情報がヒットします。

Epieosから「Google Maps」のリンクに飛ぶと、この人が書き込んだレビューが表示できます。


yone.junさんこと、米倉さんのレビュー

レビューの文面より、4,400円が答え(FlagとしてはDiver24{4400})となります。

ファイルに含まれた情報を利用する問題

Let's Meet! (DEADFACE CTF 2024)

(Zennに投稿した画像ではプロパティが消えてしまうので、この問題では解説のみ記載します)

ストーリーの中で「ある犯罪組織のメンバーたちは、この画像に関連するところで会おうとしているらしい。その場所を特定せよ」という問題が与えられ、以下のような書き込みが示されます。

ただし、この画像の撮影地は答えではないようです。正しく画像をダウンロードすると、プロパティに以下のような文字列が含まれています。


Windowsなら、画像ファイルを右クリックしてプロパティを表示すると beyond.donkey.excavating という文字が得られる

この3単語はwhat3wordsを示しており、この地点が正解を示しています。

https://what3words.com/beyond.donkey.excavating

技術系の調査問題

技術的な情報を調査する問題もあります。知識があると有利ですが、全く知らなくても単語を検索することで解けることが多いです。OSINT CTFの醍醐味として、知らないことも解きながら知識を得ることができるというものがあります。

苦手意識がある人も、ぜひ調べながら解いてみてください。

whois (Open xINT CTF 2022)

194.146.200.33 のAS番号を答えよ.

解答方法はこちら(クリックで表示)

194.146.200.33、これはIPアドレスですね。

AS番号」は馴染みがない人も多いでしょう。ググってみると、いくつか解説サイトが出てきます。
(ChatGPTなどに聞いてみるのも良いと思います)

https://wa3.i-3-i.info/word12229.html


ChatGPTに聞いてみる

とりあえず、初見でも「AS番号とはネットワーク関連の情報で、IPアドレスから確認できそう」であると分かるはずです。

ということで「IPアドレス AS番号 検索」とGoogle検索してみます。
いくつかツールがあるので試してみましょう。


検索ツールの例

42574 が答えとなります。

SSID (Open xINT CTF 2022)

SSID:YKAMEのBSSIDを答えよ

解答方法はこちら(クリックで表示)

こちらも用語を調査する必要がありそうです。

まず、SSIDは聞いたことがある人も多いかもしれません。
無線LAN(Wi-Fi)アクセスポイントの名前ですね。

https://e-words.jp/w/SSID.html

ではBSSIDはどうでしょうか。同じようにGoogle検索してみると解説が見つかります。


BSSIDに関する情報の例(ソース

しかし、これを検索する手法がわかりません。
ここで「BSSID OSINT」とGoogle検索してみます。すると、OSINT CTFのwriteup記事などでWiGLEというサービスが言及されています。

https://www.wigle.net/

検索にはアカウントが必要そうなので、アカウントを作ります。
そしてSSIDとして「YKAME」を入力すると、アクセスポイントが発見されます。


SSIDを検索すると1件見つかる

ここに記載されているBSSIDが答えです。

先ほどのGmailもそうですが、一般的にはマイナーなツールであっても、Google 検索で見つけることができます。

Q&A

Q. OSINT CTFはCTF全般の入門になりますか?

A. 「CTF」という競技形式への慣れなど、部分的にはなると思います。しかし、一般的な「ハッキングの大会」としてのCTFとOSINT CTFで求められるスキルは異なるので、一般的なCTFに挑む場合は別のノウハウを身につける必要があると思ってください。

もし、CTF全般に興味があるなら、イベントとしてはSECCON Beginnersを追うとよいでしょう。
https://x.com/ctf4b

CTF全般の入門についてはkurenaifさんの動画が参考になると思います。

Q. 参加しても安全ですか?

A. 運営者が参加者に攻撃を仕掛けるような競技ではないので、基本的には安全です。しかし、調査の過程で誤って怪しいページにアクセスしてしまうなど、誤って危険なものに触れてしまうリスクが無いとは言えません。怪しいものに触れる場合は仮想マシンを利用したり、サブアカウントを利用したり、個人情報は入力しないなど、一般的な対策は行ってください。

また、OSINTに限りませんが、セキュリティ分野の手法は悪用が可能です。攻撃手法を知らないと防衛できない訳ですが、それは同時に「防衛できる人は悪用できうる知識を持っている」状態でもあります。あなた自身が危険な行動を取らないことも重要です。きちんと倫理観を持つようにしてください。

https://globe.asahi.com/article/14757738

Q. たくさんの前提知識が必要なのですか?

A. いいえ。前提知識より、調べ物のスキルが必要だと思います。トッププレイヤーであっても、解答に必要なすべてのツールを知っているわけではありません。「この問題を解くにはこのような情報が必要になるから、そういう情報をまとめているサイトがあるのでは?」といった感じで、解きながらツールを調べる場面が多々あります。
もちろん、前提知識があった方が有利になることもありますが、それは参加していくとどんどん身につくでしょう。

Q. スキルに自信がないですが、まだ参加しないほうがいいでしょうか?

A. いいえ、参加するとスキルが身につくので、興味があるなら場数を踏んだ方が良いと思います。解けないことによるペナルティはありませんし、途中離脱も可能なので、日程さえ合えば参加する方がよいと思います。

Q. 参加することで何の役に立ちますか?

A. サイバーセキュリティの分野に関しては、攻撃者の視点を持つことにより、日常生活においてプライバシーや仕事の機密情報を守るためのノウハウが身につくと言えるでしょう。また、調査報道的な分野に関しては、SNSなどで流布しているフェイクニュースを見抜くような技術を身につけることができると言えるでしょう。

Q. CTFで入賞した場合、賞金や商品などはありますか?

A. CTFによります。大きなCTFでは賞金・賞品がもらえることもありますが、有志が主催しているものなど、スポンサーや寄付がないCTFでは何ももらえないこともあります(残念ながら後者の方が多いです)。

Q. 英語など外国語が苦手ですが、大丈夫ですか?そもそもフランス語のCTFって日本人にも解けますか?

A. ほとんどの場合でDeepLなどの翻訳ツールを使えば乗り切れると思います。OSINTはそういったツールを使うことも能力の一つです。OSINT CTFでは、日本にちなんだ問題を英語圏の方が翻訳ツールを使って解いていくことも多いので、逆も可能だと思います。
とはいえ、ツールを使わずに外国語を読める方が若干有利にはなると思います。

Q. GeoguessrはOSINTの練習になりますか?

A. 部分的にはなるかもしれません。ただ、ジオロケーション問題の「検索していい(暗記しなくていい)」「1問あたりの制限時間があるわけではない」「必ずピンポイントで当てる必要があり、部分点はない」といった性質はGeoguessrと違うため、Geoguessrと同じスキルが求められている訳ではない点には注意してください。ちなみに、筆者はジオロケーションが得意ですが、Geoguessrは苦手です。

Q. OSINT CTFが解けるようになったら、現実でもOSINT活動できますか?仕事につながりますか?

A. CTFはあくまで競技なので、現実のOSINT活動とは異なる点も多々あります。別個の勉強やノウハウ習得が必要だと思ってください。ただし、現実で使われる技術やツール、概念もCTFには多く登場するので、理解の一助にはなると思います。

Q. X (Twitter) で「OSINT」と称して、真偽不明の情報を書いている人がいました。これは信じても良いですか?

A. OSINTが万能だったり、必ずしも正確という訳ではありません。どのような情報であったとしても「OSINTで得た情報です」と称することはできます。「OSINT=何か分からないけれど、すごい技術」のように捉え、無条件に肯定するのは望ましくありません。重要なのは、そのような情報を検証しようとする姿勢を持つことだと思います。

参考文献

本文中にリンクしたもの以外の参考文献をここに示します。

脚注
  1. ひらめきが苦手で、パズル的なことが得意ではありません。 ↩︎

  2. 回線環境自体は解答に全く貢献できるものではなかったのですが、運営側のブログで言及されていたらしいです ↩︎

Discussion