【TryHackMe】Biohazard：Walkthrough

# 概要

TryHackMe「Biohazard」のWalkthroughです。

https://tryhackme.com/r/room/biohazard

# Task1

## **Q2**.*How many open ports?*

ポートスキャンを実行します。

```
$ nmap -Pn -T4 -sVC -A -p- 10.10.115.227 -oN nmap_result
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 c9:03:aa:aa:ea:a9:f1:f4:09:79:c0:47:41:16:f1:9b (RSA)
|   256 2e:1d:83:11:65:03:b4:78:e9:6d:94:d1:3b:db:f4:d6 (ECDSA)
|_  256 91:3d:e4:4f:ab:aa:e2:9e:44:af:d3:57:86:70:bc:39 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Beginning of the end
```

ポートの稼働状況が分かりました。

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|21|ftp|vsftpd 3.0.3|
|22|ssh|OpenSSH 7.6p1|
|80|http|Apache httpd 2.4.29|

**A**.**3**

## **Q3**.*What is the team name in operation*

`80`番ポートにアクセスし、Webサイトを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/9b969453-ecb7-5017-a02a-f9f8de1ec8b6.png)

**A**.**STARS alpha team**

# Task2

## **Q1**.*What is the emblem flag*

`/mansionmain`が分かったのでアクセスし、ソースコードから`/diningRoom`を発見しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/73d5cb8f-5642-54ce-95fc-1046f15386b3.png)

`Yes`のリンクがあるのでクリックするとフラグを入手できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b572df63-20df-56e0-c4f8-d5e9497dac33.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/1020509c-82d2-1fbf-e00c-8a94bebc44df.png)

**A**.**emblem{fec832623ea498e20bf4fe1821d58727}**

## **Q2**.*What is the lock pick flag*

再度`/diningRoom`へアクセスするとコメントアウトから文字列を入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/bc8dde6b-a86b-7fbe-3dfa-a69a5e5e6a63.png)

`base64`でデコードすると`/teaRoom/`パスを発見しました。

```
$ echo "SG93IGFib3V0IHRoZSAvdGVhUm9vbS8=" | base64 -d      
How about the /teaRoom/
```

`/teaRoom/`へアクセスすると、`/teaRoom/master_of_unlock.html`パスを発見しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/bc19f208-c942-dd36-50e1-7c9c68062f16.png)

`/teaRoom/master_of_unlock.html`へアクセスし、フラグを入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/1d61fe32-5f50-fd3a-daca-8d07308839e8.png)

**A**.**lock_pick{037b35e2ff90916a9abf99129c8e1837}**

## **Q3**.*What is the music sheet flag*

`/teaRoom/`ページから`/artRoom/`パスを発見したのでアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d262e751-2916-b30c-c988-60114c2fb155.png)

`YES`のリンクを踏むとルートのマッピングページへ遷移しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b8693e03-f76e-2cb5-9f05-c363b81ef663.png)

`/barRoom/`へアクセスすると`lockpick`のフラグが求められたので、先ほど入手したフラグを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/bcce93fa-f313-15ad-912d-b85ea4d1a3ca.png)

新たなページに遷移しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/33885874-05a4-f9f1-c4f0-d921d300dc8e.png)

`READ`のリンクを踏むと文字列を得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/166801e5-2cc5-1721-652b-53c945b94b3f.png)

`base32`でデコードするとフラグを入手できました。

```
$ echo "NV2XG2LDL5ZWQZLFOR5TGNRSMQ3TEZDFMFTDMNLGGVRGIYZWGNSGCZLDMU3GCMLGGY3TMZL5" | base32 -d
music_sheet{362d72deaf65f5bdc63daece6a1f676e}
```

**A**.**music_sheet{362d72deaf65f5bdc63daece6a1f676e}**

## **Q4**.*What is the gold emblem flag*

**Hint**.*You thought there is only one slot?*

`Bar room`ページに`music_sheet`フラグを入力すると`Secret bar room`ページに遷移しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/0f173502-226a-e97b-e163-1a00f05afddf.png)

`YES`のリンクを踏むとフラグを入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/fe8b9d1e-07d6-efda-01bf-8a4c822a91d4.png)

**A**.**gold_emblem{58a8c41a9d08b8a4e38d02a4d7ff4843}**

