视觉上相似的字符列表,用于检测欺骗和社会工程攻击

信息安全 社会工程学 欺骗 统一码
2021-08-16 04:45:26

我正在尝试检测同形异义词攻击和其他攻击,其中攻击者使用看起来与可信域名相似的欺骗域名(例如,bankofthevvest.com 而不是 bankofthewest.com)。

是否有适合编程使用的视觉相似字符的字典或数据库?

例如,如果我查找“l”,我想返回一个列表,表明“l”在视觉上类似于“1”和“i”(至少在某些字体中)。如果我查找“w”,它可能会告诉我它在视觉上类似于“vv”(在某些字体中)。如果我查找“d”,它可能会告诉我它在视觉上类似于“cl”(在某些字体中)。至少现在,我的重点是 ASCII 字符之间的视觉相似性。忽略 Unicode 很好。(但是,如果有一个列表也知道哪些 Unicode 字符在视觉上与每个 ASCII 字符相似,那将是一个额外的好处。)

如果这样的事情已经存在,我想避免重新发明轮子。这样的清单是否已经存在?

这是我到目前为止发现的:

2个回答

同形异义词攻击有不同的方法。成功取决于使用的字体。例如,在某些字体中,小写字母 l 看起来非常像大写字母 I。而在其他字体中则不然。

相似之处

使用相似的字符。他们代替了真实的性格。

  • b ⇔ 6
  • c ⇔ (
  • g ⇔ q, 9
  • C ⇔ (
  • G ⇔ 6
  • L ⇔ l, I, 1, |
  • O ⇔ 0
  • S ⇔ 5
  • V⇔U
  • Z ⇔ 2

声音变化字符

某些语言,如德语,有特殊字符(例如变音符号)。在某些情况下,它们可能看起来像没有它们的角色:

  • a ⇔ ä, à, á
  • e ⇔ ë, è, é
  • 我⇔ï,ì,í
  • o ⇔ ö, ò, ó
  • 你 ⇔ ü, ù, ú

多字母

在某些字体中,多字母方法非常成功。

  • a⇔ci
  • d ⇔ cl
  • g ⇔ cj
  • m ⇔ rn
  • A⇔fi
  • W ⇔ VV

建筑

从多个字符构造单个字符。非常流行的是 vv 而不是 w。

  • ⇔ /\
  • B ⇔ |3
  • D⇔|)
  • G ⇔ (¬
  • H ⇔ |-|
  • K ⇔ |<, |{
  • L ⇔ |_
  • M ⇔ |v|
  • N ⇔ |\|
  • V ⇔ \/

注射

注入涉及将无意义的字符插入到字符串中,尤其是在域/url 中。

http://somewebsite.examplehttp://some-website.example

在这种情况下,空格经常被忽略。在某些情况下,零宽度空白 (​) 是一个不错的工具。

尝试在“Homoglyph”而不是“homograph”下查找。

例如,这可能是您想要的:

https://codebox.net/pages/homoglyph-detection

它包含代码和字典。