🦉

HEXA OSINT CTF v2 (2023) Write-up (Team 40548F)

2023/02/02に公開

2023年1月28日から29日(日本時間)に開催されたHEXA OSINT CTF v2にチーム40548Fで参加したryo-a, kn1cht, Diffuse, blackwasanです。

CTFでは7950点を取り、全116チーム中7位に入ることができました。CTFを企画し、大会中もDiscordで親身に対応いただいた主催の皆様ありがとうございました。
Merci beaucoup, HEXA OSINT Team!

https://twitter.com/40548F/status/1619921827660431360

本記事には、チーム40548Fで解いた問題について各自のWriteupをまとめます。
問題文および問題画像は競技システムから引用しました。

開催概要

これらは2023年1月開催のv2に関するもので、次回以降は制度が変わる可能性もあるので要注意。

  • 2023年1月27日(金)20:00UTC ~ 29日(日)20:00UTCの48時間
    • 日本時間では2023年1月28日(土)5:00 ~ 30日(月)5:00とややハードな時間帯
  • 事前登録制(開催時間中の飛び入り参加は不可能)
    • 登録可能期間はDiscordでアナウンスされた。CTF開始の1時間後(1月27日21:00UTC)までが登録期間だった。
  • フランスのチームが運営しているが、問題文はすべて英語のみ
    • Discordは英語とフランス語でチャンネルが分かれているが、統合されているチャンネルもあり、英仏が混在している感じ。
  • 英語のみで問題なく対応できるが、フランス語が読めると「いま他のユーザがどこで困っているか」が分かると思う。勝敗に影響は無いはず。

問題システム

  • システム自体はCTFd(専用のWebサイト)上で解答を行うもので、他のCTFと同様
  • 問題を解くごとに次の問題が現れるタイプで、問題間の依存関係が多い
  • ラストスパートの時間で自由記述問題が追加され、締め切り後に運営者から手動採点が行われる

STORY(意訳)

HEXA OSINT CTFはストーリー仕立てのCTFである。

エージェント諸君、機密情報を闇で売りさばいていた犯罪組織Maniparは、君たちのくれた情報によって去年壊滅した(※HEXA OSINT CTF v1)。しかし、彼らのリーダーであるLucilhe Dumarquaisは移送中に逃走してしまった! 捜査が行き詰まっているので、君たちに3つの調査を頼みたい。

  • Lucilhe Dumarquaisを見つけ、逃走した方法を突き止める
  • 本件の情報を持っていると思われる調査者に接触し、情報を得る
  • Lucilheの弁護士が怪しいので調査し、事件に関わったのかどうか探る

多くの設問はこのストーリーを理解した上で取り組む必要がある。

Category: Intro

ルールの確認とストーリーの紹介がなされる。特に技術的に必要なもの・知識はない。

Rules (0)

Dear players, before the fun begins we need you to agree to several rules and a disclaimer:

DISCLAIMER: This CTF depicts a fictional case. Trigger warning: crimes, drugs, gambling. If you feel uneasy with some of these subjects, we advise you not to participate. It is also recommended to apply the same OPSEC as if you were on a real OSINT case as using a virtual machine, a VPN and sockpuppets for example.

HEXA team disclaim all responsibility for the players' actions during the CTF.

RULES:
On some challenges, you'll have attempts' limit, to avoid bruteforce. WARNING: if you reach the max attempts, challenge will be locked and you'll have to contact an admin (TheBaboon, ALS or IWH on Discord) to unlock the challenge. Unlocking a challenge this way will make you lose all points related to the challenge.
Engaging rule : use only passive actions - do not call, do not email, do not engage any contact with targets, unless a challenge explicitly mentions it. Some challenges may mention real events or public personalities, reminder that the given scenario is fictional and people/event are not aware of it, or really linked to it...
This is an OSINT challenge, no offensive actions are required, such as : bruteforce, doxxing, vulnerability exploit...
Sharing hints or flags is prohibited, even if you have two teams from the same school/company... If you have any question regarding the challenges, a hint or a flag, contact exclusively TheBaboon, ALS or IWH on Discord.
Do not try to cheat or disturb other players in any way, this challenge is made to be fun, so keep it fun for everyone!
Any transgression to the previous rules will result in a sanction including:
Yellow warning: your team will loose points,
Red warning: your team will be banned from the challenge.
Admin team keep the right to create any reasonable rules during the challenge, by alerting players with a CTFd notification and Discord announcement.
By entering the flag HEXA{RogerRoger}, you unconditionally accept the previous rules.

(要約)

  • FLAG形式はHEXA{文字列}です。
  • 大文字と小文字は区別されません。ダッシュ/アンダースコア/スペースは使用できますが、混在させないでください。アクセントは使用できません。
  • 回答フォーマットは問題ごとに指定されています。
  • 一部の問題には試行回数制限があります。解除するにはadminに連絡してください。
  • 問題で指示がない限り、対象に電話やメールで連絡を取らないこと。
  • サイバー攻撃、チーム間での情報共有、他プレイヤーの妨害は禁止です。

ルール説明の設問。文章の最後にFLAGが記載されており、そのまま入力するだけでよい。

HEXA{RogerRoger}

Welcome Back (10)

Dear agents, You provided an outstanding work with the Manipar case just over a year ago. This group of activists, who met on Erasmus, stole data from sensitive sectors (bank, healthcare, military), to resell them to the highest bidders. With their arrest, this case is therefore closed. However, their leader, Lucilhe Dumarquais disappeared during a transfer. She intended to reveal more information about collaborating criminal organizations. Since then, there is no trace of her.
The investigation reached a dead end. The minister asked to carry on. Given your knowledge of the case, you are assigned to take over and understand this disappearance.
We will ask you to provide every answer onto that format:
HEXA{challenge_answer} (case insensitive, dash/underscore/space accepted but do not mix, no accent).

If you understood the instructions, write HEXA{Briefing_OK}.

先述のストーリーを紹介する設問。文章の最後にFLAGが記載されている。そのまま入力するだけでよい。

HEXA{Briefing_OK}

Category: The Lawyer

Lucilheの逃亡に手を貸した疑いのある弁護士について調査するカテゴリ。調査を進めていくと、弁護士とつながりのある犯罪組織の活動の一端が明らかになる。

The law firm (100)

(solved by kn1cht)

The Swiss law firm representing Lucilhe is known as Nelexat. We would like to check that this law firm has all the authorizations to work as a lawyer in France. Could you find their website?

Format : HEXA{you_will_know_this_is_a_flag}

"Nelexat"でGoogle検索すると、nelexat.chというドメイン名が結果に含まれている(CTF開始直後は現在と違って検索結果はかなり少ないものだった)。.chはスイスの国別TLDで、問題文のThe Swiss law firmとの情報とも矛盾しない。
そこで、 http://www.nelexat.ch/ にアクセスすると法律事務所のサイトが開き、ページの末尾にFLAGがそのまま書いてある。

HEXA{N3l3x4t_w1ll_M4ke_You_R1ch}

The lawyer (200)

(solved by ryo-a)

Lucilhe's lawyer usually don't take this kind of case. Nelexat is specialized in financial advice and is representing Lucilhe on a misdemeanor case in France. This situation is unusual, even if the law firm has all the authorizations. Could you find the last city where the owner of Nelexat studied?
Format : HEXA{cityname}

NelexatのTerms and conditionsのページに、法律事務所の代表者の名前がLian Nussbaumerだと書いてある。

Lian NussbaumerでLinkedInを検索するとプロフィールが出る。

https://www.linkedin.com/in/lian-nussbaumer-92b89b253/

the last city where the owner of Nelexat studied(Nelexatのオーナーが最後に学んでいた都市)がフラグなので、学歴の欄からNeuchâtelであるとわかる。

HEXA{Neuchatel}

Alias (100)

UNSOLVED😭

Thanks to this social media account, you learned that this lawyer seems to give some advices about money. Maybe you can find another account on some trading platform...
Format : HEXA{you_will_know_this_is_a_flag}

LianがLinkedInに投稿した内容を見ていくと、2月にイベントを開催するというアナウンスが画像とともに投稿されている。

https://www.linkedin.com/posts/lian-nussbaumer-92b89b253_tax-taxlaw-activity-7023681375656443904-6fr0

Lianの氏名の下に書かれている”Nelexlian”という文字列がアカウント名ではないかと推測したが、そのアカウントがあるプラットフォームがWhatsMyNameなどを使っても分からないままCTFが終了した。


本名で活動しながらGiantIncomesForyouというIDを使うセンス

なお、終了後のwriteupチャンネルで行われた情報交換によれば、etoroという投資情報共有プラットフォームでアカウントとFLAGが見つかる。

https://www.etoro.com/people/nelexlian

しかしながら日本からアクセスが出来ず、解答にはプロキシやVPNを準備しておく必要があった。

Experts (200)

(solved by ryo-a)

It seems that Nelexat has a lot of expertise in taxes and gives advices about diverse topics. Maybe you could find something useful about the clients Nelexat is defending.
Format : HEXA{you_will_know_this_is_a_flag}

NelexatのサイトにあるOur advicesのページを見ると……

意味深な「Cases API」の欄、Comming Soonとなっている部分のHTMLソースコードに、APIがホストされたIPアドレスに関する記述がある(これは文字色が白になっているだけなので、ソースコードを見なくても当該部分の文字を選択するなどしても確認できる)。

<p class="has-white-color has-white-background-color has-text-color has-background">
fastapi hosted on 217.182.69.14:8000</p>

FastAPIが217.182.69.14:8000で走っているという意味がよく分からず、愚直にFastAPIでググるとPython用のライブラリであるとわかる。

このライブラリはRESTful APIを提供すると同時に、OpenAPIに基づいて自動的にドキュメントを生成し、/docsでserveする機能を持っている事が分かった。そこで http://217.182.69.14:8000/docs にアクセスしてドキュメントを確認すると、/cases/ というエンドポイントが用意されていることが分かる。

小文字でクライアントのlast nameを入力するとよいらしく、dumarquaisと叩いてあげると目的の情報が得られる。
ちなみにOpenAPIのドキュメントは、そのままWebページ上でテストが出来るので別のツールを立ち上げる必要がない。こういったリッチな機能がない場合、Postmanが便利なので覚えておくとよい。

Response bodyにFLAGが記載されている。

{
  "name": "dumarquais",
  "description": "This case is related to Lucilhe Dumarquais, head of
    Manipar organisation, which was organizing a data trafic. After
    a bitter battle with the opposing lawyers, I managed to get a
    lighter sentence in a prison in France, without my client having
    to give any information about the people she was working with.
    HEXA{s3cure_y0ur_d4mn_4p1}"
}

