Punycode والمتشابهات: حين يشبه النطاق المزيّف النطاق الحقيقي
انظر إلى هذين العنوانين: paypal.com وpаypal.com. متطابقان؟ لأعيننا نعم. أما للحاسوب فلا أبدًا: في الثاني، حرف «а» الثاني من الأبجدية السيريلية، وليس «a» اللاتيني. إنهما نطاقان مختلفان يمكن أن يملكهما شخصان مختلفان. هذا هو مبدأ هجمات المتشابهات (homographs)، ولفهمها نحتاج إلى جولة قصيرة في الطريقة التي يكتب بها الإنترنت الأسماء.
Unicode وASCII وPunycode: ثلاث كلمات وفكرة بسيطة
في الأصل، لم تكن أسماء النطاقات تقبل إلا أبجدية صغيرة جدًا تُسمّى ASCII: الحروف اللاتينية من a إلى z دون علامات، والأرقام، والشرطة. لا «é» ولا «ü»، فضلًا عن العربية أو الصينية أو السيريلية.
لكن العالم يكتب بعشرات الأبجديات. Unicode هو الفهرس الكبير الذي يمنح رقمًا لكل حرف في كل كتابة: «a» اللاتيني رقمه U+0061، و«а» السيريلي رقمه U+0430. الشكل نفسه، والرقم مختلف.
ولإتاحة أسماء النطاقات بكل اللغات دون تغيير الشبكة كلها، اختُرع مترجم: Punycode. يحوّل الاسم المكتوب بـUnicode إلى اسم لا يستخدم إلا أبجدية ASCII، ويميّزه بالبادئة xn--. يعرض المتصفح النسخة الجميلة، بينما لا ترى الشبكة إلا النسخة المترجمة.
كيف يعمل نطاق «xn--»
لنأخذ مثالًا نزيهًا تمامًا: النطاق الفرنسي société.fr («شركة»). الشبكة لا تعرف قراءة «é». يضع Punycode الحروف الخاصة جانبًا، ويحتفظ بالحروف العادية، ويضيف في النهاية رمزًا صغيرًا يدلّ على مكان إعادة العلامات:
société.fr → xn--socit-esab.fr
نجد «socit» (الحروف العادية)، ثم «esab»، وهو الرمز الذي يحدد الحروف التي تُدرج وأين. البادئة xn-- تنبّه فقط: «انتبه، هذا الاسم مترجَم». ملايين الأسماء المشروعة تعمل بهذه الطريقة، بالألمانية والعربية والصينية والروسية. فـxn-- ليس مريبًا في حد ذاته. يصبح مريبًا حين يقلّد علامة معروفة.
هجمات الحروف المتشابهة: التوائم المزيّفة
الحرف المتشابه (homoglyph) حرف يشبه حرفًا آخر إلى حد الالتباس. وUnicode يضم الكثير منها: الحروف السيريلية «а» و«е» و«о» و«р» و«с» أشباه مثالية للحروف اللاتينية a وe وo وp وc. والحرف اليوناني «ο» يقلّد «o».
يشتري المحتال نطاقًا استُبدل فيه حرف أو أكثر بشبيهه. وفي عام 2017، أثبت باحث ذلك بطريقة لافتة: سجّل xn--80ak6aa92e.com، الذي يُكتب аррӏе.com بحروف سيريلية بالكامل، وكانت عدة متصفحات كبرى آنذاك تعرض ببساطة «apple.com» في شريط العنوان. ومنذ ذلك الحين صحّحت المتصفحات هذه الحالة.
لماذا قد يبدو العنوان مشروعًا
تطبّق المتصفحات الحديثة قواعد حذر: حين يمزج اسم بين أبجديات بطريقة مريبة، أو يشبه نطاقًا معروفًا أكثر مما ينبغي، تعرض صيغة xn-- بدلًا من النسخة الجميلة. إنها حماية جيدة، لكن لها حدود:
- خارج شريط العنوان لا تُطبَّق هذه القواعد دائمًا: في نص رسالة بريد أو رسالة نصية أو ملف PDF أو تطبيق مراسلة، تظهر النسخة «المتنكّرة» كما هي؛
- القواعد تختلف من متصفح إلى آخر، ومن إصدار إلى آخر، ومن تطبيق إلى آخر؛
- النظرة السريعة على شاشة صغيرة لا تميّز بين حرفين متطابقين. ولا حاجة دائمًا إلى Unicode:
rnتقلّدm، و1يقلّدl، كما يشرح دليل التصيّد الاحتيالي: كيف يوصل المحتالون رسائلهم إلى بريدك.
وكما في أي نطاق فخ، قد يملك الموقع شهادة HTTPS صالحة وقفلًا جميلًا: فهما يثبتان أن الاتصال مشفّر، لا أن الموقع نزيه.
كيف نتحقق فعلًا من نطاق
عند الشك، لا نثق بما نراه، بل نجعل الاسم الحقيقي يتكلّم:
- لا ننقر. ننسخ الرابط (نقرة يمنى، «نسخ عنوان الرابط»).
- نلصقه في محوّل Punycode (هناك كثير منها مجانًا على الإنترنت): إذا ظهرت صيغة
xn--لاسم يُفترض أنه عادي تمامًا، فهو فخ. - نستخرج النطاق: الجزء الواقع قبل أول «/» مباشرة. يشرح دليل التصيّد برموز QR: حين يختبئ الاحتيال خلف رمز QR هذه القراءة بالتفصيل.
- نسلك طريقًا آمنًا: إشارة مرجعية حفظناها بأنفسنا أو التطبيق الرسمي. ومدير كلمات المرور يساعد أيضًا: فهو لا ينخدع بالشبيه ولا يقترح شيئًا على نطاق مزيّف.
يقوم Baitback بجزء من هذا العمل آليًا: حين نلصق فيه رسالة بريد، يشير إلى الروابط المكتوبة بـPunycode (صيغة xn--) وإلى النطاقات التي تشبه العلامات التي يعرفها، بما في ذلك عبر الحروف المتشابهة، ويتحقق كذلك من الوجهة النهائية بعد إعادة التوجيه.
تحديد المسجِّل والاستضافة
لإزالة النطاق، نبحث عمّن باعه وعمّن يستضيفه. في أدوات الاستعلام، نستخدم دائمًا صيغة xn--: فهي الاسم الحقيقي الذي تعرفه السجلات.
- استعلام RDAP أو WHOIS عن النطاق يعطي المسجِّل وعنوان الإبلاغ لديه («abuse») وتاريخ إنشاء النطاق. نطاق يشبه علامة تجارية أُنشئ الأسبوع الماضي لا يترك مجالًا كبيرًا للشك.
- يتيح عنوان IP للموقع العثور على استضافته، أو على شبكة CDN القائمة أمامه، التي تقبل البلاغات أيضًا وتحيلها.
المسجِّل هنا هو الجهة الأكثر فاعلية: فالنطاق الذي يقلّد علامة تجارية بحروف متشابهة حالة إساءة واضحة جدًا، وتعليق الاسم يوقف دفعة واحدة الموقع والرسائل وكل الصفحات المرتبطة.
الإبلاغ عن النطاق
البلاغ الجيد يكفيه بضعة أسطر: صيغة Unicode وصيغة xn-- للنطاق، والعلامة المقلَّدة، والعنوان الكامل للصفحة، ولقطة شاشة، والتاريخ والوقت. نرسله إلى المسجِّل وإلى الاستضافة أو CDN، ونُعلم العلامة المقلَّدة.
وإذا وصل النطاق عبر البريد، نبدأ بـBaitback: نلصق المصدر الكامل للرسالة، فتعثر الأداة على خادم الإرسال واستضافته، وترصد الروابط المريبة، وتجهّز رسائل البلاغ. كما تذكّر بمنصات المتصفحات (Google Safe Browsing وMicrosoft وNetcraft…) القادرة على عرض تحذير أحمر لكل الزوار في غضون ساعات.
- قد يكون حرفان متطابقان للعين حرفين مختلفين للحاسوب: هذا هو الحرف المتشابه.
- يترجم Punycode الأسماء المكتوبة بـUnicode إلى صيغة ASCII تبدأ بـ
xn--. xn--ليس مريبًا في حد ذاته، لكنه مريب في اسم يُفترض أن يكون عاديًا أو يقلّد علامة تجارية.- نتحقق من النطاق بنسخ الرابط لا بالنظر إليه، ونمرّ عبر إشارة مرجعية أو التطبيق الرسمي.
- نبلّغ المسجِّل بصيغتَي الاسم: التعليق يوقف كل شيء دفعة واحدة.