content-image
ARTICLES | 01 March 2021

The 2016 SANS Holiday Hack Challenge Write-Ups (Part 3/5)

author-image

Incognito Lab

กลับมาแล้วครับ สำหรับ Write-Ups ใน Part 3 ซึ่งอาจจะทิ้งช่วงห่างจาก Part 2 นานไปซักหน่อย ก็ขออภัยมา ณ ที่นี้ด้วยครับ

สำหรับกิจกรรม The 2016 SANS Holiday Hack Challenge นั้น เมื่อวันที่ 2 กุมภาพันธ์ 2017 ก็ได้มีการประกาศรายชื่อผู้ได้รับรางวัลกันไปแล้วนะครับ ซึ่งสามารถเข้าไปดูได้ที่ https://holidayhackchallenge.com/2016/winners%5Fanswers.html โดยจากการที่ได้อ่านในหลาย ๆ Report ก็ทำให้เห็นว่าแต่ละคนก็มีวิธีการแก้ไขปัญหาแตกต่างกันไป ลองเข้าไปอ่านกันได้นะครับ จะทำให้เราได้เรียนรู้ถึงเทคนิค และวิธีคิดใหม่ ๆ ?

พูดถึง Write-Ups ฉบับของคนอื่นไปแล้ว กลับมาเข้ามาในฉบับของเรากันดีกว่าครับ ซึ่งต่อไปนี้จะเป็น Write-Ups ในส่วนของ Part 3 ใครยังไม่ได้อ่าน Part ก่อนหน้า ก็สามารถ เข้าไปอ่านย้อนหลังได้จาก Link ด้านล่างนี้ครับ

Part 1: A Most Curious Business Card

Part 2: Awesome Package Konveyance

Part 3 : A Fresh-Baked Holiday Pi


สำหรับใน Part นี้ มี 2 คำถาม ที่เราจะต้องหาคำตอบ คือ

  1. What is the password for the "cranpi" account on the Cranberry Pi system?
  2. How did you open each terminal door and where had the villain imprisoned Santa?

จากเนื้อเรื่องนั้น ในเกมส์จะมี Terminal อยู่หลาย Terminal ด้วยกัน กระจายอยู่ทั่ว North Pole ซึ่งแต่ละ Terminal ก็จะมี Password ที่ทำการ Lock Terminal ไว้ แต่ในขั้นต้นนั้น ก่อนที่เราจะหา Password เพื่อจะเปิด Terminal เราจะต้องหาชิ้นส่วนของ Cranberry Pi Computer ให้พบก่อน (ล้อมาจาก Raspberry Pi นั้นแหละครับ) เพื่อที่จะสามารถใช้ Cranberry Pi ในการเชื่อมต่อกับ Terminal และหา Password ต่อไป

แล้วจะหาเบาะแสของ Cranberry Pi ในแต่ละชิ้นได้ที่ไหนกัน…

มาเริ่มกันเลยครับ..

