同形字符如何被滥用于网络欺诈
你扫了一眼网址,看到熟悉的品牌名便点击进去,结果却把账号密码拱手交给了攻击者,这个肉眼难以察觉的视觉误差,正是同形字符攻击(Homoglyph Attacks)利用核心。
同形字符,指视觉上与另一个字符几乎完全一致的字符。
典型示例:
拉丁字母 a(U+0061)vs 西里尔字母 а(U+0430)
拉丁字母 o(U+006F)vs 希腊字母 ο(omicron,U+03BF)
拉丁大写字母 I(i 的大写,U+0049)vs 拉丁小写字母 l(L 的小写,U+006C)vs 西里尔字母 І(U+0406)
同形攻击用视觉上容易混淆的替代方式替换标识符(域名、文件名、电子邮件显示名)中的一个或多个字符,以冒充可信资源。
在国际化域名(IDN)中使用时,这些域名以 Punycode(xn-- 前缀)表示,但在浏览器中通常使用原始 Unicode 字符渲染——为用户提供看起来真实的 URL。
Punycode 示例如下:
页面显示域名:gοogle-example[.]com(使用希腊字母 omicron 替代了拉丁字母 “o”)
底层 ASCII Punycode 编码:xn--gogle-example-abc[.]com
同形字符攻击的核心,是利用拉丁、西里尔、希腊等不同语言文字体系中的视觉相似字符。这些形近字母不仅能欺骗用户、仿冒可信域名,甚至可以绕过部分自动化过滤系统。
图1 列出钓鱼与仿冒攻击活动中,最常被滥用的同形字符对照参考表。
后续几张图是近些年来比较经典的攻击域名,目前列出这些内容主要是由于在某些场景下对大模型的使用会有些许帮助,仅记录备忘。