🔍

DIVER OSINT CTF 2024 writeup

2024/06/11に公開

こんにちは。
2024/06/08 12:00 - 2024/06/09 12:00(JST) にかけて開催された、DIVER OSINT CTFに、
チーム アラン・チューリングになりたい で参加し、1866ptで74位を獲得しました。
CTFを主催してくださった運営陣の皆様、ありがとうございました!

本記事はDIVER OSINT CTFについての、チームでのwrite-upになります。
解けた問題と、時間内に解けなかったもののFlagを取得することができた問題の解説を行います!

開催概要

2024年時点での開催情報についてです。
来年度以降、変更される可能性があります。

  • 2024/06/08(土) 12:00 〜 2024/06/09(日) 12:00までの24時間。
  • オンライン参加のJeopardy形式
  • 点数は参加者全体の得点数により変動(dynamic形式)

write-up

まず、解けた問題と、惜しくも解けなかった問題については以下の通りです。

  • 解けた問題
    • misc/number, timestamp
    • military/osprey1, osprey2
    • introduction/office, chain, dream, serial, ad_directiare
    • crypto/leak
    • history/promoter
    • transportation/youtuber
  • 解けなかった問題
    • crypto/Akeome (CTF終了後solved)

以下解説となります。

misc/number

Solver: yuimaru

この車両の持ち主に連絡を取りたい。電話番号を調べてもらえないだろうか。
Flag形式: Diver24{0123456789}
注意: 実際に電話を掛けてはならない。


この問題を解くにあたり,まずは「外」と書かれているナンバープレートの仕様を調べた.このナンバープレートは外交官ナンバーと呼ばれていて,ナンバープレートの 2 桁目もしくは 3 桁目が国ナンバーであることが分かった.
外交官ナンバー国コードで検索し,ヒットした こちらのブログ から国コード 49 はクウェート大使館のものであるとわかる.

携帯電話ではなく、固定電話である。

とのヒントから,携帯電話番号しかない在クウェート日本国大使館ではなく,駐日クウェート国大使館のものを Flag として扱えばいいということがわかる.

Flag: Diver24{0334550361}

misc/timestamp

Solver: burapo

"53" と塗装されている航空機の写真が撮影された日時を答えよ。
https://twitter.com/jointstaffpa/status/1767515646286549226
Flag形式: Diver24{YYYY-MM-DDThh:mm}

投稿を見てみると、飛来してきたのはH-6爆撃機であることがわかる。
安直に"h-6爆撃機 飛来 after:2024-03-12" で検索すると、以下のPDFファイルがヒットする。
統合幕僚監部 報道発表資料
このPDFをダウンロードし、Adobe Acrobatで画像を選択し縮小すると...?

Flag: Diver24{2024-03-12T15:33}

military/osprey1

Solver: burapo

2023年11月29日、アメリカ軍のオスプレイ(V-22)が日本の屋久島沖で墜落した。この機体の番号と、墜落時のコールサインは何か。
Flag形式: Diver24{XX-XXXX_CALLSIGN}
たとえば機体登録番号が01-2345、コールサインがCALL01の場合、Flagは Diver24{01-2345_CALL01} となる。

"屋久島 オスプレイ コールナンバー"
と検索すると、
一番上にGUNDAM22が機体番号12-0065であることを示すX上のポストと、墜落した機体がガンダム22であることを示す毎日新聞の記事の両方がヒットする。
よって、墜落した機体はGUNDAM22(機体番号 12-0065)であるとわかる。
Flag: Diver24{12-0065_GUNDAM22}

military/osprey2

Solver: burapo

2024年2月15日、ある米軍基地でこの事故に関する追悼式典が実施された。16:46:37ごろ、その式典はどこで実施されていたか。
OpenStreetMapのWay番号で答えよ。
Flag例: Diver24{123456789}

Wikipedia: 屋久島沖米軍オスプレイ墜落事故 より、墜落してしまったCV-22Bは横田基地所属の機体であったことがわかる。
横田基地の英語名である"Yokota Air Base"を検索し、横田基地の公式サイトにアクセスし、Yokota Newsから2024-02-15の記事を探そうとするも、ヒットしなかった。
そこで、
"gundam" "22" site:https://www.yokota.af.mil/
と検索すると、descriptionにFeb. 15, 2024と記載された横田基地の記事の写真が見つかる。
サイト内のDOWNLOADをクリックすると、以下の画像が取得できる。

引用元: media.defense.gov(アメリカ国防総省)

この画像からは、奥の方に飲食店のようなネオンサインがあることや、夕方で太陽が映っていることから、西向きに撮影された写真であること、運動場のような場所で撮影された写真であることなどがわかる。

