[CTF] TryHackMe Biohazard Write-up

Datafarm
13 min readMar 1, 2023

สวัสดีครับคุณผู้อ่านทุกท่าน วันนี้ผู้เขียนมี CTF จาก TryHackMe มาแนะนำให้ทุกท่านได้ลองเล่นกันครับ นั่นก็คือ Biohazard นั่นเอง ซึ่งทุกคนสามารถตามไปเล่นพร้อมๆ กันได้ที่ https://tryhackme.com/room/biohazard ครับ

และถ้าใครพอจะเคยเล่น Resident Evil มาบ้าง คงพอเข้าใจภาพรวมคร่าว ๆ ของ Labs นี้ แต่โดยส่วนตัว ทางผู้เขียนเองไม่เคยเล่นเกม Resident Evil มาก่อนเลย ก็คงจะทำได้แค่พูดถึงได้แค่ในส่วนที่เจอใน Labs นี้เท่านั้นนะครับ

ก่อนอื่นเลย ผู้เขียนจะใช้คำว่า Labs ในการเรียกแทนชื่อเครื่องที่ใช้ทดสอบนี้นะครับ และใน Labs นี้ ทางผู้เขียนจะแบ่งเป็น 5 parts นะครับตามโจทย์ในเว็บ TryHackMe เลย โดยผู้เขียนจะเรียกแต่ละ Part ว่า Task นะครับ เพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มตะลุยกันเลยครับผมมมมมม

TASK 1 : Introduction

ขั้นตอนแรกนะครับ ให้เราทำการกด Start Machine เพื่อเริ่มทำ Labs นี้กันก่อน และตอบคำถามดังนี้

#1. Deploy the machine and start the nightmare.

Ans: No answer needed

ต่อไปเราจะทำการ Enumerate ก่อนนะครับ เพื่อหาข้อมูลที่สำคัญที่ใช้ในการโจมตี Labs นี้ โดยผู้เขียนจะใช้ เครื่องมือ Nmap เพื่อสแกนหา port หรือ service ที่ Labs นี้เปิดอยู่ครับ

nmap -sC -sV <Target IP>
  • -sC : ใช้ Default Script ในการ สแกน
  • -sV : แสดง version ของ service port ที่ใช้งานอยู่

เราจะพบว่ามี ports หรือ services ที่เปิดใช้งานอยู่ 3 ports ด้วยกัน นั่นคือ

  • 21/ftp- vsftpd 3.0.3
  • 22/ssh- OpenSSH 7.6p1
  • 80/http- Apache httpd 2.4.29

นำผลลัพธ์ที่ได้ มาตอบคำถาม

#2. How many open ports?

Ans: x

ต่อไปเรามาดูบนหน้าเว็บกันครับ โดยใช้ <Target IP> ของ Labs

เราจะพบชื่อทีม พรัอมกับชื่อคนอื่นๆ ในทีม ที่ถูกโจมตีโดยซอมบี้ และทีมวิ่งไปทางคฤหาสน์

#3. What is the team name in operation

Ans: STARS alpha team

จากนั้น เราจะหาเบาะแสเพิ่มเติมนะครับ โดยการ คลิกขวา และ view page source

ไม่เจอเบาะแสอะไรนะครับ จากนั้นให้เราเข้าไปที่คฤหาสน์กันเลย โดยการคลิกที่ /mansionmain

TASK 2 : The Mansion

เมื่อเข้ามาแล้ว เราจะพบว่าคริสหายไป และก็มีเสียงปืนดังขึ้นจากห้องข้าง ๆ เวสเกอร์จึงให้จิลไปตามหาเสียงปืนว่ามาจากห้องไหน

จากนั้น เราจะ view page source เพื่อหาเบาะแสเพิ่มเติมจะพบว่า เสียงปืนดังมาจากห้อง /diningRoom นั่นเอง

จากนั้นเราจะไปดูที่ห้อง /diningRoom กันครับ

เมื่อมาถึงห้อง จิลและแบรี่ เริ่มทำการค้นหา และพบคราบเลือดใกล้กับเตาผิง หวังว่าจะไม่ใช่ของคริสนะ หลังจากใช้เวลาค้นหาสั้นๆ และพวกเขาพบว่า มี emblem จะเก็บไปหรือไม่ ?

จากนั้นเมื่อทำการคลิก YES

เราจะพบกับ emblem flag และข้อความว่า “ดูเหมือนว่าคุณจะสามารถนำไปใส่ช่องใส่ emblem flag, รีเฟรช /diningRoom” และตอบคำถาม

#1. What is the emblem flag

Ans: emblem{?????????????????????????????????????????}

