หลายๆ คนเริ่มเดากันไปต่างๆ นานาว่าโจรที่แอบตัดเงินจากบัตรเดบิตและบัตรเครดิตทำได้อย่างไร บ้างก็ว่าเขาใช้วิธีสุ่มเลขบัตรเครดิตเอา วันนี้ผมเลยขอมาเล่ารายละเอียดและวิเคราะห์ให้ฟังว่ามันง่ายยากเพียงใด
ในตอนแรกนี้ ขอเล่าวิธีการยอดฮิตที่คนร้ายมักใช้กันที่เรียกว่า BIN Attack ครับ
ก่อนอื่นเลยนะครับ เรามาดูองค์ประกอบของเลขบัตรกัน เลขบัตร (Personal Account Number: PAN) ส่วนใหญ่จะมีจำนวนหลักตั้งแต่ 8-19 หลัก ซึ่งบัตรส่วนใหญ่มักจะมีเลขบัตร 16 หลัก แปลว่าถ้าสุ่มกันแบบมั่วๆ จะมีตัวเลขที่เป็นไปได้ถึง 10^16 หรือ 1 หมื่นล้านล้านเลขบัตรนั่นเอง ซึ่งถ้าจะสุ่มกันนี่คงจะยาก เพราะเรามีบัตรเครดิตที่ออกใช้ทั่วโลกประมาณ 2.8 พันล้านบัตรเท่านั้นเอง คิดเป็นความเป็นได้ในการเดาเลขถูกประมาณ 1 ใน 3.5 พันล้าน แต่จริงๆ มันไม่ได้ต้องสุ่มเยอะขนาดนั้น เพราะเลขบัตรแต่ละหลักมีความหมายของมันอยู่
โดย 6-8 หลักแรกจะเป็นตัวเลขที่ระบุผู้ออก (Issuer Identification Number: IIN หรือ Bank Identification Number: BIN) ซึ่งแต่ละธนาคารจะมีการจดทะเบียนเลขเหล่านี้เป็นการเฉพาะ เช่น 492141 เป็นเลขบัตรเครดิตของธนาคารกสิกรไทย เป็นต้น ซึ่งข้อมูลนี้สามารถดูได้จาก Bankbinlist ถ้าคนร้ายต้องการจะสุ่มเลขก็จะเพิ่มความเป็นไปได้ที่จะสุ่มถูกได้มากขึ้นหลายหมื่นเท่า
ในประเทศไทย เลขบัตรส่วนใหญ่จะมี BIN Code 8 หลัก และมีเลขบัตรรวม 16 หลัก จึงมีเลขบัตรเหลืออยู่ 8 หลัก แต่หลักสุดท้าย 1 หลัก โดนเก็บไปใช้เป็นตัวเลขที่ใช้ตรวจสอบบัตร (Checksum Digit) เพื่อป้องกันการใส่เลขบัตรผิดโดยไม่ตั้งใจ (โดยการใช้ Luhn Algorithm) จึงเหลือแค่ 7 หลักให้สุ่ม มีเลขที่เป็นไปได้ 10 ล้านเลข เมื่อคูณกับจำนวน BIN ในประเทศไทยที่มีมากกว่า 1,300 เลข จึงคิดเป็นความเป็นไปได้กว่า 1 หมื่นล้านเลขบัตร
เมื่อมาหารกับจำนวนบัตรในประเทศที่มีอยู่เกือบ 30 ล้านบัตร คิดเป็นความน่าจะเป็นที่จะเดาเลขที่ถูกต้องได้เฉลี่ย 1 ใน 400 โดยประมาณ ซึ่งไม่ได้เป็นเรื่องเกินเลยที่จะมีโอกาสเดาถูกได้ และอัตรานี้จะยิ่งลดลงอีก หากว่าผู้ร้ายมุ่งเป้าไปที่เลข BIN หลักของธนาคารที่มีการออกเลขบัตรไปเกือบหมดแล้ว จะทำให้โอกาสเดาเลขบัตรสูงขึ้นได้มาก ถ้าเลขบัตรของ BIN Code นั้นๆ ถูกใช้หมดทุกเลข จะเพิ่มความเป็นได้ในการเดาถูกได้เป็น 100% เลยทีเดียว หรือต่อให้ธนาคารนั้นๆ ยังใช้เลขไปเพียงบางส่วน แต่ดันออกเลขเรียงลำดับตั้งแต่ 0000001 ไปเรื่อยๆ ก็จะยังทำให้โอกาสเดาถูกมีสูงขึ้นอีก (แบบนี้เรียกว่า Sequential Attack ครับ)
นี่จึงเป็นเรื่องที่ไม่เกินเอื้อมในการที่จะเดาเลขถูกได้แต่อย่างใด แต่ปัญหาไม่ได้จบลงแค่นั้น การกรอกข้อมูลการใช้บัตรในการทำธุรกรรมออนไลน์ มีข้อมูลเพิ่มเติมไม่ว่าจะเป็น ชื่อตามบัตร เลขบัตร วันหมดอายุ และเลข CVV ซึ่งโอกาสเดาถูกก็จะยากขึ้นไปอีก แต่เดี๋ยวผมจะพูดในแต่ละรายการแบบไม่ตามลำดับ
ตัวอย่างฟอร์มของ Facebook ในการกรอกรายการบัตรเครดิต
– CVV หรือ Card Verification Value เป็นเลขที่อยู่หลังบัตร (หรือหน้าบัตรของบัตร Amex) ซึ่งเป็นตัวเลขคนละตัวกับ PIN ซึ่งเรามักจะเลือกกำหนดเองได้ ตัวเลขที่เป็นตัวเลขที่ผู้ออกบัตรกำหนดมาให้ และมักจะเขียนอยู่บนบัตรอยู่แล้ว ซึ่งหากจะเดาเลข 3 หลักให้ถูก จะมีโอกาสถูก 1 ในพัน ซึ่งก็ไม่ได้ยากเท่าไรเลย แต่เดี๋ยวก่อน CVV จริงๆ แล้วไม่ใช่ตัวเลขสุ่ม มันเป็นตัวเลขที่เกิดขึ้นจากการคำนวณผ่านการเข้ารหัสที่เรียกว่า DES ของข้อมูลเลขบัตร วันหมดอายุ และรหัสกุญแจที่เป็นความลับ หากมีข้อมูล Key ตรงนี้รั่วไหลก็สามารถที่จะคำนวณ CVV ได้โดยไม่ต้องเดา ซึ่งในอดีตเคยมีการรั่วไหลแบบนี้ จึงทำให้คนร้ายสามารถหาเลข CVV ได้โดยไม่ต้องเดาแม้แต่นิดเดียว หากรู้เลขบัตรและวันหมดอายุ
– วันหมดอายุ ตัวเลขนี้แต่ละธนาคารจะมีการกำหนดนโยบายของตัวเอง ซึ่งตัวเลขสี่หลักนี้ดูเผินๆ อาจจะเหมือนว่าเดายาก แต่ไม่ได้อยู่เกินวิสัยที่จะเดาด้วยสาเหตุหลายๆ ประการ เช่น ไม่ว่าบัตรถ้ายังไม่หมดอายุก็มีวันหมดอายุในอนาคต และบัตรส่วนใหญ่วันหมดอายุก็จำกัด เช่น ไม่เกิน 5 ปี จึงเหลือตัวเลขให้เดาเพียง 60 ตัวเลข (เช่น 12*5 = 60) นอกจากนี้ยังมีเรื่องของการออกเลขบัตรตามลำดับที่ผมเกริ่นไปก่อนหน้านี้ ทำให้การเดาตรงนี้ง่ายขึ้นไปอีก เพราะบัตรเลขที่ติดๆ กันก็จะมีวันหมดอายุใกล้ๆ กันด้วย ถ้าคนร้ายได้ข้อมูลบัตรใบหนึ่งไป จะทำให้การเดาทำได้ง่ายขึ้นมาก ปัจจุบันธนาคารจึงมีการออกเลขบัตรแบบสุ่ม และเลือกใช้ BIN Code จำนวนมากพร้อมๆ กันเพื่อแก้ปัญหาตรงนี้
– ชื่อตามบัตร หลายๆ คนจะเอ๊ะว่าแล้วคนร้ายจะเดาชื่อตามบัตรถูกได้ไง เพราะกรอกบัตรเครดิตทีไรมันถามทุกที ความน่าสนใจอยู่ตรงนี้ครับ ตามมาตรฐานของ Payment Gateway ต้องการเพียงแค่เลขบัตร วันหมดอายุ และเลข CVV เท่านั้นเอง เว้นแต่ Payment Gateway ใดจะบังคับข้อมูลเพิ่มเติม เพื่อความปลอดภัยที่สูงขึ้น (เดี๋ยวจะเล่าเรื่อง 3D Payment หรือ Secure Payment เพิ่มครับ เก็บไว้ก่อน) ดังนั้นถ้าคนร้ายรู้ว่า Payment Gateway ไหนไม่ต้องใช้ชื่อ คนร้ายก็จะมุ่งเป้าไปโจมตีผ่าน Payment Gateway นั้นนั่นเอง
พอเรามองจากรายละเอียด เราจะเห็นว่า การเดาข้อมูลทั้งสามส่วนถึงแม้จะยาก แต่ก็ไม่ได้ยากอย่างที่คิด เพียงมีการทดลองตัดเงินแบบซ้ำๆ กันหลายๆ ครั้งก็จะสามารถหาข้อมูลเลขบัตรที่ถูกต้องได้
แต่อย่างไรก็ตาม บริษัทผู้ออกบัตรและสถาบันการเงินก็ไม่ได้นิ่งนอนใจ ในช่วงหลายสิบปีที่ผ่านมาที่มีธุรกรรมแบบไม่แสดงบัตร (Card not present) สูงขึ้นมากตามธุรกรรมชำระเงินผ่านบัตรที่เพิ่มสูงขึ้น จากการซื้อสินค้าและบริการที่สูงขึ้นทุกปี ทำให้ความเสียหายจากการฉ้อโกงผ่านธุรกรรมการชำระเงินสูงถึง 24 พันล้านดอลลาร์สหรัฐใน พ.ศ. 2561 (+18% จากปีก่อนหน้า) และธุรกรรมแบบไม่แสดงบัตรมีความเสี่ยงสูงกว่าธุรกรรมแบบแสดงบัตรถึง 81% (ข้อมูลจาก Shift Processing)
บริษัทผู้ออกบัตร สถาบันการเงิน และร้านค้าใหญ่ๆ จึงมี (Anti-Fraud) ที่พัฒนาขึ้นมาตามลำดับ ไม่ว่าจะเป็น (บางส่วน)
- มีระบบตรวจสอบข้อมูลบัตรเครดิตที่รั่วไหลตามฐานข้อมูลต่างๆ และแจ้งยกเลิกบัตร
- มีระบบปฏิเสธการชำระเงิน ในกรณีที่การกรอกข้อมูลบัตรผิดหลายๆ ครั้ง การใช้บัตรที่ผิดปกติ เช่น ไปใช้บัตรในสถานที่ที่ไม่ควรใช้ หรือการใช้บัตรในต่างประเทศ
- มีการปฏิเสธร้านค้าที่มีรายการผิดปกติมากผิดปกติ
- มีการใช้ระบบปัญญาประดิษฐ์ (AI) มาใช้ในการตรวจสอบรายการธุรกรรมผิดปกติ
- มีการตรวจสอบตำแหน่งของมือถือของผู้ใช้กับสถานที่ใช้บัตรว่าตรงกัน
- มีการเพิ่มข้อมูล Biometric ไว้บนบัตร
- มีการใช้ชิปแทนแถบแม่เหล็ก
- มีการเพิ่มระบบ OTP และ 2FA ในการทำรายการ
- มีการออกบัตรแบบ Virtual Card เพื่อเป็นการสร้างเลขบัตรชั่วคราว เพื่อใช้ทำธุรกรรมครั้งเดียว
- มีระบบ 3-D Secure เพื่อลดการใช้เลขบัตรโดยตรง และใช้การตรวจทั้งจากผู้ออกบัตร (Issuer Domain) ร้านค้า (Merchant) และธนาคารของร้านค้า/Payment Gateway (Acquirer Domain)
อย่างไรก็ตาม คนร้ายก็ไม่ได้ยอมแพ้ มีการอาศัยช่องโหว่ต่างๆ อยู่ตลอดเวลา ไม่ว่าจะเป็น
– การที่บริษัทผู้ออกบัตรและสถาบันการเงินไม่สามารถตรวจสอบธุรกรรมผิดปกติทุกรายการได้ทันที บริษัทผู้ออกบัตรและสถาบันการเงินจึงเลือกที่จะไม่สนใจรายการธุรกรรมเล็กๆ เพราะต้นทุนในการตรวจสอบไม่คุ้ม คนร้ายจึงใช้ช่องโหว่ตรงนี้ในการพยายามหาข้อมูลเลขบัตรที่ถูกต้อง โดยการเลือกตัดรายการเล็กๆ
– การที่บริษัทผู้ออกบัตรและสถาบันการเงินใช้ระบบตรวจสอบร้านค้าที่ผิดปกติ โดยดูจากธุรกรรมที่ผิดปกติ คนร้ายจึงเลือกที่จะทำการทดลองผ่านร้านค้าหลายๆ ร้านไปพร้อมๆ กัน และเลือกร้านค้าใหญ่ๆ อย่าง Facebook, Google, Apple ซึ่งมีธุรกรรมหลายร้อยล้านรายการต่อวัน การโจมตีจึงแทบจะเป็นเหมือนหยดเลือด 1 หยดในน้ำทะเล ที่ฉลามที่อยู่ห่างไกลอย่างไรก็ไม่ได้กลิ่นนั่นเอง
แทนที่คนร้ายจะพยายามเดาข้อมูลให้ถูกของเลขบัตร 1 ใบ ซึ่งธนาคารมักจะมีการตรวจสอบ หากผิดซ้ำๆ กันหลายๆ ครั้ง ก็จะล็อกบัตรทันที คนร้ายจึงเลือกโจมตีบัตรหลายๆ พันใบพร้อมๆ กันแทน โอกาสที่จะรอดจากการตรวจสอบก็จะง่ายขึ้น
ร้านค้าใหญ่ๆ เองก็มักมีการตรวจสอบว่าบัตรที่ใช้ตรงกับตำแหน่ของ IP Address ที่ทำธุรกรรมไหม คนร้ายก็เลือกที่จะใช้ VPN เพื่อหลบหลีกการเปิดเผยตำแหน่งของตัวเอง และเพื่อหลอกให้ร้านค้ารับธุรกรรมของตัวเองไปด้วย
อย่างไรก็ตาม สงครามของการฉ้อโกงผ่านธุรกรรมออนไลน์ยังไม่จบ คนร้ายก็พัฒนาขีดความสามารถในการฉ้อโกงไปเรื่อยๆ ในขณะที่บริษัทผู้ออกบัตร สถาบันการเงิน และร้านค้า ก็ยังพยายามพัฒนามาตรการในการป้องกันอย่างไม่หยุดยั้ง
ส่วนผู้บริโภคตาดำๆ อย่างเราก็ยังต้องระมัดระวังกับการใช้บัตรต่อไปครับ
เดี๋ยวตอนหน้า มาเล่าความเห็นของผมให้ฟังว่า การหักบัญชีแบบผิดปกติในไทยครั้งนี้เมกเซนส์หรือเปล่าครับ เพราะตอนนี้มันยาวเกินไปแล้ว
ป.ล. ใครที่อยากดูว่าการแฮกบัตรเครดิตทำได้อย่างไร ตามไปดูตัวอย่างได้ที่นี่
อ้างอิง: