Homoglyph Detector: เครื่องมือจับอักขระลอกเลียนใน domain ก่อนโดน phishing
Homoglyph Detector ตรวจจับ Unicode confusable อักขระมองไม่เห็น และ bidi override ใน domain หรือข้อความใดก็ได้ เพื่อหยุดการโจมตีแบบ phishing และ typosquatting ก่อนที่คุณจะตกเป็นเหยื่อ
เครื่องมือออนไลน์ฟรี
ตัวตรวจจับ Homoglyph และอักขระคล้ายกัน
ตรวจจับการแทนที่ด้วยอักขระ Unicode ที่หน้าตาเหมือนกัน ซึ่งใช้ในฟิชชิงและ typosquatting - Cyrillic a กับ Latin a, อักขระล่องหน และ bidi override พร้อมไฮไลต์รายตัวอักษร ฟรีและทำงานฝั่ง client
Table of Contents
อีเมลแจ้งใบแจ้งหนี้จากซัพพลายเออร์ ลิงก์รีเซ็ตรหัสผ่านจากธนาคาร หรือแจ้งเตือนความปลอดภัยจากแพลตฟอร์มที่คุณใช้งาน ทุกฉบับล้วนมาพร้อมลิงก์ที่ดูสมบูรณ์แบบ ชื่อแบรนด์ถูกต้อง สะกดถูกทุกตัวอักษร จุดอยู่ครบทุกตำแหน่ง แต่แล้วเงินกลับเข้าบัญชีผิด หรือรหัสผ่านหลุดไปอยู่ที่เซิร์ฟเวอร์ของคนอื่น เคล็ดลับของมิจฉาชีพมักไม่ใช่ typo แบบหยาบ ๆ ที่ตาเปล่าจับได้ แต่เป็นการแทนที่ด้วย Unicode ที่หน้าตาเหมือนจริงจนสายตามนุษย์แยกของจริงกับของปลอมออกจากกันไม่ได้เลย
นักวิจัยด้านความปลอดภัยเรียกอักขระพวกนี้ว่า homoglyph หรือ confusable คือ code point จากระบบการเขียนต่างกันที่แสดงผลหน้าตาเกือบเหมือนตัวอักษรที่คุณคาดหวังไว้ ตัวอย่างคลาสสิกคือซีริลลิก а (U+0430) เทียบกับละติน a (U+0061) ฝาแฝดระดับพิกเซลที่สร้าง domain ที่แตกต่างกันสนิท สายตาเปล่าจับไม่ได้ และเบราว์เซอร์ก็ไม่เตือนคุณ สิ่งที่คุณต้องการคือเครื่องมือที่ตรวจทุกตัวอักษรให้ และนั่นคือสิ่งที่ Homoglyph Detector ทำอยู่พอดี
เพียงวางสตริงหรือ domain ใดก็ได้ลงในเครื่องมือ มันจะสแกนหาการแทนที่ด้วย homoglyph อักขระมองไม่เห็นอย่าง zero-width joiner และเทคนิค bidi override ที่บิดเบือนลำดับสิ่งที่คุณเห็น ทุกตำแหน่งที่น่าสงสัยจะถูกไฮไลต์ให้เห็นชัด และ skeleton view จะย่อข้อความเหลือรูปแบบมาตรฐานไว้เปรียบเทียบได้ในแวบเดียว บทความนี้จะพาไล่ดูวิธีใช้งาน และกลไกเบื้องหลังของการโจมตีแบบนี้ว่าทำงานกันจริงอย่างไร
ทำไมต้องใช้ Homoglyph Detector?
- จับ domain ลอกเลียนก่อนกดเข้าไป. อักขระที่ถูกสลับเพียงตัวเดียวตาเปล่ามองไม่เห็น แต่เครื่องสแกนมองเห็นได้ชัดเจน
- เปิดโปงอักขระมองไม่เห็น. zero-width joiner และอักขระซ่อนอื่น ๆ หลุดรอดจากการตรวจด้วยการก๊อปวาง และแม้แต่บางระบบ validation ได้ง่าย ๆ
- เฉลยเทคนิค bidi override. เครื่องหมาย right-to-left สามารถกลับลำดับการแสดงผลของชื่อไฟล์หรือ URL ให้อ่านไม่เหมือนของจริง
- เห็นตำแหน่งปัญหาแบบเป๊ะ ๆ. per-character highlighting ระบุตำแหน่งที่ confusable เป็นรายอักขระ ไม่ใช่แค่เตือนทั้งข้อความหมึกหนาเดียว
- เปรียบเทียบด้วย skeleton view. เครื่องมือย่อทุกอักขระเป็นรูปแบบมาตรฐาน ทำให้ข้อความลอกเลียนโผล่ออกมาให้เห็นทันที
- ทำงานในเบราว์เซอร์ล้วน ๆ. ทุกอย่างที่คุณวางลงไปไม่ถูกอัปโหลดไปที่ใด การวิเคราะห์เกิดขึ้นบนเครื่องของคุณเอง
ฟีเจอร์หลักของ Homoglyph Detector
| ฟีเจอร์ | ทำอะไรได้ |
|---|---|
| ตรวจจับ homoglyph และ confusable | ระบุอักขระที่ถูกแทนด้วยตัวลอกเลียนจากภาษาอื่น เช่น ซีริลลิก а ยืนแทนละติน a |
| ตรวจจับอักขระมองไม่เห็น | เผย zero-width joiner, zero-width space และ code point อื่น ๆ ที่ไม่แสดงผลบนหน้าจอ |
| ตรวจจับ bidi override | จับอักขระ right-to-left override ที่กลับลำดับการแสดงผลของข้อความ |
| ไฮไลต์รายอักขระ | ระบุชัดเจนว่าตำแหน่งใดในสตริงที่ confusable |
| skeleton view | ย่อทุกอักขระเป็นรูปแบบมาตรฐาน เพื่อเปรียบเทียบสตริงที่หน้าตาใกล้เคียงกันได้โดยตรง |
| ทำงานในเบราว์เซอร์ | การสแกนและไฮไลต์ทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ ไม่มีอะไรถูกส่งขึ้นเซิร์ฟเวอร์ |
รายละเอียดที่น่ารู้เพิ่มเติม:
- เครื่องมือรับสตริงที่วางได้ทุกประเภท ไม่ว่าจะเป็น domain, ที่อยู่อีเมล, ชื่อผู้ใช้, ชื่อไฟล์ หรือข้อความจากเนื้อความอีเมล
- เนื่องจากวิเคราะห์ที่เครื่องคุณเอง จึงสแกนข้อความที่อ่อนไหว เช่น hostname ภายในองค์กรหรือตัวระบุลูกค้าได้อย่างปลอดภัย
- การไฮไลต์ร่วมกับ skeleton output ให้ทั้งตำแหน่งของปัญหาและรูปแบบมาตรฐานไว้เทียบเคียง
วิธีใช้งาน Homoglyph Detector
- วาง domain หรือข้อความ. คัดลอกข้อความตรงตามที่ได้รับมา — ลิงก์จากอีเมล, domain สำหรับชำระเงิน หรือชื่อผู้ใช้ที่น่าสงสัย — แล้ววางลงในช่องป้อนข้อความ อย่าพิมพ์ใหม่ด้วยมือ เพราะคุณอาจแก้ปัญหาไปโดยไม่เคยรู้ตัวเลยว่ามันมีอยู่
- ปล่อยให้สแกนทำงาน. ทุกอักขระจะถูกวิเคราะห์ทันทีที่คุณวาง ไม่ต้องตั้งค่าอะไรเพิ่มเติม
- อ่านผลแฟลกระดับอักขระ. ทุกตำแหน่งที่ confusable จะถูกไฮไลต์ พร้อมรายละเอียดว่าอักขระตัวนั้นแท้จริงคืออะไรและมาจากสคริปต์ใด
- ส่อง skeleton view. สตริงจะถูกย่อเป็น skeleton มาตรฐาน เพื่อให้เทียบกับชื่อที่ถูกต้องที่คุณคาดหวังไว้ได้โดยตรง
- ตัดสินใจเรื่องความน่าเชื่อถือ. ผลสแกนสะอาดและ skeleton ตรงกันแปลว่าดำเนินการต่อได้ แต่ถ้ามีอักขระใดถูกแฟลก ให้หยุดและยืนยันผ่านช่องทางอื่นก่อน
กลไกเบื้องหลังการโจมตีแบบ Homoglyph Attack
อักขระหน้าตาเหมือนกันจากต่างภาษา. Unicode ถูกออกแบบมาเพื่อรองรับทุกระบบการเขียนบนโลก และความทะเยอทะยานนั้นก็มีผลข้างเคียง คือหลายภาษามีอักขระที่แสดงผลหน้าตาเกือบเหมือนตัวอักษรละติน เช่น กรีก omicron (ο) เทียบเท่าละติน o, ซีริลลิก е เทียบเท่าละติน e และตัวอักษรซีริลลิกตัวเล็กเกือบทั้งชุดทับซ้อนกับรูปทรงภาษาอังกฤษอย่างหนัก ผู้โจมตีที่จดทะเบียนชื่อที่มีอักขระลอกเลียนตัวหนึ่ง ก็เท่ากับเป็นเจ้าของชื่อที่คนอ่านเข้าใจว่าเป็นชื่อของคุณ
ตัวอย่างคลาสสิก: ซีริลลิก а. กรณีตำราเรียนคือซีริลลิก а (U+0430) เทียบกับละติน a (U+0061) ทั้งคู่แยกกันไม่ออกในขนาดหน้าจอปกติ แต่เป็นอักขระคนละตัวที่มีค่าไบนารีต่างกันสนิท domain ที่ขึ้นต้นด้วยอักษรซีริลลิกเป็น domain ตัวจริงคนละตัวกับของแท้ ที่เบราว์เซอร์และเมลไคลเอนต์จำนวนมากแสดงผลเหมือนของจริงเป๊ะ ๆ และเนื่องจาก internationalized domain names เปิดรับสคริปต์เหล่านี้ การแทนที่จึงรอดพ้นจากการจดทะเบียน การออกใบรับรอง และการส่งอีเมล โดยไม่มีสัญญาณเตือนใด ๆ ให้เห็นเลย
อักขระมองไม่เห็น. กลุ่มเทคนิคที่สองใช้อักขระที่มองไม่เห็นมากกว่าจะลอกเลียนรูปทรง zero-width joiner (U+200D) และ zero-width space (U+200B) ไม่กินพื้นที่แสดงผลแม้แต่พิกเซลเดียว คำหนึ่งคำจึงมีอักขระซ่อนอยู่ข้างในได้ ในขณะที่ยังแสดงผลออกมาสมบูรณ์แบบ ผู้โจมตีใช้มันหลบ keyword filter สร้างชื่อผู้ใช้ที่หน้าตาซ้ำกับของคุณ และทำลายการเปรียบเทียบแบบ exact-match แบบง่าย ๆ ในโค้ด
Bidi override. เทคนิคที่สามทำให้งงงวยกว่ากัน Unicode ต้องรองรับภาษาที่เขียนจากขวาไปซ้าย เช่น อาหรับและฮีบรู จึงนิยาม override character ขึ้นมา รวมถึง right-to-left override (U+202E) ที่บังคับให้ทุกอย่างหลังจากนั้นแสดงผลกลับด้าน เมื่อซ่อนอักขระตัวนี้ไว้ในชื่อไฟล์หรือ URL ข้อความจะแสดงผลออกมาในลำดับที่ไม่ตรงกับเนื้อหาจริงอีกต่อไป
Skeleton algorithm จาก UTS #39. Unicode Consortium ระบุปัญหานี้ไว้ตรงจุดผ่านสเปก UTS #39 ซึ่งนิยาม confusable detection และ skeleton algorithm สำหรับย่อทุกอักขระ — ทั้ง confusable, อักขระมองไม่เห็น และเครื่องหมายจัดรูปแบบ — ลงเป็น skeleton มาตรฐาน ถ้าสองสตริงมี skeleton เดียวกัน คนอ่านจะแยกความต่างออกได้อย่างน่าเชื่อถือไม่ได้เลย Homoglyph Detector ใช้แนวคิดเดียวกันนี้ skeleton view ย่อข้อความเป็นรูปแบบมาตรฐาน และเมื่อเทียบแล้วไม่ตรงกับชื่อจริง แปลว่าสตริงนั้นไม่ใช่สิ่งที่มันปรากฏตัว
ตัวอย่างการใช้งานจริง
ตรวจสอบ domain ของสปอนเซอร์และคู่ค้าก่อนโอนเงิน
เมื่อสปอนเซอร์หรือซัพพลายเออร์ส่งอีเมลแจ้งเลขบัญชีใหม่หรือ URL ของ payment portal แห่งใหม่ ราคาของความผิดพลาดมักวัดกันเป็นหลักห้าถึงหกหลัก วาง domain จากข้อความนั้นลงเครื่องมือก่อนแตะปุ่มโอนทุกครั้ง ผลสแกนสะอาดไม่ใช่สิทธิ์อนุญาตในตัวเอง — ควรโทรยืนยันผ่านช่องทางอื่นควบคู่กันไป — แต่ถ้ามีอักขระใดถูกแฟลกแม้เพียงตัวเดียว ควรหยุดบทสนทนาไว้ทันที
ตรวจสอบชื่อผู้ใช้ (username) บนแพลตฟอร์มของคุณ
ถ้าคุณดูแลบริการที่ให้ผู้ใช้จดทะเบียนชื่อได้ การลอกชื่อด้วย homoglyph คือช่องทางโจมตีที่จริงจังมาก ผู้โจมตีจดชื่อที่หน้าตาเหมือน "admin" โดยใช้อักษรซีริลลิกเป็นตัวแรก แล้วแอบอ้างเป็นทีมงานของคุณได้ สุ่มตรวจรายชื่อใหม่เป็นระยะด้วยเครื่องมือนี้ และปฏิเสธ username ใด ๆ ที่ skeleton ตรงกับบัญชีสิทธิพิเศษที่มีอยู่แล้ว
ตรวจสอบ display name ในอีเมล
display name เป็นข้อความอิสระและมักไม่ผ่านการตรวจสอบ ชื่อหนึ่งชื่อจึงแฝง zero-width character หรือตัวอักษรที่ถูกสลับไว้ได้ ในขณะที่ยังดูสมบูรณ์แบบในกล่องจดหมาย เมื่ออีเมลอ้างว่ามาจากฝ่าย IT หรือกรรมการผู้จัดการ ลองวาง display name ลงเครื่องมือและดูว่าสิ่งที่คุณเห็นตรงกับอักขระที่ซ่อนอยู่เบื้องหลังจริงหรือไม่
เช็ก typosquatting ที่มุ่งเป้าแบรนด์ของคุณ
เมื่อคุณเฝ้าระวัง domain ที่มานั่งบนแบรนด์ของคุณ การแยก typo ธรรมดาออกจากสำเนา homoglyph เป็นเรื่องสำคัญ เพราะวิธีรับมือต่างกัน typo มักถูกจดไว้เพื่อขายโฆษณา แต่การจดทะเบียนแบบ homoglyph เกือบทุกครั้งบ่งชี้ถึงการล่าข้อมูลรับรอง (credential harvesting) สแกน domain ทุกตัวที่พบผ่านเครื่องมือนี้ก่อน เพื่อจัดหมวดหมู่ให้ถูกทาง
แนวปฏิบัติที่แนะนำ
- ยืนยัน domain สำหรับการเงินนอกช่องทางเดิมเสมอ. อย่าถือว่าลิงก์ที่ดูสะอาดคือการอนุมัติให้เดินเงิน ยืนยันการเปลี่ยนบัญชีทางโทรศัพท์ด้วยเบอร์ที่คุณมีอยู่แล้ว
- ไม่เชื่อ display name เพียงอย่างเดียว. ตัดสินอีเมลจากที่อยู่ผู้ส่งจริง และสแกนที่อยู่นั้นด้วยก่อนตอบกลับ
- จดทะเบียน domain ที่ confusable ไว้ป้องกันแบรนด์. ค่าจดทะเบียนเชิงป้องกันถูกกว่าค่าจัดการเหตุการณ์เพียงหนึ่งครั้งเสมอ
- ใช้คู่กับการเช็ก punycode. internationalized domains เดินทางในเครือข่ายในรูป punycode การแปลงกลับจะเผยสิ่งที่ซ่อนอยู่หลัง label น่าสงสัย
- สแกนก่อนเชื่อ identifier ที่วางลงไปทุกชนิด. ทั้ง username, webhook และ API hostname สมควรได้รับการเช็กสิบวินาทีเท่ากันหมด
- ทำให้เป็นกิจวัตร. การเช็ก homoglyph จะได้ผลก็ต่อเมื่อทำทุกครั้ง ไม่ใช่ทำเฉพาะหลังเจอเหตุการณ์
คราวหน้าที่ลิงก์, domain หรือชื่อผู้ใช้ไหนดูสมบูรณ์แบบเกินไปเล็กน้อย ให้ Homoglyph Detector ขยับตาแทนคุณ วางข้อความ อ่านไฮไลต์ เทียบ skeleton แล้วตัดสินใจจากหลักฐานแทนการเดาด้วยสายตา เครื่องมือนี้ฟรี ทำงานในเบราว์เซอร์ และใช้เวลาน้อยกว่าที่มิจฉาชีพใช้เขียนอีเมลหลอกลวงฉบับหนึ่งอีกด้วย
เครื่องมือที่เกี่ยวข้องที่คุณอาจสนใจ:
- Punycode Converter — ถอดรหัส internationalized domain name เพื่อดู ASCII ดิบ ๆ ที่ซ่อนอยู่ข้างหลัง
- Password Strength Checker — ประเมินความแข็งแรงของรหัสผ่านที่หน้า phishing ต้องการล่า
- URL Encoder — เข้ารหัสและตรวจสอบ URL อย่างปลอดภัยก่อนแชร์หรือคลิก
ตรวจสอบก่อนคลิกทุกครั้ง ขอให้ทุกคนปลอดภัยจากภัยออนไลน์นะ!
คำถามที่พบบ่อย
ถ: homoglyph คืออะไรในภาษาง่าย ๆ? ตอบ: คืออักขระจากภาษาหนึ่งที่หน้าตาเกือบเหมือนอักขระจากอีกภาษาหนึ่ง เช่น ซีริลลิก а วางเคียงข้างละติน a เป็น code point คนละตัวแต่หน้าตาเหมือนกันเป๊ะ จึงเป็นช่องโหว่ที่สมบูรณ์แบบสำหรับการทำ phishing
ถ: domain ที่มี homoglyph ยังขอใบรับรอง HTTPS ที่ถูกต้องได้หรือไม่? ตอบ: ได้ เพราะ certificate authority ออกใบรับรองให้กับ domain ใดก็ตามที่ผู้สมัครเป็นเจ้าของ และ domain ลอกเลียนก็เป็น domain จริง สัญลักษณ์แม่กุญแจพิสูจน์แค่การเข้ารหัส ไม่ได้พิสูจน์ตัวตน
ถ: อักขระมองไม่เห็นเป็นอันตรายจริงหรือแค่เรื่องความสวยงาม? ตอบ: เป็นอันตรายจริง zero-width joiner ที่แทรกในชื่อผู้ใช้ทำให้ผู้โจมตีสร้างบัญชีที่หน้าตาซ้ำกับบัญชีของคุณได้ ส่วนอักขระซ่อนในใบแจ้งหนี้หรือ URL สามารถหลอก filter ที่จับคู่ข้อความที่มองเห็นได้อย่างเงียบ ๆ
ถ: Homoglyph Detector ส่งข้อความของฉันขึ้นเซิร์ฟเวอร์ไหนหรือเปล่า? ตอบ: ไม่ การวิเคราะห์ทำงานทั้งหมดในเบราว์เซอร์ของคุณ จึงสแกนข้อความที่อ่อนไหว เช่น hostname ภายในองค์กร ข้อมูลลูกค้า หรือชื่อผลิตภัณฑ์ที่ยังไม่เปิดเผยได้อย่างปลอดภัย