[TryHackMe] Advent of Cyber 2, Day 1 - Walkthrough -

本稿では、[TryHackMe](https://tryhackme.com/)にて提供されている「[Advent of Cyber 2](https://tryhackme.com/room/adventofcyber2)」ルームに関する攻略方法（Walkthrough）について検証します。
「Advent of Cyber 2」は「free room」（無料）で提供されています。購読を必要とせずに仮想マシンを「展開（Deploy）」することができます。

>『Advent of Cyber 2』のWalkthroughインデックスを「[[TryHackMe] Advent of Cyber 2に参加してみた](https://qiita.com/v_avenger/items/ac9092374e5bf16a2dd0)」にて公開しました。

# [Day 1] Web Exploitation: A Christmas Crisis
## ストーリー
![クリスマスの危機.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/5a6c365d-31e0-3531-e5d1-049f64ddb476.png)

>*"The Best Festival Company"の新しいOpenVPNサーバーがハッキングされた。これは危機的状況です!
>攻撃者は社内インフラストラクチャの様々な箇所に損害を与えました -- `Santa's Christmas Control Centre`を使用し、組み立てラインを停止させたこともその一つです！
>クリスマスまで残りわずか24日。ラインを稼働させなければ、プレゼントがありません!
>あなたは"Santa"のアカウントを取り戻し（パスワードを変更したハッカーを蹴散らせ！）、組み立てラインを再稼働させなければなりません。さもなくれば、クリスマスが台無しになります！*

## Day 1 - #1.
>Deploy your AttackBox (the blue "Start AttackBox" button) and the tasks machine (green button on this task) if you haven't already. Once both have deployed, open FireFox on the AttackBox and copy/paste the machines IP into the browser search bar.

まずは、`Santa's Christmas Control Centre`にアクセスします。`[Deploy]`ボタンをクリックします。
ブラウザにて割り振られたIPアドレスにアクセスします。`Christmas Control Centre`のログイン画面が表示されます。
![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/75076211-a209-1dec-4119-93a458704778.png)

初回アクセス時には、アカウントを登録します。ここでは`vavenger:p@33w0rd`を指定し、`Register!`ボタンをクリックします。
登録したアカウントでログインを試みます。`[VIEW CONSOLE]`画面に遷移します。
![Christmas_Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/10470ee5-ea3e-efb5-ff31-28adef30efc0.png)

## Day 1 - #2.
>What is the name of the cookie used for authentication?

ブラウザとして`Firefox`を使用しています。`開発ツール`を起動します。キーボードショートカットは`Ctrl + Shift + I`です。
`[Storage]`タブを選択します。コンソール左側の`[Cookies]`メニューを選択します。`[Name]`列に注目します。
![cookie.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/306d1fbd-8bc7-0e78-eaec-950380f6c9e3.png)

## Day 1 - #3.
>In what format is the value of this cookie encoded?

Cookieの値をコピーします。

```
auth:"7b22636f6d70616e79223a22546865204265737420466573746976616c20436f6d70616e79222c2022757365726e616d65223a22766176656e676572227d"
```

[CyberChef](https://gchq.github.io/CyberChef/)の`[Magic]`レシピを使って判定します。
![hexdump.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/b0d2060b-b316-7361-7921-d5ae80a473da.png)

`Hexdump`（16進ダンプ）と判定されました。解答は「**16進数**」の英語表記です。

## Day 1 - #4.
>Having decoded the cookie, what format is the data stored in?

CyberChefによって得られた結果は次のとおりです。

```
{"company":"The Best Festival Company", "username":"vavenger"}
```

`{ ... }`の中に、変数名と値がコロン(`:`)で区切られています。また、カンマ(`,`)で連結され、複数の変数名と値のペアが指定されています。
すなわち、「**JavaScript Object Notation**」です。解答は短縮表記です。

## Day 1 - #5.
>What is the value of Santa's cookie?

`username`を`santa`に変更します。

```
{"company":"The Best Festival Company", "username":"santa"}
```

この値を`CyberChef`の`[To Hex]`レシピを使って変換します。このとき、`Delimiter`は`None`を指定します。
![cyberchef.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/1e2787d5-5a42-f60b-dc90-244a5df8620f.png)

次の値が得られました。

```
7b22636f6d70616e79223a22546865204265737420466573746976616c20436f6d70616e79222c2022757365726e616d65223a2273616e7461227d
```

## Day 1 - #6.
>What is the flag you're given when the line is fully active?

「**Cookieの改ざん**」によって、`Christmas Control Centre`の認証をバイパスすることを検討します。
登録したアカウント`vavenger:p@33w0rd`でログインします。`Firefox`の`開発ツール`を起動します。
`[Storage]`タブを選択します。コンソール左側の`[Cookies]`メニューを選択します。
`[Value]`の項目をダブルクリックします。これによりCookieの値を編集することができます。
`"username":"santa"`にて生成した値と置き換えます。
![Browser Developer Tools.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/b7142590-496d-03a7-6ab3-dfb1278e4e80.png)

ページを再読み込みします。`[VIEW CONSOLE]`画面から`[CONTROL CONSOLE]`画面に遷移したことが確認できます。
![control_console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/8fc1bbf4-37f8-ec44-e1e2-ee926526e9aa.png)

すべての`Control`における`Active?`を`Yes`に変更すると、フラグが表示されます。
これにて、組み立てラインの再稼働に成功しました。

1日目のミッションが終了です。

# 参考になるTryHackMeのルーム
- [Introductory Networking](https://tryhackme.com/room/introtonetworking)
- [Web Fundamentals](https://tryhackme.com/room/webfundamentals)

# Walkthrough
- Constant Vigilance, [Christmas Crisis - web exploitation](https://www.wclaymoody.com/blog/tryhackme-adventofcyber-2020/#day-1), フラグ取得までを自動化したPythonコード
- BRYAN WENDT, [TryHackMe – Advent of Cyber 2 – Day 1 – Walkthrough](https://bryanwendt.wordpress.com/2020/12/01/tryhackme-advent-of-cyber-2-day-1-walkthrough/)
- NEERANJAN MURUGAN, [Advent of Cyber 2 ~ Try Hack Me](https://neeranjan.com/advent-of-cyber-2-try-hack-me/)