สวัสดีครับคุณผู้อ่านทุกท่าน วันนี้ผู้เขียนมี 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 และคำใบ้
- กล่องที่ 2 มีการเข้ารหัส 2 ครั้ง
- กล่องที่ 2 มีจำนวน 18 ตัวอักษร
จากนั้นกลับไปยัง /galleryRoom และตรวจดูเบาะแสเพิ่มเติม
ไม่พบเบาะแสอะไร จากนั้นจึงไปต่อที่ /studyRoom
ซึ่งประตูยังล็อกอยู่ และต้องใช้ helmet symbol ในการเปิดประตู แต่เรายังไม่มีจากนั้นจึงหาเบาะแสเพิ่มเติมด้วยการ view page source
แต่ยังไม่พบอะไรที่เป็นเบาะแสได้ จึงไปต่อที่ห้อง /armorRoom
ห้องนี้ พบประตูล็อกอยู่เช่นเดียวกัน และต้องใช้ shield symbol ซึ่งเราได้รับแล้วจึงนำ shield flag มาใส่ และกด submit เพื่อเปิดประตู แต่ก่อนจะเปิดประตูจะหาเบาะแสเพิ่มเติมจาก source ของหน้านี้
ไม่พบ comment หรือข้อความเข้ารหัสใด ๆ ถ้างั้นเราเข้าประตูไปกันเลย
เมื่อเข้ามาแล้ว จิลพบชุดเกราะ 8 ชุด จิลจึงตรวจสอบชุดเกราะแต่ละชุดและพบโน้ตในชุดเกราะ กด READ เพื่ออ่านโน้ตนั้น
พบกล่องที่ 3 และคำใบ้
- กล่องที่ 3 มีการเข้ารหัสสามครั้ง
- กล่องที่ 3 มีจำนวนตัวอักษรทั้งหมด 19 ตัว
ตอนนี้เราพบทั้งหมด 3 กล่องแล้ว ไปตามหากล่องสุดท้ายกันเลย ไปกันที่ห้อง /attic
พบกับประตูที่ถูกล็อกอยู่ ซึ่งต้องใช้ shield flag ในการเปิดประตู (เรามีแล้ว) จึงทำการตรวจสอบเบาะแสเพิ่มเติม
ไม่พบเบาะแส จึงทำการเปิดประตูด้วย shield flag
จิลพบกับศพบนพื้นซึ่งเป็นริชาร์ด สมาชิกกลุ่ม STARS bravo นอกจากนี้ยังมีโน้ตในกระเป๋า” กด READ เพื่ออ่านโน้ต
เมื่ออ่านโน้ต เราจะพบกับกล่องที่ 4 โดยในกล่องที่ 4 มีคำใบ้ว่า
- กล่องที่ 2 มีการเข้ารหัส 2 ครั้ง
- กล่องที่ 2 มีจำนวนตัวอักษรทั้งหมด 17 ตัวอักษร
(ทางผู้พัฒนาน่าจะเขียนผิด ต้องเป็นกล่องที่ 4 ครับ)
จากนั้น เราจึงนำข้อมูลทั้งหมดที่ได้รับ มาถอดรหัส ดังนี้
ผู้เขียนขอแนะนำเว็บที่ช่วยในการถอดรหัสครับ นั่นคือ https://gchq.github.io/CyberChef/
โดยวิธีการใช้งานมีดังนี้ครับ
- นำข้อความที่เราต้องการจะถอดรหัสมาใส่ในช่อง Input
- กดปุ่ม BAKE
- จะพบปุ่มรูป wand คลิกเพื่อทำการถอดรหัส หากมีรูป wand ขึ้นอยู่ แสดงว่าข้อความใน Output ยังถูกเข้ารหัสอยู่ และเมื่อเรากดรูป wand แต่ละครั้ง จะขึ้น recipe
- ส่วนแสดงชนิดของการถอดรหัสที่เราใช้ เพื่อให้ได้ output มา
- จุดแสดง 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 ที่ไม่ยากครับ แต่เพียงต้องอาศัยเวลาและการช่างสังเกตเข้าไว้ และถ้าหากมีข้อบกพร้องประการใดก็ขออภัยไว้ ณ ที่นี้ด้วยนะครับ ยังไงอย่าลืมพักผ่อนให้เพียงพอ ดูแลสุขภาพกันด้วยนะครับ วันนี้ผู้เขียนขอลาไปก่อน ไว้เจอกันใหม่โอกาสหน้าครับ สวัสดีครับบบบ