จากนั้นให้เรากลับไปที่ห้อง /diningRoom และรีเฟรชหน้า จะพบว่าในห้อง /diningRoom มีช่องใส่ emblem flag

จะพบว่ามีช่องให้ใส่ emblem flag จึงนำ emblem flag ที่ได้ มากรอกใส่และกด submit

แต่กลับไม่พบอะไรเลย เราจึงกลับไปที่ห้อง /diningRoom และหาเบาะแสเพิ่มเติม โดยการ view page source

และพบข้อความเป็นข้อความถอดรหัสแบบ base64 จึงนำไปถอดรหัส โดยผู้อ่านสามารถใช้เครื่องมือใดก็ได้ในการถอดรหัสด้วยวิธีการ base64 ขึ้นอยู่กับความถนัดของผู้อ่านเลย

เมื่อถอดรหัสมาแล้ว พบข้อความ “ห้อง /teaRoom ล่ะ เป็นยังไง” ผู้เขียนจึงตามเบาะแสไปยังห้อง /teaRoom

พบศพที่ไม่มีหัวนอนกองอยู่กับพื้น หลังจากการสืบดูพบว่าศพนั้นเป็นของ Kenneth จากทีม STARS Bravo แบรี่ได้มอบ Lockpick ให้กับจิล พร้อมทั้งแนะนำให้จิล ไปที่ /artRoom/ จากนั้นเราจะเข้าไปยัง lockpick เพื่อเก็บ flag และตอบคำถามครับ

#2. What is the lock pick flag

Ans: lock_pick{???????????????????????????????????????}

ตรวจหาเบาะแสเพิ่มเติมจากห้อง /teaRoom โดยการ view page source

ไม่พบเบาะแส เช่น Comment หรือข้อความเข้ารหัสอยู่นะครับ จากนั้นเราจะตามเบาะแสที่แบรี่ได้ให้เอาไว้ คือไปที่ห้อง /artRoom

จิลพบภาพวาดและประติมากรรม และมีกระดาษติดอยู่ที่ผนัง จึงทำการสำรวจดูโดยการกด YES

กระดาษแผ่นนั้น คือแผนที่ภายในคฤหาสน์ และกลับมาตรวจสอบห้อง /artRoom เพื่อหาเบาะแส

ไม่มีเบาะแสใด ๆ เพิ่มเติมนะครับ จากนั้นเราจะใช้เบาะแสจากแผนที่ไปที่ห้อง /barRoom กันต่อนะครับ

เมื่อมาถึง พบว่าประตูล็อกอยู่ โดยใช้ lockpick ในการเปิดประตู ซึ่งเราได้รับ lockpick จากแบรี่ที่ห้อง /teaRoom แล้ว นำมันมาเปิดประตูได้ แต่ก่อนอื่นหาเบาะแสจากห้อง /barRoom กันก่อนครับ

ไม่พบเบาะแสเพิ่มเติม ใส่ lockpick แล้วเข้าไปในห้อง /barRoom กันเลย

เมื่อเข้ามาถึง พบเปียร์โนตัวหนึ่งในบาร์นี้ และเจอโน้ตเขียนว่า moonlight somata ซึ่งน่าจะเป็นชื่อเพลง จากนั้นจึงกด READ เพื่ออ่านโน้ตเพลง

พบข้อความเข้ารหัสเป็นชนิด base32 อยู่นะครับ จึงนำข้อความที่ได้ไปถอดรหัสด้วยวิธีการแบบ base32

จะได้รับ music_sheet flag และนำไปตอบคำถาม

#3. What is the music sheet flag

Ans: music_sheet{??????????????????????????????????}

จากนั้น กลับไปยัง /barRoomXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX และหาเบาะแสเพิ่มเติม

แต่ไม่พบเบาะแสอะไร จากนั้นเล่นเปียร์โนโดยทำการใส่ music_sheet flag ลงในช่อง input และกด submit

พบห้อง Secret Bar Room และมี gold emblem ติดอยู่ที่กำแพง จึงกด YES เพื่อเก็บ

จะได้รับ gold_emblem flag และตอบคำถาม

#4. What is the gold emblem flag

Ans: gold_emblem{??????????????????????????????????????????}

จากนั้นย้อนกลับไปที่ห้อง /barRoomXXXXXXXXXXXXXXXXXXXXXXX เพื่อหาเบาะแสเพิ่มเติม

แต่ยังไม่พบเบาะแสอะไรให้เรา เลยกลับไปที่ห้อง Secret BarRoom จะพบว่าห้องนี้สามารถใส่ emblem อันอื่นได้ (หากไม่พบ ให้ผู้อ่านทำการรีเฟรชหน้านี้อีกครั้ง)

