01-06-2026

[Writeup] NZT-48 Is Calling

ArchaCTF
CTF
CyberSecurity

Introduction

สวัสดีค่ะทุกคนอันนี้คือครั้งแรกเลยที่เราทำ Writeup เพราะว่าข้อนี้เป็นข้อที่น่าสนใจที่ต้องใช้ทั้งการสังเกตเวลาและสมาธิค่ะ ซึ่งทีมเราก็เกือบจะได้ First blood แต่ว่าดันขี้เกียจซะก่อนก็เลยมีคนอื่นแย่งไป 555+ (แต่สุดท้ายก็ได้เป็นทีมที่ 3 ที่แก้ข้อนี้ได้ในเวลานั้น)

ซึ่งหลังจบการแข่งขันแล้วมีทีมที่ทำได้อยู่ทั้งหมดแค่ 6 ทีมเท่านั้น ซึ่งเป็นข้อที่ยากมากๆก็เลยอยากจะมาบอกวิธีการแกะข้อนี้ให้ทุกคนดูกันค่ะ

เครื่องมือที่ใช้

  • Strings
  • Volatility 3
  • Chatgpt/Gemini
  • VirusTotal
  • Cmake/C/C++/QT Library

ข้อแนะนำคือคอมควรจะมีพื้นที่แล้วก็แรมอย่างน้อย 16GiB ค่ะ ถ้าเป็นไปได้ให้รัน Linux เข้าไปในเครื่องเลยค่ะเพราะว่าถ้าแกะไปด้วยแล้วก็ใช้ WSL แรมเต็มแน่ๆค่ะ

ด้านในมันคือไฟล์อะไรนะ

ในโจทย์ถามว่า "นายบ่าวเป็นเด็กวัยรุ่นที่อยากเป็น Hacker โดยเขาชอบเล่นเกม Roblox เป็นชีวิตจิตใจและวันหนึ่งเขาได้กินยาที่ชื่อว่า NZT‑48 และทำให้สมองของเขาได้ทำงาน 100% และได้โดนจิตใจด้านมืดเข้าครอบงำ และเขารู้สึกได้ว่าอยากเป็น Hacker และเขาก็ได้ Download Malware เข้ามาโดยไม่คาดคิดและทำให้เขาโดน Malware เข้าควบคุมคอมพิวเตอร์จงช่วยนายบ่าวตามรอย Hacker ที่พยายามแฮกคอมพิวเตอร์ของเขา จงตอบคำถามให้ครบ 10 ข้อก่อนที่ฤทธิ์ยา NZT‑48 จะหมดลง" แล้วก็ให้เราโหลดไฟล์ .raw มา

ความพยายามแกะครั้งแรก

ตอนแรกก็พยายามจะเปิดด้วยการ mount disk แต่ว่ามัน error ก็เลยเอ๊ะ

มัน error ก็เลยถาม ChatGPT และแกะไปแกะมาแล้วพบว่ามันไม่ใช่ไฟล์ hard disk เลยแต่มันคือไฟล์ memory dump

ยืนยันว่ามันเป็น Memory Dump หรือเปล่า

เราก็ได้ทำการโหลด volatility 3 แล้วก็ลองใช้คำสั่ง vol -f DESKTOP-O6QKJ51-20260101-093210.raw windows.info และ boom!! เราก็ได้ข้อมูลมาแล้วค่ะ

วิเคราะห์พฤติกรรมของเด็กเบียวโปร roblox นายนี้

ไฟล์พวก memory dump สามารถใช้โปรแกรมของ linux อย่าง strings ในการหาค่าที่เป็นตัวข้อความได้ ซึ่งไฟล์พวกนี้จะมีทุกอย่างตั้งแต่ประวัติการค้นหา, คุกกี้, ภายในเครื่องที่เปิดอยู่ในเวลานั้น, คำสั่งที่ถูกเขียน, โปรแกรมที่ใช้เครือข่าย, เครื่องเซิฟที่ติดต่ออยู่, และอื่นๆอีกมากมาย

