今回は、TryHackMEのバイオハザードに基づいたCTFをやってみます。
ゲームのようなCTFは、初めてなのでどんな感じなのかもきになるところですね!
「TryHackMe-Biohazard:https://tryhackme.com/room/biohazard」
Introduction
「Start Machine」からターゲットマシンを起動します。
下記のように、IP Addressが表示されていればOKです!
Deploy the machine and start the nightmare(マシンをデプロイしてナイトメアを開始する)
これは、回答不要なので、ターゲットマシンを起動できたら完了にしましょう。
Answer
How many open ports?(オープンポートは何個?)
オープンしているポートを探します。使うのはnmapですね。
┌──(hacklab㉿hacklab)-[~]
└─$ nmap -sV 10.10.156.237
Starting Nmap 7.92 ( https://nmap.org ) at 2023-04-20 20:16 JST
Nmap scan report for 10.10.156.237
Host is up (0.24s latency).
Not shown: 997 closed tcp ports (conn-refused)
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)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 39.76 seconds
Answer
What is the team name in operation(運用中のチーム名について)
httpがオープンなので、ブラウザからアクセスしてみましょう。
ここにチーム名が記載されています。
Answer
The Mansion(ザ・マンション)
Collect all necessary items and advanced to the next level. The format of the Item flag:
(必要なアイテムを集めて、次のレベルへ進んでください。アイテムフラッグの形式です:)
Item_name{32 character}
Some of the doors are locked. Use the item flag to unlock the door.
(一部の扉はロックされています。アイテムフラッグを使って、ロックを解除してください。)
Tips: It is better to record down all the information inside a notepad
(ヒント:メモ帳にすべての情報を記録しておくとよいでしょう。)
アイテムフラッグを集めて、攻略していくようです。
What is the emblem flag(エンブレムフラッグとは)
まずは、emblem flagを探します。
Main hallに遷移するリンクがあるので、選択してみましょう。
Main hollに移動しました。
ソースのコメントに下記の記載がありました。
<!-- It is in the /diningRoom/ -->
Dining Roomに移動してみます。
YESを選択してみましょう。
emblem{fec832623ea498e20bf4fe1821d58727}
Look like you can put something on the emblem slot, refresh /diningRoom/
(エンブレムスロットに何か入れられそうだな、/diningRoom/をリフレッシュ。)
フラグがありましたね、また/diningRoom/をrefreshしろとも書かれています。
Answer
What is the lock pick flag(ロックピックフラッグとは)
Look like you can put something on the emblem slot, refresh /diningRoom/
(エンブレムスロットに何か入れられそうだな、/diningRoom/をリフレッシュ。)
先ほどの言葉通りリフレッシュしてみます。
なんかemblem flagを入力するところがありました。
先ほど入手したのを入力してみます。
違うらしい。。。
Dining roomのソースにハッシュがあるので、解析してみました。
<!-- SG93IGFib3V0IHRoZSAvdGVhUm9vbS8= -->
┌──(hacklab㉿hacklab)-[~]
└─$ echo "SG93IGFib3V0IHRoZSAvdGVhUm9vbS8=" | base64 -d
How about the /teaRoom/
base64でエンコーディングされていることがわかりました。
指示通り、Tea Roomに移動してみましょう。
Lockpikリンクを押してみます。
lock pick flagがありました!
Answer
What is the music sheet flag(楽譜旗とは)
先ほどのTea Roomのパスです。
「Barry also suggested that Jill should visit the /artRoom/」とあるので、Art roomに移動してみます。
YESを押してみましょう。
Look like a map
Location:
/diningRoom/
/teaRoom/
/artRoom/
/barRoom/
/diningRoom2F/
/tigerStatusRoom/
/galleryRoom/
/studyRoom/
/armorRoom/
/attic/
どうやら、ディレクトリ(部屋)の情報らしいです。
上から言ったことのないディレクトリに移動してみましょう。
先ほど取得した、lock pick flag を入力して、submitします。
Bar Roomに入れました。
READを選択してみます。
NV2XG2LDL5ZWQZLFOR5TGNRSMQ3TEZDFMFTDMNLGGVRGIYZWGNSGCZLDMU3GCMLGGY3TMZL5
またもや、ハッシュがありますね。。。
一致しなかったので、「https://gchq.github.io/CyberChef/」を利用して、色々試してみます。
music_sheet{362d72deaf65f5bdc63daece6a1f676e}
試した結果、base32でエンコードされていたことがわかりました。もっといいやり方ないのか。。。
Answer
What is the gold emblem flag(ゴールドエンブレムフラッグとは)
一度Bar Roomにもどりました。
music_sheetがわかったので、入力してsubmitします。
YESを選択してみましょう。
gold_emblem{58a8c41a9d08b8a4e38d02a4d7ff4843}
Look like you can put something on the emblem slot, refresh the previous page
gold_emblemもありました。
Answer
What is the shield key flag(シールドキーフラッグとは)
Secret bar roomにまた戻ります。
「gold_emblem」を入力しても何も起きなかったので、1番の「emblem」を入力したところ、次の画面に遷移できました。
「rebecca」は、何かのキーでしょうか。とりあえず、これはメモをしておきます。
とりあえず、進むところがなくなったので、最初にemblemを入力しても何も起きなかった箇所に「gold emblem flag」をいれてみたらどうなるか試してみようと思います。
diningRoomに戻りましょう。
ここで、emblemのinput flagに「gold emblem flag」を入力してみます。
正しかったようです。
klfvg ks r wimgnd biz mpuiui ulg fiemok tqod. Xii jvmc tbkg ks tempgf tyi_hvgct_jljinf_kvc
文字がずらされているように見えるので、ROT13を疑ってCyberChefを試してみます。
んー、違ったようです。
「https://www.boxentriq.com/code-breaking/cipher-identifier」を使って暗号文かどうか見てみましょう。
「Vigenere Cipher」でエンコードされていたようです。
Vigenereでエンコードする際は、秘密鍵が必要ですが、これは「rebecca」だと推測できます。
there is a shield key inside the dining room. The html page is called the_great_shield_key
(食堂の中に盾の鍵があります。htmlページ名はthe_great_shield_keyです。)
無事、エンコードできました。
shield_key{48a7a9227cd7eb89f0a062590798cbac}
Answer
What is the blue gem flag(ブルージェムフラッグとは)
次は、新しくdiningRoom2Fに進んでみます。
ソースを見てみると、下記のようなコメントがありました。
こちらもROT13を疑ってCyberChefを試してみます。
<!-- Lbh trg gur oyhr trz ol chfuvat gur fgnghf gb gur ybjre sybbe. Gur trz vf ba gur qvavatEbbz svefg sybbe. Ivfvg fnccuver.ugzy -->
You get the blue gem by pushing the status to the lower floor. The gem is on the diningRoom first floor. Visit sapphire.html
(ステータスを押して下の階に行くと、青い宝石が手に入ります。宝石はdiningRoom1Fにあるわよ。sapphire.htmlを見る)
予想通り、ROT13で文字列を解読できました。
文字通り、「/diningRoom/sapphire.html」を見てみます。
blue_jewel{e1d457e96cac640f863ec7bc475d48aa}
Answer
What is the FTP username(FTPのユーザー名を教えてください)
次は、FTPユーザー名を探していきます。
新しい「/tigerStatusRoom/」を覗いてみます。
「blue_jewel{e1d457e96cac640f863ec7bc475d48aa}」を入れて、submitしてみます。
crest 1:
S0pXRkVVS0pKQkxIVVdTWUpFM0VTUlk9
Hint 1: Crest 1 has been encoded twice
Hint 2: Crest 1 contanis 14 letters
Note: You need to collect all 4 crests, combine and decode to reavel another path
The combination should be crest 1 + crest 2 + crest 3 + crest 4. Also, the combination is a type of encoded base and you need to decode it
--翻訳
紋章1
S0pXRkVS0pKQkxIVVdTWUpFM0VTUlk9
ヒント1:紋章1が2回エンコードされている
ヒント2:紋章1は14文字含む
注:4つの紋章をすべて集め、合成し、解読することで別の道を進むことができます。
組み合わせは、紋章1+紋章2+紋章3+紋章4とする。また、この組み合わせは暗号化されたベースの一種であり、それを解読する必要がある
紋章を4つ組み合わせないといけない様です。
とりあえず、紋章1を解いてみます。2回のエンコードのようです。
1回目のエンコーディングが何か、base32~64を試します。
末尾が「=」になっていることから、正しくデコードしているように見えました。
次に、2回目も同じ手順を試します。
base32でデコードしてあげると、下記を得ることができました。
文字数も14文字です。多分正しそうですね。
RlRQIHVzZXI6IG
紋章2を探すために、部屋を移動します。
次は、「/galleryRoom/」に進んでみます。
EXAMINEを選択すると、紋章2が出てきました。
crest 2:
GVFWK5KHK5WTGTCILE4DKY3DNN4GQQRTM5AVCTKE
Hint 1: Crest 2 has been encoded twice
Hint 2: Crest 2 contanis 18 letters
Note: You need to collect all 4 crests, combine and decode to reavel another path
The combination should be crest 1 + crest 2 + crest 3 + crest 4. Also, the combination is a type of encoded base and you need to decode it
--翻訳
紋章2
GVFWK5KHK5WTGTCILE4DKY3DNN4GQQRTM5AVCTKE
ヒント1:紋章2が2回エンコードされている
ヒント2:紋章2は18文字含む
注:4つの紋章をすべて集め、合成し、解読することで別の道を進むことができます。
組み合わせは、紋章1+紋章2+紋章3+紋章4とする。また、この組み合わせは暗号化されたベースの一種であり、それを解読する必要がある
またまた、2回エンコードされていると。。。
同じようにbase32~64まで試してみます。
base32が正しい文字列を出せていそうです。
そのまま、2回目のデコードも試しましょう。
正しい文字列になっていたのは、base58でした。
文字数もあっているので、下記で正しいと思います。
h1bnRlciwgRlRQIHBh
次は、「/armorRoom/」に遷移して、紋章3を探してみます。(/studyRoom/は、helmet key flagが必要でした。。。)
「shield key flag」を入力して、submitしてみます。
ArmorRoomに入れました。
READを選択してみると。。
crest 3:
MDAxMTAxMTAgMDAxMTAwMTEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMTEgMDAxMDAwMDAgMDAxMTAxMDAgMDExMDAxMDAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAxMDAgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMDAgMDAxMTEwMDAgMDAxMDAwMDAgMDAxMTAxMTAgMDExMDAwMTEgMDAxMDAwMDAgMDAxMTAxMTEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAxMTAgMDAxMTAxMDAgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMTAgMDExMDAwMDEgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTAxMTEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAxMDEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMDAgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTEwMDAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMTAgMDAxMDAwMDAgMDAxMTAxMTAgMDAxMTEwMDA=
Hint 1: Crest 3 has been encoded three times
Hint 2: Crest 3 contanis 19 letters
Note: You need to collect all 4 crests, combine and decode to reavel another path
The combination should be crest 1 + crest 2 + crest 3 + crest 4. Also, the combination is a type of encoded base and you need to decode it
-- 翻訳
紋章3
MDAxMTAxMTAgMDAxMTAwMTEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMTEgMDAxMDAwMDAgMDAxMTAxMDAgMDExMDAxMDAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAxMDAgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMDAgMDAxMTEwMDAgMDAxMDAwMDAgMDAxMTAxMTAgMDExMDAwMTEgMDAxMDAwMDAgMDAxMTAxMTEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAxMTAgMDAxMTAxMDAgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMTAgMDExMDAwMDEgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTAxMTEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAxMDEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMDAgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTEwMDAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMTAgMDAxMDAwMDAgMDAxMTAxMTAgMDAxMTEwMDA=
ヒント1:紋章3は3回エンコードされている
ヒント2:紋章3は19文字含む
注:4つの紋章をすべて集め、合成し、解読することで別の道を進むことができます。
組み合わせは、紋章1+紋章2+紋章3+紋章4とする。また、この組み合わせは暗号化されたベースの一種であり、それを解読する必要がある
続いては、3回エンコーディングされているとのこと。。。
まずは、素直にbase32~64で試してみます。
base64が正しそうです。
出力結果は、バイナリ(2進数データ)なので、バイナリをデコードします。
バイナリでデコードすると、Hex(16進数)がでてきました。
Hexでデコードしてみます。
デコードできました。文字数も正しそうですね!
c3M6IHlvdV9jYW50X2h
最後の部屋「/attic/」に移動します。
ここも、shleld symbolが必要です。
noteがありますね、READしてみましょう。
crest 4:
gSUERauVpvKzRpyPpuYz66JDmRTbJubaoArM6CAQsnVwte6zF9J4GGYyun3k5qM9ma4s
Hint 1: Crest 2 has been encoded twice
Hint 2: Crest 2 contanis 17 characters
Note: You need to collect all 4 crests, combine and decode to reavel another path
The combination should be crest 1 + crest 2 + crest 3 + crest 4. Also, the combination is a type of encoded base and you need to decode it
-- 翻訳
紋章4
gSUERauVpvKzRpyPpuYz66JDmRTbJubaoArM6CAQsnVwte6zF9J4GGYyun3k5qM9ma4s
ヒント1:紋章2が2回エンコードされている
ヒント2:紋章2は17文字含む
注:4つの紋章をすべて集め、合成し、解読することで別の道を進むことができます。
組み合わせは、紋章1+紋章2+紋章3+紋章4とする。また、この組み合わせは暗号化されたベースの一種であり、それを解読する必要がある
紋章2と書かれてますが、おそらく紋章4のことです。ミスだと思う。。。
とりあえず、細かいところは忘れて。。。デコードしてみましょう。
今回も今まで通り、base32~64を試してみます。
base58が正しそうです。
Hex(16進数)なので、デコードしてみます。
下記で正しそうですね。
pZGVfZm9yZXZlcg==
紋章1~4をつなげると下記になります。
RlRQIHVzZXI6IGh1bnRlciwgRlRQIHBhc3M6IHlvdV9jYW50X2hpZGVfZm9yZXZlcg==
とりあえず、Hashesをかけてみます。
base64だったようですね。FTPのuserとpassを取得できました。
FTP user: hunter, FTP pass: you_cant_hide_forever
Answer
What is the FTP password(FTPのパスワードは何ですか)
こちらは、さきほどのpassが答えになります。
Answer
The guard house(ガードハウス)
After gaining access to the FTP server, you need to solve another puzzle.
(FTPサーバーにアクセスした後、別のパズルを解く必要があります。)
とのことなので、とりあえずFTPサーバーにアクセスします。
┌──(hacklab㉿hacklab)-[~]
└─$ ftp hunter@10.10.156.237
Connected to 10.10.156.237.
220 (vsFTPd 3.0.3)
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
先ほどの、userとpassで無事FTPサーバーにアクセスできましたね。
Where is the hidden directory mentioned by Barry(Barryが言っていた隠しディレクトリはどこにあるのでしょうか)
まずは、隠しディレクトリを探すらしいです。
ftp> ls
229 Entering Extended Passive Mode (|||10379|)
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.
とりあえず、ファイルと鍵らしきものがあるので、ローカルに落としておきます。
ftp> mget *
mget 001-key.jpg [anpqy?]?
229 Entering Extended Passive Mode (|||51303|)
150 Opening BINARY mode data connection for 001-key.jpg (7994 bytes).
100% |*************************************************************************************************| 7994 2.58 KiB/s 00:00 ETA
226 Transfer complete.
7994 bytes received in 00:03 (2.39 KiB/s)
mget 002-key.jpg [anpqy?]?
229 Entering Extended Passive Mode (|||24041|)
150 Opening BINARY mode data connection for 002-key.jpg (2210 bytes).
100% |*************************************************************************************************| 2210 849.01 KiB/s 00:00 ETA
226 Transfer complete.
2210 bytes received in 00:00 (8.78 KiB/s)
mget 003-key.jpg [anpqy?]?
229 Entering Extended Passive Mode (|||27793|)
150 Opening BINARY mode data connection for 003-key.jpg (2146 bytes).
100% |*************************************************************************************************| 2146 1.97 MiB/s 00:00 ETA
226 Transfer complete.
2146 bytes received in 00:00 (8.56 KiB/s)
mget helmet_key.txt.gpg [anpqy?]?
229 Entering Extended Passive Mode (|||28546|)
150 Opening BINARY mode data connection for helmet_key.txt.gpg (121 bytes).
100% |*************************************************************************************************| 121 1.94 KiB/s 00:00 ETA
226 Transfer complete.
121 bytes received in 00:00 (0.38 KiB/s)
mget important.txt [anpqy?]?
229 Entering Extended Passive Mode (|||57273|)
150 Opening BINARY mode data connection for important.txt (170 bytes).
100% |*************************************************************************************************| 170 3.52 MiB/s 00:00 ETA
226 Transfer complete.
170 bytes received in 00:00 (0.67 KiB/s)
ftp>
最初にみたいのは、「important.txt」ですね。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ cat 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
-- 翻訳
ジルです、
ヘルメットの鍵はテキストファイルの中にあると思うのですが、復号化の手がかりが全くありません。また、/hidden_closet/の扉に出くわしたが、鍵がかかっていた。
からです、
バリー
隠しディレクトリは、「/hidden_closet/」のようです。
Answer
Password for the encrypted file(暗号化ファイルのパスワード)
まずは、隠しディレクトリの「/hidden_closet/」を見てみます。
helmet symbolが必要とのことなので、helmet symbolを探してみましょう。
怪しいのは、helmet_key.txt.gpgなのですが、あいにく鍵がかかってます。
00x-key.jpgを解読する必要がありそうです。
1からやっていきます。最初、exiftoolで調べましたが、大した情報はありませんでした。
念のため、steghideでファイルを抽出してみたところ。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ steghide extract -sf 001-key.jpg
Enter passphrase:
wrote extracted data to "key-001.txt".
key-001.txtを抽出できました。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ ll
合計 28
-rw-r--r-- 1 hacklab hacklab 7994 9月 19 2019 001-key.jpg
-rw-r--r-- 1 hacklab hacklab 2210 9月 19 2019 002-key.jpg
-rw-r--r-- 1 hacklab hacklab 2146 9月 19 2019 003-key.jpg
-rw-r--r-- 1 hacklab hacklab 121 9月 19 2019 helmet_key.txt.gpg
-rw-r--r-- 1 hacklab hacklab 170 9月 20 2019 important.txt
-rw-r--r-- 1 hacklab hacklab 15 4月 20 21:55 key-001.txt
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ cat key-001.txt
cGxhbnQ0Ml9jYW
内容を確認すると、何かのハッシュっぽいです。
base64だと思うのですが、Strict modeにすると、エラーになるので、情報が足りませんね。
002-keyを解いてみましょう。
exiftoolでメタ情報をみたら、ハッシュがありました。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ exiftool 002-key.jpg
ExifTool Version Number : 12.57
File Name : 002-key.jpg
Directory : .
File Size : 2.2 kB
File Modification Date/Time : 2019:09:19 15:08:31+09:00
File Access Date/Time : 2023:04:20 21:47:47+09:00
File Inode Change Date/Time : 2023:04:20 21:47:47+09: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
ハッシュは、Commentにありますね。
つなげると、文字列らしきものがでてきました。
最後の003も解いていきます。
こちらもexiftoolを実行します。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ exiftool 003-key.jpg
ExifTool Version Number : 12.57
File Name : 003-key.jpg
Directory : .
File Size : 2.1 kB
File Modification Date/Time : 2019:09:19 15:19:17+09:00
File Access Date/Time : 2023:04:20 21:47:49+09:00
File Inode Change Date/Time : 2023:04:20 21:47:49+09: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
こちらもCommentに「Compressed by jpeg-recompress」と記載がありました。
jpeg-recompressを使って、圧縮されているとのことなので、binwalkを使って解凍します。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ 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
無事解凍できました。中身を見てみましょう。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ cd _003-key.jpg.extracted
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard/_003-key.jpg.extracted]
└─$ ll
合計 8
-rw-r--r-- 1 hacklab hacklab 216 4月 20 22:03 78A.zip
-rw-r--r-- 1 hacklab hacklab 14 9月 19 2019 key-003.txt
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard/_003-key.jpg.extracted]
└─$ cat key-003.txt
3aXRoX3Zqb2x0
key-003.txtがありましたね、最後のハッシュが見つかりました。
Answer
What is the helmet key flag(ヘルメットキーフラッグとは)
先ほどの、キーを利用してhelmet_key.txt.gpgを見てみましょう。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ gpg helmet_key.txt.gpg
gpg: *警告*: コマンドが指定されていません。なにを意味しているのか当ててみます ...
gpg: AES256.CFB暗号化済みデータ
gpg: 1 個のパスフレーズで暗号化
helmet_key.txtにhelmet key flagがありそうです。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ ll
合計 36
-rw-r--r-- 1 hacklab hacklab 7994 9月 19 2019 001-key.jpg
-rw-r--r-- 1 hacklab hacklab 2210 9月 19 2019 002-key.jpg
-rw-r--r-- 1 hacklab hacklab 2146 9月 19 2019 003-key.jpg
drwxr-xr-x 2 hacklab hacklab 4096 4月 20 22:05 _003-key.jpg.extracted
-rw-r--r-- 1 hacklab hacklab 45 4月 20 22:11 helmet_key.txt
-rw-r--r-- 1 hacklab hacklab 121 9月 19 2019 helmet_key.txt.gpg
-rw-r--r-- 1 hacklab hacklab 170 9月 20 2019 important.txt
-rw-r--r-- 1 hacklab hacklab 15 4月 20 21:55 key-001.txt
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ cat helmet_key.txt
helmet_key{458493193501d2b94bbab2e727f8db4b}
やっと、helmet_keyが取得できました。
Answer
The Revisit(リビジット)
Done with the puzzle? There are places you have explored before but yet to access.
(パズルはもういい?以前探検したことがあっても、まだアクセスできていない場所があります。)
What is the SSH login username(SSHログインユーザー名を教えてください)
まだ、helmet symbolがなくては入れていない部屋が「/studyRoom/」ですね
helmet symbolを使って入ってみます。
EXAMINEを選択すると「doom.tar.gz」がダウンロードできます。
これを解凍してみましょう。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ tar -xf doom.tar.gz
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ ll
合計 44
-rw-r--r-- 1 hacklab hacklab 7994 9月 19 2019 001-key.jpg
-rw-r--r-- 1 hacklab hacklab 2210 9月 19 2019 002-key.jpg
-rw-r--r-- 1 hacklab hacklab 2146 9月 19 2019 003-key.jpg
drwxr-xr-x 2 hacklab hacklab 4096 4月 20 22:05 _003-key.jpg.extracted
-rw-r--r-- 1 hacklab hacklab 149 4月 21 22:32 doom.tar.gz
-rw-r--r-- 1 hacklab hacklab 25 9月 20 2019 eagle_medal.txt
-rw-r--r-- 1 hacklab hacklab 45 4月 20 22:11 helmet_key.txt
-rw-r--r-- 1 hacklab hacklab 121 9月 19 2019 helmet_key.txt.gpg
-rw-r--r-- 1 hacklab hacklab 170 9月 20 2019 important.txt
-rw-r--r-- 1 hacklab hacklab 15 4月 20 21:55 key-001.txt
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ cat eagle_medal.txt
SSH user: umbrella_guest
eagle_medal.txtがあって、この中にSSHのユーザーがありました。
Answer
What is the SSH login password(SSHログインパスワードを教えてください)
もう一つ、helmet symbolがなくて入れなかった部屋が、「/hidden_closet/」ですね。
先ほど取得した、helmet symbolを入力して、submitします。
EXAMINEを選択してみます。
SSH password: T_virus_rules
SSHの鍵がありました。
Answer
Who the STARS bravo team leader(Who the STARS ブラボーチームリーダー)
これは、Closet Roomに記載がありましたね!
Answer
Underground laboratory(地下の実験室)
Time for the final showdown. Can you escape the nightmare?
(最終決戦の時だ。あなたは悪夢から逃れられるか?)
やっと、最後までたどり着きました。(長かった。。。)
Where you found Chris(クリスを見つけた場所)
とりあえず、先ほどのCloset Roomのthe MO disk 1を見てみましょう。
wpbwbxr wpkzg pltwnhro, txrks_xfqsxrd_bvv_fy_rvmexa_ajk
ハッシュがありますね。
ROT13でデコードしてみましたが、うまくいかなかったので、暗号化されているか確認してみます。
Beaufortで暗号化されているようです。
CyberChefで、Beaufortはないのですが、Vigenereでよさそうです。
キーがないので、キーを探して生きます。
先ほど、SSHできるようになったので、SSHで接続してみましょう。
┌──(hacklab㉿hacklab)-[~/tryhackme/biohazard]
└─$ ssh umbrella_guest@10.10.62.13
The authenticity of host '10.10.62.13 (10.10.62.13)' can't be established.
ED25519 key fingerprint is SHA256:dOQYq6o72K3z+Nn6HtAR4ZFXoEZklDafT3VuF728yWc.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.62.13' (ED25519) to the list of known hosts.
umbrella_guest@10.10.62.13's password:
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
320 packages can be updated.
58 updates are security updates.
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Fri Sep 20 03:25:46 2019 from 127.0.0.1
umbrella_guest@umbrella_corp:~$
無事接続できました。
umbrella_guest@umbrella_corp:~$ ll -a
total 64
drwxr-xr-x 8 umbrella_guest umbrella 4096 Sep 20 2019 ./
drwxr-xr-x 5 root root 4096 Sep 20 2019 ../
-rw-r--r-- 1 umbrella_guest umbrella 220 Sep 19 2019 .bash_logout
-rw-r--r-- 1 umbrella_guest umbrella 3771 Sep 19 2019 .bashrc
drwxrwxr-x 6 umbrella_guest umbrella 4096 Sep 20 2019 .cache/
drwxr-xr-x 11 umbrella_guest umbrella 4096 Sep 19 2019 .config/
-rw-r--r-- 1 umbrella_guest umbrella 26 Sep 19 2019 .dmrc
drwx------ 3 umbrella_guest umbrella 4096 Sep 19 2019 .gnupg/
-rw------- 1 umbrella_guest umbrella 346 Sep 19 2019 .ICEauthority
drwxr-xr-x 2 umbrella_guest umbrella 4096 Sep 20 2019 .jailcell/
drwxr-xr-x 3 umbrella_guest umbrella 4096 Sep 19 2019 .local/
-rw-r--r-- 1 umbrella_guest umbrella 807 Sep 19 2019 .profile
drwx------ 2 umbrella_guest umbrella 4096 Sep 20 2019 .ssh/
-rw------- 1 umbrella_guest umbrella 109 Sep 19 2019 .Xauthority
-rw------- 1 umbrella_guest umbrella 7546 Sep 19 2019 .xsession-errors
色々さがして、.jailcellに気になるファイルがありました。
umbrella_guest@umbrella_corp:~$ cd .jailcell/
umbrella_guest@umbrella_corp:~/.jailcell$ ll
total 12
drwxr-xr-x 2 umbrella_guest umbrella 4096 Sep 20 2019 ./
drwxr-xr-x 8 umbrella_guest umbrella 4096 Sep 20 2019 ../
-rw-r--r-- 1 umbrella_guest umbrella 501 Sep 20 2019 chris.txt
umbrella_guest@umbrella_corp:~/.jailcell$ cat 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
-- 翻訳
ジルです: クリス、あなたなの?
クリス:ジル、やっと来てくれたね。しばらく牢屋に閉じ込められていたんだ。ウィスカーが黒幕らしいよ。
ジル えっ?ウィースカー?彼が裏切り者なの?
クリス:そうだよ、ジル。残念なことに、彼は私たちをいまいましいバイオリンのように弾くんだ。
ジル まずはここから出ましょう、ブラッドに連絡してヘリコプターのサポートをお願いしてあります。
クリス:ありがとうジル、ほら、このMOディスク2を持っていってくれ。何かを読み解く鍵になりそうだ。
ジル: わかったわ、あとで彼と話すわ。
クリス:またね。
chrisがあるのは、.jailcellの中でした。
また、MO disk 2がありました。albertがキーのようですね。
Answer
Who is the traitor(裏切り者は誰なのか)
先ほど、Chrisがweaskerが裏切者だと言ってましたね。
Answer
The login password for the traitor(裏切り者のログインパスワード)
キーがわかったので、デコードしてみます。
weasker login password, stars_members_are_my_guinea_pig
weaskerのパスワードになってました。
Answer
The name of the ultimate form(究極のフォームの名前)
パスワードがわかったので、suでユーザーをweaskerに切り替えます。
umbrella_guest@umbrella_corp:~$ su weasker
Password:
weasker@umbrella_corp:/home/umbrella_guest$ cd
weasker@umbrella_corp:~$
ホームディレクトリの中身を確認してみましょう。
weasker@umbrella_corp:~$ ll
total 80
drwxr-xr-x 9 weasker weasker 4096 Sep 20 2019 ./
drwxr-xr-x 5 root root 4096 Sep 20 2019 ../
-rw------- 1 weasker weasker 29 Apr 21 06:47 .bash_history
-rw-r--r-- 1 weasker weasker 220 Sep 18 2019 .bash_logout
-rw-r--r-- 1 weasker weasker 3771 Sep 18 2019 .bashrc
drwxrwxr-x 10 weasker weasker 4096 Sep 20 2019 .cache/
drwxr-xr-x 11 weasker weasker 4096 Sep 20 2019 .config/
drwxr-xr-x 2 weasker weasker 4096 Sep 19 2019 Desktop/
drwx------ 3 weasker weasker 4096 Sep 19 2019 .gnupg/
-rw------- 1 weasker weasker 346 Sep 20 2019 .ICEauthority
drwxr-xr-x 3 weasker weasker 4096 Sep 19 2019 .local/
drwx------ 5 weasker weasker 4096 Sep 19 2019 .mozilla/
-rw-r--r-- 1 weasker weasker 807 Sep 18 2019 .profile
drwx------ 2 weasker weasker 4096 Sep 19 2019 .ssh/
-rw-r--r-- 1 weasker weasker 0 Sep 20 2019 .sudo_as_admin_successful
-rw-r--r-- 1 root root 534 Sep 20 2019 weasker_note.txt
-rw------- 1 weasker weasker 109 Sep 20 2019 .Xauthority
-rw------- 1 weasker weasker 5548 Sep 20 2019 .xsession-errors
-rw------- 1 weasker weasker 6749 Sep 20 2019 .xsession-errors.old
どうやらweasker_note.txtが怪しそうです。
weasker@umbrella_corp:~$ cat 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
-- 翻訳
弱くなりました: やっと来たね、ジル。
ジル: ウィーカー!やめて、人類を滅ぼすわよ。
ウィーカー: 人類を滅ぼす?新しい」人類を作るのはどうだろう。強い者だけが生き残れる世界を。
ジル: 正気とは思えません。
ウィースカー: 究極の生命体、タイラントをお見せしましょう。
(タイラントが飛び出し、ウィースカーを即死させる)
(ジルは強力なマグナム弾数発でタイラントを気絶させることができる)
警報です: 警告!警告です!自爆装置が作動しました。すべての個人は、すぐに避難してください。(繰り返し)
ジルです: かわいそうな人
Tyrantと呼ぶようです。
Answer
The root flag(ルートフラッグ)
最後にRootフラグを取得します。
sudo -lで権限を確認してみます。
weasker@umbrella_corp:~$ 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
なんとほぼすべての権限にアクセスができますね。
であれば、簡単です。sudo su でrootを取得しましょう。
weasker@umbrella_corp:~$ sudo su
root@umbrella_corp:/home/weasker# whoami
root
root@umbrella_corp:/home/weasker# cd
root@umbrella_corp:~# ls
root.txt
root@umbrella_corp:~# ll
total 36
drwx------ 4 root root 4096 Sep 20 2019 ./
drwxr-xr-x 24 root root 4096 Sep 18 2019 ../
-rw------- 1 root root 76 Sep 20 2019 .bash_history
-rw-r--r-- 1 root root 3106 Apr 9 2018 .bashrc
drwx------ 2 root root 4096 Apr 26 2018 .cache/
drwxr-xr-x 3 root root 4096 Sep 19 2019 .local/
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
-rw-r--r-- 1 root root 493 Sep 20 2019 root.txt
-rw-r--r-- 1 root root 207 Sep 19 2019 .wget-hsts
root@umbrella_corp:~# cat 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
これで、rootフラグの取得もできました!
Answer
まとめ
今回は、TryHackMEのバイオハザードに基づいたCTFをやってみました。
いやー、難しかったです。ゲーム形式?のCTFの初めてだったので、なかなかのやりごたえがありました。
ハッシュがどのようにエンコードされているか、1つづつ試してましたが、何かいいツールなどがあるのか。。。
今後探してみようと思います。
参考文献・サイト
Hassan Sheikh:https://infosecwriteups.com/tryhackme-biohazard-ctf-writeup-detailed-3d9dd491539e
Yebberdog:https://yebberdog.medium.com/try-hack-me-biohazard-walkthrough-4c43fda578ed