จึงนำ emblem ที่เราพบในตอนแรกมาใส่

พบข้อความว่า “rebecca” ซึ่งยังไม่ทราบว่าใช้ทำอะไร หรือเป็นเบาะแสใด จึงไปต่อที่ห้องถัดไป นั่นคือ /diningRoom2F

จิลเห็น blue gem ส่องประกายอยู่บนรูปปั้น แต่เธอไม่สามารถเก็บมันได้ จากนั้นจึงทำการหาเบาะแสเพิ่มเติม

และพบกับ comment ที่ถูกเข้ารหัสแบบ ROT13 อยู่ จึงนำไปถอดรหัสด้วยวิธีการแบบ ROT13

พบข้อความว่า “คุณได้รับ blue gem ด้วยการดันรูปปั้นลงไปยังชั้นล่าง gem อยู่ที่ห้อง diningRoom ในชั้นที่หนึ่ง และให้ไปที่หน้า sapphire.html” และเมื่อเราตามเบาะแสไปยังห้อง /diningRoom และไปที่ sapphire.html

เราจะพบกับ blue jewel flag จึงนำไปตอบคำถามในข้อ 6 ของ TASK 2 (ข้อ 5 เรายังไม่พบคำตอบ)

#6: What is the blue gem flag

Ans: blue_jewel{???????????????????????????????}

จากนั้นกลับไปยังห้อง /diningRoom และลองใส่ gold emblem flag ลงไป (ในตอนแรกเราลองใส่ emblem flag แต่ไม่มีอะไรเกิดขึ้น)

เราจะพบข้อความเข้ารหัส

จึงนำข้อความดังกล่าวไปลองถอดรหัสดู โดยทางผู้เขียนได้ทดลองถอดอยู่หลายอัน แต่ก็พบว่าเป็นการเข้ารหัสแบบ Vigenere Cipher และต้องใช้ Key ในการถอดรหัส ทางผู้เขียนจึงใช้ rebecca ที่ได้จากห้องลับ barRoom

จะได้ข้อความว่า มี shield key ใน /diningRoom หน้า html เรียกว่า the_great_shield_key

จากนั้นเราจึงตามเบาะแสไปยัง the_great_shield_key.html ที่อยู่ในห้อง /diningRoom

พบกับ shield_key flag จึงนำไปตอบคำถามข้อที่ 5

#5. What is the shield key flag

Ans: shield_key{????????????????????????????????????}

ต่อไป เราจะตามแผนที่ ไปยังห้อง /tigerStatusRoom

เมื่อมาถึงห้อง /tigerStatusRoom จะพบว่าที่ตาของเสือมีช่องให้ใส่ gem จึงนำ blue gem flag มาใส่ และกด submit (ก่อนจะกด submit อย่าลืมหาเบาะแสด้วยการ view page source ด้วยนะครับ)

ไม่พบเบาะแสใดเลย (T_T) เมื่อเราใส่ blue gem ไปที่ตาของเสือแล้ว

เจอกล่องลำดับที่ 1 โดยด้านในประกอบไปด้วย 4 ส่วน คือ ข้อความเข้ารหัส, คำใบ้ 1, คำใบ้ 2 และส่วนที่โน้ตไว้ ซึ่งในกล่องนี้ มีคำใบ้ว่า กล่องที่ 1 ถูกเข้ารหัสสองครั้ง และมีทั้งหมด 14 ตัวอักษร

Note: คุณต้องเก็บให้ครบ 4 กล่องแล้วนำข้อความที่ถอดรหัสมารวมกัน โดยการรวมกัน จะมีรูปแบบคือ กล่องที่ 1 + กล่องที่ 2 + กล่องที่ 3 + กล่องที่ 4 (ให้ผู้อ่านบันทึกข้อมูลของแต่ละกล่องไว้ด้วยนะครับ)

เพื่อนำมาไขปริศนา เราจึงต้องตามหากล่องอื่นๆ จึงเดินทางต่อไปที่ /galleryRoom

เมื่อมาถึง จิลพบโน้ตบนผนัง จึงตรวจสอบด้วยการกดปุ่ม EXAMINE

พบกล่องที่ 2 และคำใบ้

  1. กล่องที่ 2 มีการเข้ารหัส 2 ครั้ง
  2. กล่องที่ 2 มีจำนวน 18 ตัวอักษร

จากนั้นกลับไปยัง /galleryRoom และตรวจดูเบาะแสเพิ่มเติม

ไม่พบเบาะแสอะไร จากนั้นจึงไปต่อที่ /studyRoom