สิ่งที่เราควรจะรู้ก่อนทำโจทย์ก็คือ

  1. เด็กคนนี้มันใช้ search engine อะไร
  2. ประวัติการค้นหา

ในขณะนี้เราต้องการแค่ 2 ข้อนี้ก่อนค่ะเดี๋ยวเราจะค่อยๆไปกันต่อนะคะ หลังจากที่ลองหาคำว่า "search?" ก็พบเจอว่า

เราเจอว่าเด็กคนนี้น่าจะใช้ Microsoft Edge และ search engine bing เป็นหลักเพราะว่าน่าจะขี้เกียจโหลด chrome แหละมั้ง

หลังจากที่เรารู้ว่าเราสามารถแกะไฟล์นี้ได้ละถึงเวลาเริ่มตีแต่ละข้อเลยค่ะ

Question 1: นายบ่าวได้ พยายาม Download โปรแกรมอะไรในขณะที่กำลังหาวิธี Hack Roblox

จากการสันนิษฐานเด็กคนนี้น่าจะหาโปรจากการค้นหาใน browser ก่อน เราจะทำการดึงประวัติการค้นหาทั้งหมดจาก memory ของเด็กเบียวคนนี้ออกมาก่อน

เราจากนั้นเราก็ทำการอัพโหลดไฟล์ที่เรา dump ออกมาให้ ChatGPT อ่านและช่วยวิเคราะห์ (เพราะว่าเยอะขนาดนั้นคนทั่วไปตาลายพอดี)

ซึ่งเรารู้คำใบ้ว่ามันมีแค่ 4 ตัวอักษรเท่านั้น เราก็เลยบอกไปว่าหาแค่ที่ตัวอักษรที่มีความเป็นไปได้มากที่สุด

เราก็ได้คำตอบมาแล้วว่ามันเป็น "krnl" ซึ่งเอาความเป็นจริงแล้วโปรตัวนี้มันฟรีด้วยซ้ำแต่ว่า somehow ไว้ใจ NZT-48 มากไปแหละมั้ง

Question 2: Profile ในเกม Roblox ของนายบ่าวชื่อว่าอะไร

ข้อนี้คล้ายๆกับข้อแรกแต่ว่าเราต้องมีความสังเกตนิดนึง เด็กคนนี้น่าจะ login บัญชี roblox ตัวเองไว้ในคอมอยู่แล้วซึ่งมันจะเด้งเข้าโปรไฟล์ตัวเองอยู่แล้วแปลว่ามันควร อยู่ในประวัติการค้นหา

สิ่งที่เราควรจะทำก็คือรู้ว่า roblox ใช้ลิงค์แบบไหนในการเข้าโปรไฟล์แล้วก็หาจาก memory dump ดูได้เลยค่ะ เราจะค้นหาบัญชี roblox ของเด็กคนนี้โดยการใช้คำสั่ง strings DESKTOP-O6QKJ51-20260101-093210.raw | grep "roblox.com/users"

ลองกดไปตามลิงค์แล้วก็ใช่เลย

คัดลอก username ไปตอบได้เลยค่ะ

Question 3: นายบ่าวได้ Download โปรแกรม ที่น่าสงสัยจากลิ้งไหน

ข้อนี้สามารถแกะมาจากประวัติการค้นหาในไฟล์ memory dump ได้เลยค่ะ ทำคล้ายๆวิธีเดิมแต่ว่าเราจะดึง https มาให้หมดแล้วก็ให้ AI ช่วยวิเคราะห์ลิงค์ที่มีความเสี่ยงมากที่สุดมาให้ค่ะ

Question 4: นายบ่าวได้ Download โปรแกรมที่น่าสงสัย โปรแกรมนั้นชื่อว่าอะไร

ข้อดีไม่ต้องคิดมากค่ะโหลดไฟล์จากข้อเมื่อกี้นี้แล้วก็มาดูด้านในได้เลยค่ะว่ามันคือไฟล์อะไร

"agent.exe" มันดูแปลกๆนะ

Question 5: เครื่องนายบ่าวได้โดน Malware ที่ชื่อว่าอะไรโดยให้ตอบเป็น Malware Family

ดูเหมือนจะง่ายนะคะแต่คำตอบคือไม่เลยค่ะ เนื่องจากว่าไฟล์เวรนี่มันติดล็อคค่ะ

แต่ว่าอย่าลืมไปว่ามันคือ memory dump หมายความว่าทุกไฟล์ที่เคยเรียกใช้งานจะสามารถดึงมาได้ เราก็เลยไปทำคิดโดยจะดึงไฟล์ agent.exe ออกมาจาก memory เพื่อเอามาแกะดูอีกทีนึงค่ะ

แต่จากการคาดเดาเรารู้แน่ๆว่า agent.exe น่าจะรันอยู่บนหลังเพราะว่าน่าจะคุยกับ C2 อยู่ หน้าที่ของเราคือการหา PID ของไฟล์ตัวนี้แล้วก็ดึง object มันออกมาค่ะ

เราจะใช้คำสั่ง vol -f DESKTOP-O6QKJ51-20260101-093210.raw windows.pslist ในการแสดง PID ทั้งหมดของเครื่อง

หาไปหามาก็เจอแล้วค่ะ มันเป็น PID 7120

หน้าที่ของเราต่อไปคือการดึง object ออกมาจาก PID 7120 โดยใช้คำสั่ง vol -f DESKTOP-O6QKJ51-20260101-093210.raw windows.dumpfiles --pid 7120

ไฟล์เยอะแบบนี้อย่าเพิ่งยอมแพ้ค่ะ เราต้องการแค่ตัวเดียวที่ลงท้ายด้วย "agent.exe.img"

หลังจากนั้นเราก็เช็คว่ามันเป็น PE32+ หรือไม่โดยใช้คำสั่ง file *agent.exe.img แล้วจากนั้นให้แก้ชื่อไฟล์ตัวนั้นให้เป็น agent.exe ค่ะ

เสร็จแล้วเราสามารถนำไฟล์ .exe ไปสแกนได้ที่ virustotal ได้เลยค่ะ

หลังจากที่เราไปสแกนหาเราก็เจอว่า

มันอยู่ในตระกูลของ "adaptixc2" นี่คือคำตอบค่ะ

Question 6: จงหา IP และ Port ของ C2 ที่เข้ามายึดเครื่องของนายบ่าว

ตามที่เคยพูดไว้ว่า memory dump จะมีข้อมูลเครือข่ายด้วยเราสามารถไปหาได้เลยค่ะว่า 7120 มันคุยกับใครอยู่ได้เลยค่ะ โดยใช้คำสั่ง vol -f DESKTOP-O6QKJ51-20260101-093210.raw windows.netscan | grep 7120

ถ้าเราสังเกตดีๆ IP 192.168.1.169.135:51129 คือ IP เครื่องเราค่ะ แต่สิ่งที่เราต้องการก็คือ IP ที่มันไปคุยด้วยก็คือ "185.84.160.189:443" อันนี้คือคำตอบค่ะ

ป.ล ข้อนี้เหมือนว่าคนที่คิดโจทย์ข้อนี้ก็ใส่คำตอบผิดเหมือนกันค่ะ 555+

Question 7: ชื่อจริงๆ ของนายบ่าวชื่ออะไรกันแน่

อันนี้ดูเหมือนจะไปไวหน่อยค่ะ แต่ว่าคำตอบอยู่ในหน้าโปรไฟล์เลยค่ะ ถ้าสมมุติว่าเราลองสังเกตคำตอบมีกี่ตัวอักษรแล้วก็หน้าโปรไฟล์แล้วก็จะเจอว่า

