เหตุการณ์บัตรเครดิตและบัตรเดบิตถูกดูดเงินในประเทศไทยทำให้คนตั้งคำถามกันจำนวนมากว่า "แล้วทำไมมาโดน (เฉพาะ) ที่ประเทศไทย" แต่ในความเป็นจริงแล้วการโจมตีแบบ Enumeration Attack นั้นมีมาแล้วระยะหนึ่ง แม้ Visa จะออกรายงานแจ้งเตือนแต่ธนาคารที่ถูกโจมตีไม่ค่อยออกมาเปิดเผยต่อสาธารณะกันบ่อยนัก ยกเว้น Privacy.com ผู้ให้บริการเลขบัตรเครดิตชั่วคราว
Privacy.com รายงานถึงเหตุการณ์ช่วงต้นปี 2020 ที่บริษัทถูกยิงคำสั่งจ่ายเงินจำนวนมาก จากร้านค้า 5 รายในเยอรมนี, นิวซีแลนด์, และสหราชอาณาจักร โดยทาง Privacy.com ระบุว่าร้านค้าเหล่านี้น่าจะเป็นเหยื่อของคนร้ายอีกที โดยคนร้ายอาจจะถูกแฮกระบบหรืออย่างน้อยก็ข้ามระบบจำกัดปริมาณการจ่ายเงิน (rate limit) โดยเชื่อว่าคนร้ายอาศัย botnet เข้าไปโจมตีตัวร้านค้า
ภาพโดย flyerwerk
เนื่องจาก Privacy.com เป็นผู้ออกเลขบัตร ทำให้เห็นกระบวนการของคนร้าย เป็นขั้นดังนี้
แม้เลขบัตรจะมีความยาวถึง 16 หลักซึ่งน่าจะทำให้คนร้ายต้องคาดเดาเลขบัตรจำนวนมาก แต่ในความเป็นจริงแล้ว เลขบัตร 6 ตัวแรกนั้นเป็นหมายเลขประจำตัวธนาคารผู้ออกบัตร (Issuer Identifier Number - IIN) และหลักสุดท้ายเป็น Luhn checksum (คิดโดย Hans Peter Luhn นักวิทยาศาสตร์ของ IBM เมื่อปี 1960)
โค้ด Luhn checkum สำหรับหาเลขบัตรหลักที่ 16 ในภาษาไพธอน
การที่หมายเลขบัตรเหลือให้ธนาคารใช้ได้เพียง 9 หลักเช่นนี้ ทำให้อัตราการสุ่มเลขมั่วๆ ก็พบได้ไม่ยากนัก ธนาคารที่ใช้ IIN เดียวออกบัตร 10 ล้านใบ หากคนร้ายสุ่มเลขมั่ว 100 ครั้งก็มีโอกาสพบบัตรสักใบถึง 63% และหากสุ่ม 500 ครั้งก็มีโอกาสสูงถึง 99%
ในเอกสารแจ้งเตือนของ Visa ยังแจ้งเตือนธนาคารผู้ออกบัตร ไม่ให้ออกเลขบัตรเรียงกันเป็นตับ (sequential PAN) ที่เลขบัตรออกติดๆ กันและมีวันหมดอายุตรงกัน ซึ่งหากธนาคารไม่ทำตามคำแนะนำและออกเลขบัตรเป็นชุดๆ ก็จะคาดเดาง่ายอย่างยิ่ง
ในกรณีของ Privacy.com ทางบริษัทไม่เปิดเผยว่ามีเลขบัตรถูกสุ่มจนพบเลขบัตรเท่าใด แต่เนื่องจากลักษณะบริการของ Privacy.com นั้นเป็นการสร้างหมายเลขบัตรหนึ่งเลขเพื่อผู้ค้าหนึ่งราย ผู้ใช้แต่ละคนสามารถสร้างหมายเลขบัตรได้ไม่จำกัด แต่หากผู้ใช้สร้างหมายเลขบัตรแล้วไม่เคยใช้กับผู้ค้ารายใดแล้วคนร้ายสุ่มมาเจอหมายเลขบัตรนั้นก็ยังสั่งจ่ายได้ โดยมีเลขบัตรที่คนร้ายสั่งจ่ายได้จริงในเหตุการณ์นี้ 0.04% ของบัตรที่คนร้ายสุ่มจนเจอเลขบัตรทั้งหมด
ที่มา - Privacy.com