电子邮件网络钓鱼中的同形攻击检测

2023-11-25

主要问题

我正在 Java 中开发一个 API,需要检测网络钓鱼电子邮件中品牌(例如 PayPal、Mastercard 等)的使用情况。

显然,攻击者使用不同的策略来针对这些品牌,以便更难以检测到它们。例如 ”大师卡“看起来非常相似”万事达”并且可以欺骗毫无戒心的用户。

此时我可以使用模糊字符串搜索的形式轻松检测出这些品牌的拼写错误。然而,我面临的问题是,当攻击者使用同形符号来更改特定品牌的名称但保持相同的视觉解释时。

同形文字攻击会替换以下字符[a-zA-Z]具有看起来相似但超出此范围的字符的模式。例如,使用特定字符集的攻击者可以使用希腊字母 RHO看起来 P 的目标是 PayPal。此类攻击中的 PayPal 品牌名称将变为:

[希腊字符 RHO][a][y][希腊字符 RHO][a][l]

由于我对 Unicode 或 ISO 标准及其编码等不同标准几乎没有经验,因此我需要您的建议。有没有办法以编程方式确定角色的视觉等效项在 [a-zA-Z] 集合之外这样结果将是一个字符在 [a-zA-Z] 集合内?

您的一些答案可能基于特定的字符集,我正在寻找一种解决方案,可以帮助我确定电子邮件中可用的每个字符集的此类表示形式。

我还没有阅读邮件交换的 RFC 标准,但它们在我的列表中,我现在问这个问题是为了节省时间。

可能但不可行的解决方案

我已经想到了一些解决方案,但它们不适用于我的特定情况,因为它们是 CPU 密集型的并且具有类似黑客的性质(阅读“可能很容易被破坏”)。

第一个解决方案是写下这个字符外部 [a-zA-Z]将其形式转化为图像并将该图像提供给 OCR API 以获得最接近的图像[a-zA-Z]表示。

第二种解决方案是为每个字符集创建一个映射,映射的键是字符本身,值是字符集[a-zA-Z]相等的。该地图要么必须手动完成,要么使用上述第一个解决方案。

额外细节

我已经问过这个问题了here。然而,尽管我进行了编辑工作,但问题仍然关闭。可能是因为我没有很好地表达自己,没有正确标记问题。

在那个特定问题中,我还解决了我对 Java 使用的字符集的一些担忧,这些担忧掩盖了实际问题。但是,如果您觉得有必要在答案中包含此类信息,我将不胜感激,因为这可以节省我研究此类问题的时间。同形文字攻击的问题和 Java 或 *javax.mail.** 中的字符集问题是分开但又相互联系的。

作为主要问题中描述的同形文字攻击的一个特定示例是这封电子邮件。谨防!这是使用这种特定攻击方法的网络钓鱼电子邮件的实际内容,因此请勿点击该电子邮件中包含的任何链接。

我已经用我认为合适的标签标记了这个问题,如果您不同意,请对此问题进行编辑,而不是投票结束。


作为...的一部分TR-39Unicode 联盟维护着一个易混淆的列表您可以用它来帮助您进行映射。我无法证明其完整性。

TR-39还描述了一种使用易混淆列表来比较易混淆字符串的骨架算法。你是A GoLang算法的实现,我写了一个快速的java端口.

除此之外,删除变音符号和大写字母也会有所帮助。这些没有被骨架算法标准化。所以完整的过程应该是类似骨架-->删除变音符号-->转小写。

/*
 * Special regular expression character ranges relevant for simplification
 * -> see http://docstore.mik.ua/orelly/perl/prog3/ch05_04.htm
 * InCombiningDiacriticalMarks: special marks that are part of "normal" ä,
 * ö, î etc.. IsSk: Symbol, Modifier see
 * http://www.fileformat.info/info/unicode/category/Sk/list.htm IsLm:
 * Letter, Modifier see
 * http://www.fileformat.info/info/unicode/category/Lm/list.htm
 */
private static final Pattern DIACRITICS_AND_FRIENDS = Pattern.compile("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+");

private static String stripDiacritics(String str) {
    str = Normalizer.normalize(str, Normalizer.Form.NFD);
    str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll("");
    return str;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电子邮件网络钓鱼中的同形攻击检测 的相关文章

随机推荐