เล่าประสบการณ์แข่ง CTF ระดับโลก International Cybersecurity Championship 2023

สวัสดีครับผม พิริยะ เหมือยไธสง จากทีมเจาะระบบของ MAYASEVEN ไม่นานมานี้ผมได้มีโอกาสแข่ง CTF (งานแข่งด้าน Hacking/Cybersecurity) งาน Asian Cyber Security Challenge 2023 (ACSC2023) จนชนะได้เป็นตัวแทนประเทศไทย และได้ไปแข่งต่อที่งาน International Cybersecurity Championship ที่อเมริกา เลยอยากแชร์ประสบการณ์ให้ได้ฟังกัน ท้ายบทความมี live พูดคุยประเด็นเชิงลึกเทคนิคการเตรียมตัวแข่งขัน และรายละเอียดเกี่ยวกับโจทย์งานแข่งระดับโลก

ทำไมได้ไปแข่งที่ประเทศอเมริกา — Asian Cyber Security Challenge 2023 (ACSC2023)

ก่อนได้ไปแข่งที่อเมริกานั้น ผมได้ไปแข่งงาน Asian Cyber Security Challenge 2023 ก่อนครับ ซึ่งเป็นเป็นงานแข่ง CTF ที่จะคัดคนจากประเทศต่างๆใน Asia ไปงาน International Cybersecurity Championship ที่จะจัดขึ้นที่ San Diego, USA ครับ ผมเห็นงานนี้จากโพสของ 2600 ที่ประชาสัมพันธ์ ซึ่งผมก็เข้าร่วมไปเพราะเล่น CTF เป็นประจำอยู่แล้วครับ

โจทย์ของงาน ACSC 2023 นั้นเป็น CTF ในรูปแบบ Jeopardy ทั่วไป โดยในตอนแรกผมคิดว่าจะเข้าไปเล่นสนุกๆเฉยๆ แต่ดันลุ้นได้ที่ 1 ซะงั้น 😂😂 เลยพยายามลองให้สุด แล้วก็ได้ที่ 1 มาจริงๆครับ สำหรับโจทย์ค่อนข้างยากพอสมควร แต่ก็สนุกดีครับ มีโจทย์ที่น่าสนใจหลายข้อเลย แอบบ่นหน่อยว่าโจทย์ส่วนใหญ่ในจะมี Cryptography ไปปนอยู่ด้วย แม้ว่าจะไม่ใช่หมวด Cryptography ก็ตาม

หลังจากได้ที่ 1 แล้วเขาก็ให้เขียน write up ส่งไป เพื่อยืนยันว่าเราทำได้จริงๆด้วยตัวเอง ไม่ได้โกง ผมก็ทำการส่งไป แล้วหลายวันต่อมาก็ได้รับเมลล์จาก ACSC ตอบรับเราเป็นหนึ่งใน finalists ของทีม Asia พร้อมกับได้เข้า discord ไปเจอกับ coach และก็ผู้เล่นจากหลากหลายประเทศในทีมครับ

International Cybersecurity Championship 2023

หลังจากเข้า Discord ไปจะมี meeting การแนะนำตัว พร้อมกับชี้แจงโจทย์ในงานแข่ง International Cybersecurity Championship 2023 โดยงานแข่งนี้จะจัดยาว 5 วันครับ จะมีงานแข่งจริงๆ 2 วัน ที่เหลือจะเป็นพิธีเปิด พิธีปิดแล้วก็งานสัมนาครับ โดยจะแบ่งเป็นการแข่งต่อไปนี้

  1. การแข่ง CTF Jeopardy ทั่วไปครับ + hardware hacking อันนี้จะแข่งในวันแรก
  2. การแข่ง escape room พร้อมกับ Jeopardy ครับ ใช้เวลาไม่นานมาก ไม่เกิน 30 นาที ถ้าผ่านก็จะได้คะแนนเสริมไป
  3. Attack and Defense อันนี้แข่งวันที่ 2 โดยแต่ละทีมจะมี VM ที่มี services ที่มีช่องโหว่อยู่ ซึ่งเราต้องคอยโจมตีช่องโหว่นั้นของทีมอื่น และต้องพยายาม patch ช่องโหว่ของ VM เราด้วย โดยมีเงื่อนไขที่ว่า services ต้องใช้งานได้ปกติ และ flag ต้องยังอยู่ที่เดิม ไม่มีการเปลี่ยนแปลง flag ด้วย
  4. King of the hill อันนี้แข่งไปพร้อมกับ Attack and Defense ซึ่งจะเป็น Tournament การเขียนบอทให้เล่นเกมแนว battle royale โดยเกมนี้จะมีช่องโหว่ด้วย หาก exploit ได้ก็มีสิทธ์ที่จะได้คะแนนสูงกว่าคนอื่น

