หน้าเว็บ

วันพุธที่ 14 ตุลาคม พ.ศ. 2558

ประสบการณ์ทีม null ในการแข่งขัน Thailand CTF Competition 2015




CTF WTF?


          CTF ย่อมาจาก Capture The Flag[1] เป็นการแข่งขันด้านความปลอดภัยคอมพิวเตอร์ ที่เห็นบ่อยๆ คือมี 2 ประเภทคือ Jeopardy แนวถามตอบแก้โจทย์ในข้อต่างๆ เพื่อให้ได้มาซึ่ง Flag หรือข้อความและเพื่อเป็นกุญแจที่ใช้เพื่อปลดล๊อคผ่านข้อนั้น ซึ่งแต่ละข้อก็จะมีคะแนน ตามระดับความยากง่ายของข้อนั้นๆ อยู่เช่นกัน โดยจะมีหลายรูปแบบตาม Category ในหลายๆ ด้าน อีกประเภทคือ Attack-Defense การแข่งขันด้านความปลอดภัยคอมพิวเตอร์ในการเจาะระบบเชิงรุกและเชิงรับ กล่าวคือแฮกเครื่องคนอื่น เพื่อให้ได้มาซึ่ง Flag ในขณะเดียวกันก็ต้องป้องกันเครื่องตัวเองจากการถูกแฮกเช่นกัน รายละเอียดเพิ่มเติมดูได้ตามวีดีโอนี้ครับ[2]


Beside the point


          ส่วนตัวผมก็เล่น CTF อยู่บ่อยๆ เพราะติดตามงานแข่งใน https://ctftime.org/ ถ้ามีเวลา และทุกครั้งที่เล่นจะเขียน Write-up หรือเฉลยบางข้อเป็นภาษาอังกฤษไว้ในบล๊อกนี้[3]
          ครั้งนี้เป็นการแข่งแฮกครั้งที่ 2 ของผม ครั้งแรกนั้นแข่งของ FITWHEY[4] แข่งแฮกเว็บแต่ไม่เจอเว็บให้แฮกเลย เจอแต่เครื่องของผู้เข้าแข่งขันคนอื่น กำ

Member of null team


- ผมหนุ่ม (icheernoom)
- น้องพี (pe3z)
- นัย (ziperz)


Qualification Round (Online)


          เริ่มแข่งขันรอบ Online วันที่ 5 กันยายน เวลา 11.00 นัดกันว่าจะไปเล่นกันที่ร้าน NE8T แต่นัยไม่สบายเลยขอนั่งทำโจทย์อยู่ที่ห้อง และติดต่อกันผ่าน Facebook Group Chat ผมนั่งอยู่ร้าน NE8T กับน้องพีสั่งอะไรมากินกันได้ password wifi มาหาที่นั่งใกล้ๆปลั๊กไฟ ตั้งคอมฯได้ จนถึงเริ่มแข่งมีปัญหาในการ Login เล็กน้อยเลยโทรไปหาเพื่อเปลี่ยนรหัสผ่าน จึงทำให้สามารถเข้าแข่งขันได้ จากนั้นก็ได้เขียนสิ่งที่ทำลงใน Google Docs เพื่อแชร์กันว่าใครทำอะไรไปบ้างแล้ว จากนั้นก็ช่วยๆ กันทำโจทย์เรื่อยๆ มาติดปัญหาข้อรูป ที่แก้ file signature หรือ magic number ให้เป็น jpg เปิดรูปมาเอาไป Google image search เจอสถานที่ตอบ Colorado State Capitol ก็ตอบผิดจนไม่รู้จะตอบอะไรแล้ว orz แต่ก็ยังไม่รู้ว่าเฉลยคืออะไรกันแน่ น้องพีเปิดด้วยข้อที่เป็นไฟล์เสียง ผมจัดข้อที่เป็น Web ข้อเดียว ส่วนข้อดู Access Log ที่ Flag เป็น sha256 ของ timestamp ที่ upload shell เข้าไปที่ Server ได้ พอเจอ timestamp ที่คิดว่าใช่ จึงเอาไปเข้าเว็บ sha256 แล้วตอบยังไงก็ผิด คิดว่าน่าจะเป็นที่เว็บ พอเปลี่ยนเว็บที่ใช้เข้า sha256 ตอบได้เลย จำไม่ได้แล้วว่าเว็บไหน -..- ทางนัยก็แงะข้อที่มี 2 flag มา concat กันและข้ออื่นๆ ช่วยๆกันทำ ระหว่างแข่งขันน้องพีบอกอยากขึ้นไปต่อท้ายทีม Pwnladin ซึ่งผมก็อยากทำอยู่นะ แต่ก็พยายามกันเต็มที่แล้ว ขึ้นไม่ไหว ฮาๆ
          ผมและน้องพีอยู่ร้าน NE8T ถึงประมาณ 2 ทุ่มจึงแยกย้ายกันกลับ แต่น้องพีรู้สึกจะกลับไปทำต่อจนแก้โจทย์ได้อีกประมาณ 2 ข้อ ไม่ได้นอน ส่วนผมกลับไปนอนและตื่นมาทำตอน 7 โมงจนหมดเวลาแต่ก็ไม่ได้มีข้อที่ทำได้เพิ่มจนเวลาล่วงเลยมาถึง 11.00 ของวันที่ 6 กันยายน หมดเวลาการแข่งขันรอบ Online
          จบการแข่งขันด้วยคะแนน 950 คะแนนเป็นอันดับที่ 7 จาก 8 ทีมเกือบไม่ผ่านรอบแรก จากนั้นไม่นานก็มี Email มาให้เรายืนยันตัว และนัดวันที่จะ Skype กับทีมงาน ThaiCERT พอถึงเวลากลายเป็นใช้ Google Hangout แทนเพราะมีปัญหาในการใช้งานของ Skype