ซึ่งประตูยังล็อกอยู่ และต้องใช้ helmet symbol ในการเปิดประตู แต่เรายังไม่มีจากนั้นจึงหาเบาะแสเพิ่มเติมด้วยการ view page source

แต่ยังไม่พบอะไรที่เป็นเบาะแสได้ จึงไปต่อที่ห้อง /armorRoom

ห้องนี้ พบประตูล็อกอยู่เช่นเดียวกัน และต้องใช้ shield symbol ซึ่งเราได้รับแล้วจึงนำ shield flag มาใส่ และกด submit เพื่อเปิดประตู แต่ก่อนจะเปิดประตูจะหาเบาะแสเพิ่มเติมจาก source ของหน้านี้

ไม่พบ comment หรือข้อความเข้ารหัสใด ๆ ถ้างั้นเราเข้าประตูไปกันเลย

เมื่อเข้ามาแล้ว จิลพบชุดเกราะ 8 ชุด จิลจึงตรวจสอบชุดเกราะแต่ละชุดและพบโน้ตในชุดเกราะ กด READ เพื่ออ่านโน้ตนั้น

พบกล่องที่ 3 และคำใบ้

  1. กล่องที่ 3 มีการเข้ารหัสสามครั้ง
  2. กล่องที่ 3 มีจำนวนตัวอักษรทั้งหมด 19 ตัว

ตอนนี้เราพบทั้งหมด 3 กล่องแล้ว ไปตามหากล่องสุดท้ายกันเลย ไปกันที่ห้อง /attic

พบกับประตูที่ถูกล็อกอยู่ ซึ่งต้องใช้ shield flag ในการเปิดประตู (เรามีแล้ว) จึงทำการตรวจสอบเบาะแสเพิ่มเติม

ไม่พบเบาะแส จึงทำการเปิดประตูด้วย shield flag

จิลพบกับศพบนพื้นซึ่งเป็นริชาร์ด สมาชิกกลุ่ม STARS bravo นอกจากนี้ยังมีโน้ตในกระเป๋า” กด READ เพื่ออ่านโน้ต

เมื่ออ่านโน้ต เราจะพบกับกล่องที่ 4 โดยในกล่องที่ 4 มีคำใบ้ว่า

  1. กล่องที่ 2 มีการเข้ารหัส 2 ครั้ง
  2. กล่องที่ 2 มีจำนวนตัวอักษรทั้งหมด 17 ตัวอักษร

(ทางผู้พัฒนาน่าจะเขียนผิด ต้องเป็นกล่องที่ 4 ครับ)

จากนั้น เราจึงนำข้อมูลทั้งหมดที่ได้รับ มาถอดรหัส ดังนี้

ผู้เขียนขอแนะนำเว็บที่ช่วยในการถอดรหัสครับ นั่นคือ https://gchq.github.io/CyberChef/

โดยวิธีการใช้งานมีดังนี้ครับ

  1. นำข้อความที่เราต้องการจะถอดรหัสมาใส่ในช่อง Input
  2. กดปุ่ม BAKE
  3. จะพบปุ่มรูป wand คลิกเพื่อทำการถอดรหัส หากมีรูป wand ขึ้นอยู่ แสดงว่าข้อความใน Output ยังถูกเข้ารหัสอยู่ และเมื่อเรากดรูป wand แต่ละครั้ง จะขึ้น recipe
  4. ส่วนแสดงชนิดของการถอดรหัสที่เราใช้ เพื่อให้ได้ output มา
  5. จุดแสดง Output ของข้อความถอดรหัส

กล่องที่ 1 : ข้อความเข้ารหัส 2 ครั้ง และมีทั้งหมด 14 ตัวอักษร

กล่องที่ 2 : ข้อความถูกเข้ารหัส 2 ครั้งและมีจำนวนตัวอักษรทั้งหมด 18 ตัวอักษร

กล่องที่ 3 : ข้อความเข้ารหัส 3 ครั้ง มีจำนวน 19 ตัวอักษร

และกล่องที่ 4 : ข้อความเข้ารหัส 2 ครั้ง มี 17 ตัวอักษร

จากนั้น จึงนำข้อความที่ถอดรหัสแล้วทั้งหมด มารวมกัน กล่องที่ 1 + กล่องที่ 2 + กล่องที่ 3 + กล่องที่ 4

และนำไปถอดรหัสอีกรอบ จะได้ดังนี้ครับ

เป็น user, password ในการเข้าถึง FTP server ของ Labs นี้นั่นเอง จากนั้นจึงนำไปตอบคำถาม ข้อ 7 และข้อ 8 ใน TASK 2 กันครับ

#7. What is the FTP username

Ans: xxxxx

#8. What is the FTP password

Ans: XXXXXXXXXXXXXX

