1 คะแนน โดย GN⁺ 2024-10-18 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ID STEAM_1:1:1111 ระบบจะสร้าง Tracking ID ใหม่ให้
  • เมื่อผู้เล่นคนนี้ถูกแบนเพราะโกง IP address, Steam ID และ Tracking ID ทั้งหมดจะถูกบันทึกลงฐานข้อมูลการแบน
  • ภายหลังถ้าผู้เล่นคนเดิมเชื่อมต่ออีกครั้งด้วย IP address 100.64.50.74 และ Steam ID STEAM_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 ความคิดเห็น

 
GN⁺ 2024-10-18
ความคิดเห็นบน Hacker News
  • ใน UT2004 สามารถแบนผู้เล่นด้วย GUID (แฮชของคีย์ CD) หรือ IP ได้ แต่หลังจาก Epic ปล่อยเกมทิ้งไว้ ก็มีตัวสร้างคีย์ออกมามากจนการแบน GUID ใช้ไม่ได้ผล และทุกวันนี้ VPN ก็ใช้ได้ในราคาแค่ 2 ดอลลาร์ การแบน IP จึงมีข้อจำกัดมาก
    วิธีหลักที่ใช้กันตอนนี้คือ นอกจากการแบน IP แล้ว ยังเอาฐานข้อมูลซับเน็ต VPN ที่รู้จักทั้งหมดใส่ในไฟร์วอลล์เพื่อทำ การบล็อก VPN และใช้เทคนิคการทำ fingerprint คล้าย ๆ กันที่ไล่ตรวจโครงสร้างโฟลเดอร์ระบบบางส่วน

    • ถ้า “การแบน IP มีข้อจำกัดเพราะ VPN” แล้ว https://redman.xyz/doku.php/schachtmeister2 ก็ถูกสร้างมาเพื่อกันคนพวกนั้นโดยเฉพาะ
      มันทำขึ้นเพราะใน Tremulous (ฟอร์กของ ioquake3) ผู้คนคอยหลบการแบน IP อยู่เรื่อย ๆ แต่ก็ใช้กับเกมอื่นได้ด้วย ไม่ใช่โปรเจกต์ของผม แต่ผมรู้จักผู้เขียน และถ้ามีความต้องการ ก็อาจฟอร์กมาปรับให้เหมาะกับเกมเฉพาะหรือใช้ทั่วไปได้
      ใน schachtmeister2 สามารถใช้ heuristic อย่าง whois -10 "Hosting", whois -13 "VPN", whois +7 "residential" ได้ด้วย
      เพิ่มเติม: เห็นว่า Git repository ตอบกลับ 502 เลยติดต่อผู้ดูแลไปแล้ว
    • ถ้าได้ช่วยดูแล UT2004 ก็คงดี ผมชอบเกมนั้นมากจริง ๆ
      ตอนนี้ไม่เล่นออนไลน์แล้วเพราะฝีมือตามไม่ทัน แต่เวลาเหลือสัก 30 นาที เข้าไปเล่นเร็ว ๆ กับ AI ก็ยังสนุกอยู่
    • ใน เซิร์ฟเวอร์ Counter-Strike 1.6 ที่ผมช่วยดูแล ก็มี cheater เข้ามาบ้างเป็นครั้งคราว และที่แปลกคือหลายคนเป็น “ragehack” ที่แทบไม่คิดจะปิดบังเลย เช่น กระโดดยิงสไนเปอร์ไม่ส่องกล้องเข้าหัวกลางอากาศ
      เจ้าของเซิร์ฟเวอร์อนุญาตให้บัญชี 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 ต่ำ เซิร์ฟเวอร์แรง และทำเฉพาะแผนที่รีเมก/รีมิกซ์ของแผนที่ที่ได้รับความนิยมเป็นอันดับสองในเกม ก็น่าจะดังพอแล้ว แต่ดูเหมือนว่าหากอยากให้ผู้เล่นส่วนใหญ่เห็น ก็ต้องจ่ายเงินเกินเหตุให้ผู้เฝ้าประตูเดิม ๆ
    • ผมไม่เข้าใจว่าทำไมการแบน cheater ถึงกลายเป็นปัญหาขนาดนี้ อย่าแบนสิ แต่ ทำเครื่องหมายว่าเป็น cheater ไว้เบื้องหลัง แล้วให้เข้าได้เฉพาะเซิร์ฟเวอร์สำหรับ cheater เท่านั้น เดี๋ยวก็เลิกไปเอง
      เหมือนกับการบอกเว็บสแครปเปอร์ว่า IP ถูกแบน กลยุทธ์แบบนั้นไม่ได้อะไรเลย วิธีที่ดีกว่าคือทำเครื่องหมาย IP ของสแครปเปอร์ไว้เบื้องหลัง แล้วส่งให้แต่ข้อมูลขยะที่สุ่มปะปนอยู่ในหน้าเว็บ
      ผมมองว่าการตรวจจับ cheat ก็เหมือนกัน ถ้าแบนก็มีแต่เสียความได้เปรียบเชิงกลยุทธ์ และการเปลี่ยน IP หรือคีย์ CD หรือบัญชี ก็เป็นแค่ความไม่สะดวกเล็กน้อยสำหรับ cheater เท่านั้น
    • วิธีนี้ยังถูกเจาะได้โดย cheater ที่ใช้การ tethering ข้อมูลมือถือกับพร็อกซี อยากรู้ว่าเคยพิจารณา การวิเคราะห์เครือข่าย ขั้นสูงกว่านี้ไหม
      เป็นสาขาที่ผมสนใจทั้งในงานและส่วนตัว ถ้าต้องการข้อเสนอแนะ ผมช่วยได้
  • ชอบที่ผู้เขียนใช้ ที่อยู่ TEST-NET-2 จาก RFC5737 เป็นตัวอย่าง IPv4: “ตัวอย่างของที่อยู่ IP แบบ IPv4 คือ 198.51.100.1”
    https://www.rfc-editor.org/rfc/rfc5737

    • ผมชอบมากที่ใช้ตัวระบุที่สงวนไว้สำหรับตัวอย่าง ในเอกสารผมใช้ IP TEST-NET-2 กับ example.com เสมอ
    • สิ่งที่น่าสนใจคือมีเอกสารที่พิมพ์ที่อยู่สงวนผิด เช่น 189.51.100.1 หรือ 198.15.100.1 อะไรแบบนั้น และก็มี RFC หลายฉบับที่เป็นแบบนี้จริง ๆ
  • สักวันหนึ่งในอาชีพ อยากได้ลองทำ ระบบแอนตี้ชีตแบบฝั่งเซิร์ฟเวอร์ล้วนๆ จริงๆ การแข่งขันสะสมอาวุธแบบเป็นปฏิปักษ์อย่างนี้ดูน่าสนุกมากที่จะคิดให้ลึกๆ นานๆ

    • ปัญหาคือหลายบริษัทไม่อยากจ่ายต้นทุนตรงนั้น มันเป็น “งานลู่วิ่ง” ต่อให้ทุ่มคนกับเงินเข้าไปเท่าไร สุดท้ายก็วนกลับมาอีก
      เพราะจำนวนผู้เล่นมีมากกว่าจำนวนนักพัฒนามหาศาล จึงเป็นศึกที่แพ้ตั้งแต่ต้น
    • เป็นสายงานที่ตอนนี้กำลังทำอยู่ ปัญหาจริงๆ คือถ้าจะให้การประมวลผลสำคัญทั้งหมดอยู่บนเซิร์ฟเวอร์ ต้นทุนด้านประสิทธิภาพ จะสูงมาก และนักพัฒนาก็ขี้เกียจจนโยนงานให้ไคลเอนต์ทำมากเกินไป แล้วมันก็แข็งตัวกลายเป็นมาตรฐานไปแล้ว
      การย้ายการกระทำสำคัญทั้งหมดไปไว้บนเซิร์ฟเวอร์ไม่ง่ายและไม่ถูก แต่เป็นวิธีป้องกันชีตได้แบบครอบคลุมกว่า
      พอรวมกับเกมที่มีฟิสิกส์เยอะ, tickrate 120 (หลังทดสอบเพิ่มอาจดันสูงกว่านี้ได้), การต่อสู้แอ็กชันที่อิงการควบคุมละเอียด และเป้าหมายจะสเกลให้ได้ระดับ MMORPG ก็จะยากจริงๆ
    • ระดับเทคโนโลยีล่าสุดค่อนข้างน่าเบื่อ และ payload ของคำสั่งผู้ใช้เรียนรู้ได้ในบ่ายเดียว
      ตอนนี้มี aimbot ที่ใช้ YOLO แล้ว ทำให้โลกซับซ้อนขึ้นมาก และข้อสรุปที่เป็นจริงคือแอนตี้ชีตสุดท้ายก็อาจถูกเจาะได้
      ฝั่งไคลเอนต์สามารถทำไบนารีส่วนตัวที่ยังไม่มีแฮชลงทะเบียนกับบริการแอนตี้ชีตหลักๆ ได้ และฝั่งเซิร์ฟเวอร์ก็มองเห็นได้แค่สิ่งที่กฎของเกมอนุญาตเท่านั้น
      ไม่มีกลไกใดที่จะป้องกันความเร็วตอบสนองเหนือมนุษย์ได้ และบางทีก็ไม่ควรมีด้วย จึงกลายเป็นปัญหาที่แก้ต่อไม่ได้แล้ว
      ดังนั้นจึงต้องอาศัยการตัดสินของชุมชน ซึ่งก็น่าเบื่อเหมือนกัน การที่ผู้เล่นเก่งๆ ใน Counter-Strike ถูกกล่าวหาว่าเป็นคนโกงเป็นปัญหาที่ทั้งเก่าแก่และน่าสนุก
    • งานนี้ยังช่วยทำให้ชีวิตผู้คนดีขึ้นไม่น้อยด้วย เกมออนไลน์ทั้งเกมบางครั้งกลายเป็น เขตไร้ผู้คน เพราะพวกโกง
      หลายปีก่อนซื้อเกม Battlefield มาหลายภาค แต่หลายภาคเล่นไม่ได้เพราะพวกโกง speedhack กับ aimbot ดูเหมือนฝั่งเซิร์ฟเวอร์น่าจะตรวจจับได้ง่ายๆ เลยสงสัยว่าทำไมถึงไม่ทำอะไรเลย
    • เคยลองแค่ใน Minecraft แต่ก็ค่อนข้างสนุก
  • ถ้าเว็บไซต์ล่มหรือช้าแล้วอยากอ่านบทความ มีสกรีนช็อตทั้งหน้าอยู่ที่: https://i.imgur.com/SPp6IHX.jpeg
    ไม่คิดเลยว่าบทความจะได้รับทราฟฟิกเยอะขนาดนี้

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

    • ตอนเกิดเหตุในบล็อก CS:GO ยังไม่ใช่เกมฟรี แต่ก็ยังมีพวกโกงที่ดูเหมือนเข้าถึงบัญชีได้มากกว่า 80 บัญชี
    • พวกโกงไม่อ่อนไหวต่อราคา ความบันเทิงที่พวกเขาชอบคือการทำตัวเป็นราชาใน kiddie pool เล็กๆ ดังนั้นต่อให้ต้องจ่ายเดือนละ 60 ดอลลาร์เพื่อซื้อบัญชีใหม่หรือคีย์เกมใหม่ก็ไม่สนใจ
      คนเล่น CS:GO ไม่ค่อยแคร์แม้บัญชีที่มีสกินมูลค่าหลายร้อยดอลลาร์จะถูกแบน เพราะอาจซื้อบัญชีที่ขโมยมาจากคนอื่นในราว 5 ดอลลาร์ หรือยังไงก็จ่ายบริการชีตเดือนละ 30 ดอลลาร์อยู่แล้ว
      น่าจะมีส่วนทับซ้อนกันมหาศาลระหว่างคนโกงประจำกับ วาฬ pay-to-win
      วิธีที่น่าเชื่อถือกว่าสำหรับลดคนโกงในเกมคือ honeypot สำหรับคนโกง แทนที่จะแบนแล้วไล่ตามคนโกงที่ไปซื้อบัญชีใหม่อีกครั้ง ก็แค่จับเขาเข้าระบบ matchmaking เงียบๆ กับคนโกงคนอื่นๆ บอทที่ตั้งใจทำให้น่ารำคาญ การหน่วงปลอม และบางครั้งก็เพิกเฉยต่อการกดปุ่มบางครั้ง
      ถ้าทำลายความสนุกของพวกเขาได้ พวกเขาก็จะหยุดทำลายเกม จากนั้นสงครามข้อมูลจะพลิกกลับ กลายเป็นว่าถ้าเขาอยากรู้ว่าควรซื้อบัญชีใหม่ไหม ก็ต้องหาทางรู้ให้ได้ก่อนว่าตัวเองกำลังเล่นกับคนโกงหรือบอทเป็นประจำหรือเปล่า
    • การแบนตาม TPM ก็ทำให้การหลบเลี่ยงแพงขึ้นพอสมควร จากจุดนั้นคนโกงต้องซื้อเมนบอร์ดใหม่ หรือบัดกรีชิป TPM ใหม่ลงบนเมนบอร์ด
      แน่นอนว่าสักวันหนึ่งถ้าซัพพลายเออร์หละหลวมทำกุญแจ TPM รั่วไหล ก็อาจปลอมแปลงได้
  • ผู้เล่นในประเทศใหญ่ๆ มักพลาด ความรู้สึกของชุมชน ที่มีในประเทศเล็กๆ ไปได้ง่าย
    ถ้าคนที่เล่นเกมทุกวันมีแค่พอเต็มเซิร์ฟเวอร์ 3–4 เซิร์ฟเวอร์ ไม่นานก็จะรู้จักกัน และนั่นเพิ่มมุกกับความสนุกขึ้นมาก

    • เคยได้ลิ้มรสความรู้สึกแบบนั้นนิดหน่อยจากการเล่นเกมมัลติเพลเยอร์เก่าๆ ที่ฐานผู้เล่นเล็ก
      มันดีกว่าเกมระดับผู้เล่นหลายล้านที่เล่นด้วยกันหนึ่งตาแล้วไม่มีวันได้เจอคนนั้นอีกมาก ด้วยเหตุผลเดียวกันจึงชอบเกมที่มีเซิร์ฟเวอร์ซึ่งชุมชนดูแลเองด้วย
    • ถ้าอายุมากหน่อยก็น่าจะจำการกด favorite เซิร์ฟเวอร์ใน Gamespy ได้
      เรามักเข้าเซิร์ฟเวอร์เดิมๆ ตามว่าใครออนไลน์อยู่ และหลักๆ แล้วตามว่าการเชื่อมต่อของเราดีแค่ไหน
  • วิธีแบบ “ถ้าเชื่อมต่อด้วย Steam ID อื่น แต่ใช้ที่อยู่ IP ที่เคยถูกแบนแล้ว ก็แบนอีกครั้ง” จะใช้ได้ดีแค่จนกว่าจะตระหนักว่ามันลงโทษผู้เล่นบริสุทธิ์เพราะ CGNAT และการหมุนเวียนที่อยู่ IP
    พวกโกงมักรู้วิธีทำให้เราเตอร์ขอ IP ใหม่ และ IP นั้นภายหลังก็จะถูกจัดสรรให้คนอื่น

    • เคยเกิดสถานการณ์แบบนั้นจริง และต้องตรวจเป็นรายกรณีเพื่อปลดแบนผู้ใช้หรือทำข้อยกเว้น
      แต่ก็ค่อนข้างหายาก ตลอดหลายเดือนมีรายงานแค่หยิบมือ ถ้าเซิร์ฟเวอร์เป็นที่นิยมกว่านี้คงเจอบ่อยกว่านี้มาก
    • ส่วน “Problematic cases of IP address fingerprinting” ในบทความพูดถึงปัญหานี้ไว้
    • ในสถานการณ์แบบนั้นคงพึ่งพา คุกกี้ลับ เพื่อลดผลบวกลวง
  • ถ้า “แชร์วิธีแก้และเทคนิคให้เฉพาะผู้ดูแลเซิร์ฟเวอร์อีกคนหนึ่งในสหราชอาณาจักรที่ไว้ใจอย่างเต็มที่” ก็น่าจะเป็นพวกเรา
    สุดท้ายก็เอาไปรวมกับสัญญาณ fingerprinting อื่นๆ แต่ วิธีที่ใช้ VGUI ได้ผลอย่างน่าทึ่ง จำได้ว่าเว็บเบราว์เซอร์ถูกนำออกไปราวปี 2018 ซึ่งน่าเสียดายมาก มันทรงพลังมากเพราะทำสกิลทรีแบบกำหนดเองที่เชื่อมกับเซิร์ฟเวอร์ หรืออินทิเกรชันสนุกๆ ได้

  • “ทราฟฟิกเองถูกเข้ารหัสด้วย HTTPS อยู่แล้ว ดังนั้นแม้จะใช้เครื่องมือดักแพ็กเก็ตอย่าง Wireshark ก็หาโทเค็นดิบไม่เจอ” — ถ้าเบราว์เซอร์ในตัวใช้พร็อกซีของระบบและรายการใบรับรองของระบบ การถอดรหัส HTTPS ด้วยเครื่องมืออย่าง Fiddler หรือ Burp Suite ก็ทำได้ง่ายมาก

    • ประเด็นสำคัญคือเมื่อเปิด Wireshark แล้วปัญหานั้นสังเกตเห็นได้ชัดแค่ไหน เพราะมันไม่เด่นชัด การจะค้นให้เจอว่าเกิดอะไรขึ้นจริงจึงต้องใช้ความพยายามมากกว่านั้นมาก
      คำขอก็ซ่อนตัวอย่างธรรมดาอยู่ท่ามกลางคำขออื่น ๆ และคำขอเหล่านั้นก็เป็นสิ่งที่คาดเดาได้ ปกติคำขอ MOTD ย่อมมีอยู่แล้ว จึงไม่ได้ดูผิดปกติ
      ในสถานการณ์ที่วิธีเลี่ยงนั้นง่ายกว่ามาก เช่น แค่ลบไฟล์โลคัลไฟล์เดียว แค่นี้ก็ทำงานได้ดีพอแล้ว เมื่อเทียบกับการไปค้นหาคำขอจริงและตั้งค่า Fiddler หรือ Burp Suite
      ไม่จำเป็นต้องออกแบบให้ซับซ้อนเกินไป
    • กลุ่มเป้าหมายที่ผู้เขียนนึกถึงน่าจะไม่ใช่ผู้อ่าน HN แต่เป็น สคริปต์คิดดี้ ทั่วไปมากกว่า
    • การส่งออกคีย์ลับจาก Firefox แล้วนำเข้าไปใน Wireshark ก็ทำได้ค่อนข้างง่าย
      คลิกไม่กี่ครั้งก็เสร็จ และขึ้นอยู่กับ TLS ที่ใช้ อาจต้องทำต่อการเชื่อมต่อแต่ละครั้ง แต่ก็ไม่ได้ยากขนาดนั้น
  • รู้ว่า “น่าจะจดสิทธิบัตรไว้” เป็นมุกตลก แต่ถ้าจดสิทธิบัตรจริง ก็ต้องเปิดเผยเทคนิคนั้น และมันก็คงใช้การไม่ได้ทันที
    ถึงอย่างนั้นก็ไม่ได้ลดคุณค่าของบทความเลย อ่านสนุกดี