Final Round (Onsite)


          บ่ายวันที่ 4 ตุลาคม วันอาทิตย์ไปนั่งประชุมทีม null กันที่พักโรงแรมห้อง 2022 เพราะ check-in ได้แล้ว และมีพี่ทีมงานคอยต้อนรับอยู่ ตอนแรกไม่รู้ว่าโจทย์เป็น Jeopardy แนวถามตอบ นึกว่าเป็น Attack-Defense ก่อนหน้านั้นเห็น Email จากทีมงานว่า Require VMware กับ DVD Drive ซึ่งเครื่องผมกับนัย ไม่มี DVD Drive จึงโทรไปสอบถามทางทีมงาน จึงได้คำตอบว่าไม่มีก็ไม่เป็นไร เห็น Require ขอ VMware เลยนึกว่าเป็นแนวที่ให้ VM Image มาแล้วแกะหา Flag ไปเรื่อยๆ ทุกคนจึงอ่านแต่ Write-up ของ Vulnhub ซึ่งเป็น CTF ที่ให้ VMware มาก้อนหนึ่งเปิดขึ้นมาแล้วก็ทำยังไงก็ได้ให้ได้มาซึ่ง Flag ซึ่งจากที่อ่านต้อง root เครื่องทั้งนั้น พอมารู้ทีหลังว่าเป็นการแข่งขันแบบ Jeopardy เลยโล่งใจขึ้นมาหน่อย ฮา ทุกคนเลยมานั่งอ่าน SECCON CTF 2014 Write-up กันอย่างเมามันส์



          เช้าวันที่ 5 ตุลาคมทางทีมงานก็บรีฟให้ฟังว่าพรุ่งนี้ต้องทำอะไรบ้าง มีกิจกรรมอะไรบ้าง และแนะนำทีมงาน SECCON ที่มาออกแบบโจทย์ให้และบอกว่าอย่าเพิ่ง Write-up เพราะจะใช้โจทย์นี้กับอีก 3 หรือ 4 ประเทศนี่แหละผมฟังไม่ชัดเขาพูดภาษาอังกฤษสำเนียงญี่ปุ่น โดยส่วนตัวผมก็เคยเข้าร่วมการแข่งขัน SECCON CTF 2014 ในรอบ Online และเขียน Write-up ไว้[5] จากนั้นตอนบ่ายก็ประชุมทีม เตรียมเครื่องมือและโปรแกรม ก็มีการถามในทีมว่ามี Kali ไหม มี Burp suite ไหม มี wordlist สำหรับ Brute force ไหม ฯลฯ ซึ่งก็มีกันทุกคน  โดยในช่วงเที่ยงที่ผ่านมาทางทีมงานมีเสื้อฟรีให้ที่บอกไซต์ไปตั้งแต่ยืนยันตัวตนและมีอาหารมาให้ซึ่งเป็นโออิชิอะไรสักอย่างจำไม่ได้แต่น่าจะแพง กินเสร็จก็นั่งอ่าน Write-up ที่คิดว่าน่าจะมีแนวว่าอาจจะเจอในโจทย์วันพรุ่งนี้ และแชร์ Write-up จากงานอื่นๆ ที่ตัวเองคิดว่าน่าสนใจกับสมาชิกคนอื่นๆ ในทีม


          เช้าวันที่ 6 ตุลาคมเป็นวันแข่งที่ The 9th Towers ตอนเช้าก็เข้าร่วมพิธีการเปิดงาน Security Health Check Day และการแข่งขันก็ถูกจัดอยู่อีกห้องหนึ่ง การแข่งขันเริ่มขึ้นเวลาประมาณ 10.00 น. มีโต๊ะให้นั่งเป็นโต๊ะกลม นั่งเหมือนล้อมวงกัน ตอนนั้นตื่นเต้นมากๆ หิวข้าวด้วยเพราะกินไปแค่นมกับขนมปัง กว่าจะได้กินก็ตอนแข่งเสร็จ กินพิซซ่า
          เริ่มการแข่งขัน ทางทีมงานมีสายแลนให้คนละเส้น เสียบแล้วได้ IP เลยเพราะเป็น DHCP หลังจากได้ IP มาก็เข้าเว็บที่ทางทีมงานจัดเตรียมไว้ให้ ผมเล่นบน VMware 2 ตัวคือ Ubuntu ที่ใช้อยู่ปกติและ Kali 2.0 ที่เตรียมมาสำหรับงานนี้โดยเฉพาะ เลยตั้งค่า Network Adapter เป็นแบบ Bridged connection ออกไปหา Network ข้างนอก
          พอเริ่มทำไปสักพักส่วนมากผมจะทำข้อ Web ก็ได้ตกลงกันว่าเจอโจทย์ข้อ Web เดี๋ยวผมจัดเอง ส่วนนัยจะเน้นทำข้อที่เกี่ยวกับ Network และน้องพีจะเน้นทำ Forensic, Binary ซึ่งโจทย์รอบ Final ดูจะง่ายกว่าโจทย์รอบ Qualification ความยาก-ง่ายของโจทย์ทั้งสองรอบนั้นแปรผกผันกับเวลา เพราะถ้ายากเกินไปอาจจะทำไม่ทัน โดยโจทย์ไม่ได้เปิดหมด ครั้งแรกที่เห็นโจทย์มีประมาณ 10 ข้อและค่อยๆ มาทีละประมาณ 5 ข้อจนครบ 29 ข้อโดยทีมงานจะเดินมาบอกว่ามีโจทย์ใหม่แล้วนะ (คนญี่ปุ่น) มีคะแนนพิเศษสำหรับทีมที่ตอบได้ทีมแรกโดยจะได้คะแนน 1% ของคะแนนข้อนั้น เช่น ถ้าทีมไหนตอบข้อ 100 คะแนนได้ทีมแรกจะได้ คะแนนพิเศษ 1 คะแนน 200 คะแนนได้ 2 คะแนน เป็นต้น ซึ่งในทีมไม่มีใครตอบแล้วได้คะแนนพิเศษเลย เพราะไม่ทันทีมอื่น ถถถ -*- ระหว่างที่แข่งก็เห็น Scoreboard เคลื่อนไหวตลอดเวลา ทำให้ตื่นเต้นเข้าไปอีก คะแนนของทีม null ก็ขึ้นไปสูงสุดได้ที่ 2 ต่อท้าย Pwnladin ในช่วงแรกๆ จากนั้นร่วงรัวๆ 555
          จบการแข่งขันด้วยการแก้โจทย์ได้ 23 ข้อ ได้คะแนนไป 2710 คะแนน เป็นอันดับที่ 5 จาก 8 ทีมครับ