โดยแต่ละทีมจะเข้าร่วมการแข่งขันนี้ ทีมไหนที่คะแนนมากที่สุดรวมทั้ง 2 วันก็จะเป็นผู้ชนะไปครับ

การเตรียมตัวของทีม Asia

หลังจาก meeting กันพร้อมกับคุยเรื่องกติกาคร่าวๆ ทีม Asia ก็มีการนัดซ้อม โดยหลักๆจะเน้นไปในการให้คุ้นชินกับระบบที่จะแข่งในรอบชิง แล้วก็ tools ที่จะใช้ใน Attack and Defense มากกว่าครับ โดยจะมีการจัดการแข่งขันกันเองภายในด้วย ระหว่างโค้ชของ Team Asia กับผู้เล่นทีม Asia ครับ ทำให้เราคุ้นชินฝีมือของแต่ละคน แล้วก็สามารถวางแผนที่จะใช้ใน Jeopardy และ Attack and Defense ด้วย

โดยแผนการหลักของ Team Asia คือในวันแรกที่เป็น Jeopardy จะเน้น First blood เป็นหลัก เลยจะให้แต่ละคนเน้นทำหัวข้อที่ตัวเองถนัด และเอา First blood มาให้มากที่สุด ส่วนใน Attack and Defense ทีม Asia มีแผนจะใช้ ExploitFarm ในการ exploit ฝั่งตรงข้าม และใช้ Tulib ในการทำ packet analysis เพื่อที่จะได้วิเคราะห์การโจมตี ของคู่แข่งและโจมตีกลับได้ โดยจะมีการแบ่งหน้าที่ของแต่ละคนด้วย เช่นคนไหนโจมตี ป้องกัน หรือหน้าที่ทำ packet analysis ครับ

ซึ่งเราใช้เวลาการเตรียมตัวไม่นานมากครับ ประมาน 1-2 เดือน ผ่านไปไม่นานรู้ตัวอีกทีก็ใกล้ถึงวันแข่งแล้ว

วันที่ 1: ถึงอเมริกา

ผมเดินทางจากไทยไปอเมริกาใช้เวลาประมาณ 33 ชั่วโมงครับ เดินทางคนเดียวด้วย เรียกได้ว่าเป็นประสบการณ์ที่ค่อนข้างทรหดมาก 😂 แต่การเดินทางก็ค่อนข้างราบรื่นครับ ไม่ได้มีปัญหา

ผมมาถึงอเมริกาช่วง 6 โมง ถือว่าค่อนข้างสาย ถ้าเทียบกับคนอื่นๆที่มาถึงช่วงบ่ายๆกัน พอมาถึงผมก็มานั่งกินข้าวกับทีมเลย ได้ใช้เวลานี้ทำความรู้จักกับเพื่อน ทั้งทีมตัวเอง และทีมอื่นๆครับ แต่ละคนค่อนข้างอัธยาศัยดี โดยเฉพาะทีม Asia แม้ว่าภาษาแต่ละคนจะไม่ได้ดีมาก แต่ก็พยายามคุยสื่อสารจนเข้าใจกันได้

โดยวันนี้จะไม่มีอะไรมาก เพราะเป็น Team Arrival Day กว่าแต่ละคนจะมาถึงก็เย็นๆแล้ว ก็จะมีแค่กินข้าว คุยแผนการคร่าวๆแล้วก็เข้านอน โดยผมจะได้จับคู่นอนกับ roommate จากประเทศ Mongolia ครับ

วันที่ 2: Team Welcome Ceremony

วันนี้จะเป็นพิธีต้อนรับ โดยช่วงเช้าจะเป็นงาน conference เกี่ยวกับ security ให้เราได้ไปฟัง ส่วนช่วงบ่ายก็จะเป็นพิธีเปิดให้เราได้ไป setup อุปกรณ์สำหรับเตรียมแข่งพรุ่งนี้