เป็นอันสิ้นสุดใน TASK 2 ครับ ในระหว่างนี้ ผู้อ่านก็พักหายใจกันก่อนก็ได้ครับ แล้วค่อยไปลุยกันต่อ

TASK 3 : The guard house

หลังจากที่เราได้ user และ password ของ FTP จากการถอดรหัสผ่านกล่องทั้ง 4 นั้น ต่อไป เราจะเข้าไปยัง server ของ Labs โดยใช้ช่องทาง FTP กันนะครับ

เมื่อกรอก username password แล้ว จะได้ FTP shell มานะครับ จากนั้นจะใช้คำสั่ง ls (list) เพื่อดูไฟล์ที่มีอยู่ใน directory ปัจจุบัน

ls -la
  • -l คือ แสดงชื่อ File และ Directory ซึ่งประกอบด้วย ขนาด, วันที่แก้ไข, เวลาที่แก้ไข, ผู้เป็นเจ้าของไฟล์ และสิทธิ์ในการทำงาน
  • -a คือแสดงไฟล์ที่ซ่อนอยู่

เมื่อพิมพ์คำสั่งดังกล่าวลงไปแล้ว จะพบว่ามีไฟล์อยู่ด้วยกันทั้งหมด 5 ไฟล์ นั่นคือ 001-key.jpg, 002-key.jpg, 003-key.jpg, helmet_key.txt.gpg, important.txt จากนั้นเราจะทำการดาวโหลดไฟล์ทั้งหมด โดยใช้คำสั่ง mget เป็นคำสั่งที่ใช้ copy ไฟล์หลายๆ ไฟล์จาก remote system

mget *
  • * คือ เลือกไฟล์ทั้งหมดที่เราต้องการดาวโหลด จาก directory ปัจจุบัน

เมื่อดาวโหลดมาแล้ว จะพบดังนี้

  • ไฟล์รูปภาพ 3 ไฟล์
  • ไฟล์ txt ที่ติดรหัสผ่าน 1 ไฟล์
  • ไฟล์ txt

เมื่อเปิดไฟล์ important.txt จะพบข้อความจากแบรี่ส่งถึงจิล แบรี่ต้องการจะบอกกับจิลว่า helmet key อยู่ใน text file แต่ไม่มีเบาะแสในการถอดรหัสมัน ตอนนี้แบรี่อยู่ที่ /hidden_closet/

จากนั้นให้เราตอบคำถามข้อ 1 ใน Task 3

#1. Where is the hidden directory mentioned by Barry

Ans: /hidden_closet/

และตามเบาะแสจากจดหมายของแบรี่ คือไปที่ห้อง /hidden_closet/

แต่ก็พบว่าประตูล็อกอยู่จริงๆ และต้องใช้ helmet key ในการเปิด ซึ่งเป็น key flag ที่เรายังไม่ได้รับ และจากเบาะแสของแบรี่ ทำให้เราต้องหาทางถอดรหัสและเปิดไฟล์ helmet_key.txt.gpg ให้ได้ จากนั้นจึงทำการหาเบาะแสเพิ่มเติมโดยการ view page source

แต่ก็ไม่พบเบาะแสใด ๆ เพิ่มเติม จึงตั้งข้อสงสัยไปที่ไฟล์รูปกุญแจทั้งสามไฟล์ และเราจะทำการดูรายละเอียดของรูปกัน โดยในที่นี้ เราจะใช้เครื่องมือ 3 ตัวในการช่วยเปิดไฟล์รูปภาพมาวิเคราะห์ โดย Exiftool ใช้สำหรับดู meta information ของไฟล์รูปภาพ ให้ผู้อ่านทำการติดตั้งเครื่องมือนี้กันเลย โดยใช้คำสั่ง

apt-get install exiftool

ต่อไปเป็นเครื่องมือชื่อ steghide เป็นเครื่องมือที่ใช้ดูข้อมูลที่ซ่อนอยู่ในไฟล์โดยการติดตั้ง จะใช้คำสั่ง

apt-get install steghide

และเครื่องมือตัวสุดท้ายคือ binwalk เป็นเครื่องมือที่ใช้ดูไบนารี่ของไฟล์รูปภาพที่ฝังอยู่ในไฟล์ซึ่งเครื่องมือนี้ มีติดมากับ kali linux อยู่แล้ว

ต่อไปเราจะทำการวิเคราะห์ไฟล์รูปกุญแจทั้งสามภาพ

โดยเริ่มที่ 001-key.jpg จะใช้คำสั่ง exiftool ก่อนนะครับ นั่นคือ ให้เราไปที่ directory ที่เป็นรูปภาพอยู่และใช้คำสั่ง