## **Q5**.*What is the shield key flag*

**Hint**.*Blaise de Vigenère*

`Secret bar room`ページを更新すると入力フォームが表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/0404022f-6042-120c-b9e9-d21440545621.png)

`gold_emblem`フラグを入力しましたが、正解ではないようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/bf18f51c-caf9-d96c-5120-4c23d40351ea.png)

`/diningRoom/`へアクセスし、`gold_emblem`フラグを入力すると暗号化された文字列が表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b06fd67a-320a-c1bb-e5c8-1946c933c929.png)

`Vigenere`暗号がヒントから分かっているので復号します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/41b3d6c3-1b65-2708-0345-c1cdcdaf38fc.png)

`/diningRoom/the_great_shield_key.html`へアクセスし、フラグを入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/0703c69e-acec-5a26-8ce4-c4869592735c.png)

**A**.**shield_key{48a7a9227cd7eb89f0a062590798cbac}**

## **Q6**.*What is the blue gem flag*

**Hint**.*Check the source*

`/diningRoom2F/`へアクセスし、ソースコードから文字列を得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2e428f93-c5ec-2a52-f110-161349f4f27a.png)

`Vigenere`暗号で復号すると`sapphire.html`を得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/08048cad-99aa-fed0-cd73-60553a8a9c1b.png)

`/diningRoom/sapphire.html`へアクセスし、フラグを入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/925c650f-9a73-39d5-9ce4-a53a45cc06a2.png)

**A**.**blue_jewel{e1d457e96cac640f863ec7bc475d48aa}**

## **Q7**.*What is the FTP username*

**Hint**.*You need all 4 crests*

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/a838f400-bb84-273f-b2a6-c4ca1e32cc13.png)

`blue_jewel`フラグを入力すると、`crest 1`を入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/a915f7b1-6488-1259-e369-72b129381a35.png)

`base64`->`base32`の順で解読に成功しました。

```
$ echo "S0pXRkVVS0pKQkxIVVdTWUpFM0VTUlk9" | base64 -d | base32 -d
RlRQIHVzZXI6IG
```

`/galleryRoom/`へアクセスし、`EXAMINE`のリンクを踏むと`crest 2`を得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/56df07d2-5e75-dfd9-09c2-411040364938.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f504bbae-598b-8a96-eed8-881308a811da.png)

`base32`->`base58`の順でデコードに成功しました。

```
$ echo "GVFWK5KHK5WTGTCILE4DKY3DNN4GQQRTM5AVCTKE" | base32 -d | base58 -d 
h1bnRlciwgRlRQIHBh
```

`/armorRoom/`ページにアクセスし、`shield_key`を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/a4d8b457-436d-076f-e35f-37c0af857aec.png)

`READ`のリンクを踏むと`crest 3`を得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d0d9e6dd-6a17-bf41-37dd-efed4e055485.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/9e1d8110-9625-b8c4-a853-4e3eab259ef7.png)

`base64`->`binary`->`hex`の順で解読に成功しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/29315ea7-a454-005e-6dbd-7ac8ea24b3d9.png)

`/attic/`へアクセスし、`shield_key`を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d77191e9-bca3-d4af-1f7c-9fc56f523557.png)

`READ`のリンクを踏むと`crest 4`を得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2c671315-db7b-3bea-9232-742f7b0c4e51.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2ac0df08-470d-0b7d-65d8-5530d2ea5bae.png)

`base58`->`hex`の順で解読に成功しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3d5fe1f3-c44c-b953-1950-760956cec48d.png)

`crest 1~4`を合わせ、`base64`でデコードするとFTPの認証情報を得られました。

```
$ echo "RlRQIHVzZXI6IGh1bnRlciwgRlRQIHBhc3M6IHlvdV9jYW50X2hpZGVfZm9yZXZlcg==" | base64 -d
FTP user: hunter, FTP pass: you_cant_hide_forever
```

**A**.**hunter**

## **Q8**.*What is the FTP password*

**Hint**.*You need all 4 crests*

**A**.**you_cant_hide_forever**

# Task3

## **Q1**.*Where is the hidden directory mentioned by Barry*

FTPに接続し、複数ファイルを確認できたので全てダウンロードします。