วันนี้เลยจะเป็น free time เป็นส่วนใหญ่ ไม่ได้มีอะไรมาก ผมกับเพื่อนเลยไปเที่ยวชมทะเลกันแถวๆ San Diego Gliderport กัน

วันที่ 3: วันแข่งวันแรก Jeopardy

สำหรับการแข่งวันแรกจะเป็นแนว Jeopardy เป็นหลักครับ ผมกับทีม Asia จะเน้นทำโจทย์ที่ตัวเองถนัดก่อน โดยผมมีทำเว็บกับ Forensic เป็นหลัก แล้วก็มีช่วย Reverse Engineering บางข้อด้วย

สำหรับโจทย์แล้วคิดว่าไม่ได้ยากมากครับ โดยเฉพาะโจทย์ Forensic นี่ค่อนข้างง่ายเลย แต่โจทย์ที่คิดว่ายากสุดน่าจะเป็นหมวด hardware ครับ ที่เขาให้บอร์ดเรามา แล้วก็ต้องพยายาม hack แล้วก็ดึง firmware ออกมา Reverse Engineering แต่เนื่องจากทั้งผมแล้วก็เพื่อนไม่ได้เชี่ยวชาญด้านนี้เท่าไหร่ ทำให้ได้คะแนนในด้าน Hardware น้อยกว่าทีมอื่นมาก

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

จากความผิดพลาดนี้ทำให้เราได้อันดับที่ 4 ใน Jeopardy ครับ ซึ่งห่างกับที่ 3 แค่นิดเดียว ตอนนี้ทีมเราก็มีแอบเครียดเลยครับ เพราะว่าถ้าวันที่ 2 ไม่ได้ที่ 1–2 นี่ไม่น่าได้ติด Top 3 แน่ๆ หลังจากแข่งเสร็จก็มาคุยกันนิดหน่อย แล้วหลังจากนั้นทุกคนก็สลบไสลกันตั้งแต่หัวค่ำเลย 5555

วันที่ 4: วันแข่งวันที่ 2 — Attack and Defense & King of the Hill

สำหรับงานแข่งนี้จะเป็นการแข่งแบบ Attack and Defense (A/D) แล้วก็ King of the Hill (KotH) เป็นหลักครับ โดย A/D ก็ทั่วๆไปคือจะมี VM มาให้ทั้งหมด 6 เครื่อง แต่ละเครื่องก็จะมี services ที่มีช่องโหว่อยู่ เราต้องเข้าไปโจมตีคนอื่นเพื่อเก็บ flag คนอื่นเรื่อยๆ ในขณะเดียวกันก็ต้องป้องกัน VM ของทีมเรา

ในส่วนของ KotH นั้นจะเป็นเขียน Bot ให้เล่นเกมพ่อมด Battle Royale ครับ กฎของเกมค่อนข้างยาวมาก ขอบอกแค่ว่าเป็น Battle Royale ที่เราเป็นพ่อมด สามารถเสกหรือ summon สัตว์ต่างๆมาโจมตีคนอื่นได้ ซึ่งเราจะได้คะแนนถ้าฆ่าคนอื่นได้ และอยู่รอดได้นานที่สุดก็จะได้คะแนนด้วยครับ

หลังจากเข้าไปยังสนามแข่งแล้วทีมเราก็เริ่ม Set up อุปกรณ์ต่างๆทันทีครับ โดยเราจะมีการติดตั้งตัว Exploit Farm แล้วก็ตัว Tulip เพื่อทำการ packet analysis ด้วยจะได้วิเคราะห์คนที่มาโจมตีเรา ว่าเขาโจมตีด้วยช่องโหว่อะไร เราจะป้องกันยังไง และจะโจมตีกลับได้อย่างไร

หลักจากติดตั้งเสร็จ เราก็แบ่งทีมหาช่องโหว่ วิเคราะห์ packets กับ develop ตัวบอทของ KotH ซึ่งในช่วงแรกเราใช้เวลาการติดตั้งนานไปหน่อย ทำให้เจอช่องโหว่ช้ากว่าทีมอื่น บวกกับเรื่องการทำบอทคะแนนเราก็ต่ำมาก เพราะเราไม่ได้เน้นตรงส่วนนี้ครับ ตอนแรกคิดว่าคะแนนส่วนนี้ไม่เยอะ แต่กลายเป็นว่ามันเยอะมาก แล้วเราก็ค่อนข้ามตามคนอื่นในส่วนนี้ครับ เป็น 2 – 3 เท่าเลย