exiftool <ชื่อไฟล์รูป>

ภาพแรก ยังไม่เจอข้อมูลหรือเนื้อหาใด ๆ ที่พอจะเป็นเบาะแสได้ ไปต่อกันที่ภาพที่สองกันเลย

ภาพที่สองพบ comment ที่ใส่ข้อความเข้ารหัสไว้อยู่ จึงบึนทึกไว้และหาเบาะแสจากรูปอื่น

ต่อไปเป็นรูปที่ 3

สรุป ยังไม่พบเบาะแสใดจากรูปภาพที่ 1 และ 3 จากการใช้เครื่องมือ exiftool

ต่อไปเราจะใช้เครื่องมือ steghide ในการหาข้อมูลในรูปภาพที่ 1 และ 3

steghide extract -sf <file image name>
  • extract คือ ดึงไฟล์ออกมา
  • -sf หรือการ select ไฟล์ที่จะใช้ในการ extract

โดยตัวโปรแกรมจะถามหา passphrase ให้ผู้อ่านกด Enter ไปเนื่องจากเราไม่มี passphrase

จากนั้น เมื่อกด enter แล้ว จะพบว่าตัวโปรแกรมได้ดึงข้อมูลจากรูปภาพและสร้างไฟล์ไว้ใหม่ ชื่อ key-001.txt เมื่อเราดู list file ใน directory ที่เรา extract ออกมา จะพบกับ key-001.txt

และใช้คำสั่งเรียกดูไฟล์

cat key-001.txt

จากนั้น ใช้เครื่องมือ steghide กับรูปที่ 3

พบว่าเราไม่สามารถดึงข้อมูล หรือ extract ข้อมูลออกมาได้ เนื่องจากเราไม่มี passphrase

ต่อไปเราจะใช้เครื่องมือ binwalk กับรูปภาพที่ 3 โดยใช้คำสั่ง

binwalk -e <image file name>
  • -e คือ การดึงข้อมูลออกมา หรือ extract

เมื่อทำการ extract ออกมาแล้ว จะพบว่าโปรแกรมได้สร้างไฟล์ key-003.txt ไว้ จึงทำการเรียกดูไฟล์ จะพบกับโฟลเดอร์ _003-key.jpg.extracted ใน directory ปัจจุบัน

จากนั้นเราจะทำการ เข้าไปยังโฟลเดอร์ _003-key.jpg.extracted และเรียกดูไฟล์ภายในโฟลเดอร์นี้ว่ามีอะไรบ้าง เราจะพบกับ key-003.txt และเมื่อเราใช้คำสั่ง cat ออกมาดู จะพบข้อความเข้ารหัสเช่นเดียวกับสองรูปก่อน

จากนั้นเราจะทำข้อความที่ได้จากภาพทั้งสามมาเรียงต่อกันโดยมีรูปแบบคือ key-001 + key-002 + key-003 ก็จะได้ดังนี้

จากนั้นนำข้อความที่รวมกันแล้วไปถอดรหัสด้วยการวิธีการแบบ base64 จะได้

เมื่อได้กุญแจแล้ว ให้เรานำไปตอบคำถามข้อที่ 2 ใน Task 3

#2. Password for the encrypted file

Ans: xxxxxxxx_xxx_xx_xxxxxxx_xxxx_xxxxx

จากนั้นเราจะนำไปใส่กับ helmet_key.txt.gpg ที่ไฟล์ถูกเข้ารหัสอยู่ จะใช้คำสั่ง

gpg <file gpg name>

และนำรหัสที่ได้ไปป้อนใส่ช่อง

เมื่อเราเรียกดูไฟล์จาก directory ปัจจุบัน จะพบกับ helmet_key.txt ให้ทำการเรียกอ่านไฟล์ txt

cat helmet_key.txt

จะได้รับ helmet key flag และตอบคำถามข้อที่ 3 ใน Task 3 เป็นอันจบ Task

#3. What is the helmet key flag

Ans: helmet_key{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}

TASK 4 : The Revisit

จาก Task 3 เรา พบ /hidden_closet/ ที่ต้องใช้ helmet key flag และได้รับ helmet key flag แต่ใน Task ก่อน เราได้พบกันห้อง /studyRoom ที่ต้องใช้ helmet key flag ในการเปิดประตูเหมือนกัน ใน Task นี้ เราจะมาไขประตูเหล่านี้กันครับ โดยผู้เขียนจะเริ่มที่ห้อง /studyRoom กันก่อนนะครับ (เพราะเป็นห้องที่อยู่ในแผนที่ และยังไม่ได้เปิด) ไปกันเลย