HEXA{s3cure_y0ur_d4mn_4p1}

Trustworthy (200)

(solved by kn1cht)

Nelexat's website apparently has no contact information. Maybe an email address has been hidden on that website. Could you help us to find this email?
Format : HEXA{email@domain.ext}

NelexatのWebサイトに連絡先がないので、隠されたメールアドレスを見つけてほしいとのこと。サイトはWordpressで構築されていることから、最初はその仕様を突こうと考えた。

まず、Wordpressのサイトは特に対策をしない限り、URLの末尾に ?author=<userid>を付けることで投稿者のページにアクセスできる。1から試すと、以下のページが得られる。

しかし、これらからメールアドレスの情報は得られなかった。
また、WP Scanを通しても特に参考になる情報はなかった。

ryo-aがここまで苦戦したところでkn1chtに交代。

https:// つきでアクセスすると手に入るSSL証明書に emailAddress = mastermind_mastermind@proton.me と書いてある。これが対象のメールアドレス。

HEXA{mastermind_mastermind@proton.me}

Herbaceous (200)

(solved by kn1cht)

You found an email, that's great. Could you use this email to find interesting information?

Format : HEXA{you_will_know_this_is_a_flag}

メールアドレスからさらに情報を手に入れよと指示された。手に入れたアドレスはスイスのメールサービスであるProtonMailを使っている。ProtonMailのAPIから情報を得られるProtOSINTを動作させてみたが、作成日と公開鍵しか分からず、これは解法ではないようであった。

詰まってしまい、昨年のHexa OSINT CTFのWrite-upを読んでいたところ、メールアドレスからGoogleアカウントなどの情報を取り出すEpieosというサービスが使われていた。これを本問題にも適用できないかと考え、mastermind_mastermind@proton.me を検索してみたところ、Google Maps、Google Calendarの公開情報が見つかる。