```
ftp> dir
229 Entering Extended Passive Mode (|||21294|)
150 Here comes the directory listing.
-rw-r--r--    1 0        0            7994 Sep 19  2019 001-key.jpg
-rw-r--r--    1 0        0            2210 Sep 19  2019 002-key.jpg
-rw-r--r--    1 0        0            2146 Sep 19  2019 003-key.jpg
-rw-r--r--    1 0        0             121 Sep 19  2019 helmet_key.txt.gpg
-rw-r--r--    1 0        0             170 Sep 20  2019 important.txt
226 Directory send OK.
```

`important.txt`から隠しディレクトリが分かりました。

```important.txt 
Jill,

I think the helmet key is inside the text file, but I have no clue on decrypting stuff. Also, I come across a /hidden_closet/ door but it was locked.

From,
Barry
```

**A**.**/hidden_closet/**

## **Q2**.*Password for the encrypted file*

**Hint**.*Three picture, three hints: hide, comment and walk away*

`001-key.jpg`からも文字列を得られました。

```
$ steghide extract -sf 001-key.jpg 
Enter passphrase: 
wrote extracted data to "key-001.txt".

$ cat key-001.txt       
cGxhbnQ0Ml9jYW
```

また、`002-key.jpg`のP`Comment`フィールドから文字列を得られました。

```
$ exiftool 002-key.jpg
ExifTool Version Number         : 12.70
File Name                       : 002-key.jpg
Directory                       : .
File Size                       : 2.2 kB
File Modification Date/Time     : 2019:09:19 01:08:31-04:00
File Access Date/Time           : 2024:11:06 09:54:22-05:00
File Inode Change Date/Time     : 2024:11:06 09:54:22-05:00
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Comment                         : 5fYmVfZGVzdHJveV9
Image Width                     : 100
Image Height                    : 80
Encoding Process                : Progressive DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 100x80
Megapixels                      : 0.008
```

さらに、`003-key.jpg`の`Comment`フィールドから`jpeg-recompress`を使用したことが分かりました。

```
$ exiftool 003-key.jpg
ExifTool Version Number         : 12.70
File Name                       : 003-key.jpg
Directory                       : .
File Size                       : 2.1 kB
File Modification Date/Time     : 2019:09:19 01:19:17-04:00
File Access Date/Time           : 2024:11:06 09:54:23-05:00
File Inode Change Date/Time     : 2024:11:06 09:54:23-05:00
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Comment                         : Compressed by jpeg-recompress
Image Width                     : 100
Image Height                    : 80
Encoding Process                : Progressive DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 100x80
Megapixels                      : 0.008
```

`binwalk`で`003-key.jpg`からZIPファイルとテキストファイルを入手できました。

```
$ binwalk -e 003-key.jpg 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01
1930          0x78A           Zip archive data, at least v2.0 to extract, uncompressed size: 14, name: key-003.txt
2124          0x84C           End of Zip archive, footer length: 22

$ ls -la _003-key.jpg.extracted 
total 16
drwxr-xr-x 2 kali kali 4096 Nov  6 10:09 .
drwxr-xr-x 4 kali kali 4096 Nov  6 10:09 ..
-rw-r--r-- 1 kali kali  216 Nov  6 10:09 78A.zip
-rw-r--r-- 1 kali kali   14 Sep 19  2019 key-003.txt

$ cat _003-key.jpg.extracted/key-003.txt 
3aXRoX3Zqb2x0
```

`001~3-key.jpg`から得られた文字列を合わせ、`base64`でデコードするとパスワードを得られました。

```
$ echo "cGxhbnQ0Ml9jYW5fYmVfZGVzdHJveV93aXRoX3Zqb2x0" | base64 -d
plant42_can_be_destroy_with_vjolt
```

**A**.**plant42_can_be_destroy_with_vjolt**

## **Q3**.*What is the helmet key flag*

**Hint**.*key 1 + key 2 + key 3 is not enough. You need to do something*

`helmet_key.txt.gpg`をインポートすると`helmet_key.txt`を得られました。

```
$ gpg helmet_key.txt.gpg                                      
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
```

ファイルからフラグを入手できました。

```
$ cat helmet_key.txt    
helmet_key{458493193501d2b94bbab2e727f8db4b}
```

**A**.**helmet_key{458493193501d2b94bbab2e727f8db4b}**

# Task4

## **Q1**.*What is the SSH login username*

**Hint**.*You missed a room*

`/studyRoom/`へアクセスし、`helmet_key`を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/8ce782b7-793b-c03d-7d70-dd80abb81966.png)

`EXAMINE`をクリックすると`doom.tar.gz`をダウンロード出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/dbc4c25a-5aaa-a6c3-b5b3-3ef0475f4b46.png)

解凍し、ファイルからSSHのユーザー名を取得できました。

```
$ tar -zxvf doom.tar.gz 
eagle_medal.txt

$ cat eagle_medal.txt 
SSH user: umbrella_guest
```

**A**.**umbrella_guest**

## **Q2**.*What is the SSH login password*

以前判明した`/hidden_closet/`へアクセスし、`helmet_key`を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d9e80d1f-27b5-88d5-57c4-ee02df077037.png)

`EXAMINE`のリンクへ遷移するとSSHのパスワードを得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/7cb04daa-990b-e2aa-0e3e-530bddcbcd0a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/38f1d74d-7f92-31f0-9928-32d482c5efe5.png)

**A**.**T_virus_rules**

## **Q3**.*Who the STARS bravo team leader*

**A**.**Enrico**

# Task5

## **Q1**.*Where you found Chris*

SSH接続し、`.jailcell/chris.txt`からJillとChrisの会話を確認できました。

```.jailcell/chris.txt 
Jill: Chris, is that you?
Chris: Jill, you finally come. I was locked in the Jail cell for a while. It seem that weasker is behind all this.
Jil, What? Weasker? He is the traitor?
Chris: Yes, Jill. Unfortunately, he play us like a damn fiddle.
Jill: Let's get out of here first, I have contact brad for helicopter support.
Chris: Thanks Jill, here, take this MO Disk 2 with you. It look like the key to decipher something.
Jill: Alright, I will deal with him later.
Chris: see ya.

MO disk 2: albert
```

**A**.**jailcell**

## **Q2**.*Who is the traitor*

**A**.**Weasker**

## **Q3**.*The login password for the traitor*

**Hint**.*How you decipher the shield_key?*

先ほどの`Closet room`から遷移できる`MO_DISK1.txt`を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/ce604108-8006-2d06-96d5-3281a6157ac8.png)

Keyを`.jailcell/chris.txt`の内容から判明した`albert`で、`Vigenere`暗号を解くと`weasker`アカウントのパスワードを入手できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/5ed89d98-d87c-11ad-d217-8857488eae9a.png)

**A**.**stars_members_are_my_guinea_pig**

## **Q4**.*The name of the ultimate form*

`weasker`にログインし、`/home/weasker/weasker_note.txt `の内容を確認します。

```/home/weasker/weasker_note.txt 
Weaker: Finally, you are here, Jill.
Jill: Weasker! stop it, You are destroying the  mankind.
Weasker: Destroying the mankind? How about creating a 'new' mankind. A world, only the strong can survive.
Jill: This is insane.
Weasker: Let me show you the ultimate lifeform, the Tyrant.

(Tyrant jump out and kill Weasker instantly)
(Jill able to stun the tyrant will a few powerful magnum round)

Alarm: Warning! warning! Self-detruct sequence has been activated. All personal, please evacuate immediately. (Repeat)
Jill: Poor bastard
```

**A**.**Tyrant**

## **Q5**.*The root flag*

`sudo -l`で確認すると全て許可されています。

```
$ sudo -l
[sudo] password for weasker: 
Matching Defaults entries for weasker on umbrella_corp:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User weasker may run the following commands on umbrella_corp:
    (ALL : ALL) ALL
```

`root`権限を取得できました。

```
$ sudo /bin/bash
root@umbrella_corp:~#
```

`/root/root.txt`からフラグを入手できました。

```/root/root.txt 
In the state of emergency, Jill, Barry and Chris are reaching the helipad and awaiting for the helicopter support.

Suddenly, the Tyrant jump out from nowhere. After a tough fight, brad, throw a rocket launcher on the helipad. Without thinking twice, Jill pick up the launcher and fire at the Tyrant.

The Tyrant shredded into pieces and the Mansion was blowed. The survivor able to escape with the helicopter and prepare for their next fight.

The End

flag: 3c5794a00dc56c35f2bf096571edf3bf
```

**A**.**3c5794a00dc56c35f2bf096571edf3bf**