"Destroyer1337xxx" คือชื่อของเด็กเดียวคนนั้นค่ะ

Question 8: หลังจาก OSINT ชื่อจริงของนายบ่าวคุณได้เจอชื่อของเขาใน เว็ปไซต์อะไร

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

ตามคาดคิดค่ะมันมีจริงด้วยถ้านั้นเราก็เอาเว็บ pastebin ไปตอบได้เลยค่ะ (เอาแค่ตัวเว็บไม่ต้องเอาuserมาค่ะ อย่าลืมแปลงเป็น hxxp ก่อนส่งด้วยค่ะ)

Question 9: สุดท้ายเหลือรหัสผ่านที่สามารถเข้าถึง C2 ของ Hacker ที่พยายามเข้ามาแฮกเครื่องนายบ่าวคืออะไร

ข้อนี้ดูเหมือนจะยากๆหน่อยแต่ว่าหลังจากที่เราได้ Hint มาว่ามันอาจจะอยู่ในหน้าโปรไฟล์ของเด็กคนนั้นก็ได้เราก็ลองไปสังเกตใหม่ดู

เอารูปทำให้ดูใหม่เราจะเห็นว่ามันมี pastebin อยู่อันนึงลองกดเข้าไปดู

ตอนนี้ก็เหลือแค่เราต้องเอา Key กับ secret ไปแกะค่ะ โยนงานให้ Gemini ไปทำสคริปมาค่ะ

หลังจากที่ได้จากคลิปแล้วก็ลองรันดูและเราก็ได้คำตอบสักที

Question 10: เมื่อเข้าไปที่ C2 Server จงสังเกตุว่า User คนไหนที่เคยเข้ามาใน C2 server

ข้อนี้หลังจากที่เรารู้ว่า C2 ตัวนี้มันคือตัวไหนเราก็ลองไปหาจาก GitHub ได้เลยค่ะ

มีโปรเจคตัวนึงน่าสนใจค่ะ ลองไปดูกันได้

หลังจากนั้นเราก็ git clone project ตัวนี้แล้วก็ลอง build มาดูด้วยความรู้ภาษาซีที่มีพื้นฐานค่ะ

หลังจากเสร็จแล้วให้ลองไปที่โฟลเดอร์ของ client แล้วก็ลอง make ก็รันได้เลยค่ะ

เปิดมาแล้วด้านในจะเป็นประมาณนี้เลย

ขั้นตอนต่อไปถึงเวลาในการใส่ข้อมูลในการเข้าเครื่องเซิฟ C2 ค่ะ

  • User: จากการคาดเดาน่าจะเป็นชื่อจริงของเด็กคนนั้น

  • Password: ที่เราแกะมาได้จากข้อเมื่อกี้นี้

  • URL: เอาตาม template เลย ถ้าเป็น IP เครื่องเซิฟนี้ก็จะเป็น https://185.84.160.189:4321/endpoint

  • Name/Directory: อะไรก็ได้ได้เลยค่ะ

เสร็จแล้วก็กดเชื่อมได้เลยค่ะ หลังจากที่เรากดเชื่อมไปก็จะเป็นประมาณนี้

คำตอบมีแค่ 7 ตัวอักษรหมายความว่า user คนนี้คือคำตอบค่ะ "baw_lai"

บทสรุป

สุดท้ายแล้วอันนี้คือ Writeup ครั้งแรกของเรามันก็จะดูแปลกๆนิดหน่อยค่ะ 555+ หวังว่าหลายๆคนอาจจะได้ความรู้จัก Writeup ข้อนี้ค่ะ

เราก็เข้ามาเพื่อประสบการณ์เหมือนกันก็หวังว่าจะเป็นประสบการณ์ให้กับเพื่อนๆหลายๆคนค่ะ

เจอกัน CTF ครั้งหน้าค่ะ