Try Hack Me: Sakura Room Writeup

この記事は [グロービス Advent Calendar 2023](https://qiita.com/advent-calendar/2023/globis) の 16 日目の記事です。

## はじめに

こんにちは。グロービスの [nabeen](https://twitter.com/_nabeen) です。普段は [GLOPLA LMS](https://glopla.globis.co.jp/) というプロダクトの開発をしています。

業務ではフロントエンドを中心に担当していますが、プライベートでは Cyber Security 関連の学習をしていることが多く、今期の始め頃から Hack The Box Academy[^htb] の Bug Bounty Hunter の Path をゆるーく続けています。x 年後に CISSP とか OSCP とかを取れればいいなと思っています。

技術で殴るセキュリティも楽しくていいですが、人間が一番脆弱性を抱えているぞ...ということで、Try Hack Me[^thm] で公開されている CTF[^ctf] 問題の中から、ジャンルとしては OSINT[^osint] の Writeup[^writeup] をやっていきます。

[^htb]: サイバーセキュリティーを学習できるプラットフォームです。Hack The Box の姉妹プロダクトで、Hack The Box が実践的にスキルを高めていくのに対し、Hack The Box Academy はスキル毎にカリキュラムが組まれており、体系的に知識をつけていけるように作られています。 https://academy.hackthebox.com/
[^thm]: Hack The Box と同じく、サイバーセキュリティーを学習できるプラットフォームです。Hack The Box Academy のようにスキル毎にカリキュラムが組まれているので、こらちも同じく体系的に知識をつけていくことができます。個人的な感想ですが、初めてサイバーセキュリティを学ぶのであれば、Try Hack Me の方がとっつきやすいと思います。 https://tryhackme.com/
[^ctf]: Capture The Flag。所謂セキュリティコンテストです。国内だと SECCON が有名ですね。ほぼ毎週何かしらのコンテストが開催されているので、興味を持たれた方はぜひ参加してみてください。 https://ctftime.org/calendar/
[^osint]: Open-Source Intelligence。合法的に入手できる情報を使って調べる手法です。 https://ja.wikipedia.org/wiki/オープン・ソース・インテリジェンス
[^writeup]: コンテストで出題された問題の解答プロセスや解析手法を詳細に説明したもののことを指して、Writeup と呼んでいます。今回対象とした Sakura Room もたくさんの方が Writeup を書かれているので、ぜひ探してみてください。ただ、Writeup の公開が禁止されている CTF もあるため、実際に自身で公開する場合には注意が必要です。

## 対象Room

https://tryhackme.com/room/sakura

## TIP-OFF

> What username does the attacker go by?

画像が与えられているので、それを解析してやれば何かしら出てきそうです。こういう系統の問題では珍しくSVGなので、エディタで見てもわかりそうですが`exiftool`を使うのが常套手段なので、`exiftool`で情報を見ていきます。

```bash
$ exiftool sakurapwnedletter.svg        
ExifTool Version Number         : 12.16
File Name                       : sakurapwnedletter.svg
Directory                       : .
File Size                       : 830 KiB
File Modification Date/Time     : 2023:11:29 00:24:50+09:00
File Access Date/Time           : 2023:11:29 00:24:50+09:00
File Inode Change Date/Time     : 2023:11:29 00:25:31+09:00
File Permissions                : rw-r--r--
File Type                       : SVG
File Type Extension             : svg
MIME Type                       : image/svg+xml
Xmlns                           : http://www.w3.org/2000/svg
Image Width                     : 116.29175mm
Image Height                    : 174.61578mm
View Box                        : 0 0 116.29175 174.61578
SVG Version                     : 1.1
ID                              : svg8
Version                         : 0.92.5 (2060ec1f9f, 2020-04-08)
Docname                         : pwnedletter.svg
Export-filename                 : /home/SakuraSnowAngelAiko/Desktop/pwnedletter.png
Export-xdpi                     : 96
Export-ydpi                     : 96
Metadata ID                     : metadata5
Work Format                     : image/svg+xml
Work Type                       : http://purl.org/dc/dcmitype/StillImage
Work Title                      :
```

`Export-filename`の項目を見ると、ユーザー名が`SakuraSnowAngelAiko`であることがわかります。

A. `SakuraSnowAngelAiko`

## RECONNAISSANCE

> What is the full email address used by the attacker?

次は、ユーザーの Email を探し当てていきます。

`SakuraSnowAngelAiko`で Google 検索をかけると、以下の GitHub ユーザーがヒットします。同名なので、ほぼ間違いなさそうです。

https://github.com/sakurasnowangelaiko

リポジトリがいくつかあるので、調査しやすいように片っ端からローカルに`clone`してきます。

```bash
$ git clone https://github.com/sakurasnowangelaiko/PGP.git
$ git clone https://github.com/sakurasnowangelaiko/ETH.git
$ git clone https://github.com/sakurasnowangelaiko/IO.git
```

commit ログに Email があることを期待して、ログを漁ってみます。

```bash
$ git log
commit df43e6813e861a01fe3a9996214b01fe5e95c81c (HEAD -> main, origin/main, origin/HEAD)
Author: sakurasnowangel <77871458+sakurasnowangel@users.noreply.github.com>
Date:   Fri Jan 22 21:00:26 2021 -0800

    Create publickey
```

残念、GitHub の noreply である`77871458+sakurasnowangel@users.noreply.github.com` が使われており、これは欲しい情報ではなさそうです。他のリポジトリの commit ログも同じでした。

気を取り直してリポジトリを回遊してみると、`https://github.com/sakurasnowangelaiko/PGP/blob/main/publickey`に鍵が commit されていることがわかります。リポジトリ名が PGP なので、`gpg`でなにかわかりそうです。

```bash
$ gpg publickey 
pub   rsa3072 2021-01-23 [SC] [expired: 2023-01-22]
      A6519F273BF88E9126B0F4C5ECDD0FD294110450
uid           SakuraSnowAngel83@protonmail.com
sub   rsa3072 2021-01-23 [E] [expired: 2023-01-22]
```

ビンゴですね。

A. `SakuraSnowAngel83@protonmail.com`

> What is the attacker's full real name?

これはいくら探しても見つからず...後続タスクに出てくる X（Twitter）アカウントから推測できるくらいで、確証が持てるものがありませんでした:frowning2:

他の方の Writeup を読んだところ、現在はアカウントがなくなってしまっていますが、本来は、以下の Linkedin ユーザーが存在したようです。サービス側の影響で課題用に作られたアカウントが無くなっているのは OSINT 問題でたまにありますね。OSINT は鮮度が命。

https://www.linkedin.com/in/sakurasnowangelaiko/?originalSubdomain=jp

A. `Aiko Abe`

## UNVEIL

> What cryptocurrency does the attacker own a cryptocurrency wallet for?

先程 clone してきたリポジトリに ETH というリポジトリ名のものがあったので、Ethereum だと推測できます。

A. `Ethereum`

> What is the attacker's cryptocurrency wallet address?

リポジトリ内のファイルを見ても取れそうな情報がなかったので、commit ログを漁っていきます。

```bash
$ git log -p            
commit d507757d5d2208d0124783a8a670239ce19b806c (HEAD -> main, origin/main, origin/HEAD)
Author: sakurasnowangel <77871458+sakurasnowangel@users.noreply.github.com>
Date:   Sat Jan 23 12:45:39 2021 -0800

    Update miningscript

diff --git a/miningscript b/miningscript
index 8f653cc..ac483bc 100644
--- a/miningscript
+++ b/miningscript
@@ -1 +1 @@
-stratum://0xa102397dbeeBeFD8cD2F73A89122fCdB53abB6ef.Aiko:pswd@eu1.ethermine.org:4444
+stratum://ethwallet.workerid:password@miningpool:port

commit 5d83f7bb37c2048bb5b9eb29bb95ec1603c40135
Author: sakurasnowangel <77871458+sakurasnowangel@users.noreply.github.com>
Date:   Sat Jan 23 12:44:57 2021 -0800

    Create miningscript

diff --git a/miningscript b/miningscript
new file mode 100644
index 0000000..8f653cc
--- /dev/null
+++ b/miningscript
@@ -0,0 +1 @@
+stratum://0xa102397dbeeBeFD8cD2F73A89122fCdB53abB6ef.Aiko:pswd@eu1.ethermine.org:4444
```

最初の commit で露出していますね。

A. `0xa102397dbeeBeFD8cD2F73A89122fCdB53abB6ef`

> What mining pool did the attacker receive payments from on January 23, 2021 UTC?

ウォレットのアドレスから入出金がわかるサイトがあるので使っていきます。今回は僕が昔利用していた Etherscan を利用しました。他にも同様のサイトはあるので、お好みで。

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

順当に対象の日付の取引を探せばOKです。

A. `Ethermine`

> What other cryptocurrency did the attacker exchange with using their cryptocurrency wallet?

これも取引を漁ればわかるので割愛。

A. `Tether`

## TAUNT

> What is the attacker's current Twitter handle?

画像が与えられているので `@AikoAbe3` のアカウントを X（Twitter）を検索してみます。すると以下の Post がヒットします。与えられていた画像と同じアイコンなので、これで間違いなさそうです。

https://twitter.com/SakuraLoverAiko/status/1355364359090757635

A. `SakuraLoverAiko`

> What is the URL for the location where the attacker saved their WiFi  SSIDs and passwords?

該当ユーザーの Post を見てみると、何やら怪しい Post が目に付きます。AP について言及されているので、これを起点に探して行けば良さそうですが、ここから先はダークウェブの世界のようです。

https://twitter.com/SakuraLoverAiko/status/1581118838086979584

ダークウェブに関しては門外漢なのでヒントを見てみると、サイト自体は Deep Paste というところで、Tor 経由であればアクセスできるのかな？と思いましたが、そもそも探し方があんまりわからない...。今回はヒントの画像を利用させてもらいました:sweat:

A. `http://deepv2w7p33xa4pwxzwi2ps4j62gfxpyp44ezjbmpttxz3owlsp4ljid.onion/show.php`

> What is the BSSID for the attacker's Home WiFi?

前問題より、Home WiFi の SSID が `DK1F-G` だと判明しているので、WiGLE を使って検索していきます。登録の必要はありますが、WiGLE の Advanced Search で SSID から引くことができます。

https://wigle.net/

A. `84:AF:EC:34:FC:F8`

## HOMEBOUND

> What airport is closest to the location the attacker shared a photo from prior to getting on their flight?

飛行機に乗る前...ということで、この写真がどこか？がわかれば良さそうです。

https://twitter.com/SakuraLoverAiko/status/1353471045148110848

なるほど全然わからないですね。桜なので日本！と言いたいところですが、日本ではなさそうです。GeoGuessr[^geoguessr] ガチ勢であれば秒殺出来そうですが、素直に Google で画像検索をしてみます。全体を写したものだと桜の主張が強すぎて日本っぽいものばっかりがヒットしてしまうので、建物だけ、とか背景だけ、とか色々トリミングしながら探してみます。

[^geoguessr]: Google のストリートビューからそれがどこかを当てるゲームです。上位ランカーのプレイ動画を見ると、信じられないくらいの速度で正解していきます。 https://www.geoguessr.com/

めちゃくちゃ時間を溶かした結果、どうやら後ろにうっすら写っているのが、ワシントン記念塔のようです。

https://ja.wikipedia.org/wiki/%E3%83%AF%E3%82%B7%E3%83%B3%E3%83%88%E3%83%B3%E8%A8%98%E5%BF%B5%E5%A1%94

あとは Google マップで最寄りの空港を探すと、ロナルド・レーガン・ワシントン・ナショナル空港が見つかります。

A. `DCA`

> What airport did the attacker have their last layover in?

次はこのJALのラウンジがどこか？です。

https://twitter.com/SakuraLoverAiko/status/1353717763097899010

これも同じく Google で画像検索をしていきます。空港のラウンジなんて国で変わるのか不明ですが、画像検索の結果と、あとは X（Twitter）のタイムラインから、羽田っぽさを感じたので、羽田でファイナルアンサー。

A. `HND`

> What lake can be seen in the map shared by the attacker as they were on their final flight home?

次はこの湖を探していきます。

https://twitter.com/SakuraLoverAiko/status/1353733617487241217

GeoGuessr はやっていませんが、これはさすがにわかります。間違いなく日本です。左に佐渡島もしっかり写ってますね。ただ福島のこの湖の名前までは知らなかったので、素直に Google マップに頼ります。

A. `Inawashiro Lake`

> What city does the attacker likely consider "home"?

日本が home だということはここまででわかりますが、具体的な都市名まではわかっていません。経路を考えると、羽田から北のほうに向かっているので、東北から北海道あたりであることは間違いなさそうです。

改めて今までの情報を見てみると、Deep Paste の City Free WiFi に`HIROSAKI_FREE_Wi−Fi`と書いてあるのが見つかります。`HIROSAKI` = 青森県弘前市だと考えると、もともと推測していた東北-北海道間とも一致するので、これで間違いなさそうです。

A. `Hirosaki`

## おわりに

Web のソフトウェアエンジニアをやっていると、CTF のジャンル的には Web や Crypto あたりが比較的とっつきやすいですが、OSINT をやると、どこからどうやって情報が特定されていくかを肌で感じることができるのでオススメです。

Happy Coding！ :)

## 採用情報

グロービス = みんなカチッとしたスーツを着ているお堅い企業（※僕の入社前のイメージです）と思われがちですが、比較的自由にやらせてもらっています。全方位で募集しているので、興味のある方はぜひ :muscle:

https://recruiting-tech-globis.wraptas.site/

https://speakerdeck.com/globis_gdp/introduction-to-glopla-lms-globis-saas-for-engineers