Cranberry Pi


  1. เดินไปคุยกับ NPC ที่ชื่อว่า Holly Evergreen (ยืนอยู่หน้า Train Station ด้านล่างของแผนที่ในเกมส์) ก็พอจะทำให้คาดได้ว่า ชิ้นส่วนที่ Holly Evergreen กล่าวถึง ที่กระจายอยู่ทั่ว North Pole นั้น น่าจะเป็นชิ้นส่วนของ Cranberry Pi นั่นเอง
  2. ในขั้นตอนต่อไป จะเป็นการตามล่าหาชิ้นส่วนของ Cranberry Pi ครับ โดยตำแหน่งที่ชิ้นส่วนตกอยู่มีดังต่อไปนี้
    2.1) Cranberry Pi Board (ห้องลับตรงเตาผิงไฟ ใน Elf House#1)
    2.2) Heat Sink (ชั้นบนของ Elf House#2)

2.3) Power Cord (ใกล้ ๆ Snowman)![] 2.4) HDMI Cable (คอก Reindeer ใน Workshop บนสุดของแผนที่) 2.5) SD Card (สะพานข้างอาคาร Workshop) 3. หลังจากที่เก็บชิ้นส่วนทั้งหมดได้แล้ว ก็เดินกลับไปคุยกับ Holly Evergreen** ที่เดิม จากนั้น Holly Evergreen จะให้ไฟล์ Image ของ Cranberry Pi มา (https://www.northpolewonderland.com/cranbian.img.zip) เพื่อหา Password ของ Account ที่ชื่อว่า **cranpi ต่อไป

Exam Image File And Crack Password


หลังจากที่ได้ Image File ของ Cranberry Pi มาแล้ว ขั้นตอนต่อไปคือการหา Password ของ Account cranpi ออกมาให้ได้

  1. สำหรับวิธีการในการ Mount Image File ขึ้นมาบน Linux นั้น หากไปคุยกับ NPC ที่ชื่อว่า Wunorse Openslae (บริเวณใกล้ ๆ ต้นคริสมาสต์กลางเมือง) ก็จะพบวิธีการ Mount Image File ขึ้นมา (https://pen-testing.sans.org/blog/2016/12/07/mount-araspberry-pi-file-system-image)
  2. แต่ในบทความนี้จะใช้วิธีที่มีความยุ่งยากน้อยกว่า คือการใช้โปรแกรม 7zip เพื่อ Extract ไฟล์ Image (cranbian-jessie.img**) ออกมา ซึ่งจะพบไฟล์ **1.img อยู่ข้างใน และทำการ Extract ไฟล์ 1.img ออกมาอีกชั้นหนึ่ง ก็จะพบกับไฟล์ที่อยู่ในระบบของ Cranberry Pi ทั้งหมด
  3. เป้าหมายของเราคือการหา Password ของ Account cranpi เพราะฉะนั้นไฟล์ที่เราจะต้องไปค้นก็คือไฟล์ /etc/shadow ซึ่งเป็นไฟล์ที่ทำการเก็บ Hash ของ Password ของ Account แต่ละ Account บนระบบไว้นั้นเองครับ จากรูปพบว่า Hashed Password ของ cranpi คือ $6$2AXLbEoG$zZlWSwrUSD02cm8ncL6pmaYY/39DUai3OGfnBbDNjtx2G99qKbhnidxinanEhahBINm/2YyjFihxg7tgc343b0
  4. นำ Hash ที่ได้ มา Crack โดยใช้ Tools ต่าง ๆ เช่น John The Ripper, Hashcat** ซึ่งในบทความนี้จะใช้ Hashcat ในการ Crack แล้วจะ Crack ด้วยวิธีไหนดี ? Brute Force ? Dictionary ? มี NPC ชื่อว่า Minty Candycane (อยู่ใน Small Tree House) ได้พูดถึงเกี่ยวกับการ Crack โดยใช้ Dictionary ที่เป็นที่นิยมตัวหนึ่งที่ชื่อว่า **Rockyou นั้นเองครับ (ซึ่งมีอยู่ใน Kali อยู่แล้ว หรือ สามารถดาวน์โหลด Rockyou ได้จาก https://wiki.skullsecurity.org/index.php?title=Passwords)
  5. นำ Hash ไปเขียนไว้ในไฟล์ จากนั้นจึงใช้ Hashcat ในการ Crack แต่ก่อนที่จะเริ่ม Crack จะต้องระบุให้ได้ว่า Hash ที่ได้มานั้นถูก Hash ด้วย Algorithm ใด เพื่อที่จะระบุใน Hashcat ได้ วิธีการดูว่า Password โดน Hash ด้วย Algorithm อะไรนั้น ทำได้โดยการดูจากที่ Hash ที่ได้มา (Format ของ Shadow ไฟล์ สามารถดูรายละเอียดได้จาก : http://www.yourownlinux.com/2015/08/etc-shadow-file-format-in-linux-explained.html) คือ $6$ นั้นเองซึ่งหมายถึง การใช้ SHA512 ในการ Hash เมื่อรู้ถึง Hash Algorithm แล้ว ก็ใช้คำสั่ง hashcat64.exe -m 1800 rockyou.txt
    (-m หมายถึง hash mode, 1800 หมายถึง SHA512) เพื่อ Crack Password ออกมาครับ
    จากผลลัพธ์พบว่า Password ของ cranpi คือ yummycookies นั้นเองครับ

Terminals


ในส่วนต่อไปนี้ จะเป็นส่วนของการหา Passphrase จากปริศนาเพื่อเปิด Terminal ทั้งหลายที่กระจายอยู่ทั่วทั้ง North Pole เพื่อหาตัว Santa Claus ต่อไป โดย Terminal ทั้งหมดจะปรากฏดังตารางต่อไปนี้

NoLocation
1Elf House#2
2Workshop: Upper terminal
3Workshop: Lower terminal
4Santa’s Office
5Workshop : Train Station

แสดง 1 ถึง 5 จาก 5 แถว

ในการที่จะ Interact กับ Terminal นั้นจะต้อง Click ที่ เพื่อทำการเข้าใช้ Console ต่อไปครับ

เรามาเริ่มหา Passphrase ในแต่ละ Terminal กันเลยครับ…

Terminal 1 : Elf House#2


  1. เมื่อ Click เข้าไปยังหน้า Console แล้วจะพบคำใบ้ ดังนี้…! จากคำใบ้นั้น พบว่า Passphrase จะแบ่งเป็น 2 part** และจะอยู่ในไฟล์ **out.pcap
  2. ใช้คำสั่ง
    ls -la
    เพื่อทำการ List ไฟล์และดู Permission ของไฟล์! พบว่า out.pcap มี Owner User และ Owner Group เป็น itchy และสามารถอ่านได้โดย Owner ของไฟล์เท่านั้น (อ่าน Linux File Permission เพิ่มเติมได้ที่ : http://linuxcommand.org/lts0070.php) แต่ User ที่เราใช้งานอยู่ตอนนี้คือ scratchy ซึ่งไม่สามารถที่จะอ่านไฟล์ out.pcap ได้
  3. ขั้นตอนต่อไปคือการหาวิธีการที่จะสามารถอ่านไฟล์ out.pcap โดยใช้สิทธิ์ของ itchy ให้ได้ครับ ในกรณีที่จะใช้สิทธิ์ของ User อื่นนั้น คำสั่งแรกที่จะผุดขึ้นมาในความคิดเลยก็คือ sudo ครับ จากนั้นจึงใช้คำสั่ง
    sudo -l
    เพื่อ List คำสั่งที่เรามีสิทธิ์ใช้ sudo ได้ (sudo : https://linux.die.net/man/8/sudo) พบว่า scratchy สามารถใช้คำสั่ง tcpdump** และ **strings โดยสิทธิ์ของ itchy ได้ และไม่จำเป็นต้องใช้ Password ของ itchy ด้วย
  4. ใช้ tcpdump เพื่ออ่านไฟล์ out.pcap โดยใช้คำสั่ง
    sudo -u itchy /usr/sbin/tcpdump -A -r /out.pcap
    (-u สำหรับ sudo หมายถึง การระบุว่าจะใช้สิทธิ์ของ User ใด, -A สำหรับ tcpdump หมายถึง แสดงแต่ละ Packet ออกมาในรูปแบบของ ASCII, -r หมายถึง อ่าน Packet จากไฟล์) เมื่ออ่านแต่ละ Packet แล้ว ก็จะพบไฟล์ firsthalf.html ซึ่งน่าจะบรรจุ Part แรกของ Passphrase ไว้
    และเมื่อไปดู Content ของ File ก็จะพบกับ Part แรกของ Passphrase** ที่เราตามหาอยู่ นั้นก็คือคำว่า "**santasli" ครับ
  5. หากทดสอบค้นหาคำว่า "part2" จาก tcpdump ตามข้อที่ 4 นั้น ก็จะไม่พบอะไรครับ แต่ถ้าลองอ่านไปทีละ Packet ดี ๆ ก็จะพบว่า…
    มีไฟล์ชื่อว่า secondhalf.bin อยู่ ซึ่ง Content ในไฟล์จะต้องมี Part ที่ 2 ของ Passphrase อยู่แน่นอน แต่หากอ่านลองพยายามอ่าน Content แล้ว จะพบว่า ไม่สามารถที่จะอ่านออกหรือหา Part 2 ได้เลยครับ
  6. จากข้อที่ 3 พบว่าเราสามารถใช้คำสั่ง tcpdump และ strings โดยสิทธิ์ของ itchy ได้ หลังจากที่ใช้คำสั่ง tcpdump ไปแล้ว ก็ยังเหลืออีกคำสั่งที่ยังไม่ได้ใช้คือ strings** อีกทั้งไฟล์ส่วนที่สองที่พบนั้นก็เป็นไฟล์ .bin ซึ่งเป็น Binary File (แต่อ่าน Content ไม่ออกไม่เข้าใจ) ทำให้อนุมานได้ว่า Part 2 ของ Passphrase นั้นน่าจะหาได้จากคำสั่ง strings (strings : https://linux.die.net/man/1/strings) ซึ่งคำสั่งนี้จะมีหน้าที่ในการแสดงตัวอักขระ (Character) ที่มีอยู่ในไฟล์ออกมา โดยค่า Default แล้วคำสั่ง strings จะ Encode อักขระออกมาแสดงโดยใช้ 7 bits Character Encoding (Character Encoding : https://en.wikipedia.org/wiki/Character%5Fencoding) หากใช้คำสั่ง strings อ่านไฟล์ out.pcap โดยค่า Default แล้ว ก็จะหา Part 2 ของ Passphrase ไม่เจออยู่ดี วิธีการทดสอบคือ ทดลองเปลี่ยนค่า Parameter "-e" หรือ "**–encoding" เป็นการ Encode แบบต่าง ๆ ไปเรื่อย ๆ พบว่าเมื่อใช้คำสั่ง
    sudo -u itchy strings -el out.pcap
    (ค่า Parameter –encoding คือ l มีหมายความว่าเป็นการ Encoding แบบ 16 bits Little Endian) ผลลัพธ์ที่ออกมาก็จะเป็น Part 2 ของ Passphrase ที่เราตามหาครับ ซึ่งก็คือ "ttlehelper" นั้นเอง
  7. นำ Part 1 และ Part 2 มาต่อกัน ก็จะได้ Passphrase "santaslittlehelper" เพื่อทำการปลดล็อค Terminal ครับ
  8. หลังจากปลดล็อค Terminal ได้แล้ว หลัง Terminal จะเป็นห้อง Elf House#2 – Room2 แต่ก็ไม่ได้พบตัว Santa Claus ในห้องนี้แต่อย่างใด

Terminal 2 : Workshop – Upper Terminal


เมื่อ Click เข้าไปยังหน้า Console แล้วจะพบคำใบ้ ดังนี้…

ในการที่จะปลดล็อค Terminal นี้ได้นั้น เราจะต้องเล่นเกมส์ที่มีชื่อว่า Hunt The Wumpus โดยจะเป็นเกมส์ที่มีรูปแบบเป็น Text-Based ซึ่งเป็นเกมส์ที่เก่ามาก ๆ แล้ว (Hunt The Wumpus : https://en.wikipedia.org/wiki/Hunt%5Fthe%5FWumpus) โดยรายละเอียดคร่าว ๆ ของเกมส์นั้นมีอยู่ว่า เราจะเล่นเป็นผู้เล่นคนหนึ่ง ที่อยู่ในห้องที่มีอุโมงค์เชื่อมโยงกันเป็นเขาวงกต หากเราเดินพลาดไปอยู่ในห้องเดียวกันกับปีศาจ Wumpus เมื่อไหร่ เกมส์ก็จะ Over ทันที โดยวิธีที่จะชนะเกมส์นี้ได้ คือ การฆ่าปีศาจ Wumpus ให้ได้ วิธีการที่จะชนะเกมส์นี้เพื่อเอา Passphrase มาให้ได้นั้น เมื่ออ่านจากคำใบ้แล้วทำให้อนุมานได้ว่า เกมส์นี้สามารถผ่านได้โดยการเล่นแบบธรรมดา และโดยการใช้สูตรโกง หรือ Cheat นั้นเอง

เราจะเริ่มกันจากวิธีแรกกันก่อน คือการเล่นธรรมดาแบบธรรมดาให้ชนะ

  1. Execute ไฟล์ wumpus จากนั้นก็เล่นเกมส์ให้ชนะ โดยวิธีการเล่นสามารถอ่านจาก Instruction จากในเกมส์ได้
    โดยจะมี Trick ในการเล่นเล็กน้อย เพื่อทำให้ผ่านได้ง่ายขึ้น คือ หากมีข้อความว่า "*sniff* (I can smell the evil Wumpus nearby!)" ปรากฎขึ้นมา นั้นแสดงว่า มีปีศาจ Wumpus อยู่ห้องใดห้องหนึ่งที่ติดกับห้องปัจจุบันที่เราอยู่ ให้ทำการสุ่มยิงไปที่ห้องเหล่านั้น จนกว่าจะโดนตัว Wumpus ก็ถือเป็นอันจบเกมส์
    ซึ่งการจะเล่นธรรมดาให้ชนะนั้น ก็สามารถทำได้ไม่ยากนักครับ โดยเมื่อชนะแล้ว เราก็จะพบกับ Passphrase** ที่ใช้ปลดล็อค Terminal นั้นคือ "**WUMPUS IS MISUNDERSTOOD" นั้นเองครับ

และนอกจากวิธีเล่นธรรมดา ๆ แล้ว แน่นอนครับก็มีวิธีโกงให้ชนะได้ง่ายขึ้นเช่นเดียวกัน

  1. หากลองไปค้นหาเกี่ยวกับเกมส์ Hunt The Wumpus บน Search Engine แล้วจะพบว่า ขณะที่ Execute ไฟล์ wumpus ขึ้นมานั้น เราสามารถใส่ Parameter ต่าง ๆ ในการกำหนดจำนวน ห้อง (Room), ลูกศร (Arrow), อุโมงค์ที่เชื่อมระหว่างห้อง (Tunnel) และค่าต่าง ๆ ภายในเกมส์ได้ครับ (รายละเอียด : http://manpages.ubuntu.com/manpages/wily/man6/wump.6.html) จากรูปข้างต้นนั้น เป็นการกำหนดให้ ค้างคาว(bats), หลุม(pits), จำนวนห้อง(room) และ จำนวนอุโมงค์(Tunnel) ที่เชื่อมแต่ละห้อง มีค่าน้อยที่สุด (ไม่สามารถน้อยไปกว่านี้ได้อีกแล้ว) เพื่อให้ชนะเกมส์ได้ง่ายขึ้นอีกนั้นเองครับ

เมื่อได้ Passphrase มาแล้ว ก็ทำการปลดล็อค Terminal …

หลัง Terminal ก็เป็นห้องที่มีชื่อว่า DFER

แต่ก็เหมือนเดิมครับ.. ไม่พบตัว Santa Claus อีกเช่นเคย เจอแต่กวางเรนเดียร์แค่สองตัว…

Terminal 3 : Workshop – Lower Terminal


เมื่อ Click เข้าไปยังหน้า Console แล้วจะพบคำใบ้ ดังนี้…

  1. ทำการค้นหาไฟล์ โดยใช้คำสั่ง
    find / -name 2>/dev/null
    ทดสอบโดยใช้ keyword *password*, *passphrase*, *key* ผลลัพธ์การค้นหาของ 2 keyword แรกนั้น มีแต่ System File ซึ่งไม่น่าจะมีอะไรน่าสนใจ แต่สำหรับ Keyword *key* พบว่า มีไฟล์ชื่อ key_for_the_door.txt อยู่ใน Directory ชื่อแปลก ๆ ซึ่งในไฟล์นี้จะต้องมี Passphrase ที่ใช้ปลดล็อค Terminal อยู่แน่นอน
  2. การที่จะเข้าไปอ่านไฟล์ใน Directory ดังกล่าวได้นั้น ไม่สามารถที่จะ Copy แล้วใช้เข้าถึงตรง ๆ ได้ จะต้องทำการ Escape สัญลักษณ์บางตัวก่อน โดยการเติม \ (Backslash) ลงไปหน้าสัญลักษณ์ตัวนั้น เพื่อให้ Bash ไม่มองว่าสัญลักษณ์เหล่านั้นเป็นส่วนหนึ่งของ Command ซึ่งจะทำให้ความหมายเปลี่ยนไป และไม่สามารถเข้าถึง Directory ดังกล่าวได้ (Special Characters : http://tldp.org/LDP/abs/html/special-chars.html) โดยในกรณีนี้ จะทำการ Escape สัญลักษณ์ \ (backslash), (space), ‘ (single quote) และ ! (exclamation mark) จากนั้นก็ทำการอ่านไฟล์ key_for_the_door.txt ออกมาโดยใช้คำสั่ง
    cat** **/home/elf/.doormat/.\ /\ /\\/\\\\/Don\'t\ Look\ Here\!/You\ are\ persistent,\ aren\'t\ you?/\'/key_for_the_door.txt
    (backslash สีแดงคือส่วนที่ใส่เพิ่มเข้าไป) พบว่า Passphrase คือ open_sesame นั้นเองครับ

เมื่อได้ Passphrase มาแล้ว ก็ทำการปลดล็อค Terminal …

หลังประตูจะเป็นห้อง Santa’s Office นั้นเองครับ ห้องก็ไม่มี Santa Claus อยู่อีกเช่นเคย

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

Terminal 4 : Santa’s Office


เมื่อ Click เข้าไปยังหน้า Console คราวนี้ไม่ปรากฎคำใบ้มาให้ครับ แต่เป็น วลี ๆ หนึ่ง ว่า "GREETINGS PROFESSOR FALKEN." มาแทน…

  1. หลาย ๆ ท่านเห็นวลีนี้แล้วอาจจะร้อง อ้อออ ขึ้นมาทันที แต่สำหรับใครที่ไม่เข้าใจ ให้ทดสอบเอาวลีดังกล่าวไปค้นหาใน Search Engine ครับ แล้วจะพบว่า วลีดังกล่าวนั้น มาจากภาพยนตร์ชื่อดังเรื่องหนึ่ง นั้นคือ WarGames นั้นเองครับ
  2. หน้าที่ของเราก็คือ แค่พิมพ์ และเล่นไปตามบทในภาพยนตร์เรื่อง WarGames เท่านั้นเองครับ สุดท้ายก็จะได้ Passphrase คือ "LOOK AT THE PRETTY LIGHT"
  3. ขั้นสุดท้าย Terminal จะอยู่บริเวณชั้นหนังสือครับ ให้ Click ไปที่ชั้นหนังสือ จากนั้นก็ทำการปลดล็อค Terminal..

เมื่อปลดล็อค Terminal ได้แล้ว ห้องข้างหลัง Terminal นี้คือห้อง Corridor นั้นเองครับ แต่เมื่อเข้ามาถึงห้องนี้แล้วจะมี Terminal สุดท้าย ซึ่งไม่มี Console ให้เราหา Passphrase มาปลดล็อค ณ ตอนนี้เรายังมีข้อมูลไม่พอที่จะมาเปิด Terminal อันนี้ครับ เปลี่ยนเป้าหมาย ไปปลดล็อค Terminal อีกอันที่อยู่ที่ Train Station กันก่อน

Terminal 5 : Workshop – Train Station


เป้าหมายในข้อนี้นั้น คือ การ START Train หรือ ทำให้รถไฟวิ่งให้ได้ครับ

  1. Click ไปยังหน้า Console จะพบ Menu ดังนี้![]
  2. ก่อนอื่นต้องเข้าไปอ่าน HELP ก่อนเลยครับ จะได้รู้ถึงวิธีการใช้งาน Console พบว่าการที่จะใช้ฟังก์ชั่น START ได้นั้น จะต้องมีการใช้ฟังก์ชั่น BRAKEOFF ก่อน อีกทั้งยังจะต้องมี Password ในการใช้ฟังก์ชั่น START อีกด้วย แต่ปัญหาก็คือ เราไม่มี Password..
  3. หากลองสังเกตที่ **HELP**** จะพบว่าข้อความเหมือนมีการบอกใบ้อะไรเป็นนัย ๆ บางอย่าง และหากสังเกตลึกลงไปอีกหน่อยก็จะเห็นได้ว่ามีคำว่า LESS ซึ่งเป็นตัวอักษรพิมพ์ใหญ่เด่นออกมา ทำให้พอจะอนุมานได้ว่า Command ที่กำลังเปิด Help Document ขึ้นมาอยู่นั้น น่าจะเป็น LESS Command นั้นเอง ซึ่งทดสอบได้โดยการพิมพ์ **h
    เมื่อพิมพ์ h แล้วพบว่าจะเข้ามาสู่หน้า Help ของ LESS Command
  4. ไล่อ่านข้อมูลต่าง ๆ ในหน้า Help ก็จะพบจุดหนึ่งที่น่าสนใจ คือ LESS สามารถ Execute Shell Command ได้โดยการพิมพ์ "!"
  5. เมื่อสามารถใช้ Shell Command ได้แล้ว ขั้นตอนต่อไปคือหาไฟล์ต่าง ๆ ที่อาจจะเป็นประโยชน์ในการ START Train พบว่ามีไฟล์ที่น่าสนใจอยู่สามไฟล์ คือ ActivateTrain**, TrainHelper.txt และ **Train_Console

เมื่ออ่านไฟล์ Train_Console ก็จะพบ Password ที่ใช้ในการ START Train นั้น คือ "24fb3e89ce2aa0ea422c3d511d40dd84" นั้นเองครับ 6. ถึงแม้ว่าจะได้ Password มาแล้ว แต่หากอ่านไฟล์ Train_Console ก็จะพบว่ามีส่วนหนึ่งของไฟล์ที่น่าสนใจอยู่ คือ
จากโค้ดจะเห็นได้ว่า เมื่อเรียกฟังก์ชั่น START และเงื่อนไขต่าง ๆ ถูกต้องแล้ว โปรแกรมจะทำการ Execute ไฟล์ ActivateTrain อีกทีหนึ่ง ซึ่งเท่ากับว่าหากเราใช้ Shell ในการ Execute ไฟล์ ActivateTrain ได้เอง ก็ไม่ต้องใช้ Password ในการทำให้รถไฟวิ่งได้อีกต่อไป 7. Execute ไฟล์ ActivateTrain โดยใช้คำสั่ง
!./ActivateTrain
รถไฟจะสามารถวิ่งได้และพาเราย้อนเวลากลับไปยัง North Pole ในปี 1978 ครับ 8. เมื่อเดินสำรวจ North Pole ในปี 1978 จนทั่ว ก็จะพบตัว Santa Claus ที่โดนลักพาตัวไปอยู่ที่ DFE** **R (ใน อาคาร Workshop) นั้นเองครับ

Appendix


ขณะที่กำลังเปิด Console ของ Terminal ในเกมส์อยู่นั้น หากลองดักจับ Packet ดูก็จะพบว่า

จะมีการส่ง Packet ไปหาที่ ๆ หนึ่งครับ นั้นก็คือ URL ของ Console นั้นเอง (เป็น Docker ด้วย) แสดงว่าไม่จำเป็นต้อง Login เข้าไปในเกมส์ ก็สามารถที่จะ Browse เว็บไปตรง ๆ เพื่อเข้าใช้ Console ของแต่ละ Terminal ได้ครับ และเราก็ได้รวบรวม URL ของ Console ทั้งหมดมาให้แล้ว

| No | Location | URL | | 1 | Elf House#2 | https://docker2016.holidayhackchallenge.com:60002 | | 2 | Workshop: Upper terminal | https://docker2016.holidayhackchallenge.com:60004 | | 3 | Workshop: Lower terminal | https://docker2016.holidayhackchallenge.com:60003 | | 4 | Santa’s Office | https://docker2016.holidayhackchallenge.com:60005 | | 5 | Workshop : Train Station | https://docker2016.holidayhackchallenge.com:60001 |

Summary


  1. What is the password for the "cranpi" account>yummycookies
  2. How did you open each terminal door and where had the villain imprisoned Santa?
    Answer

| No | Location | How to open | | 1 | Elf House#2 | sudo command |
| 2 | Workshop: Upper terminal | play the game, cheat |
| 3 | Workshop: Lower terminal | access to directory with wierd name |
| 4 | Santa’s Office | follow dialogue from WarGames |
| 5 | Train Station | execute command directly in less console |

Santa Claus is in DFER room, Workshop building in 1978.

Resources


  1. https://pen-testing.sans.org/blog/2016/12/07/mount-araspberry-pi-file-system-image (Mount Image File)
  2. https://wiki.skullsecurity.org/index.php?title=Passwords (RockYou)
  3. http://www.yourownlinux.com/2015/08/etc-shadow-file-format-in-linux-explained.html (Shadow File Format)
  4. http://linuxcommand.org/lts0070.php (Linux File Permission)
  5. https://linux.die.net/man/8/sudo (Sudo)
  6. https://linux.die.net/man/1/strings (Strings)
  7. https://en.wikipedia.org/wiki/Character%5Fencoding (Character Encoding)
  8. https://en.wikipedia.org/wiki/Hunt%5Fthe%5FWumpus (Hunt The Wumpus)
  9. http://manpages.ubuntu.com/manpages/wily/man6/wump.6.html (Wump)
  10. http://tldp.org/LDP/abs/html/special-chars.html (Special Characters)

จบกันไปแล้วนะครับกับ Part 3 และสำหรับใน Part 4 จะมีความซับซ้อนและยากขึ้นไปกว่านี้อีกเป็นเท่าตัว..

แล้วพบกันใหม่ในตอนต่อไป Part 4: My Gosh… It’s Full of Holes ครับ ?

logologo

INCOGNITO LAB CO., LTD.

38 Soi Petchakasem 30, Petchakasem Road, Pak Khlong Phasi Charoen, Phasi Charoen, Bangkok 10160

©2025 Incognito Lab Co., Ltd. All rights reserved

Terms & Conditions Privacy Policy