ก่อนเข้าไป อย่าลืมตรวจสอบหรือหาเบาะแสด้วยนะครับ

ไม่พบเบาะแสใด ๆ นะครับ ถ้างั้นเราเข้าไปในห้องกันเลย

พบข้อความ “เมื่อเข้ามาถึง จิลพบหนังสือที่ปิดผนึกอยู่” ให้เราทำการตรวจหาเบาะแสด้วยการ view page source

ไม่พบเบาะแสเพิ่มเติม จากนั้นให้เรากด EXAMINE เพื่อเปิดหนังสือ

เมื่อเปิดหนังสือ เราจะได้รับไฟล์ doom.tar.gz จากการดาวน์โหลด และเมื่อเราทำการเปิดไฟล์ดู

พบกับไฟล์ eagle_medal.txt และเมื่อเราอ่านไฟล์ txt

เราจะได้รับ username ที่ใช้ในการเข้าสู่ระบบด้วย ssh ของ Labs นี้นั่นเอง ให้เราทำการตอบคำถามข้อที่ 1 ใน task ที่ 4 กัน

#1. What is the SSH login username

Ans: xxxxxxxx_xxxxx

จากนั้นเราไปต่อกันที่ห้องที่ยังไม่ได้เปิดประตูห้องสุดท้าย นั่นคือ ห้อง /hidden_closet/

เมื่อเรามาถึง ก็ให้เราทำการตรวจหาเบาะแสก่อน

ไม่เจอเบาะแสอะไรครับ จากนั้นทำการใส่ helmet flag และเข้าไปยังห้อง

พบข้อความ “จิลพบกับ เอนริโก้ ซึ่งเป็นหัวหน้าของทีม STARS Bravo เอนริโก้พูดถึงคนทรยศในทีม STARS Alpha เมื่อเขาบอกชื่อคนที่ทรยศ ทันใดนั่นเอง เสียงปืนก็ดังขึ้น และเอนริโก้ก็ถูกยิงและเสียชีวิต จิลพบกับ MO disk 1 และ wolf Medal”

จากนั้นให้เราตอบคำถามข้อที่ 3 ใน task นี้ครับ

#3. Who the STARS bravo team leader

Ans: Xxxxxx

และให้เราทำการหาเบาะแสเพิ่มเติม

ไม่พบเบาะแสใด จากนั้นให้เรากด READ เพื่ออ่าน MO disk 1

เมื่อเราอ่าน MO disk 1 จะพบกับข้อความที่ถูกเข้ารหัสอยู่ ให้เราทำการถอดรหัสนั้น แต่เรายังไม่มี key ที่ใช้ในการถอดรหัส (คล้ายกับตอนเราถอดรหัสโดยใช้ key คือ rebecca) จากนั้น กด EXAMINE เพื่อดูข้อมูลด้านใน wolf medal กันครับ

เราจะพบกับ SSH password และนำไปตอบคำถามข้อที่ 2 กันครับ

#2. What is the SSH login password

Ans: X_xxxxx_xxxxx

ซึ่งก่อนหน้านี้เราได้ username มาแล้ว เป็นอันจบการค้นหาใน Task นี้กันนะครับ

TASK 5 : Underground laboratory

เราจะนำ ssh username, password ที่ได้ ไปใช้ login กันนะครับ โดยใช้คำสั่ง

ssh <username>@<Target IP>

เมื่อเราเข้ามาถึง ให้เราทำการค้นหา ไฟล์ ที่มีชื่อว่า chris ครับ โดยใช้คำสั่ง find

find / -type f -name “chris.txt” 2>/dev/null

  • / คือ directory หลักที่ต้องการจะให้ค้นหา
  • -type f คือ ประเภทของสิ่งที่ค้นหา ในที่นี้ ระบุว่า f คือการค้นหาไฟล์
  • -name คือ ชื่อของไฟล์ที่ต้องการค้นหา ในที่นี้ ระบุว่า chris.txt คือไฟล์ .txt ที่มีชื่อว่า chris
  • 2>/dev/null คือ การนำข้อผิดพลาดที่จะแสดง ไปใส่ใน /dev/null หรือก็คือ ละทิ้งข้อผิดพลาดที่จะเกิดขึ้น ไม่ให้มาแสดง

เมื่อพิมพ์คำสั่งเรียบร้อยแล้ว จะปรากฏไฟล์ chris.txt พร้อมกับที่อยู่ของไฟล์ เราจะสามารถตอบคำถามข้อที่ 1 ใน Task ที่ 5

#1. Where you found Chris

Ans: xxxxxxxx

และจากนั้น ให้เราไปยัง directory ของ chris.txt และเปิดอ่าน

