ปราบผู้โกง CSGO ด้วย IdentityLogger
(mobeigi.com)- Invex Gaming ดูแล เซิร์ฟเวอร์คอมมูนิตี้ CSGO ในออสเตรเลียและนิวซีแลนด์ระหว่างปี 2014–2019 และภาระในการให้ผู้ดูแลตรวจเดโมด้วยตนเองก็เพิ่มขึ้นจากการหลบแบนซ้ำๆ
- การแบนแบบเดิมติดตามโดยผูก IP address กับ Steam ID แต่เมื่อผู้โกงเปลี่ยนทั้งสองอย่างพร้อมกัน เซิร์ฟเวอร์ก็ยากจะยืนยันได้ว่าเป็นผู้เล่นคนเดิมหรือไม่
- IdentityLogger ใช้คุกกี้ถาวรของ VGUI browser ที่มีอยู่ใน CSGO เพื่อเก็บ Tracking ID และใช้ IP address, Steam ID และ Tracking ID ร่วมกันเป็นลายนิ้วมือ
- หลังนำไปใช้กับทุกเซิร์ฟเวอร์ในเดือนกุมภาพันธ์ 2017 แม้ผู้เล่นจะเปลี่ยนทั้ง Steam ID และ IP address ก็ยังถูกระบุตัวซ้ำได้ด้วย Tracking ID และถูกแบนทันที
- วิธีนี้ใช้งานได้จนกระทั่ง Valve ถอด VGUI browser ออก เพื่อเสริมความปลอดภัยในเดือนตุลาคม 2017 หลังจากนั้นเทคนิคและปลั๊กอินจึงถูกเผยแพร่
การดูแล Invex Gaming และภาระในการรับมือผู้โกง
- Invex Gaming เป็นเซิร์ฟเวอร์คอมมูนิตี้ CSGO ในออสเตรเลียและนิวซีแลนด์ที่เปิดให้บริการตั้งแต่ปี 2014 ถึง 2019
- งานดูแลครอบคลุมทั้งการรักษาฟอรั่มและโครงสร้างพื้นฐานเซิร์ฟเวอร์ การจัดการค่าใช้จ่ายและสปอนเซอร์ การเพิ่มโมเดลผู้เล่น การแก้ hitbox การทำระบบ VIP อัตโนมัติ การเขียนปลั๊กอินแบบกำหนดเอง การแพตช์ exploit และบั๊กในเกม การป้องกัน DDoS และการจัดการรายงาน
- ในบรรดางานทั้งหมด งานที่น่าเบื่อและกินแรงที่สุดคือการ ระบุตัวและแบนผู้โกงที่เกิดซ้ำ
- การตรวจจับอัตโนมัติมีทั้งโค้ดฝั่งเซิร์ฟเวอร์และวิธีอย่าง Valve Anti-Cheat แต่เพราะเป็นเกมไล่ตามกันระหว่างผู้พัฒนาชีตกับผู้พัฒนาแอนตีชีต จึงยากที่จะจับชีตทุกแบบได้อัตโนมัติ
- สุดท้ายมาตรการสุดท้ายก็คือการ วิเคราะห์ด้วยตนเอง โดยดูเดโม CSGO และให้ผู้ดูแลตัดสินเองว่าผู้เล่นโกงหรือไม่
จุดที่การแบนด้วย IP address และ Steam ID ใช้ไม่ได้
- การแบนทั่วไปคือการเก็บข้อมูลที่ใช้ระบุตัวตนได้เพื่อปิดกั้นการเข้าถึงบริการ
- เซิร์ฟเวอร์ของ Invex Gaming ใช้ตัวระบุหลักอยู่สองอย่าง
- IP address: ตัวระบุบนอินเทอร์เน็ตที่ ISP หรือผู้ให้บริการเซิร์ฟเวอร์กำหนดให้
- Steam ID: ตัวระบุเฉพาะที่ผูกกับบัญชี Steam
- เมื่อผู้เล่นถูกแบน IP address และ Steam ID จะถูกบันทึกลงในรายการแบน และหากเชื่อมต่อเข้ามาอีกด้วย IP address หรือ Steam ID เดิม เซิร์ฟเวอร์จะเตะออก
- หากเปลี่ยนเฉพาะ Steam ID แล้วกลับมาด้วย IP address เดิม ก็สามารถผูก Steam ID ใหม่เข้ากับแบนเดิมแล้วแบนซ้ำได้
- กรณีเปลี่ยนเฉพาะ IP address แต่ใช้ Steam ID เดิม ก็จะผูก IP address ใหม่เข้ากับแบนเดิมเช่นกัน
- ปัญหาเกิดขึ้นเมื่อผู้โกง เปลี่ยนทั้ง Steam ID และ IP address พร้อมกัน
- จากมุมมองของเซิร์ฟเวอร์ นี่คือชุด IP address และ Steam ID ที่ไม่เคยเห็นมาก่อน
- ไม่มีวิธีเชื่อมโยงกลับไปยังแบนเดิม จึงกลับมาเล่นได้อีก
- แม้จะแบนซ้ำอีก ก็ยังเลี่ยงแบนได้ด้วยการเปลี่ยนตัวระบุทั้งสองไปเรื่อยๆ
- เคยพิจารณาวิธีเก็บรายชื่อ VPN ยอดนิยมและรายการ IP address ที่เกี่ยวข้องด้วย แต่ทีมดูแลไม่ชอบภาระในการดูแลรักษาอย่างต่อเนื่อง
- จากการวิเคราะห์ภายหลัง พบว่าผู้โกงที่สร้างปัญหาหนักที่สุดสามารถเข้าถึง IP address ที่กระจายอยู่หลายพื้นที่ และ บัญชี Steam มากกว่า 87 บัญชี ที่ซื้อ CSGO มาแล้ว
ความเป็นไปได้ของการตรวจผิดจากลายนิ้วมือ IP address
- Steam ID ระบุตัวผู้เล่นได้แบบเฉพาะเจาะจง แต่ IP address ไม่ใช่ตัวระบุเฉพาะ
- ถ้าพี่น้องสองคนในบ้านเดียวกันเชื่อมต่อเข้าเซิร์ฟเวอร์และมีเพียงคนเดียวที่โกง ลายนิ้วมือจาก IP address เดียวกันอาจโยงทั้งคู่เข้าด้วยกันจนถูกแบนทั้งสองคนได้
- ปัญหานี้ยังเกิดได้ในเครือข่ายแบบแชร์ เช่น มหาวิทยาลัยที่ทราฟฟิกภายนอกทั้งหมดออกผ่าน IP address เดียว
- คนหนึ่งถูกแบนเพราะโกงจากเครือข่ายของมหาวิทยาลัย
- แล้ว Steam ID ของผู้เล่นอีกคนที่ใช้เครือข่ายเดียวกันอาจถูกโยงเข้ากับ IP address ที่บ้านของเขาและนำไปสู่การแบนอย่างไม่เป็นธรรม
- Invex Gaming จึงสร้าง ระบบข้อยกเว้น สำหรับกรณีที่พบไม่บ่อยแบบนี้ และแนะนำว่าไม่ควรเล่นจากเครือข่ายที่ไม่น่าเชื่อถือ
ใช้คุกกี้ของ VGUI browser เป็นตัวระบุตัวที่สาม
- ต้นปี 2017 ปัญหาการหลบแบนของเซิร์ฟเวอร์รุนแรงขึ้นมาก จนผู้ดูแลยังต้องคอยตรวจเดโมด้วยตนเองอย่างต่อเนื่อง
- โจทย์หลักคือทำอย่างไรจึงจะระบุผู้เล่นคนเดิมได้ แม้ Steam ID และ IP address จะถูกเปลี่ยนพร้อมกัน
- ใน CSGO มีเว็บเบราว์เซอร์พื้นฐานภายในเกมที่ผู้ดูแลเซิร์ฟเวอร์ใช้แสดง MOTD ตอนเชื่อมต่อได้ ซึ่งเรียกว่า VGUI browser
- VGUI browser เปิดเว็บไซต์ใดก็ได้บนหน้าจอของผู้เล่นตามที่ผู้ดูแลเซิร์ฟเวอร์กำหนด และยังสามารถซ่อนหน้าต่างนั้นได้ด้วย
- เบราว์เซอร์นี้ยืนยันตัวตนล่วงหน้าด้วยคุกกี้ของ Steam จึงสามารถล็อกอินโดเมน Steam ได้อัตโนมัติ และยังยอมให้รัน JavaScript ฝั่งไคลเอนต์ที่ผู้ดูแลเซิร์ฟเวอร์ส่งมา
- หัวใจของ IdentityLogger คือ VGUI browser รองรับคุกกี้และเก็บไว้ข้ามเซสชันได้
- จากการทดสอบ คุกกี้ที่บันทึกผ่าน VGUI browser ยังคงอยู่แม้จะปิด CSGO แล้วเปิดใหม่
- ดูเหมือนจะไม่มีข้อจำกัดด้านวันหมดอายุของคุกกี้ และยังบันทึกคุกกี้ที่มีวันหมดอายุมากกว่า 10 ปีได้
- ข้อมูลคุกกี้ถูกเก็บไว้ในไฟล์ภายในไดเรกทอรีติดตั้ง Steam ของผู้เล่น
- วิธีนี้ทำให้สามารถกำหนดตัวระบุที่สามชื่อ Tracking ID ให้ผู้เล่นแต่ละคนได้
- หากต้องการให้ดูเหมือนเป็นผู้เล่นใหม่จริงๆ ก็ต้องเปลี่ยนทั้ง Steam ID, IP address และโฟลเดอร์ติดตั้ง Steam ซึ่งแทบไม่มีใครทำถึงขั้นนั้น
ลำดับการทำงานของ IdentityLogger
- IdentityLogger คือระบบรวมศูนย์สำหรับทำลายนิ้วมือผู้เล่นโดยอิงจาก IP address, Steam ID และ Tracking ID
- เมื่อผู้เล่นเชื่อมต่อเข้าเซิร์ฟเวอร์ ระบบจะตรวจสอบการแบนจากฐานข้อมูลก่อน
- สิ่งที่ใช้ตรวจคือ IP address, Steam ID และ Tracking ID
- ถ้ามีแบนเดิมอยู่แล้ว ระบบจะเตะผู้เล่นออกจากเซิร์ฟเวอร์และผูกตัวระบุใหม่เข้ากับแบนเดิม
- สำหรับผู้เล่นที่ยังไม่ถูกแบน ระบบจะเปิดหน้าเว็บลับผ่านหน้าต่าง VGUI browser ที่ซ่อนไว้
- คำขอมีการใส่ค่าลับเพื่อยืนยันตัวตน และแม้คำขอจาก VGUI browser จะถูกสร้างจากฝั่งไคลเอนต์ แต่ทราฟฟิกก็ถูกเข้ารหัสด้วย HTTPS
- สคริปต์ PHP จะตรวจว่ามีคุกกี้ Tracking ID อยู่แล้วหรือไม่
- ถ้ายังไม่มี ก็จะสร้าง Tracking ID ใหม่และบันทึกไว้
- Tracking ID เป็นสตริงสุ่มตัวอักษรและตัวเลขยาว 64 ตัว เช่น
TeStsCOhZO1TQsumJkDUOdMMo13ReRLEngrQTg7S49LKT2rBvgPhauzSYbegscOT - สุดท้ายคุกกี้จะถูกเก็บไว้ในไฟล์
vgui.browser.cookies.datภายในไดเรกทอรีติดตั้ง Steam ของผู้เล่น
- ระบบจะบันทึก Steam ID, IP address และ Tracking ID ลงฐานข้อมูลทุกครั้งที่ผู้เล่นเชื่อมต่อเข้าเซิร์ฟเวอร์
- ฐานข้อมูลนี้เชื่อมเข้ากับเว็บพาเนลที่ผู้ดูแลใช้ตรวจสอบลายนิ้วมือผู้เล่น และปลั๊กอิน SourceBans ที่ดัดแปลงจากซอฟต์แวร์จัดการแบนสำหรับเกมตระกูล Source
วิธีที่มันหยุดการหลบแบน
- ตัวอย่างเช่น หากผู้เล่นเชื่อมต่อครั้งแรกด้วย IP address
198.51.100.1และ Steam IDSTEAM_1:1:1111ระบบจะสร้าง Tracking ID ใหม่ให้ - เมื่อผู้เล่นคนนี้ถูกแบนเพราะโกง IP address, Steam ID และ Tracking ID ทั้งหมดจะถูกบันทึกลงฐานข้อมูลการแบน
- ภายหลังถ้าผู้เล่นคนเดิมเชื่อมต่ออีกครั้งด้วย IP address
100.64.50.74และ Steam IDSTEAM_1:1:3333ทั้ง IP address ใหม่และ Steam ID ใหม่จะผ่านการตรวจแบนในเบื้องต้น - แต่ Tracking ID ที่เคยถูกบันทึกไว้ยังเชื่อมอยู่กับแบนเดิม จึงไม่ผ่านการตรวจแบน
- ระบบจะแบนผู้เล่นคนนั้นซ้ำทันที และผูก IP address ใหม่กับ Steam ID ใหม่เข้ากับแบนเดิม
- หลังจากนั้นไม่ว่าผู้เล่นคนนั้นจะใช้ IP address หรือ Steam ID อะไร ก็จะถูกแบนทันทีเพราะ Tracking ID เดิม
ผลลัพธ์หลังใช้งานในปี 2017 และการเปิดเผยสู่สาธารณะ
- หลังการทดสอบ Invex Gaming นำ IdentityLogger ไปใช้กับทุกเซิร์ฟเวอร์ CSGO ในเดือนกุมภาพันธ์ 2017
- ทันทีหลังเริ่มใช้งาน จำนวนการแบนผู้โกงเพิ่มขึ้นอย่างมาก
- แม้แต่สมาชิกคอมมูนิตี้ที่รู้จักกันมานานและได้รับความไว้วางใจบางคน ก็ถูกพบว่าโกงผ่านบัญชีลับ
- ผู้โกงบางรายถึงกับถามตรงๆ ว่าทำไมถึงถูกจับได้ว่าเลี่ยงแบน ทั้งที่เปลี่ยนทั้ง Steam ID และ IP address แล้ว
- ผู้ดูแลเซิร์ฟเวอร์รายอื่นก็สนใจปลั๊กอินนี้ และบางรายถึงขั้นเสนอเงินให้
- เพื่อไม่ให้เทคนิคแพร่หลายจนหลบได้ง่ายเพียงแค่ลบไฟล์คุกกี้ การติดตั้งใช้งานจึงถูกเก็บเป็น ความลับ ภายในทีมผู้ดูแล
- วิธีนี้ใช้ได้จนกระทั่ง Valve ถอด VGUI browser ออกทั้งหมดในเดือนตุลาคม 2017 ระหว่างการเสริมความปลอดภัยของเกม
- หลัง VGUI browser ถูกถอดออกแล้ว เทคนิคนี้จึงถูกเปิดเผย และปลั๊กอินก็ถูกเผยแพร่เป็นโอเพนซอร์ส
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ใน UT2004 สามารถแบนผู้เล่นด้วย GUID (แฮชของคีย์ CD) หรือ IP ได้ แต่หลังจาก Epic ปล่อยเกมทิ้งไว้ ก็มีตัวสร้างคีย์ออกมามากจนการแบน GUID ใช้ไม่ได้ผล และทุกวันนี้ VPN ก็ใช้ได้ในราคาแค่ 2 ดอลลาร์ การแบน IP จึงมีข้อจำกัดมาก
วิธีหลักที่ใช้กันตอนนี้คือ นอกจากการแบน IP แล้ว ยังเอาฐานข้อมูลซับเน็ต VPN ที่รู้จักทั้งหมดใส่ในไฟร์วอลล์เพื่อทำ การบล็อก VPN และใช้เทคนิคการทำ fingerprint คล้าย ๆ กันที่ไล่ตรวจโครงสร้างโฟลเดอร์ระบบบางส่วน
มันทำขึ้นเพราะใน Tremulous (ฟอร์กของ ioquake3) ผู้คนคอยหลบการแบน IP อยู่เรื่อย ๆ แต่ก็ใช้กับเกมอื่นได้ด้วย ไม่ใช่โปรเจกต์ของผม แต่ผมรู้จักผู้เขียน และถ้ามีความต้องการ ก็อาจฟอร์กมาปรับให้เหมาะกับเกมเฉพาะหรือใช้ทั่วไปได้
ใน schachtmeister2 สามารถใช้ heuristic อย่าง
whois -10 "Hosting",whois -13 "VPN",whois +7 "residential"ได้ด้วยเพิ่มเติม: เห็นว่า Git repository ตอบกลับ 502 เลยติดต่อผู้ดูแลไปแล้ว
ตอนนี้ไม่เล่นออนไลน์แล้วเพราะฝีมือตามไม่ทัน แต่เวลาเหลือสัก 30 นาที เข้าไปเล่นเร็ว ๆ กับ AI ก็ยังสนุกอยู่
เจ้าของเซิร์ฟเวอร์อนุญาตให้บัญชี non-Steam (สำเนาเถื่อน) เข้ามาได้ จึงพึ่งการแบน SteamID แบบเดียวกับ GUID ของ Unreal ไม่ได้ การเปลี่ยน ID ปลอมทำได้ แม้จะค่อนข้างยุ่งเพราะอยู่ลึก ๆ ที่ไหนสักแห่งในโฟลเดอร์ติดตั้ง เกมนี้ค่อนข้างเป็นที่นิยมในแอฟริกาเหนือ กลุ่มประเทศบอลติกเดิมและพื้นที่รอบ ๆ รวมถึงเอเชียเหนือและเอเชียตะวันตก ถ้าไม่มีผู้เล่นกลุ่มนี้ เซิร์ฟเวอร์ก็จะโล่งมาก
ดังนั้นเราจึงใช้ทั้งไม้อ่อนและไม้แข็ง ผู้เล่น Steam จะได้รีโหลดแทบจะทันที ได้รับการยกเว้นจากระบบอัตโนมัติ/การเตะบางอย่างที่ค่อนข้างดุเดือด ได้ชื่อเล่นที่จองไว้และแท็ก “VIP” เท่ากับว่าจ่ายแค่ราคาคีย์ VPN ไม่กี่อัน ก็ได้ทั้งข้อได้เปรียบที่ถูกกติกาและความเป็นเจ้าของเกม โดยค่าใช้จ่ายครั้งเดียวส่งตรงถึงผู้พัฒนา หรือจะทำฟรีก็ได้ ถ้าเล่นอย่างน้อยสัปดาห์ละ 1 เกมตลอด 5 สัปดาห์ แล้วติดต่อทีมดูแลผ่านโซเชียลมีเดีย
ส่วนไม้แข็ง เราไม่ได้แค่เตะ/แบน แต่จงใจทำให้รำคาญเพื่อให้เห็นว่าพวกเขาไม่เป็นที่ต้อนรับจริง ๆ และไม่อยากกลับมาอีก เช่น ปลดอาวุธแล้วแจกอาวุธห่วยสุด สุ่มเทเลพอร์ตให้ออกนอกแผนที่หรือติดพื้น ใช้
amx_rocketซ้ำ ๆ ทำเป็นดอกไม้ไฟ ใช้amx_drugดันมุมมองให้สุดและใส่เอฟเฟกต์เมา ล้อว่าเป็น loser ฝีมือห่วยที่ต้องให้ AI เล่นแทนถึงจะสนุก เป็นต้นยังมี ปลั๊กอิน amx และคำสั่งที่ถือว่า “ผิดกฎหมาย” อยู่ด้วย โดยปกติคนจะเลี่ยงเพราะมีโอกาสถูกนำไปใช้ในทางที่ผิดสูง แต่ในสถานการณ์แบบนี้มันมีประโยชน์ โดยเฉพาะ
amx_execค่อนข้างน่ากลัว เพราะเปิดให้แอดมินเข้าถึงคอนโซลในเกมของไคลเอนต์ได้โดยตรง และสั่งรันคำสั่งหรือการตั้งค่าใด ๆ ได้ตัวอย่างเช่น ใช้คำสั่งอย่าง
rate 1000,name iCaNtAiM,unbind all,bind y quit,fps_max 50เพื่อทำลายความเร็วเครือข่าย เปลี่ยนชื่อ ลบ key binding ผูกปุ่มแชตเริ่มต้นให้เป็นการออกจากเกม และลด FPS สูงสุดให้ต่ำลงแบบไม่สะดุดตาแต่ชวนหงุดหงิด การคืนค่าเริ่มต้นทำได้ง่ายด้วยการลบไฟล์ตั้งค่า แต่ถ้าไม่มีแบ็กอัปการตั้งค่า ก็อาจชวนหัวเสียมากน่าสนใจที่เซิร์ฟเวอร์จำนวนมากขายสิทธิประโยชน์ VIP ในราคาสูงถึงเดือนละ 20 ดอลลาร์ ตอนแรกผมตกใจ แต่ก็ได้รู้ว่าการจะให้ถูกแสดงในตำแหน่งที่พอใช้ได้ในเบราว์เซอร์เซิร์ฟเวอร์ของบุคคลที่สามนั้นต้องจ่ายแพงมาก เป็นโครงสร้างเหมือนคาร์เทลเงา และรายได้ส่วนใหญ่ถูกใช้ไปกับ “boost”
พอเจ้าของเซิร์ฟเวอร์ของเราหยุดจ่ายค่า “boost” ไปสองเดือน จำนวนผู้เล่นเฉลี่ยลดจาก 14/32 เหลือ 3/32 และจำนวนผู้เล่นสูงสุดที่ปกติช่วงสุดสัปดาห์มักเต็มถึง 28/32 ก็เหลือแค่ระดับ 12/32 ถ้าโชคดีในคืนวันศุกร์ พอกลับไปจ่ายอีกครั้ง จำนวนผู้เล่นก็พุ่งขึ้นทันที แต่ส่วนที่บ้าคือค่าใช้จ่ายเดือนละ 180 ดอลลาร์
ก่อนเข้ามาร่วมดูแล ผมคิดว่าแค่มีเดธแมตช์สนุก ๆ การจัดการดี latency ต่ำ เซิร์ฟเวอร์แรง และทำเฉพาะแผนที่รีเมก/รีมิกซ์ของแผนที่ที่ได้รับความนิยมเป็นอันดับสองในเกม ก็น่าจะดังพอแล้ว แต่ดูเหมือนว่าหากอยากให้ผู้เล่นส่วนใหญ่เห็น ก็ต้องจ่ายเงินเกินเหตุให้ผู้เฝ้าประตูเดิม ๆ
เหมือนกับการบอกเว็บสแครปเปอร์ว่า IP ถูกแบน กลยุทธ์แบบนั้นไม่ได้อะไรเลย วิธีที่ดีกว่าคือทำเครื่องหมาย IP ของสแครปเปอร์ไว้เบื้องหลัง แล้วส่งให้แต่ข้อมูลขยะที่สุ่มปะปนอยู่ในหน้าเว็บ
ผมมองว่าการตรวจจับ cheat ก็เหมือนกัน ถ้าแบนก็มีแต่เสียความได้เปรียบเชิงกลยุทธ์ และการเปลี่ยน IP หรือคีย์ CD หรือบัญชี ก็เป็นแค่ความไม่สะดวกเล็กน้อยสำหรับ cheater เท่านั้น
เป็นสาขาที่ผมสนใจทั้งในงานและส่วนตัว ถ้าต้องการข้อเสนอแนะ ผมช่วยได้
ชอบที่ผู้เขียนใช้ ที่อยู่ TEST-NET-2 จาก RFC5737 เป็นตัวอย่าง IPv4: “ตัวอย่างของที่อยู่ IP แบบ IPv4 คือ 198.51.100.1”
https://www.rfc-editor.org/rfc/rfc5737
สักวันหนึ่งในอาชีพ อยากได้ลองทำ ระบบแอนตี้ชีตแบบฝั่งเซิร์ฟเวอร์ล้วนๆ จริงๆ การแข่งขันสะสมอาวุธแบบเป็นปฏิปักษ์อย่างนี้ดูน่าสนุกมากที่จะคิดให้ลึกๆ นานๆ
เพราะจำนวนผู้เล่นมีมากกว่าจำนวนนักพัฒนามหาศาล จึงเป็นศึกที่แพ้ตั้งแต่ต้น
การย้ายการกระทำสำคัญทั้งหมดไปไว้บนเซิร์ฟเวอร์ไม่ง่ายและไม่ถูก แต่เป็นวิธีป้องกันชีตได้แบบครอบคลุมกว่า
พอรวมกับเกมที่มีฟิสิกส์เยอะ, tickrate 120 (หลังทดสอบเพิ่มอาจดันสูงกว่านี้ได้), การต่อสู้แอ็กชันที่อิงการควบคุมละเอียด และเป้าหมายจะสเกลให้ได้ระดับ MMORPG ก็จะยากจริงๆ
ตอนนี้มี aimbot ที่ใช้ YOLO แล้ว ทำให้โลกซับซ้อนขึ้นมาก และข้อสรุปที่เป็นจริงคือแอนตี้ชีตสุดท้ายก็อาจถูกเจาะได้
ฝั่งไคลเอนต์สามารถทำไบนารีส่วนตัวที่ยังไม่มีแฮชลงทะเบียนกับบริการแอนตี้ชีตหลักๆ ได้ และฝั่งเซิร์ฟเวอร์ก็มองเห็นได้แค่สิ่งที่กฎของเกมอนุญาตเท่านั้น
ไม่มีกลไกใดที่จะป้องกันความเร็วตอบสนองเหนือมนุษย์ได้ และบางทีก็ไม่ควรมีด้วย จึงกลายเป็นปัญหาที่แก้ต่อไม่ได้แล้ว
ดังนั้นจึงต้องอาศัยการตัดสินของชุมชน ซึ่งก็น่าเบื่อเหมือนกัน การที่ผู้เล่นเก่งๆ ใน Counter-Strike ถูกกล่าวหาว่าเป็นคนโกงเป็นปัญหาที่ทั้งเก่าแก่และน่าสนุก
หลายปีก่อนซื้อเกม Battlefield มาหลายภาค แต่หลายภาคเล่นไม่ได้เพราะพวกโกง speedhack กับ aimbot ดูเหมือนฝั่งเซิร์ฟเวอร์น่าจะตรวจจับได้ง่ายๆ เลยสงสัยว่าทำไมถึงไม่ทำอะไรเลย
ถ้าเว็บไซต์ล่มหรือช้าแล้วอยากอ่านบทความ มีสกรีนช็อตทั้งหน้าอยู่ที่: https://i.imgur.com/SPp6IHX.jpeg
ไม่คิดเลยว่าบทความจะได้รับทราฟฟิกเยอะขนาดนี้
บทความนี้พูดถึงการป้องกันไม่ให้คนโกงที่ถูกแบนแล้วกลับมาเรื่อยๆ ด้วย การหลบเลี่ยงแบน ไม่ใช่การหยุดคนโกง หรือก็คือ การตรวจจับชีต
โดยเฉพาะทุกวันนี้ที่มีชีตฮาร์ดแวร์อย่าง DMA ด้วย การตรวจจับชีตเป็นคนละเกมกันโดยสิ้นเชิง ส่วนตัวคิดว่าวิธีหนึ่งที่ได้ผลที่สุดในการหยุดคนหลบเลี่ยงแบนคือการเก็บเงินจริงกับเกม
คนเล่น CS:GO ไม่ค่อยแคร์แม้บัญชีที่มีสกินมูลค่าหลายร้อยดอลลาร์จะถูกแบน เพราะอาจซื้อบัญชีที่ขโมยมาจากคนอื่นในราว 5 ดอลลาร์ หรือยังไงก็จ่ายบริการชีตเดือนละ 30 ดอลลาร์อยู่แล้ว
น่าจะมีส่วนทับซ้อนกันมหาศาลระหว่างคนโกงประจำกับ วาฬ pay-to-win
วิธีที่น่าเชื่อถือกว่าสำหรับลดคนโกงในเกมคือ honeypot สำหรับคนโกง แทนที่จะแบนแล้วไล่ตามคนโกงที่ไปซื้อบัญชีใหม่อีกครั้ง ก็แค่จับเขาเข้าระบบ matchmaking เงียบๆ กับคนโกงคนอื่นๆ บอทที่ตั้งใจทำให้น่ารำคาญ การหน่วงปลอม และบางครั้งก็เพิกเฉยต่อการกดปุ่มบางครั้ง
ถ้าทำลายความสนุกของพวกเขาได้ พวกเขาก็จะหยุดทำลายเกม จากนั้นสงครามข้อมูลจะพลิกกลับ กลายเป็นว่าถ้าเขาอยากรู้ว่าควรซื้อบัญชีใหม่ไหม ก็ต้องหาทางรู้ให้ได้ก่อนว่าตัวเองกำลังเล่นกับคนโกงหรือบอทเป็นประจำหรือเปล่า
แน่นอนว่าสักวันหนึ่งถ้าซัพพลายเออร์หละหลวมทำกุญแจ TPM รั่วไหล ก็อาจปลอมแปลงได้
ผู้เล่นในประเทศใหญ่ๆ มักพลาด ความรู้สึกของชุมชน ที่มีในประเทศเล็กๆ ไปได้ง่าย
ถ้าคนที่เล่นเกมทุกวันมีแค่พอเต็มเซิร์ฟเวอร์ 3–4 เซิร์ฟเวอร์ ไม่นานก็จะรู้จักกัน และนั่นเพิ่มมุกกับความสนุกขึ้นมาก
มันดีกว่าเกมระดับผู้เล่นหลายล้านที่เล่นด้วยกันหนึ่งตาแล้วไม่มีวันได้เจอคนนั้นอีกมาก ด้วยเหตุผลเดียวกันจึงชอบเกมที่มีเซิร์ฟเวอร์ซึ่งชุมชนดูแลเองด้วย
เรามักเข้าเซิร์ฟเวอร์เดิมๆ ตามว่าใครออนไลน์อยู่ และหลักๆ แล้วตามว่าการเชื่อมต่อของเราดีแค่ไหน
วิธีแบบ “ถ้าเชื่อมต่อด้วย Steam ID อื่น แต่ใช้ที่อยู่ IP ที่เคยถูกแบนแล้ว ก็แบนอีกครั้ง” จะใช้ได้ดีแค่จนกว่าจะตระหนักว่ามันลงโทษผู้เล่นบริสุทธิ์เพราะ CGNAT และการหมุนเวียนที่อยู่ IP
พวกโกงมักรู้วิธีทำให้เราเตอร์ขอ IP ใหม่ และ IP นั้นภายหลังก็จะถูกจัดสรรให้คนอื่น
แต่ก็ค่อนข้างหายาก ตลอดหลายเดือนมีรายงานแค่หยิบมือ ถ้าเซิร์ฟเวอร์เป็นที่นิยมกว่านี้คงเจอบ่อยกว่านี้มาก
ถ้า “แชร์วิธีแก้และเทคนิคให้เฉพาะผู้ดูแลเซิร์ฟเวอร์อีกคนหนึ่งในสหราชอาณาจักรที่ไว้ใจอย่างเต็มที่” ก็น่าจะเป็นพวกเรา
สุดท้ายก็เอาไปรวมกับสัญญาณ fingerprinting อื่นๆ แต่ วิธีที่ใช้ VGUI ได้ผลอย่างน่าทึ่ง จำได้ว่าเว็บเบราว์เซอร์ถูกนำออกไปราวปี 2018 ซึ่งน่าเสียดายมาก มันทรงพลังมากเพราะทำสกิลทรีแบบกำหนดเองที่เชื่อมกับเซิร์ฟเวอร์ หรืออินทิเกรชันสนุกๆ ได้
“ทราฟฟิกเองถูกเข้ารหัสด้วย HTTPS อยู่แล้ว ดังนั้นแม้จะใช้เครื่องมือดักแพ็กเก็ตอย่าง Wireshark ก็หาโทเค็นดิบไม่เจอ” — ถ้าเบราว์เซอร์ในตัวใช้พร็อกซีของระบบและรายการใบรับรองของระบบ การถอดรหัส HTTPS ด้วยเครื่องมืออย่าง Fiddler หรือ Burp Suite ก็ทำได้ง่ายมาก
คำขอก็ซ่อนตัวอย่างธรรมดาอยู่ท่ามกลางคำขออื่น ๆ และคำขอเหล่านั้นก็เป็นสิ่งที่คาดเดาได้ ปกติคำขอ MOTD ย่อมมีอยู่แล้ว จึงไม่ได้ดูผิดปกติ
ในสถานการณ์ที่วิธีเลี่ยงนั้นง่ายกว่ามาก เช่น แค่ลบไฟล์โลคัลไฟล์เดียว แค่นี้ก็ทำงานได้ดีพอแล้ว เมื่อเทียบกับการไปค้นหาคำขอจริงและตั้งค่า Fiddler หรือ Burp Suite
ไม่จำเป็นต้องออกแบบให้ซับซ้อนเกินไป
คลิกไม่กี่ครั้งก็เสร็จ และขึ้นอยู่กับ TLS ที่ใช้ อาจต้องทำต่อการเชื่อมต่อแต่ละครั้ง แต่ก็ไม่ได้ยากขนาดนั้น
รู้ว่า “น่าจะจดสิทธิบัตรไว้” เป็นมุกตลก แต่ถ้าจดสิทธิบัตรจริง ก็ต้องเปิดเผยเทคนิคนั้น และมันก็คงใช้การไม่ได้ทันที
ถึงอย่างนั้นก็ไม่ได้ลดคุณค่าของบทความเลย อ่านสนุกดี