Questions Solved by null team



After Competition


          หลังจากเสร็จสิ้นการแข่งขันก็มีการมอบรางวัลก็จะมีรางวัลชนะเลิศเป็นทีม Pwnladin และรองชนะเลิศเป็นทีม asdfghjkl ส่วนทีม null ได้รางวัลชมเชยครับ ก็ได้เป็นเกียรติบัตร และเงินรางวัล 10,000 บาท หลังจากนั้นก็มี party มีอาหารให้ทาน หรูมากเช่นกัน พี่ที่เป็นพิธีกรฮามาก มีให้เล่นแนะนำตัวกันระหว่าง 8 ทีมที่เข้าร่วมการแข่งขัน จำชื่อให้ได้ให้ครบเกือบ 24 คน

Summary


          ขอบคุณ ThaiCERT, ETDA และ SECCON มากๆ ครับ ที่จัดการแข่งขันที่สนุกๆ แบบนี้ ถ้าปีหน้าจัดอีกก็จะลงแข่งอีกแน่นอน และขอแสดงความยินดีกับทีม Pwnladin และทีม asdfghjkl ที่ได้เป็นตัวแทนของประเทศไทย ไปแข่งต่อในงาน Cyber SEA Game ที่ประเทศอินโดนิเซียครับ

Reference


1. CTF? WTF?
2. แข่งแฮก CTF คืออะไร
3. http://icheernoom.blogspot.com/search/label/ctf
4. My first web security contest (FITWHEY + HyperHackathon)
5. SECCON CTF 2014

ไม่มีความคิดเห็น:

แสดงความคิดเห็น