นอกจากนี้ตัวโจทย์ของ A/D ก็ค่อนข้างยาก แล้วก็แทบทุกโจทย์มี Crypto มาปนอยู่ด้วย (คิดว่าน่าจะเป็นการป้องกันการใช้ Payload เดิมของทีมอื่นจากการวิเคราห์ Packets แล้ว Replay Attack กลับไป) ช่วงแรกๆมีแค่โจทย์แรกที่ทุกคนแก้ได้ แล้วทีมยุโรป (ที่กำลังอันดับ 1 ตอนนนั้น) ก็แก้โจทย์อีกข้อนึงได้ ส่วนข้อที่เหลืออีก 4 ข้อยังไม่มีใครแก้ได้ ทำให้ช่วงแรกเราอยู่ลำดับที่ค่อนข้างต่ำ ประมาณอับดับที่ 4–5 ได้ ตอนนั้นแทบไม่มีหวังได้ Top 3 เลย

เนื่องจากตอนนี้อยู่ในอับดับท้ายๆเลยเปลี่ยนแผนใหม่ โดย KotH ที่เป็นจุดอ่อนเรา จะเน้นโจมตีคนที่อันดับต้นๆก่อน เพื่อจะได้ให้คะแนนไม่ทิ้งห่างกันมาก แล้วไปเน้น A/D ข้อที่ยังไม่มีใครทำได้ที่เหลือ 4 ข้อแทน

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

เนื่องจากการขัดขวางอันดับต้นๆของ KotH รวมกับการที่เราได้ช่องโหว่ของ services อีกทั้ง 4 services ที่ยังไม่มีใครทำได้ ทำให้ทีม Asia ขึ้นเป็นที่ 1 ของ Attack and Defense ได้ครับ

วันที่ 5: วันประกาศผลรางวัล

วันนี้เป็นวันที่ทุกคนรอคอยครับ เพราะจะได้ลุ้นกันสักทีว่าเราจะได้ลำดับที่เท่าไหร่ โดยวันนี้จะเป็น free time อีกวัน โดยเราจะได้ไปชม San Diego University ในช่วงเช้า แล้วก็จะมีประกาศรางวัลที่ San Diego University ในช่วงบ่าย ซึ่งผลรางวัลนี่ก็เป็นไปตามที่คิดครับ คือทีม Asia ก็ได้ที่ 3 ของโลกใน Overall score และที่ 1 ของโลกในหมวด Attack and Defense 🎉🎉🎉

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

วันที่ 6: กลับไทย

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

ความประทับใจจากการไปแข่งงานนี้

ผมรู้สึกประทับใจมากๆที่ได้ไปแข่งในงานนี้ เป็นการแข่งงาน CTF ในต่างประเทศเป็นครั้งแรกของผมเลย ได้มาเจอกับเพื่อนแล้วก็ผู้คนใหม่ๆที่มีความสนใจแบบเดียวกัน ได้เจอกับ community ที่เล่น CTF แบบจริงจัง แถมอยู่กับทีมระดับโลกด้วย เรียกได้ว่ารู้สึกอยากเล่น CTF มากกว่าเดิมอีก การมาต่างประเทศครั้งนี้ได้เทคนิคดีๆกลับไปเยอะมาก โดยเฉพาะเรื่องเทคนิคการเล่น CTF ประเภท Attack and Defense ซึ่งผมก็ไม่เคยเล่นมาก่อน แล้วก็ได้เพื่อนจากหลายๆประเทศด้วยไม่ใช่แค่ที่ Asia บางคนก็ยังติดต่อกันอยู่จนถึงตอนนี้ เรียกได้ว่าเป็นอีกประสบการณ์นึงที่น่าจดจำมากๆครับ

Previous Post
คนสองหน้าล่าสองบัญชี เจาะทะลุ Face Recognition
Next Post
Pentest คืออะไร? ในปี 2024 ยังจำเป็นอยู่ไหม?

Related Posts

No results found.

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed