はじめに
昨年に引き続き、「DIVER OSINT CTF」に2回目の参加をしました。
昨年のWriteupはこちら: DIVER OSINT CTF 2024 writeup - Qiita
結果
画像のタイムスタンプから分かる通り、今回は4時間ほどしか参加できませんでした。
そのため、手を付けられなかった問題も多く、少し不完全燃焼な結果です。
解法
Introduction
bx
画像に写っている「上野カトリック教会」を手がかりに、Google マップで座標を特定し、flagを入力しました。
finding_my_way
- 与えられた座標をGoogle マップで検索すると、「花海月」というホテルが見つかります。
- ホテルの住所(番地前まで)をOpenStreetMapに入力します。
- Google マップの位置と照らし合わせながら建物の位置を確認し、該当する建物を特定しました。
flight_from
- 機体の写真からFlyTeamの機体情報ページを発見しました。
- このページから、機体は「横田基地」か「東京ヘリポート」を拠点にしていると推測し、それぞれのICAOコードを入力しましたが、不正解でした。
- 改めて問題の地図をよく見ると、機体は立川付近で離陸しているように見えます。
- そこで「立川飛行場」の存在に気づき、そのICAOコードを入力したところ、正解でした。
hidden_service
diverahbwzfukwflslim73j7qtthfkesqvfh42obqk4cxrxwtajk7myd.onion
上記はOnionドメインのため、通常のブラウザではアクセスできません。
Torブラウザを公式サイトからダウンロードし、リンクを開くことでflagを発見できました。
ship
- 画像に写っている文字が「7JVV」に見えたため、これを手がかりにGoogle検索しました。
- 検索結果から、東京海洋大学の練習船「神鷹丸」のWikipediaページにたどり着きました。
- 基本情報欄に「IMO番号」と「MMSI番号」がありましたが、問題文からIMO番号がflagだと判断し、入力しました。
- IMO番号: 国際海事機関(IMO)が各船舶に与えるユニークな識別番号。船の所有者や船籍が変わっても変更されない。
- MMSI番号: 海上移動業務識別コード。無線設備に割り当てられる番号で、国籍を示す情報などが含まれる。
next_train
音声から以下の情報を聞き取りました。
- 鉄道会社:JR東日本
- ホーム:15番線
- 発車時刻:14:18発
- 行先:久里浜行き
- まず、久里浜行きは「JR横須賀線」であると特定しました。
- 次に、JR東日本の駅で15番線まであり、なおかつ横須賀線が通る駅を時刻表で探しました。
- この時点で答えにたどり着けるはずが見逃してしまい、途方に暮れてしまいました。
- 最終的に、聞き取った4つの情報をそのままChatGPTに尋ねたところ、一発で「品川駅」だと教えてくれました。
recon
00_engineer
- 名札に書かれた「kodai_sn」からXアカウント@kodai_sn を特定しました。
- Xのプロフィール欄にあるリンクから、本人の個人サイト を発見しました。
- サイトのCareer欄に「Magneight Software (since 2018)」という記述があったため、この会社名を検索し、会社のHP を特定しました。
01_asset
-
00_engineer
で特定した会社のHPに記載されていたCEOの名前で、各種SNSを検索しました。 - Instagramでアカウントを発見。過去の投稿を調査していくと、会社の資産管理番号が写っている投稿が見つかりました。
- その番号をそのまま入力して正解でした。
今回私はスマホアプリから検索し、アカウントを見つけることができました。しかし、公式振り返り会で会った人に聞くと、PC版のInstagramでは検索してもヒットしなかったそうです。この挙動の違いは何なのでしょうか...。
03_ceo
- kodai_snのXのポストに掲載されたスライドから、本人のGitHubアカウントhttps://github.com/kodai-sn を特定しました。
- 別のポストに「我が社のCEOもgitハンズオンをやってくれた」とあったため、GitHub上のハンズオン用リポジトリを調査しました。
-
fork-practice
というリポジトリのInsights → Forks を見ると、CEOと思われるアカウント (mizuki1206edelweiss
) がリポジトリをforkしていることが分かりました。 - CEOのコミットのURL末尾に
.patch
を付けてアクセスすると、コミットログの詳細情報が表示されます。
-
From:
ヘッダに記載のあったGmailアドレスがflagでした。
公式Writeupや他の方の解法では、CEOのリポジトリをローカルに
clone
してgit log
で確認する方法が一般的でした。しかし、リポジトリのInsightsページではclone数が確認できるため、clone
行為自体が相手に察知される可能性があります。
今回のCTFのルールには、与えられたURLやファイルをスキャンする場合、可能な限りpassiveな手法を使用してください。
とあったため、ブラウザ上で完結する.patch
を利用する方が、より安全なアプローチだと考えられます。(この方法はChatGPTに教えてもらいました)
振り返り
4時間という限られた中では、比較的多くの問題を解くことができたかもしれません。
ただ、一番の反省点はメモが雑だったことです。後からWriteupを書くことは決めていたのに、思考の過程をあまり記録しておらず、思い出しながら書くのに苦労しました。来年はもっと丁寧な記録を心がけたいです。
公式Writeup