横田基地は中心に飛行場があり、左右を住宅地区で挟むような構造になっているため、ひとまず、飛行場よりも西側をGoogle Mapsの航空写真を使用して眺めていると、
Yokota Training Field(Google Maps)という名前の、地面がよく似た競技場を見つけた。

西向きにあるChili's Bar & Grill という店を見てみると、Google Maps上の口コミに、画像によく似た唐辛子のネオンサインが見つかるため、ここで間違いないだろうと判断した。
OpenStreetMapにて横田基地を検索し、先ほどの競技場を見つけ、左クリックのメニューから地物を選択をクリックし、一番上に出てきたWay番号である、#810021665を提出するもincorrectとなった。
その後、どこが間違っているのかわからず、椅子を温め続けていると、もう一つWay番号があることを発見した。

Way番号810021665は、Yokota Training Fieldの外周トラックのWay番号であり、競技場自体のWay番号ではなかったのである。
OSINT CTFに置いて、文言をしっかり読むということが最も重要なのだと痛感させられた瞬間だった。
競技場のWay番号である810021666を提出し、無事correct。
Flag: Diver24{810021666}

introduction/chain

Solver: burapo, yuimaru

この看板の店の電話番号を答えよ。
Flag形式: Diver24{0123456789}
注意: 電話を掛けてはならない。Web上の情報から調査せよ。

4Fにある鳥貴族の看板ということで、ひとまず、鳥貴族の店舗検索で4Fにある店舗を調べてみる。

画像の通り、鳥貴族で4Fにある店舗は7件しかないことがわかる。
7件程度ならローラーが十分可能なので、上から順番にGoogle Mapsで見ていく。

問題の画像と、2021年5月ごろのストリートビューを見比べて、鳥貴族 広尾店 で間違いがないだろうと判断したため、電話番号を提出した。
Flag: Diver24{0364593392}

introduction/office

Solver: yuimaru

LibreOffice のファイルっぽいな〜と思ったら案の定そうだったので,適当に unzip *1 してあげてから Flag を当てる.今回はサムネイル画像に書いてあったのでそのままパス.

*1: どうせ Office と少し互換性があるなら,zip ファイルだろうなという勘.
Flag: Diver24{World Ocean Day}

introduction/dream

Solver: yuimaru

とりあえず画像を Google Lens に入れてみる.すると,ポップタウン住道 オペラパーク という場所であることが推測できる.
郵便番号が Flag であるとのことなので検索してみると,574-0046 と出てきた.これをそのまま submit してあげれば良い.

Flag: Diver24{574-0046}

introduction/serial

Solver: yuimaru

まず,動画を見たところ怪しいと思える文字列 JA222A をとりあえず Google 検索にかけてみた.すると,こちらの文字列は機体の識別子であることがわかった.
ヒットした こちらのサイト から製造番号を入手することができたのでそのままパス.

Flag: Diver24{9580}

introduction/ad_directiare

Solver: tina

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


名刺をよく見てみると、〒600-8216 と書かれていることがわかる。
この郵便番号の範囲の建造物をざっと確認したところ、「よねくらデザイン事務所」という名前の建造物が存在しないことが判明したため、yone.junは架空の人物であるか、存在しない会社の名刺を持ち歩いているヤバすぎる人物であることがわかる。
流石に後者の可能性は低いと考え、Gmailアドレスからから様々な情報を取得できる、Ghunt というツールに名刺に記載されているGmailアドレスを入力してみると、この人物のGoogle Mapsでのレビューがヒットする。
レビューより、食事の値段が4400円であることがわかるため、これがFlagとなる。
Flag: Diver34{4400}

crypto/leak

Solver: burapo

先月、日本の会社で大規模なBTCの不正流出が起きた。
流出先となっているウォレットアドレスを答えよ。
Flag形式: Diver24{ウォレットアドレス}

DMM Bitcoin 流出先アドレスや、BTC 不正流出 流出先アドレスなどで検索すると、(Yahoo!ニュースの記事)[https://news.yahoo.co.jp/articles/780dcff27166c4e43a2a7219cd674af6b792a58d] がヒットする。
本文を読むと、流出先のアドレスが記載されているため、こちらがFlagとなる。
Flag: Diver24{1B6rJRfjTXwEy36SCs5zofGMmdv2kdZw7P}

crypto/Akeome

Solver: burapo
こちらの問題は、コンテスト終了までにFlagを提出するに至らなかったものの、終了後にFlagを取得することができたのでwrite-upとして記載する。

以下の人物が2017年に始めたyoutubeチャンネルを見つけてください。
Find youtube channels started in 2017 by the following persons.
https://bitcointalk.org/index.php?action=profile;u=44692

まず、bitcointalk.orgのプロフィールに記載されているWebsiteと過去の投稿などから、この人物が"Bitcoin Fog"というミキシングサービスを運営していたことがわかる。
"Bitcoin Fog"でGoogle検索をかけると、トップにYahoo!ニュースの記事 が出てくる。この記事によると、運営者はRoman Sterlingov氏だということがわかる。
Roman SterlingovでGoogle検索をし、アメリカ司法省のプレスリリースを発見した。
この記事には、Sterlingov 氏はスウェーデンとロシアの二重国籍であるといった内容が記されていたため、Yandexの方が検索結果が多くなるであろうと判断し、検索エンジンをYandexへと切り替えた。
Yandexにて同様の検索を行うと、OCCRPのこちらの記事を発見した、この記事内のリンクから、STATEMENT OF FACTSというタイトルの、訴訟に関する文章を発見することができた。
この文章の一番上に記載されている、Case IDである、"1:21-mj-00400-RMM"をGoogle検索すると、CourtListenerというオープンソースの裁判アーカイブサイトの、今回の訴訟に関連した文章がアーカイブされているページを発見することができた。
が、これ以降進展がなく、Yandexで見つけたExhibit A を眺めたり、Sterlingov氏がbitcointalk.orgに登録していたshormint@hotmail.comで検索してみたり、heavydist@gmail.comでGHuntをかけてみたりと、さまざまな解法を試したが、結局、コンテスト期間中にYoutubeチャンネルを特定するまでには至らなかった。

コンテスト終了後、資料を整理していると、先ほどのCourtListenerのページに、文章内のテキストを検索できる機能があることに気づいた。
サイト内の検索ボックスから"Youtube"と検索すると、
“YouTube under the name “Technology of Winning” @technologyofwinning8592“
と書かれたページがヒットするため、これがFlagとなる。
Flag: Diver24{@technologyofwinning8592}

history/promoter

Solver: burapo

画像に写っている池沼を開拓した発起人の父親の命日を答えよ。
Flag形式: Diver24{yyyy/MM/dd}


画像検索から、写っている池は愛知県にある入鹿池(Google Maps)であることがわかる。
入鹿池のWikipediaから、発起人の文字を検索すると
、江崎善左衛門了也という人物が発起人で、その父は江崎善左衛門宗度であることがわかった。
"江崎善左衛門宗度 没日"で検索すると、入鹿池の築造と栄養用水の開削というタイトルのPDFがヒットする。
最後のページに江崎善左衛門宗度の命日が記載されているため、これがFlagとなる。
Flag: Diver24{1627/11/13}

transportation/youtuber

Solver: burapo, tina, RazChan

2023年、あるYouTuberが日本で無賃乗車や無銭飲食を行い、その様子を投稿したことで問題となった。
彼は日本である列車に無賃乗車をしていたところ、九州地方のある駅で一度捕まったが、そのまま逃走して別の列車に再び無賃乗車をした。
彼が捕まった駅と、乗り継いだ列車の列車番号を教えてほしい。なお、列車番号は時刻表に掲載されている形式で回答せよ。
Flag形式: Diver24{駅名_列車番号}
例えば、折尾駅で捕まり、456Mという列車に乗り換えた場合、Diver24{折尾_456M} となる。

"Youtuber 無賃乗車"で検索をすると、問題となっている行為をした人物のYouTube活動名がわかる。
本人が動画を削除しているため、動画のURLをペーストすることなどは差し控えるが、画像は当該動画からの引用である。

当該人物が乗り継ぎを行なった列車を見てみると、
・さくら572
・次は博多
と書いてあることが読み取れる。
(九州新幹線の路線図(ジョルダンによるもの))[https://www.jorudan.co.jp/time/rosenzu/九州新幹線/] より、博多の1つ前の駅は新鳥栖駅である。
"さくら572 時刻表"で検索すると、トップにJRおでかけネットの列車時刻表がヒットする。このサイトから、さくら572の車体番号が572Aであることがわかる。
Flag: Diver24{新鳥栖_572A}

最後に

以上で解説は終了となります。
ここまで読んでいただきありがとうございました!
個人的に、全体的に詰めが甘く、あと一歩で手の届く問題があまりにも多すぎたのが反省すべき点かなと思います。

問題自体はすごく楽しく、とても勉強になるCTFでした!
改めまして、一緒に大会に取り組んでくれたチームメンバーの皆様、CTFに参加し大会を盛り上げてくださったプレイヤーの皆様方、何より、夜遅くまで、プレイヤーの手助けやスコアサーバーの保守など、全体的なCTFの運営をしてくださったDIVER OSINT CTF 2024のスタッフの皆様方に、この場を借りて御礼申し上げます!

ありがとうございました!!!!!
では次回、またどこかでお会いしましょう。
アラン・チューリングになりたい でした。

Discussion