このうちカレンダー(https://calendar.google.com/calendar/u/0/embed?src=mastermind_mastermind@proton.me)を見ると、
2022年12月16日にMeetingという予定が1件だけ入っている。Descriptionを読むと、「荷物」にアジアの協力者の情報を伝え、移動ルートを決めるというようなことが書かれている。これはLucilhe Dumarquaisの逃亡の手助けのことだと推測される。

Hi everyone, our meeting in Switzerland is coming soon. I will give you the
meeting place at the last minute, this will be safer.

Our agenda for this meeting :
- Give the package all details about the mission, and explain her what is at
stake for our contact in Asia ;
- Define the route you will follow and where to drop the package, which will
allow us to conclude the mission ;
I will await you. O. will be with me, that will allow us to talk about the
http://nvnomrsfvy3dcq25c5y2stgbptt4dcuiaidugy63zca2vc5vnhetaoad.onion/ site.
@Associate, you will be able to tell her what you need on that website.
I need you to confirm the appointment ASAP.

L.N.

本文内にOnionサイト(Torからのみアクセスできるサイト)のURLが示されているので、Tor Browserで開くと、Mastermindという名前のWebサイトが開く。本文には、トラブルに陥っているなら助けになるが見返りを求めるということと、依頼する場合はEthereumアドレスに0ETHを送金するようにということが書かれている。

 Are you in trouble? You need help to manage a problematic situation, do not
 worry. Mastermind will help you. Our services are financially free, but you
 will owe us... You will not know when, you will not know what, but you put
 your honnor (and your life) at stake to fulfill the task we will ask in
 return. If you need a secure line to contact us, please send us 0ETH on
 this address : 0x64D0D945AE5a384c18A3876064816b7E141980E7

ページのソースコードを見ると、コメントとしてFLAGが記載されている。本問題で必要な調査はここまでだが、このWebサイトから得られる情報は後の「Final countdown」の解答に必要となる。

HEXA{N3l3x4t_is_L1nk3d_to_M4stermind}

Good time (100)

(solved by ryo-a)

We are progressing in the hunt thanks to your information. Keep going! The invitation that you have just found mentions a place for the meeting, can you help us to identify this place?

Format : HEXA{LocationName}

予定の詳細を見ると、mincah_mm@proton.mevok_0lski@proton.me が招待されている。残念ながら、これらのアドレスにEpieosを使っても得られる情報はない。

メールアドレスにあった mincah_mmWhatsMyNameに入れてみると、Tripadvisorのアカウントが引っかかる。

https://www.tripadvisor.com/Profile/mincah_mm

2022年12月にチューリッヒのKaufleutenという店を訪れてレビューを残しているようで、これがFLAG。

https://www.tripadvisor.com/ShowUserReviews-g188113-d697852-r876506138-Kaufleuten-Zurich.html

HEXA{Kaufleuten}

Decentralized (200)

(solved by kn1cht)

Oh my god, you found something huge, this MasterMind team seems to sell services using cryptocurrency, maybe you can go further in your investigation with this piece of information and find something useful, like a mission name related to one of their client.

Format : HEXA{mission_name}

Herbaceousの続きで、MasterMindが暗号通貨を使っているという情報をもとにクライアントのミッション名を突き止める問題。

https://etherscan.io/address/0x64D0D945AE5a384c18A3876064816b7E141980E7

イーサリアムの取引追跡ができるEtherscanで、Mastermindのアドレス(0x64D0D94...)を見てみると2件取引がある(CTF中に3件に増えた)。最初のものは0x26352bc...から、2番目のものは0x9c28e79...からである。

0x9c28e79...のアドレスの方が取引が多くて情報がありそうに感じたため、後者の履歴を追う方針で調査を始めた(これは結局正答ではなかったが、得たアイデアを次のKanagawaに使用できた)。このアドレスの取引履歴を読むと、ある時期にOpensea(有名なNFTのマーケットプレイス)を使用していたことがわかる。そこで、Openseaでアドレスを検索すると”CatoonArt”という猫のイラストを売っているアカウントが見つかる。しかし、NFTやSNSアカウントを確認してもFLAGは入手できなかった。

分からないのでチームメイトにDiscord通話で相談していると、ryo-aさんから「Ethereumには取引でメッセージのようなものを送れる機能はあるのだろうか」のような指摘を受けた。そこでもう一度Mastermind関連の取引をEtherscanでよく見てみると、一番最初の取引(https://etherscan.io/tx/0x0f81151afd64b7b3fdda7dbd898d9f68840c5e58c3dc208b6504c798d6c9753a )のInput Dataになにかデータが含まれていた。

UTF-8として解釈すると、こうなる。code nameがミッション名。contact mailは、ミッションの依頼人の連絡先だと推定される。

contact mail : tsuyo63@proton.me
code name : Bruised Rogue

HEXA{Bruised Rogue}

なお、Mission Nameを先ほど登場したNelexatのAPIに入れると、Bruised Rogueミッションの情報が得られる。依頼人の目的や依頼内容が記されている。この内容を知っていると、後のAnalysisカテゴリの解答で有利になった。

{
  "mission_name": "bruised_rogue",
  "description": "This mission has been triggered by <confidential> in
    2022. The main goal is to make Lucilhe Dumarquais escape during her
    transfer to the court. <confidential> want to put her in a safe place
    and recruit her for her skills. We must drop her at <confidential>
    using a safe route. If we ever get caught during the mission,
    the order is to kill her, <confidential> identity is the main
    objective to be protected."
}

Kanagawa (300)

(solved by ryo-a)

They may use their cryptocurrency address for something else, try to find something...
Format : HEXA{you_will_know_this_is_a_flag}

Mastermindの暗号通貨のアドレスについて、別の何かを見つけよという指示。先ほどのDecentralizedでは解答に使わなかったOpenseaで0x64D0D945AE5a384c18A3876064816b7E141980E7のアドレスを検索窓に入れてみると、Mastermindのユーザページがヒットする。
1件NFTを作成しているようで、その説明文にFLAGがある。

This logo was made with bravery, with pride, with firmness.
HEXA{n1ce_L0g0_br0}

神奈川は日本の地名だが、問題の解き方には関係ないようだった……。

HEXA{n1ce_L0g0_br0}

Category: Action Man

写真やメッセージなどの情報から、Lucilheの逃亡ルートを辿っていくカテゴリ。ストーリー上、Lucilheを捕まえるのに直接結びつくカテゴリである。

Hijacking (100)

(solved by kn1cht)

The convoy transporting Lucilhe from "Maison d'arrêt de Versailles" was hijhacked on the 30th of November 2022. She has not been seen since and her case file is incomplete. A tiny mistake has been made: the picture of the convoy's destination was provided but not the place's name. Please begin by completing the file with the name of this convoy's destination.

Format : HEXA{french_destination_name}


問題に添付されていた画像

Lucilheを移送していた車列の目的地の名前を見つけてほしいとのことで、写真が与えられた。Google Lensに放り込むと全く同じ画像が出てきて、その画像のあるページから分かる施設名がFLAG。

HEXA{TRIBUNAL_DE_VERSAILLES}

Fast and Furious (100)

(solved by Diffuse)

A witness saw a patrol vagon driving at top speed. We think it was the one carrying Lucilhe. Can you retrieve the road's name where the picture was taken from?

Format : HEXA{french_street_name}


問題に添付されていた画像

写真の道の名前を特定する問題。画像右のHighwayD57をMeudon付近で探す。奥の白い建物(マンション?)が特徴的なのでブラブラ歩いていれば見つかる。

座標がわかったは良いが、日本語「カピテーヌ・タロン通り」に対応するFLAGがわかるまでに下を試した。

  • capitaine_tarron
  • rue_du_capitaine_tarron
  • du_capitaine_tarron
  • europe←この道と交差しているほうの通り
  • avenue_l'europe

この辺りで「rueじゃなくてavenueでは」と察知。

HEXA{AVENUE_DU_CAPITAINE_TARRON}

Fly me to the moon (100)

(solved by ryo-a)

We found the place where they were hiding after the hijacking. The attachements are evidences we found there. Can you find the city they were heading to?

Format : HEXA{city}


問題に添付されていた画像

(kn1cht)
怪しい雰囲気の写真が渡される。目立つ位置にFSF145Pというメモ書きがあり、左上にはフライトを準備したとの内容が書かれている。フライトが向かった都市を特定する必要がある。

Google検索で、FSF145Pはパリのル・ブルジェ空港(LBG)から離陸したFLY7という会社の航空便なのがすぐに分かる。
https://airportinfo.live/flight/fsf145p

ただ、到着地の空港”VIP”の詳細はGoogle検索でも不明だった。3文字なので空港を表すIATAコードである可能性も考えたが、最初の調査では発見できなかった。

ここでkn1chtは詰まってしまったので航空に詳しいryo-aに引き継いでもらった。

(ryo-a)
土曜日に起床してから真っ先に取り組んだのがこの問題である。
airportinfo.liveというサイトを見たところ、空港名が表示されていない。

“VIP Airport code”で検索しても、“VIP”に引っ張られて掴みにくい。おそらく意図的に分かりづらい空港コードを選んだのだろう。
Google検索ではairportinfo.live以外にもFlightradar24がヒットする。

https://www.flightradar24.com/data/aircraft/oh-eve

このページはOH-EVEという機体記号の航空機の運航記録を示している。通常、Flightradar24は1週間程度しか過去の記録を遡れないが、ryo-aは運良く(?)課金プランのアカウントを持っており、それ以上遡れた。

そこで”FSF145P”をページ内検索すると、12月15日にParis(LBG)→Payerne(VIP)の飛行記録がある。VIPはPayerneのIATA空港コードであることがわかる。

HEXA{Payerne}

ちなみに、FR24の課金プランがない場合、検索窓に「VIP」と入力することでPayerneが得られる。こちらを最初に試してみてもよかったかもしれない。

Chocolate (200)

(solved by Diffuse, ryo-a/kn1cht assisted)

Using the data we found on the previous safehouse, we managed to retrieve a message sent weeks ago: "We arrived. It was necessary to use public transports, all the taxis were taken. Hurry up, I feel uneasy waiting here". This picture was attached. Find the street where they are waiting.
Format : HEXA{street_name}


問題に添付されていた画像

(ryo-a/kn1cht)

大きく写り込んでいる車はGoogle Lensを通すとフォード・トランジットであることがわかる。しかし、この車の販売エリアが多いため、車から地域を判別するのは難しそうである。
続いて路面電車の線路に着目すると、線路の幅(軌間)が1450mm(標準軌)ではなく、1000mmのメーターゲージのように見える。

フランス周辺で軌間1000mmの路面電車を探すかと思案していたところ、kn1chtから「前の問題でスイスに逃げていてその続きなので、スイスの線もあるのでは」「よく見たらバンの向こうにスイス国旗がある」とのアドバイスを得た。
自国の国旗を看板に描くものだろうかと疑問点はあったが、確かにスイス・チューリッヒの路面電車はメーターゲージであった。これより、チューリッヒであると仮定した上で探索を行ったが、上手く見つけられなかった。ここからはDiffuseが担当した。

(Diffuse)
チューリッヒが絞り込まれるまで上と独立に調べていた方針:

  • 看板にスイス国旗を掲げた店がある。時計メーカーなどでスイス国旗を商標に利用できるブランドは限られるという話(よくある話だがそれらしい記事が出てこないので根拠のない言説かも…)から、ドイツかフランスあたりに展開するスイス時計や鞄などの店舗であると予想。綴りの雰囲気、LinkedInで時計好きをアピっていたLianからもswatchにはイメージを引っ張られた。当然、当てはまるブランドは出てこない。

こういうやつ

  • Google lensに問題画像左側を通すと、「ドイツ」という結果が支配的に(街路樹見てるのかな?)。ドイツ語圏を連想する雰囲気的な参考程度にはなりうるかもしれない。
  • *ESTCHで終わる単語を英語で調べてみた。どう考えてもドイツ語っぽい。

チューリッヒに絞り込んだ後の方針:
下の見当をつけてiPhoneのGoogle Mapsアプリ上をぐりぐり探索し発見。ストリートビューが途切れていたので、付近で観光客の投稿したパノラマ写真が決め手になった。

  • トラムが走っているかつ観光客が歩いてそう(自国国旗を看板に掲げる店は観光客向けのバーや土産物店であると予想)。
  • あまり高い店のある場所ではなさそう(シャネルやグッチがあるメイン通りから距離がありそう)。
  • 葉が落ちていない街路樹が航空写真からみられる場所。


https://maps.app.goo.gl/dG7KXBe5PVmEbYfk7?g_st=ic

スイス国旗の店は観光客向けの土産ショップで、問題写真に写っている四角い物体は時計店によくあるポータブルショーケース。実際には2016-2021年の間に店の外観が大きく変わっていて、街路樹も若い木に植え変わっていた。

HEXA{Limmatquai}

Tank Engine (200)

(Solved by blackwasan)

We found evidence of their passage in a safehouse in the previous location you've found. The most interesting one is a phone with a received message weeks ago from a contact named "action man": "We took a direct train connection from Zurich. The journey takes 03:07. Our contact also confirmed the appointment." In which city did this appointment take place?
Format : HEXA{city}

(意訳)
アクションマンがチューリッヒから直通電車で3時間7分かかる場所へ逃げたので、その場所を探してほしい。

とりあえず、チューリッヒから3:07(3時間7分?)で、電車を使って直接到達する都市を探す方針であることは間違いない様子。
チーム全員で手分けして、現地の検索サイト(以下)などを頼りに探すもなかなか見つからず、難航する。
https://withinhours.com/3.2-hours-of-zurich-switzerland
https://www.thetrainline.com/en/train-times/zurich-to-oberstdorf

チューリッヒのターミナル駅であるチューリッヒ中央駅はスイス国鉄(Schweizerische Bundesbahnen AG; SBB)の管轄であり、答えはSBBの直通電車であると仮定して進める。以下の観光サイトにSBBの鉄道網マップが載っているので、それを頼りにGoogleMapsを頼りにチューリッヒから3時間ぐらいで辿り着けそうな場所を探していくが、どうも効率が悪い。スイスは面積が小さいので、3時間もあると国外に行けてしまう。

鉄道旅行こそスイス旅行の醍醐味!スイスの鉄道について | SWISS TOURS
https://www.swisstours.jp/rail.html

途中でSBBには公式乗換検索アプリ(SBB Mobile)があることを知り、インストールしてみる。

とりあえずチューリッヒ中央駅を出発地として、3時間以上かかりそうな都市に片っ端から乗換検索をしていく。このアプリでは途中駅の発着時刻も見ることができるので、そちらも見落とさないように直通電車だけ調べていく。するとちょうど3時間7分で直通で行けるCadenazzoという小都市があったのでsubmitしてみたところ、見事に正解できた。

HEXA{Cadenazzo}

Bonbon (300)

(solved by ryo-a)

Another message with a picture was received from "action man" on the phone previously found, but more recently : "We drove few hours and took the boat. We arrived at the safehouse yesterday. We are about to head East. Still 142km to go until the airport near the fortress. Will be there for boarding in 3 days as planned." Can you find the airport where they boarded?
Another message with a picture was received from "action man" on the phone previously found, but more recently : "We drove few hours and took the boat. We arrived at the safehouse yesterday. We are about to head East. Still 142km to go until the airport near the fortress. Will be there for boarding in 3 days as planned." Can you find the airport where they boarded?
Format : HEXA{airport_name}


問題に添付されていた画像

safehouse.jpgと、「空港まで東に142km移動する」とのメッセージが与えられる。JPG画像のメタ情報に緯度経度が書き込まれている。

35.517173N, 24.017529E

座標はクレタ島西部である。

地図から空港を探す場合、Google Mapsに “Airport”などを入力するよりFlightradar24を見る方が早く、ノイズも少ない。
シンプルに、当該座標から東の方にある空港を探すとイラクリオン国際空港(Heraklion International Airport)が見つかる。

直線距離では該当しないが道路の距離が142kmと考えると妥当と判断し、正解。

HEXA{Heraklion International Airport}

Sovereign City (300)

(solved by ryo-a)

We intercepted a new message from "action man" sent days ago: "We will land at way 646940106, then we plan to hide near node 1803847939. Before we leave the city, we will change our car near way 22762642. After that, relation 8810294 will allow us to leave the city by staying on the left lane." Find where they were hiding and the city they are heading to.

Format : Hexa{neighborhood_cityname}

(意訳)
Action manからのメッセージを解読し、隠れていた場所とこれから向かう場所を探す。
メッセージの内容「我々は way 646940106に着陸し、node 1803847939付近に隠れる。街を離れる前にway 22762642付近で車を乗り換える。relation 8810294で左車線を維持すると街から出られる。」

way, node, relationというとまずOpenStreetMap(OSM)が思い浮かぶ(OSMに詳しくない人も、”way node relation”のGoogle検索をすれば意味に気づくはず)。そして数字が如何にもOSMっぽい。
ということでOSMでそれぞれの情報を見ると以下の通りである。

隠れていた場所はすぐわかるので、向かう場所を考えることにした。”staying on the left lane(左の車線に居続ける)”とメッセージにあるので、relation 8810294の道路を目で追っていくと、マレーシアとの国境の橋にたどり着く。この橋をわたると、ジョホール・バルに到達する。

移動ルートを把握したので、FLAGを考える。フォーマットは”neighborhood_cityname”となっており、隠れていた場所とこれから向かう場所の2つを答えなければならないので、2つの都市の名前を繋いで答えるのではないかと推測した。

シンガポールはそれ自体が都市国家なのでSingapore_Johor_Bahruを入力してみたが、これは不正解だった。node 1803847939周辺の地域であるHougangに変えると正解になった。

HEXA{hougang_johor_bahru}

Original (300)

(solved by ryo-a & kn1cht)

We contacted interpol about "action man". They have a biography record about him, but it seems something erased and rewrote the biography report several times. Forensics team managed to recover 12 different files but could not determine which one was written by a human...
Format : HEXA{report_number} Exemple : HEXA{13}
WARNING : You have only one try to get the right answer

12個のテキストファイルが与えられ、人間が書いたものを探す必要がある。内容は、”Action man”と考えられる人物の容姿や犯罪歴、その後の捜査についての記録である。
総当たりを防ぐためなのか1回しか解答を提出できないので、チームメンバー間で非常に慎重に内容を確認した。

(ryo-a)
テキストファイルには編集履歴のような痕跡が残らない。念のためバイナリエディタでも開いてみたものの、特に何か隠されている訳でもなさそうだった。行き詰まって一晩寝かせて考えていたところ、”something erased and rewrote”という記述を踏まえると、1つだけ異なる環境において編集・保存が行われた可能性があるのでは?という発想に至った。すなわち、改行コードや文字コードが改竄時に意図せず変わったのではないか、というのが仮説である。

VS Codeでは特に違いが見つけられなかったため、サクラエディタで開いてみる。
散らばったスクショで恐縮だが、report8.txtのみSJISと表示された。

このようにエディタや画像ビューアなどはソフトウェアによって細部の挙動が異なることもあり、別の環境を試すというのは有効な手法であると思われる。

ここで情報をkn1chtに共有した。

(kn1cht)
CTFのForensicsジャンル(データを調査して隠された情報を見つけるもの)では、まずfileコマンドでファイルの形式を特定することが多い。ryo-aが文字コードの違いについて疑っていたので、追試としてfileコマンドを実行すると、report8.txtのみUTF-8という結果が出た。

$ file *.txt
report1.txt:  ASCII text, with very long lines, with CRLF line terminators
report10.txt: ASCII text, with very long lines, with CRLF line terminators
report11.txt: ASCII text, with very long lines, with CRLF line terminators
report12.txt: ASCII text, with very long lines, with CRLF line terminators
report2.txt:  ASCII text, with very long lines, with CRLF line terminators
report3.txt:  ASCII text, with very long lines, with CRLF line terminators
report4.txt:  ASCII text, with very long lines, with CRLF line terminators
report5.txt:  ASCII text, with very long lines, with CRLF line terminators
report6.txt:  ASCII text, with very long lines, with CRLF line terminators
report7.txt:  ASCII text, with very long lines, with CRLF line terminators
report8.txt:  UTF-8 Unicode text, with very long lines, with CRLF line terminators
report9.txt:  ASCII text, with very long lines, with CRLF line terminators

なぜreport8だけがUnicodeなのか疑問に思い内容を読むと、"Złodziej cieni"というASCIIでない文字を含んだ単語が入っていた。さらに内容を読むと、他のファイルにはないthe Narodowy Bank Polskiという固有名詞が含まれていた。従って、他のファイルよりも具体的であるという点で人間が書いたものではないかと考えた。

HEXA{8}

Final countdown (400)

(solved by ryo-a, assisted by kn1cht)

We just received another message from "action man" sent on the phone we found at the safehouse: "As planned, we are hiding in the building in zone 4. The religious man waited us there as planned. This isn't very secure, but it will do the job. We can't stay there more than a week, so find us a boat to reach the final location. We won't be able to reach the sea on foot from there (more than three kilometers by foot is more than the package can handle), so find us a car too... I expect news in a couple days. I walked for five minutes and I arrived at a field where locals were playing soccer. I talked with them and with some financial insentive, they will warn me if they see or hear anything that could compromise our position." This is a great opportunity to find where they are hiding. We have a chance to catch them, so give us this "building" OSM identifier so we can send a team.
Format : HEXA{osm_identifier}

名称どおりAction Manカテゴリの最終問題で、ストーリーの盛り上がりも最高潮に達する。マレーシアに渡ったAction Manから、「Zone 4のある建物に隠れていて、徒歩5分の場所にサッカー場がある。あと数日でここを出たい」という旨の連絡が入った。逃げられる前に彼らを逮捕すべく、その建物を特定するのが目標になる。

Herbaceousで発見したOnionサイトでMastermindのロゴマークをクリックすると、zones.htmlでZones.kmzというファイルをダウンロードできる。KMZは地理情報を格納したKMLファイルが圧縮されたもので、地図サービスなどで開くことが可能。
試しにGoogle Mapsのマイマップ機能に読み込んでみると、10個の四角形のZoneが定義されている。本問題の解答に必要なのはZone 4だけである(Zone 4の色は筆者が付けた)。

この中で対象の建物を探す。religious man(宗教家)が待っていたというのは、潜伏先の建物が宗教施設(モスク?)だという意味だろうか。つまり、サッカーフィールドとモスクが徒歩5分の距離にあり、海岸線に近すぎない(3キロ以上歩くのは無理だと問題文に書いてあるため)場所を探せばOKと思われる。

ここまでの問題でOSMデータが使用されていたこともあり、Google MapsではなくOSMを使って絞り込むことにした。
OSMのデータに対してクエリを使って絞り込むことができるOverpass Turboで、Zone4が示しているMarang近郊の宗教施設とサッカーコートを洗い出す。
KMZファイルの座標を元に絞ってもよいが、エリアが複雑ではなかったことから{{bbox}}(画面表示エリアの枠内)で検索をした。

[out:json][timeout:25];
(
  node["sport"="soccer"]({{bbox}});
  way["sport"="soccer"]({{bbox}});
  
  node["building"="mosque"]({{bbox}});
  way["building"="mosque"]({{bbox}});
  
  node["amenity"="place_of_worship"]({{bbox}});
  way["amenity"="place_of_worship"]({{bbox}});
  
  node["leisure"="pitch"]({{bbox}});
  way["leisure"="pitch"]({{bbox}});
);
out body;
>;
out skel qt;

サッカー場と近くのモスク(way:430150267)を発見した。Google Mapsでは所要時間6分とのことで、5分から誤差の範囲と考えてこのwayの番号を入れる


エッ!
回数制限がある事に加え、特に間違っているようには思えなかったので余計焦る。

運営にDMで確認したところ、フォーマットの不備ではなく誤りであると指摘され、問題文通りですよと釘を刺される。
ここで問題文を再度読んでみると、We have a chance to catch them, so give us this "building" OSM identifier so we can send a team.とある。やたらbuildingが強調されているので再確認したところ、当該の建物にはbuildingタグが付いていなかった

ここでkn1chtが別のモスクを見つけてきた。
https://www.openstreetmap.org/node/3975813161#map=17/5.22208/103.03176
確認するとbuildingタグが付いている。

Google Maps曰く、サッカー場まで徒歩5分である。

ということで問題なさそうである。無事FLAGを獲得。
HEXA{3975813161}

Category: The Associate

逃亡したLucilheらの隠れ家で見つかった情報から浮上した "associate" と呼ばれる人物について探るカテゴリ。

Contract (200)

(solved by blackwasan & ryo-a)

We found evidence of their passage in a safehouse in Zurich. The most interesting one is a phone configured in romansh with a received picture attached to a message. This message is from a contact named "associate". Can you find the location where the picture was taken?

Format: HEXA{countryname}


問題に添付されていた画像

(意訳)
チューリッヒの隠れ家で発見した携帯に残されたメッセージ。メッセージに「associate」から送られてきた写真があり、それが撮られた場所を探す。

(ryo-a)
主翼の形状から、この撮影者が搭乗していた航空機はエアバスA330neoであるとわかる。
メーカーによってウィングレット・ウィングチップなどと呼称は異なるが、翼端の部分は機種によって形状の違いが大きく、同定に用いやすいので覚えておいて損はない。

続いて、背景から滑走路の番号が14/32であると判明する。(滑走路の番号についてはここでは説明を省くため、別途参考記事をご覧いただきたい)
ただ、14 -32  のように、番号の右側に空白が生じている点が気になる。

また、背景より海沿いの空港であることもわかる。

肝心の航空会社だが、A330neoを就航させており、青色を主体とした尾翼デザインからガルーダ・インドネシア航空でないだろうかと推定した。
しかし、indonesia と入力したところ弾かれてしまったことで問題が甘いものではないと分かる。特にこの問題は提出回数が最大3回であり、既に1回ミスしたことで油断出来ない状況となってしまった。
(ちなみに、CTF終了後のDiscordによると、他にも複数のチームがガルーダではないかと勘違いして苦戦したと述べていた。意図した引っかけであるとすれば、かなり上手く作問されていると思う。)

ここでガルーダの搭乗記を探すと、機種は異なるが翼端の模様が異なる事が判明した。
https://flyteam.jp/airline/garuda-indonesia/review/45635/285375

もう一度A330neoの採用エアラインを漁るとCorsair International(フランス国籍)が怪しそうである。
https://en.wikipedia.org/wiki/Airbus_A330neo#List_of_operators

以下のYouTube動画から翼端の模様も同一であると確定した。
https://www.youtube.com/watch?v=Z4QI4jrGU80

Corsairはツアーチャーターをよく請け負うタイプのエアラインなので、定期就航地ではないかもしれないと懸念し、可能性のある運航経路を全て洗い出す覚悟を決める。

Flightradar24より、当該エアラインのA330neoは以下の5機のみであると分かる。この程度の数なら1~2ヶ月程度の運航実績を全て追うことができる。

写真のExifは11月24日となっており、その頃にモーリシャスを訪れている機材がある……が、それを見落とし右往左往していた。その頃、並行して調査をしていたblackwasanからモーリシャスではないかとの報告があった。

(blackwasan)
Corsair Internationalはフランス国内のほかに南アジアやアフリカなどにもチャーター便を飛ばしている。
候補としてあがったのは、トゥーロン・イエール空港(仏)、ケファロニア空港(ギリシャ)など。しかしそれらの滑走路方位や地形が題意と違うため、除外された。
フランス領はカリブ海やインド洋の島々にも存在するため、それらに付随する空港を隈なく探していると、たまたま他の問題にも登場するモーリシャスを探してみようという気になる。そのモーリシャスの南部に位置する空港「シール・セイウッドザーギュール・ラングーラム空港」が地形的にも、滑走路方位的にも合致。

2人の異なる手法でモーリシャスであることを確信してsubmitし、正解。
HEXA{Mauritius}

(余談)
シール・セイウッドザーギュール・ラングーラム空港は並行する誘導路を滑走路へと変更する工事が進んでいるようである。
「14 -32 」という不自然な空白は、この工事の兼ね合いだったのではないだろうか。

2019年撮影(Google Earth)

2022年撮影(Google Earth)

Impersonator (200)

(solved by kn1cht)

We received a call from the contact "associate". The prefix of that number was 44. One of our agent answered the phone and the caller, a woman, told him : "Lian, it's me, I got the contract signed and I returned back at my place. Sell all your actions right now, the price is going to drop soon... Our system is getting more and more lucrative, it's a good thing. I hope the package is still on the way, our client is very influent worldwide, this could be useful... What is the current status?". Our agent tried to talk to the caller but she hang up, guess our agent isn't such a good impersonator... As the call did not last long, we managed get data of the triangulation but these data are incomplete. Can you help us to know what neighborhood she was calling from using the world's largest Open Database of Cell Towers?

Here are the data we managed to get :
Antena operator : EE (previously Orange S.A)
LAC : 11
Cell ID : 27855
Format : HEXA{Neighborhood}

associateという人物から電話が来たもののすぐに切れてしまったので、どの地域から掛けてきたのか突き止めてほしいとのこと。番号のprefixは44(United Kingdomのカントリーコード)であることと、アンテナの会社、LAC、Cell IDが情報として渡された。

携帯電話の基地局を検索できるデータベースとしてOpenCellidが有名である。過去に、Open xINT CTF 2021にもこれを活用して答える問題が出ていたので知っていた。

OpenCellidのWebサイトでは地図から検索もできるが、MCCとMNCを入力していないとエラーが出てしまう。MCCとMNCについて調べると、MCCは通信事業者の地域を表す番号(Mobile country code)、MNCは通信事業者を表す番号(Mobile Network Code)のようである。問題文に国と通信事業者が書かれているので、MCCとMNCを特定すれば解答できると推測した。

最終的に、Wikipediaにある「Mobile network codes in ITU region 2xx (Europe)」という長大なリストからUnited KingdomのEEを見つけ、MCCとMNCのありうる組み合わせをOpenCellidに入力して試せばよい。

MCC: 234、MNC: 33で基地局が出るので、Chelsea(ロンドンの地域名)がFLAGだと分かる。

HEXA{Chelsea}

Setup (300)

(Solved by blackwasan)

Our forensics team dug into the telephone and found a deleted message sent to "associate" : "Hey dear, remember the gift you offered me few years ago? It just stopped working... I'm so sad, your gifts are always plain but they fulfil me with joy. I will take it to the watchmaker ASAP, promise !". This watch could help us understand his definition of "plain", help us find the exact reference of the watch.

Format : HEXA{ref_number}

(意訳)
「時計を送ってもらったけど、止まっちゃったから時計職人に修理を頼むね」という内容のメッセージが見つかる。その時計のreference number(型番?)を教えてほしいという設問。以下の画像も添付されている。

画像を反転させて、コントラストを弄ると文が読める……が問題には関係ないようだった(assisted by ryo-a!)。

話題は時計なので、元の時計を拡大した画像を何も考えずにGoogleLensに突っ込む(常套手段)。

そうすると、Fetina社製の時計の販売ページがいくつかヒットするので、その中から似たものを探す。
以下のF20585/3という製品がよく一致しているので、submitするも不正解。

https://festina.com/en-GB/watch/man/festina/festina-mens-blue-timeless-chronograph-stainless-steel-watch-bracelet-f20285_3.html

ほとんど同じだが、後発品と見られる以下の時計の型番がflagだった。

https://www.irisimo.com/festina-chrono-20286-3

HEXA{f20286/3}

Category: The Developer

NelexatのWebサイトを開発した人物について調査するカテゴリ。

Programming (100)

(solved by Diffuse)

This company is definitely suspicious. Someone must have developed their website and we would like to see if this person has any connection with our case. This person must have an account for his IT projects. Can you find it?
Format : HEXA{url}

会社のWebサイトを作った開発者のアカウントを見つける問題。「会社」とはNelexatだと考えて様々な調査を行うがなかなか正解できなかった。

正解に繋がらなかった方針:

  • nelexat.chからリンクされているWordPressテーマを掘る
  • 求人情報を見る。LinkedInでZurichのWeb Developer, Web Designerの求人を探す。

正解に繋がった方針:
Wayback Machineにページ作者のクレジット削除前のバージョンを発見(既にこんなものは誰かが初手で確認しているだろうと思って実行が遅れた。よくない)。

https://web.archive.org/web/20230105145658/http://www.nelexat.ch/

1/5にスナップショットが存在することがわかる。確認すると、フッターにNelexatの代わりにOlga Vokolskaなる人物がクレジットされている。

この人物のgithubを見つける問題、と目標を仮定する。/OlgaVokolska を筆頭に、https://github.com以下にそれっぽい名前を直打ちしてアカウントを探すと発見できる。

https://github.com/ovokolska

HEXA{https://github.com/ovokolska}

Listen to your heart (200)

(solved by ryo-a)

Well done, now that you have found an account, let's try to find intimate information about this developer.

Format : HEXA{you_will_know_this_is_a_flag}

前問のProgrammingで判明したGitHubアカウントのbioに「littleSparr0w」という文字列がある。
文脈的に自分のことを指しているのと、キャメルケース、数字の入れ方で外部サービスのIDであることは間違いなさそう。ただ、情報量の多くない文字列なので、単純に各SNSを調べても無関係の他人ばかりが出てくる。

また、このアカウントはStarをつけているリポジトリが1つだけあり、それがマストドンのwebクライアントであった。

https://github.com/elk-zone/elk

マストドン関連ツールをStarしてるのでヒントでは?と思うが、分散型SNSであるマストドンにはインスタンス(サーバー)が複数あるので検索する方法が分かりづらかった(手始めにpawooから検索してみたが有意な結果が得られなかった)。

過去のWriteupを見るとSNSなどのIDを一括で検索するツールWhatsMyNameがあり、それを使ってみたところマストドンのアカウントが1件引っかかる。

https://mastodon.social/api/v2/search?q=littleSparr0w

cyberplace.socialというインスタンスのlittlesparr0wが当該人物らしい。

https://cyberplace.social/@littlesparr0w

このアカウントのトゥートを遡るとフラグが記載されているモノが見つかる。

https://cyberplace.social/@littlesparr0w/109757614306528057

HEXA{mY_H34R7_i5_pURp13}

Category: The Intruder

Lucilheの事件を独自に調べていると目される人物と連絡を取りながら、その人物が持つ情報を提供してもらうことを目指すカテゴリ。このカテゴリの出題は特殊で、あるDiscordサーバで出題される”Challenge”を複数達成することでフラグが得られる仕組みだった。

The Intruder (100)

(solved by Diffuse, ryo-a)

We suspect a detective to be investigating the same case as us. He has a bad habit of trying to retrieve our information, so he could be among you. We know that he regularly creates YouTube channels during these investigations. Can you find the ID of his current YouTube channel? Something that may help: he usually pay tribute to a detective born in 1819, using his name as pseudonym.

Format : HEXA{ID}

同じ事件を追っている探偵が1819年生まれの探偵を仮名として名乗っているという情報から、YouTubeチャンネルを見つけてほしいとのこと。1819年生まれの探偵をGoogle検索すると、アラン・ピンカートン (Allan Pinkerton)というアメリカの私立探偵が見つかる。

名前にPinkertonが含まれるYoutubeチャンネルを検索し@Pinkerton91を得る。

YouTubeのvideoIDが不正ですhttps://www.youtube.com/@Pinkerton91/shorts

しかし @Pinkerton91 はIDではない。これはエイリアスのようなもので、生のIDは別に存在するらしい。
色々ググって見ると、RSSフィードには生のIDが含まれていることがわかった。RSSから該当する部分を引っこ抜いてくれるツールがあったのでPinkerton91のチャンネルURLを入れ、FLAGを得た。

https://ilr.jp/tech/485/

HEXA{UCjyLqrOsjkpsMhczlbHJoFA}

Infiltration (100)

(solved by Diffuse)

This guy is too well informed to work alone. He has to have a way to communicate with his associates. Can you find it?
Format : HEXA{you_will_know_this_is_a_flag}

PinkertonがYouTubeに投稿したShort動画中にTiktokから転載したと思われるIDがある。Tiktokの元動画を探し、PinkertonのTiktokチャンネルのbioにDiscordサーバーの招待リンクの一部が確認できる(https://discord.gg/**********)。

Pinkertonに招待されたDiscordサーバの最初のメッセージの末尾にFLAGがある。

Welcome to my Discord.
I am Julian, aka Pinkerton, and this discord is dedicated to my OSINT investigations. I am investigating on different cases, and I am looking for experts to help me on these investigations. In order to preserve the confidentiality on these cases, I will challenge you to find some information regarding several subjects. Only the best will be able to get the upper roles and work with me on the best cases.
Every role is unlocked by entering a command, and this command is given by solving the challenges...
To protect your answers from unwanted eyes, it is mandatory to create a private thread in the channel where the challenge is written ;) (click the + button in your role channel to create a thread, it will automatically be private)
If the instructions are clear, your first challenge is to find the right emoji to react and get the Cheveche Role...
HEXA{P1nk3Rt0n_solV1n9_C4s3}

HEXA{P1nk3Rt0n_solV1n9_C4s3}

Sneak beak (200)

(solved by Diffuse)

Great, you found the server! The detective seems to be looking for help. We need you to obtain the upper roles he is talking about. Start by gaining the next role after the Cheveche role.
Format : HEXA{command_to_get_role}
Warning : Do not forget to submit the flag here !

Infiltrationのメッセージの指示はざっくり:

  • このDiscordでは捜査協力者を募っている。
  • 各RoleのChallengeを解いて素質を示してほしい。
  • 最初のChallengeはこのメッセージに適切な絵文字でReactionすること。

#herfang

このサーバで最初に飛ばされるチャンネルの名前 #herfang はフクロウの意味。
🦉の絵文字を選択 → #cheveche チャンネルが出現。Challenge 1とChallenge 2が出題されている。

Challenge 1 (Diffuse)

We start easy. During my investigations I was able to find a recording. Can you tell me what is the title of what the protagonist sings? It will certainly help me to direct me on his nationality. (format: !c1-track_artist)

https://www.youtube.com/watch?v=C-q8ueHFzww

(意訳)この録音でターゲットが歌っている楽曲名、アーティスト名を調べよ。これはターゲットの国籍のヒントとなる。

添付されていた鼻歌のmp3をiPhoneのGoogleアプリの「曲を検索」に入力。midomiはまるで役に立たなかった。
bonobos "LEMONADE" を得る。ターゲットは日本人?

!c1-LEMONADE_bonobos

botから次のRoleを開放するためのコマンドの一部が返ってくる。

the first part for the command to get the hulotte role is : !yxmdvbn5j

Challenge 2 (Diffuse)

I want to be sure you are qualified to help me. Tell me how much someone risk in France if they make an identity theft by giving me the penal code article identifier. (format: !c2-123-1-1)

(意訳)フランスでなりすまし行為を働いた者が課せられる可能性のある罰則が定められた刑法の条文の番号を示せ。
penal code: 刑法
identity theft: なりすまし

「フランス なりすまし」等英語でひたすらググって下のニュースにたどり着く:
"インターネット上のなりすまし行為に対し初のフランス刑法226-4-1適用"

https://peepbeep.wordpress.com/2015/01/08/usurpation-of-identity-a-la-francaise-the-first-application-of-article-226-4-1-of-the-french-penal-code/

!c2-226-4-1

the second part of the command to get the hulotte role is : vwnnjy3htfe

botが教えてくれる文字列を合体したコマンド!yxmdvbn5jvwnnjy3htfeを入力すると#hulotte チャンネルが出現する。このコマンドがSneak beakのFLAG。

HEXA{!yxmdvbn5jvwnnjy3htfe}

Grow owlder (300)

(solved by Diffuse, ryo-a)

Well done, you obtained the Hulotte role. Please try to move forward and gain access to the next channel with the Effraie role.
Format : HEXA{command_to_get_role}
Warning : Do not forget to submit the flag here !

#hulotteチャンネルで下の3つのChallengeが追加される。Sneak beakと同様に、これを全部解いて得られるコマンドを提出する設問。

Challenge 3 (Diffuse)

A friend of mine have clients in Europe. One of his clients asked to delete every pieces of information my friend has collected about him/her. My friend didn't took care of that request but received a big fine several weeks after that. Could you help me find the law and article that can explain this fine? (format : !c3-RULE-1111)

(意訳)ヨーロッパに顧客を抱える友人が、クライアントからの情報削除要請に従わなかった結果、かなりの罰金を課せられた。この罰金の根拠である法律の条文を調べよ。

いわゆる「忘れられる権利」、個人情報の削除要請に従わなかったEU内の事業者への罰則を定める条文が答え。
日本語でもEU域内事業向けの解説が多く見つかり、助かった。

GDPR 17条: https://yamamuralaw.com/blog/1843/

❌!c3-GDPR-70←法律の読み方に無知すぎて一度間違えた。
!c3-GDPR-17

Congratulations !
You found the right answer - the first part of the command to get the
effraie role is : !z7i2vj2

Challenge 4 (Diffuse)

I heard from an US federal agency that there is a lot of inflation on food price in US last year, could you find the exact percent change for Month-to-month October 2022 to November 2022 on eggs? (format : !c4-1111 - percentage with no separator - example : answer is 5,3, just send !c4-53)

(意訳)米国連邦政府機関によると昨年のアメリカでは多くの食品の値上げがあった。2022年10月-2022年11月間の卵の価格変動率を正確に示せ。

❌!c4-43
❌!c4-491

アメリカ政府のconsumer price indexの2022年11月バックナンバーに該当する数字が載っている。

!c4-23

second part of the command to get the effraie role is : ger6vf

Challenge 5 (Diffuse)

I am working on a very important OSINT case. A contact sent me an image from a camera filming adriatic sea, but couldn't give me the source... My contact just told me that the camera is set on an hotel in Veneto, maybe that will help you to find this camera. One more thing... From this camera, we can see a panel where "Fantasy" is written. If you can find this camera, give me the phone number of the hotel (format: !c5-39XXXXXXXXXX).

(意訳)私が追っている非常に大きなケースでは、あるクライアントからアドリア海を映した画像が送られてきたが、ソースを特定することができなかった。クライアントによると、画像を撮影したカメラはヴェネト州のあるホテルに設置されたものである。このホテルの電話番号を答えよ。

アドリア海が見えるとのことなのでVenetoの中でもVeneziaかRovigo。景勝地でライブカメラやホテルの数が桁違いなのでほとんどVeneziaに絞ってよいと考えた。
カメラ設置場所としてホテルがクレジットされているようなヴェネツィアのLivecamをyoutubeやLivecamまとめサイトなどで調べ、電話番号を打ち込みまくるが、通らない。

(豆知識)Venice(英語)=Venezia(現地語、小さいホテルとかはこっちのほうが引っかかる)∈Veneto

Venetoの海を映したLiveCamを探し、ホテルと明示されているものはその番号を、そうでないものは撮影場所を推定してGoogle Mapsから探す。

Failed List

  • ❌!c5-390415230796
  • ❌!c5-39094223921
  • ❌!c5-390421380851
  • ❌!c5-390421961248
  • ❌!c5-39041490740
  • ❌!c5-390415205044
  • ❌!c5-390412770477
  • ❌!c5-390415227463
  • ❌!c5-390415200533

!c5-390415540660

botが教えてくれる文字列を合体したコマンド!z7i2vj2ger6vfpjje2ddを入力すると#effraieチャンネルが出現する。このコマンドがGrow owlderのFLAG。

HEXA{!z7i2vj2ger6vfpjje2dd}

余談

このChallenge5を解いていた時点で、最初の問題The IntruderのFLAGを通せていなかった。この一連のChallengeの報酬が"His Current YouTube channel"なのだろう、YouTubeチャンネルPinkerton91は導入なのだろうと思い込み、The IntruderのFLAGを通さないままInfiltration以降の問題に挑戦していたことになる。運営から、大丈夫そ?とそれとなく聞かれる。やさしい。


図:「チーム40548F、もしかしてDMで確認したいことあるんじゃない?」とのこと。このようにチームへの呼び出しが掛かることがある。Discordは随時確認すること。

余談2

難易度が高かったためか、One more thing... From this camera, we can see a panel where "Fantasy" is written. は後に追加された。40548Fが解答を通してから1分後のことであった(そういうこともある)。

Tell me owl your secrets (600)

(solved by Diffuse, ryo-a, kn1cht)

This is becoming interesting! You are already having new information on the case. We are approaching the goal, continue like this and try to get the Tengmalm role.
Format : HEXA{command_to_get_role}

#effraieチャンネルで出題される3つのChallengeを解く設問。

Challenge 6 (Diffuse, ryo-a)

You helped me find where the guy singing in challenge 1 is coming from... This guy is Japanese and I managed to find his name : Tsuzune Yokoyama. Could you help me find a social network page where we can get more information about him, like his birthdate? (format : !c6-DDMMYYYY)

(意訳)Challenge1で推定してもらった通りこの人物は日本人で、名前をTsuzune Yokoyamaという。TsuzuneのSNSを探して生年月日を教えてほしい。

“Tsuzune Yokoyama” で検索しても特に情報は出てこない。
有名どころのSNSにそれらしいIDは見つからない (「Suzune.T」的な無関係のIDとして@Tsuzuneさんは意外に多くいた)。

何か大事なものを忘れている気というか、日本人の犯罪者って何使ってやりとりするんだろうな?と思いダメ元でLINEで友達検索。

QRコードと電話番号以外の友達追加手段としてLINEに任意ID検索があることを忘れていた。
ルフィですら偽名でtelegram使ってるのに

友だち追加せずにプロフィールを表示する方法がないか確認したところ、PCで検索するとプロフィールが出る。
現在の西暦2023から年齢を引いてFLAGに合わせる。

!c6-21031963

Challenge 7 (ryo-a)

We have been working together for quite a moment now, you want to know me better? I will tell you more if you can find my Discord unique identifier (Discord ID) (format: !c7-11111)

Discordの開発者モードをONにし、J.Pinkertonを右クリックするだけ。

!c7-1055577878022070302

Challenge 8 (kn1cht)

I had a video call with a contact who was supposed to give me information about a company doing business with someone related to my investigation.
Sadly the call ended abruptly and I am not able to reach him at the moment.
The good news is I have recorded the beginning of the call.
The only things I know are that the company is probably part of the medical industry, and my contact found an SSID related to that company.
Can you find the name of the SSID I'm looking for ? (format: !c8-SSID without spaces)

https://www.youtube.com/watch?v=GYgVhU-nPVM

とある医療関係の会社に関係があるSSIDを特定してほしいとのことで、1秒の動画が与えられる。冒頭で手書きのアドレスのようなものの一部(9E:A9:75)が写り込んでいる。これはMACアドレス(BSSID)ではないかと推測できる。OSINTでSSIDの特定といえばWiGLEの出番だが、BSSIDの全体が分からなければ検索できない。

次に、動画の最後に一瞬写ったWebページはDrayTekというネットワーク機器メーカーである。

これだけの情報からMACアドレスの全体を復元するためには、MACアドレスの構造について基礎的な知識が必要である。ネットワーク機器に設定されるMACアドレスは12桁で、前半の6桁はベンダの固有ID(Organizationally Unique Identifier; OUI)を、後半の6桁は各ベンダが機器ごとに割り当てる番号となっている。

https://atmarkit.itmedia.co.jp/ait/articles/0107/05/news001.html

本問題では後半6桁が判明しているので、前半の6桁を入手すれば元のMACアドレスが分かる。DrayTekがヒントであるとすれば、DrayTekのOUIが前半ではないかと推測される。

DrayTekについて検索していると、DrayTekのOUIとしてありうるもの3つを特定できる。

https://www.adminsub.net/mac-address-finder/draytek

これを9E:A9:75と繋いだMACアドレスを順番にWiGLEで検索すると、ヒットするものが一つだけある。

  • 14:49:BC:9E:A9:75
  • 00:50:7F:9E:A9:75
  • 00:1D:AA:9E:A9:75 ← これが当たり

判明したSSIDはロンドンにあり、LGNF health inovative ltdと書かれている。

SSID: LGNF health inovative ltd - Guest

正解のコマンドはスペースを抜いたもので、
!c8-LGNFhealthinovativeltd-Guest

botが教えてくれる文字列を合体したコマンド!dzuf1i2ufe63wv5fscmt2x8pyyilrmを入力すると#tengmalm チャンネルが出現する。このコマンドがTell me owl your secretsのFLAG。

HEXA{!dzuf1i2ufe63wv5fscmt2x8pyyilrm}

Owlmost there (900)

(solved by Diffuse, ryo-a, kn1cht)

Good job! You got the Tengmalm role and it looks like "serious business". The Grand-duc role may be the last one. Pursue your effort and try to get it.
Format: HEXA{command_to_get_role}
Warning : Do not forget to submit the flag here !

#temgmalmチャンネルで出題される3つのChallengeを解く設問。

Challenge 9 (Diffuse)

I got something big, and I need you to help me... This is related to my main investigation. In this case, several people were injured in Malaysia in a shooting. A contact managed to sneak into the crime scene and collect a bullet from the weapon used to commit the crime. Can you identify the weapon used from the bullet? (format: !c9-caliber-weaponmodel - example : answer is 1.11 GUN just send !c9-111-gun)


問題に添付されていた画像

(意訳)マレーシアで銃撃事件が発生し、現場から下の弾丸が回収された。銃撃に用いられた銃のモデルを答えよ。

Google Lensに写真を渡すと似たような弾が色々出てくるが、共通して7.62×25mm(口径*薬莢の長さらしい)の規格であることが推定できる。

ぱっと見で最も似ていた下のトカレフ弾が正解。

!c9-762-tokarev

Challenge 10 (kn1cht)

A Mauritian friend told me that : "A British businesswoman came to sign a contract with the A-team. I am surprised because this woman was a tall one and seemed Slavic, not something we see on a daily basis here... I am also surprised to hear about A-team, they winded up in 2014...". I'm a little confused about what he said... Can you find the A-team he is talking about? Maybe some winding up details about it will help us, like the exact date... (format: !c10-DD-MM-YYYY)

2014年に解散したモーリシャスの”A-team”を見つけ、解散した日付を教えて欲しいとのこと。A-teamと呼ばれる団体はたくさんある(日本にもA-team Inc.という芸能プロダクション企業がある)。A-teamがスポーツチームなのか会社なのかも不明で、Google検索を繰り返しても正答にたどり着けず一晩が経過した。

会社について調べるには各国の企業データベースを調べることが有用なのを思い出し、モーリシャスのデータベースを探してみた。検索で見つかったCorporate and Business Registration Departmentの検索システム”CBRIS Online Search”で”A-Team”を検索すると、3つほど結果が出てくる。2014でそれぞれのページ内を検索してみると、A-TEAM SECURITY LTDの”Winding Up Details”に2014年6月18日に解散したという記述がある。

!c10-18-06-2014

Challenge 11 (ryo-a)

I managed to intercept a message from Tsuzune saying that : "Every channel is compromised, we need to use another radio frequency to communicate, it will be safer. The channel will be 500 Khz above my favourite station. Search in the garden in the させつ。はばとび。はなよめ area and you will find it.". If I can have the right frequency, I'll be able to go forward in my investigation, so find the right channel !!! (format : !c11-666666 : frequency in Khz)

Tsuzuneが安全に通信できる周波数を指定しており、それを探し出すもの。

させつ。はばとび。はなよめ のように突然脈絡のない3単語が出てくるときは、what3wordsという3単語で地点を表すサービスが関わっている可能性が高い。そこでwhat3wordsを開くと、これは神奈川県の逗子市役所を示しているものだった。

https://what3words.com/させつ。はばとび。はなよめ

gardenは何なのか分からないが、逗子市のradio stationと呼べるものを考える。防災無線や公共用無線を考慮し、総務省のサイトを探るも失敗。

favorite stationということでラジオ局なのでは?(防災無線をお気に入りにするのはあまりに狂っているだろう)となり、FMラジオを探すと逗子市のFMラジオ「湘南ビーチFM」の周波数(78.0MHz) + 500kHzが正解だった。

https://www.beachfm.co.jp/

!c11-79400

ちなみに、終了後のDiscordで他チームに聞いてみたところ、"Garden"は Radio Garden というWebサイトを示唆していたらしい。

https://radio.garden/visit/zushi/hQRgzM-X

botが教えてくれる文字列を合体したコマンド!tut3eor4khjabvcvu8ktbv9d3cgp8zを入力すると#grand-duc チャンネルが出現する。このコマンドがOwlmost thereのFLAG。

HEXA{!tut3eor4khjabvcvu8ktbv9d3cgp8z}

Cowl me maybe (200)

(solved by ryo-a)

You got it ! You reached the last rank of his Discord. We explicitly allow you to engage a talk with Pinkerton on the dedicated Discord chanel. Use it wisely...
format : HEXA{you_will_know_this_is_a_flag}

#grand-ducのroleを得るとJulian Pinkertonからの賞賛のメッセージが表示され、”meet-julian”というボイスチャンネルにも入れるようになる。本問では、Pinkertonと実際に音声通話することが求められる。Pinkertonに所定の情報を伝えるとフラグを取得できる。

Congratulations ! You've found every information I needed in my investigations and are now granted the Grand-Duc role. Come and join me in "meet-julian" vocal chanel so we can talk about my main investigation.
But be careful, when you get into the channel, you will have to give me the mail address of the client who triggered the MM mission, otherwise we won't even talk. Be sure to know what to say...

VCに入り、「クライアント」のメールアドレスtsuyo63@proton.me(これは、Decentralizedを解く過程で入手できる)を口頭で伝えると状況説明が行われる。

通話終了後にDMでJulian Pinkertonからフラグが送られてくる。

フラグ受領後、当該のDiscordサーバからはBANされる。

HEXA{P1nk3rton_1s_D3fe4ted}

Category: Sidequest

文字通りのサイドクエストで、おそらくCTF全体のストーリーとは独立している。当チームは1問も解けなかった……。

He is back(300)

UNSOLVED😭

A collegue you haven't seen in a year runs into your office screaming : "IT WAS THE WRONG KERMIT!!!! The one I'm looking for is the third of his name and he had a grandparent who wrote something just after the great war. There is something interesting in his second novel, about the actor he will see to take the role of the main character in a movie theater". He vanishes before you can even open your mouth to talk with him. Maybe you can find the actor he was talking about...
Format : HEXA{name}

(意訳)ある「祖父(原文)が第一次大戦後に何かを執筆した、3世のほうのKermit」が著した2冊目の小説の、メインキャラクターを演じることになるかもしれない役者を答える問題。

この問題におけるKermitと思われる人物は下の2人。

  • Kermit Roosevelt Senior: 作家、軍人。アメリカ大統領セオドアの息子。
  • Kermit Roosevelt Ⅲ(1971-): ↑のひ孫(the third) 。大学教授、弁護士、作家。2022年時点で『In the Shadows of Law』と『Allegiance』の2冊の小説を出版している。
    • 4世として扱われることもあるが、この人から見て父にあたるKermit(Kermit Roosevelt II(III))は特に著名な人物ではないので、問題が指すKermitはこの人物であると思われる。

Kermit Roosevelt達が全員本を著していたこともあって、問題文中の指示語の対象、文節の修飾関係について一通りに確信できず、運営にhelpで尋ねた。「問題文が多義的なのは意図的。でも何か既に方針は立ってるみたいじゃないですか(特にいいとも悪いとも言っていない)」とのこと。

孫Kermitの小説”Allegiance”は、第2次世界大戦中にアメリカで起こった日系人の強制収容を法律の面から扱った小説。

https://www.harvardwood.org/mp201510

これと同名のブロードウェイ舞台があり、その録画は映画として上映されたらしい(なお、これは小説Allegianceが原作だと最初に勘違いしていたが、名前が同じだけの別作品だった)。舞台の主演George Takeiや他の出演者の名前を色々と入れてみたが、その中に正解はなかった。

小説の中には主人公が映画を観るシーンがあるが、その中の役者(Ginger Rogers, Cary Grant)も不正解。

問題文のwillという未来形が引っ掛かり「この人にならメインキャラを演じてほしい」とKermitが語っているか、特定の俳優が「このキャラを演じたい」と発言しているような記事を探したが、ちょろっとGoogle検索で出てくる記事を流し読みしたあとYouTubeでKermitのインタビュー動画を掘って時間を溶かした。敗因:根性

Category: Analysis

CTFの終了数時間前に全員へ公開されたカテゴリ。このカテゴリでは、これまで得てきた情報を整理・統合し、調査した事案や人物についての分析を文章で提出することが要求された。

このとき、日本時間は深夜2時だったため、起きていたメンバー間で連絡を取りながら解答を完成させた。まずGoogle Docsに登場人物と出来事の内容を列挙し、そこから情報を抽出してそれぞれの問題ごとにまとめる手順で解答を作成した。

ストーリーの全容を把握していなければ解答が難しいので、CTFの時間内にAnalysisを提出したチームは上位の一部のチームに限られていた。ただ、全てではなくとも得た情報を提出すれば部分点がもらえていたので、積極的に提出したほうが有益だと感じた。

以下に40548Fチームの解答を転記する。

Mission analysis (300)

It is now clear that Action man is involved with Mastermind, but there are still grey zones in this case... Tell us what you learned about Mastermind's mission to exfiltrate Lucilhe from prison, and what is the benefit for Mastermind. We need you to provide us an analysis, describe the mission as accurately as possible, using the information you have collected during the previous steps of the investigation. If you want to give us a more complete file, send it in a Discord DM to an admin with your team name as filename.

MasterMindのミッションの内容や、MasterMindが得る利益がなにかをできるだけ正確にまとめる設問。

(Our answer: 300 points / 300)

This mission was initiated in 2022 on an order by Yokoyama Tsuzune. The objective is to abduct Lucilhe Dumarquiais while she is being transferred from prison to court and to drop her at a certain location to complete the mission.
The reason for abducting Lucilhe is that Tsuzune needs her skills. They were also ordered to kill her if they are arrested during the transfer.

While MasterMind does not receive any money in return, they will be able to get help from Yokoyama Tsuzune when they need it.

On 30 November 2022, Lucilhe was abducted in France while in transit (from a prison to a court); on 15 December, Action Man (Oleg Vokolski) and Lucilhe were flown from a safe house in Paris to Payerne, Switzerland. The aircraft was operated by Fly 7 Executive Aviation, call sign FSF145P and the aircraft was registered as OH-EVE.

In Zurich, Switzerland, the team was joined by Minca H and someone called L.N. (probably Lian Nussbaumer) and had a Meeting at a restaurant called Kaufleuten on 16 December. The team then traveled by train from Zurich to Cadenazzo.

The team then hid out in a safehouse in Chania, Greece. They then traveled from Heraklion International Airport (which is located east of the safehouse) to Singapore International Airport and hid in Hougang, Singapore. He then traveled by car to Johor Bahru, Malaysia.

They then went into hiding in a mosque called Masjid Abdul Rahman Limbong. They are planning to use cars and boats to travel to their final destination from the mosque.

(和訳)

本作戦は、2022年にYokoyama Tsuzuneによる依頼を受けて開始した。Lucilhe Dumarquiaisが刑務所から法廷に移送される間に拉致し、とある場所でLucilheをdropすればミッション完了である。
Lucilheを拉致する理由はTsuzuneが彼女の技能を必要としているからである。もし移送中に逮捕された場合、Lucilheを殺すことになっている。

MasterMind側は金銭の見返りは得ない一方で、必要なときにはYokoyama Tsuzuneの手助けを得られる。

2022年11月30日に、移送中のLucilheがフランスにて拉致された。12月15日には、Action Man(Oleg Vokolski)とLucilheがパリのセーフハウスからスイスのPayerneへ航空機で移動した。この航空機はFly 7 Executive Aviationによって運航されており、コールサインはFSF145P、機体はOH-EVEとして登録されていた。

スイスのZurichではMinca HやL.N.という人物(おそらくLian Nussbaumer)が合流し、12月16日にKaufleutenというレストランでMeetingを行った。その後、チームはZurichからCadenazzoまで電車で移動した。

その後、ギリシャのChaniaにあるsafehouseに潜伏した。そして、その東にあるイラクリオン国際空港からシンガポール国際空港に移動し、シンガポールのHougangで隠れた。その後、車でマレーシアのジョホールバルに移動した。

その後、Masjid Abdul Rahman Limbongと呼ばれるモスクに潜伏した。車とボートを使って最終目的地まで移動することを計画している。

Action man analysis (400)

Congratulations, we managed to intercept them. We sent you the operation report. Lucilhe is so scared that Action man tried to kill her, she will not talk to us... And Action man is used to police interrogation... It will be more complicated that it seems... We need to find the best lever to make him talk, so gather as much information as you can about him. We need you to provide us an analysis, describe the character as accurately as possible, using the information you have collected during the previous steps of the investigation. If you want to give us a more complete file, send it in a Discord DM to an admin with your team name as filename.


問題に添付されていた画像

“Action Man”と呼ばれる人物について集めた情報をまとめる設問。

(Our answer: 230 points / 400)

A man of Polish descent, known as "Złodziej cieni" for a string of robberies in the 1990s. He was arrested in 2000 but escaped. His whereabouts are being sought by Interpol.

He has a daughter, Olga Vokolska. She is called “little sparrow”.

(和訳)

ポーランド系の男性。1990年代に強盗を繰り返し、"Złodziej cieni"として知られていた。2000年に逮捕されたが逃亡した。インターポールに行方を追われている。

Olga Vokolskaという娘がおり、彼女は”little sparrow”と呼ばれている。

Associate analysis (400)

It seems that the lawyer has a long-time associate. We are not able to make a sketch of her at the moment. Please give us every physical information you have about her, as precisely as possible. We need you to provide us an analysis, describe physically the character, as accurately as possible, using the information you have collected during the previous steps of the investigation. If you want to give us a more complete file, send it in a Discord DM to an admin with your team name as filename.

“Associate”と呼ばれる人物について、身体的な特徴の情報をまとめる設問。

(Our answer: 170 points / 400)

187cm tall. Slavic. Wavy red hair. Wearing venetian eyeglasses.

(和訳)

身長187cm。スラブ系。ウェーブのかかった赤毛。venetian eye glassesを着用。

Mastermind analysis (400)

We need you to inventory every member of Mastermind. Tell us their name and how they are involved in Mastermind missions. If the piece of information is available, tell us what role they are playing in the organization. We need you to provide us an analysis using the information you have collected during the previous steps of the investigation. If you want to give us a more complete file, send it in a Discord DM to an admin with your team name as filename.

犯罪組織Mastermindについて集めた情報から、メンバーの名前とミッションへの関わり、可能なら組織で果たした役割をまとめる設問。

(Our answer: 340 points / 400)

## Members

- Lian Nussbaumer
- Minca H
- Oleg Vokolski
- Olga Vokolska

## Roles in Mastermind
### Lian Nussbaumer

He works as a lawyer in Zurich, Switzerland. He is the representative of
The law firm “Nelexat”. He hides Mastermind information on the Nelexat
website.
In the mission called “Bruised Rogue”, he prepared a schedule for a meeting
to be held in Zurich on 16th December. It is suspected that he met with
other members of Mastermind to discuss the escape of Lucilhe Dumarquiais.

### Minca H

Businesswoman based in UK. She has visited Mauritius in November 2022.
According to a friend of Pinkerton, she may wanted to sign a contract with
“the A-team”.
She may have prepared passport photos and aircraft for Lucilhe Dumarquiais
and Oleg Vokolski, who was hiding in Paris on 14th December. Then she
attended the “meeting” with MasterMind members in Zurich, Switzerland on
16th December.
She is also presumed to have called Lian on her mobile phone from Chelsea,
London, during the investigation into Lucilhe's escape. She asked about the
situation regarding the "package" and that some prices would be dropping
shortly.
According to Pinkerton, she is the leader of Mastermind.

### Oleg Vokolski

He is the “Action man” of Mastermind. He is supposed to have been with
Lucilhe during her escape. While attempting to shoot Lucilhe with a tokarev
pistol, he explained that he would "make any sacrifice to protect my little
sparrow." The "little sparrow" may refer to Olga Vokolska.

### Olga Vokolska

She developed a website for a law firm called Nelexat, which was used for
activities of Mastermind.

(和訳)

## メンバー
- Lian Nussbaumer
- Minca H
- Oleg Vokolski
- Olga Vokolska

## Mastermindでの役割
### Lian Nussbaumer

スイスのチューリッヒで弁護士として働いている。弁護士事務所“Nelexat”の代表。Nelexatの
Webサイトに、MasterMindのOnionサイトやミッションに関する情報を隠している。
Bruised Rogueと呼ばれたミッションでは、12月16日にチューリッヒで行われた会議の予定を
立てた。この会議とは、MasterMindのメンバーが集ってLucilhe Dumarquiaisの逃亡について
情報共有したものではないかと疑われる。

### Minca H

英国のビジネスウーマン。2022年11月にモーリシャスを訪れていた形跡がある。Pinkertonの友人
によると、"A-team"と契約したいと発言していた。
12月14日、パリに潜伏していたLucilhe DumarquiaisとOleg Vokolskiのためにパスポート用の
写真と航空機を用意したとみられる。12月16日、Mastermindとの「会議」に出席した。Lucilheの
逃亡事件の捜査中、ロンドンのChelseaから携帯電話でLianに電話をかけてきたのも彼女と推定され
る。何らかの価格がまもなく下落することと、「荷物」について状況を尋ねる内容であった。
Pinkertonによれば、Mastermindのリーダーである。

### Oleg Vokolski

Mastermindで”Action man”の役割だった人物。Lucilheの逃亡中、共に行動していたと考えられ
る。捜査員たちが突入した際、Lucilheをトカレフ拳銃で撃とうとしながら「my little sparrow
を守るためにどんな犠牲も払う」と説明した。”little sparrow”はOlga Vokolskaを意味して
いると思われる。

### Olga Vokolska

Mastermindの活動に使われていた、弁護士事務所NelexatのWebサイトを開発した人物。

参考

問題間の依存関係図(運営のTheBaboon氏より、Discordにて公開された。Write-upへの転載は許可を得ている。)

参加記

ryo-a (captain)

Open xINT CTFに引き続き、2回目のOSINT CTF参戦です。xINTでの3名編成(ryo-a, blackwasan, kn1cht)に加え、今回はDiffuseにも参加してもらいました。忙しい中、時間を割いて参加してくれた皆さん、本当にありがとうございました。このメンバーで海外CTFに挑み、成果を残せたことを本当に光栄に思います。

HEXAはxINTに比べて前回のwrite-upが少ないこともあり、事前情報の入手に難航しました。

https://maltemo.github.io/write-ups/HexaCTF_2021_OSINT_Rapport_crit.html

こちらのwrite-upより、事前に写真問題があることは判明していたため、GEOINTを得意とする我々はまずこれから片付けていこうということをkn1chtと話していました。しかし、実際には問題が一度に出てくるわけではなく、少し進めるごとにアンロックされる形態だったので苦手な問題から扱わねばならないケースも多々発生していました。今後は分野を問わず、自信を持って戦えるようになっていきたいです。

40548Fでは「あまり気負わず、楽しくゆるくOSINTをやっていこう」ということをモットーに掲げており、今回も48時間フルでの参加は義務づけていませんでした。メンバー全員で集中して作業していたのは日曜日が中心となります。実際、私が参戦したのも日本時間土曜の午後からです。また、土曜~日曜の間で睡眠はしっかり取っています。健康第一です。

チーム運営・作業スタイルはxINTの際とほぼ同様です。Discordで密に連携を取りつつ、Google Docsで随時情報をdumpしていました。

kn1chtがネットワークやCrypto関係で強さを発揮し、blackwasanが地域を問わずGEOINTで安定した成果を出し、Diffuseが初参加と思えないほどバランス良く問題を進めてくれたおかげで今回の結果が得られたと思います。チーム内の分担が出来たことも非常に良かった点だと思います。

引き続き、気楽にOSINT CTFを楽しんでいければと思います。また、今回はフランスのCTFということもあり、相対的に日本勢は少なかったのですが、次回以降は日本勢が増えることを楽しみにしています。


図:土曜日に池袋で映画館の椅子を取り外している様子を取材されたryo-a。取り外した後に帰宅し、CTFに参加した。

kn1cht

初日の土曜日に外出する用事があったので、48時間のうち最初の15時間ほどが経過してから本格的に参加しました。土曜日の朝はチーム内で私が最初に起きたため、最初の方のすぐ解ける問題(The law firmと Hijacking)に解答しました。日中は、問題を解いていたチームメイトに時々Discordでアドバイスしていました。

夜、帰宅してからryo-aさんが詰まっていたSSIDの問題(Tell me owl your secretsのChallenge 8)やTrustworthyを解いていきました。寝る前にFinal Countdownに必要な地図情報を見つけたので、チームのDiscordにアップロードして就寝しました。

日曜日は、前の晩見つけたヒントをもとに解けそうだった問題から解いていき、各カテゴリを少しずつ進めました。Owlmost thereで出された3問のうちChallenge 10だけ、土曜日の夜から誰も解けていなかったのですが、日曜日の夕方になって突然ひらめいて解答できました。その後Decentralizedを解いて以降はどの問題も解けない状況が続きました。最後の数時間でAnalysisカテゴリに回答できるようになったので、回答作成作業を手伝ってCTFを終えました。

この前に出たOpen xINT CTF 2022から引き続き、チームメイトとしっかり情報共有したことで正答に結びついた問題が多数ありました。ネットワークや暗号通貨、Torなど自分が知識を持っている分野についてはチームにしっかり貢献することができて良かったと感じています。

Diffuse

OSINTド初心者です。割と直前にryo-aに誘われたこともあり、このチームの中でできることがあるとは思っていなかったので、予想以上に頭を使う余地があって楽しかったです。前日金曜日23:59が卒論の締切でした。
土曜昼ごろ(JST)からゆるっと参加してGeoGuessr問やSNS問など、根性と試行回数で突破できそうなところを進めました。土曜深夜にHe is Back, Alias, Programming, Owlmost there - Challenge10を抱えて就寝し、結局翌日に突破できたのはProgrammingのみでした。あとはPinkertonのめちゃくちゃ鈍った英語を聞き取ったりしました。やれそうな問題を回してもらって感謝。

交通やインターネットが絡むと手も足も出なくなるのでwriteupを見て精進します。
Joseph Gordon-Levittはかなり好きな俳優なので、切羽詰まった場合に悪あがきする価値が意外とあることを学びました(未solve)。

blackwasan

Open xINT CTF 2022に引き続き本チームとしては2回目の参戦です。土曜日は夜に北海道から東京へ移動しそのままOSINTというハードスケジュールになりました。

普段はGeo系問題をやっているので、探偵モノが多い今大会は中々手強い問題が多い印象でした。最初に解いたTank Engineは外国の鉄道ネタで、地名は不慣れなものばかりでしたが、現地鉄道会社のアプリを使うという謎技を使って正解しました。この頃には日付が変わって日曜になっており、一旦就寝となりました。翌朝(昼とは言っていない)から再度挑戦し、同じく場所特定問であるContractを(割と運ではありますが)解くことが出来ました。その後は易問のSetupを解いて、He is backやAliasが解けずにうんうん唸っている内に終わってしまいました。

今回も例によって国内最強のOSINTerであるryo-a、kn1cht始めメンバーの皆さんに尽力いただいたおかげで世界(?)Top10入りを果たすことが出来ました。ありがとうございました。

Discussion