จะพบกับบทสนทนาของ จิลและคริส คริสเล่าว่าเวสเกอร์เป็นคนทำเรื่องทั้งหมดนี้ และให้ MO disk 2 แก่ จิล

จากนั้นนำข้อมูลที่ได้ ไปตอบคำถาม ข้อ 2

#2. Who is the traitor?

Ans: Xxxxxxx

จากนั้น เราจะทำ MO disk 1 มาถอดรหัส โดยใช้ MO disk 2 เป็น key

โดยผู้เขียน จะใช้ https://cryptii.com/pipes/vigenere-cipher ในการถอดรหัสในครั้งนี้

ให้เราใส่ MO disk 1 ในจุดที่ 1 และใส่ MO disk 2 ในจุดที่ 2 และผลลัพธ์จะปรากฏในจุดที่ 3

ผลลัพธ์จะเป็น ssh user, password ของ account weasker นะครับ ให้เรานำไปตอบคำถาม ข้อ 3 กันได้เลย

#3. The login password for the traitor

Ans: xxxxx_xxxxxxx_xxx_xx_xxxxxx_xxx

เมื่อ login เข้ามาแล้ว ให้เราใช้คำสั่ง ls เพื่อดูไฟล์ใน directory ปัจจุบัน จะพบกับโน้ตของเวสเกอร์

ให้เราเปิดโน้ต จะพบบทสนทนาของจิลกับเวสเกอร์ ที่จิลให้เวสเกอร์หยุด แต่เวสเกอร์ไม่ฟังจิลและเปลี่ยนร่างเป็น Ultimate form ในส่วนนี้ เราจะได้รับคำตอบในคำถามข้อที่ 4

#4. The name of the ultimate form

Ans: Xxxxxx

จากนั้นให้เราใช้คำสั่ง sudo -l เพื่อดูว่าใน user นี้ สามารถรันไฟล์หรือโฟลเดอร์ใด ที่สิทธิ์อื่นได้หรือไม่

sudo -l
  • -l ใช้สำหรับเรียก list รายการโฟลเดอร์หรือไฟล์ที่สามารถเปิดด้วยสิทธิ์อื่น

เมื่อใช้คำสั่งดังกล่าว จะพบว่า User weasker สามารถเรียกใช้ไฟล์หรือ directory ใดก็ได้ ในสิทธิ์ผู้ใช้สูงสุด

ต่อไป ใช้คำสั่งนี้ เพื่อเปลี่ยนจากผู้ใช้ weasker เป็นผู้ใช้ระดับสูงสุด

sudo su
  • su คือ การเปลี่ยนผู้ใช้งานเป็นผู้ใช้งานอื่น

เมื่อเรียกใช้คำสั่ง sudo su เป็นการเรียกใช้คำสั่ง su ด้วยสิทธิ์ผู้ใช้สูงสุด

เมื่อเราได้รับสิทธิ์ผู้ใช้สูงสุดแล้ว ให้เราทำการ ค้นหาไฟล์ root.txt เพื่อหา flag หรือคำตอบในข้อสุดท้ายนั่นเอง โดยใช้คำสั่ง find

find / -type f -name “root.txt” 2>/dev/null

เมื่อเราค้นหาไฟล์ root.txt เจอแล้ว ให้เราใช้คำสั่ง cat ในการอ่านไฟล์ จะพบกับข้อความ จิล แบรี่ และคริส หนีจาก Tyrant ไปได้ ด้วยเฮลิคอปเตอร์ และเตรียมตัวในการปะทะกันในการต่อสู้ครั้งต่อไป

จบ….

และเราจะได้รับ root flag ให้เรานำไปตอบคำถามข้อสุดท้าย

#5. The root flag

Ans: xxxxxxxxxxxxxxxxxxxxxx

เป็นยังไงบ้างครับ เป็น Labs ที่ยาวนานมาก ใน Labs นี้ จะประกอบไปด้วยการ Enumerate และ decryption เป็นส่วนใหญ่นะครับ ส่วนด้านอื่น ๆ ไม่ได้ใช้เท่าไรมากนักครับ สำหรับผู้เขียนแล้ว เป็น Labs ที่ไม่ยากครับ แต่เพียงต้องอาศัยเวลาและการช่างสังเกตเข้าไว้ และถ้าหากมีข้อบกพร้องประการใดก็ขออภัยไว้ ณ ที่นี้ด้วยนะครับ ยังไงอย่าลืมพักผ่อนให้เพียงพอ ดูแลสุขภาพกันด้วยนะครับ วันนี้ผู้เขียนขอลาไปก่อน ไว้เจอกันใหม่โอกาสหน้าครับ สวัสดีครับบบบ

--

--

No responses yet