什么是同形异义字攻击?

对人眼而言,一切看起来完全正常。但实际上,例如单词 Ηоmоgraph 并不完全等同于单词 Homograph。

它们之间的差异非常细微,难以察觉。Ηоmоgraph 实际上包含了几个非拉丁字母。在本例中,我们将字母 H 替换为希腊字母同形异义字 Η,将字母 o 替换为西里尔字母同形异义字 о。自动化防御机制在分析这个单词时,无法识别它是看起来的那个词,因此可能将其视为有效,或在分析时跳过这个被操纵的单词。

同形异义字攻击利用的是一些非拉丁字符,它们在视觉上与拉丁字符相似,从而构造出新的单词。这些单词在人眼看来与真实单词几乎无异,但对大型语言模型(LLM)或任何计算机系统而言,它们其实是不同的。

这种攻击本质上是利用来自不同书写系统的字符(如西里尔字母、希腊字母等)的外观相似性,来模仿英文中通常使用的标准拉丁字符。

恶意行为者通过将拉丁字符替换为外观相似的非拉丁字符,可能绕过检测与分析,进而制造出恶意邮件,从而导致凭据被盗、恶意软件感染或其他形式的利用。例如,在虚构品牌 “Airplаnes R Us” 中,将拉丁字母 a 替换为西里尔字母 а,就可能让攻击者发送的欺诈邮件在人眼中看起来像是 Airplanes R Us 发来的完全真实的邮件。

AI 驱动的钓鱼攻击的兴起使这一攻击向量变得更加危险。AI 可用于生成高度逼真的邮件,使攻击者更容易大规模创建看似合法的邮件,并使得真实邮件与恶意邮件之间更难区分。

威胁行为者通常将同形异义字攻击作为更大攻击方案的一部分,以诱导目标接触恶意内容。通过在邮件中的各个字段中操纵同形异义字符,攻击者的目标包括:

  • 欺骗用户: 视觉上的相似性可以诱使收件人信任欺诈邮件。
  • 绕过安全过滤器: 传统安全解决方案可能无法检测到这些字符替换,从而将邮件归为合法。
  • 冒充可信实体: 精确模仿品牌与身份角色,提高了收件人参与互动的可能性。

检测原理

尽管被篡改的单词在肉眼看来可能是完全相同(或非常相似)的,但通过检查它们的 Unicode 编码值,可以识别出是否存在同形异义字符。Unicode 标准为每个字符分配一个唯一的数值,使计算机能够表示来自不同语言和字符系统的文本。

每个字符集(例如,拉丁、西里尔、希腊)都被分配了一个特定的数值范围。Unicode 官方网站 提供了这些字符集及其对应数值的完整列表。

每个字符集都有专属的 Unicode 数值范围,每个值对应于该字符集中的一个字符(如字母、数字、符号)。通过分析这些字符的数值,可以揭示它们实际属于哪个字符集,从而识别出混入其他字符集中的非本地字符。

钓鱼攻击中同形异义技术的观察

我们对包含同形异义攻击的电子邮件的分析突出了以下主要技术:

  • • 冒充知名品牌
  • • 冒充服务平台(如文档分享平台、IT 支持人员)

攻击者通过操纵电子邮件显示名称中的字符,使其看起来像合法实体,从而增加收件人识别欺诈邮件的难度。这类邮件通常还会在其他邮件头中使用同形异义字符,使其看起来更像是真实邮件。

以下是我们在真实环境中观察到的案例研究,展示了在不同邮件头和字段中使用同形异义字符的方式,强调了其所带来的威胁。这些案例属于不同的邮件同形异义攻击场景,但都遵循相似的模式。

案例一:Google Drive 文件共享

在该攻击场景中,攻击者通过 Google Drive 共享了一个文件。他们使用了一个电子邮件账户,其显示名称和 Google 账户头像模仿了一家知名的美国跨国公司,该公司提供包括网上银行在内的金融服务。

该电子邮件地址本身与被冒充公司没有任何关系,但账户名称中使用了同形异义字符,伪装成该公司的名称。为了保护被冒充组织的隐私,我们对相关信息进行了模糊处理。

内置的安全过滤机制未能识别这是一次冒充行为,也未将该内容归类为恶意内容。图 1 展示了这封邮件的部分遮挡版本。

 

图 1. 一封电子邮件,说明有文件通过 Google Drive 与目标共享。

攻击者分享的文档内容涉及目标账户中的“可疑登录记录”,并建议目标点击文件中的 VERIFY(验证)按钮采取行动,如图 2 所示。

 

图 2. 在共享给目标的文档中,VERIFY(验证)按钮会将目标重定向至由攻击者控制的网站。

尽管在我们调查时该网站(messageconnection.blob.core[.]windows[.]net)已无法访问,但攻击者很可能原本打算用它来窃取凭据,甚至可能对访问该网站的受害者工作站进行攻击利用。

案例二:用于审核和电子签署的文档链接

在我们调查的另一起攻击场景中,威胁行为者使用同形异义字符替代,伪装成电子文档共享平台。这类平台常用于在线签署合同、协议及其他文件。

在该案例中,攻击者分享了一些链接,声称这些链接指向已准备好签署的文档。该文档诱导潜在受害者点击链接,重定向至由攻击者控制的网站。虽然攻击者的发件地址与任何合法平台无关,但其邮件的显示名称和主题中都包含了带有非拉丁同形异义字符的单词(已加粗标注):

  • • 显示名称:包含单词 Сonfidеntiаl 和 ikеt
  • • 邮件主题:包含单词 Finаniаl 和 Տtаtеmеnt

虽然在这个案例中这些异常字符可能较易被识别,但部分程序会将这些字符渲染为与拉丁字母几乎无异的样子,从而使识别变得更加困难。

邮件主题中还包含了对目标公司名称的同形异义字符篡改,意图营造出该邮件来自目标公司内部的假象。因此,这封恶意邮件成功绕过了检测与过滤机制,最终被归类为正常邮件并投递至目标收件箱。

攻击者还精心设计了邮件中的各种按钮与链接,将目标引导至伪造的登录页面。他们根据目标所在组织定制了该登录页面的 URL,并添加了自定义 CAPTCHA 验证,以防止被机器人或爬虫自动识别。

在该案例中,目标的姓名被写入了“指派给”字段,使邮件看起来像是专门为该人定制的。邮件内容还在 PDF 文件名及“Powered by”部分中展示了目标公司名称。威胁行为者还在邮件内容中加入了 DocuSign 的品牌标识与信息。

所有这些细节都加强了这样一种假象:这是一封由目标公司员工通过合法文档共享服务发送的邮件。图 3 展示了伪装成 DocuSign 消息的该邮件示例。

 

图 3. 邮件提示目标签署由目标公司“提供支持”的文件。

点击上述邮件中的 SIGN DOCUMENTS(签署文件)按钮,会将受害者重定向至一个看起来合法的网站,该网站甚至使用了合法的 .com 顶级域名(TLD):bestseoservices[.]com。图 4 展示了该网站的界面消息,提示受害者点击另一个按钮以验证身份。此额外步骤可能旨在阻止爬虫程序与该网站交互,从而避免其恶意性质被发现。

 

图 4. 点击 SIGN DOCUMENTS(签署文件)后的重定向过程。

点击 “Verify it's you”(验证你的身份)按钮后,会触发一系列重定向,旨在进一步让目标陷入虚假的安全感之中。首先,受害者会被重定向到中东某市政机构的合法网站的 /templates 目录。这一步很可能是为了掩盖攻击的恶意意图。

该网站会显示一条消息,声称正在进行身份扫描。图 5 显示了接下来屏幕上出现的 “SCAN VALIDATED”(扫描验证成功)提示,进一步强化了其合法性的假象。最终,在这一连串精心伪装的流程后,目标会被重定向到一个使用 .ru 顶级域名的域名(kig.skyvaulyt[.]ru),在我们调查时该域名已无法访问。

 

图 5. 虚假的验证页面,随后重定向至 .ru 域名。

在另一封邮件中,威胁行为者在攻击初期使用了类似的方法。在该案例中,受害者点击另一封文档共享邮件中的按钮后,被重定向至图 6 所示的页面。攻击者设计该页面的目的是通过要求受害者输入一次性密码(OTP)来过滤掉爬虫程序和机器人。每当用户输入绿色数字时,OTP 都会发生变化,如图 6 和图 7 所示。

 

图 6. 与邮件交互后呈现的登录页面,显示了自定义的 CAPTCHA 验证码。

 

图 7. OTP 验证码是动态的,每次按键都会变化,用于过滤机器人和爬虫程序。

成功输入 OTP 验证码后,页面会跳转到一个伪装成微软域名的站点:mlcorsftpsswddprotcct.approaches.it[.]com。图 8 中显示的混淆 URL 参数展示了目标邮箱地址。

我们推测,威胁行为者对该网站进行了定制,仅允许目标用户访问,从而有效阻止其他访问尝试。在我们调查时,该网站已无法访问。

 

图 8. 输入验证码后的重定向页面,包含目标邮箱信息。

案例三:Spotify 冒充尝试

我们调查的第三个案例涉及对 Spotify(一个流媒体音乐和播客服务提供商)的冒充。攻击者发送了一封声称来自 Sρօtifу 的邮件,发件地址中包含非拉丁字母的同形异义字符,使其在视觉上难以与真实的 Spotify 邮件区分。

图 9 展示了该邮件,邮件内容称收件人的 Spotify 付款未成功,必须通过邮件中提供的链接更新付款信息。该链接会将目标重定向至合法的 redirects[.]ca URL 缩短服务,可能用于掩盖最终目的地并规避检测。我们推测,这个缩短链接本应指向攻击者控制的网站,攻击者可能利用该网站窃取凭据或实施其他恶意行为。

 

图 9. 冒充 Spotify 的邮件。

在我们调查该案例时,该链接已无法访问。

这些案例清楚地展示了威胁行为者如何精心制作高度针对性且极具欺骗性的邮件,使其难以与合法通信区分开来。如果没有强有力的检测和防御机制,组织和个人将容易受到这些攻击的影响,难以识别这些邮件中嵌入的恶意链接和操作按钮。

结论

新型 AI 模型的广泛应用使攻击者能够制作更加逼真和个性化的邮件。这让欺骗收件人参与恶意内容变得更加容易,同时也增加了识别真假内容的难度。同形异义字攻击对常见检测方法提出了额外挑战,因为标准防御机制无法识别或自动检测被篡改的文本。

一个检查是否存在触发警报词汇的邮件安全模块,可能无法识别包含同形异义字符的词汇如 pаssword、սrgent 和 ActᎥoո reɋuired 为问题词,因此该模块可能无法检测或阻止攻击者用来实施恶意行为的通信和网站。这可能导致被篡改的输入以意想不到的方式被处理。

全球各地的人们使用各种语言的计算技术。区分潜在恶意邮件与合理使用非拉丁字符的邮件可能非常困难。即使邮件看起来合法,在将其归类为安全之前,仍需考虑以下重要因素:

  1. 1. 检查发件人地址:是否与显示名称或邮件内容相关?例如,域名是否与被冒充的公司匹配?是否看起来是该公司常用的域名?
  2. 2. 该地址在您的组织中是否熟知? 还是第一次收到该发件人的邮件?对未知发件人的邮件尤其要警惕,特别是当他们要求敏感信息或引导您点击外部链接或附件时。
  3. 3. 仔细检查邮件内容:是否有些字母看起来有些异常?它们可能实际上并非拉丁字符。您可以使用字符检测工具检查可疑字符的 Unicode 值。
  4. 4. 切勿打开未知地址发送的附件或点击链接,尤其是指向您不熟悉或看起来不同的网址。这些可能存在危害。务必在点击链接前验证其合法性。

与所有电子邮件相关的攻击一样,预防的关键在于提高警惕和培训。对每封进入收件箱的邮件都保持谨慎,遇到可疑邮件时请遵循上述建议。邮件外观合法,并不代表它真的合法。

IoC

在 Google Drive 上共享文件的电子邮件地址:

  • tioranpycon1999@attention.processverification[.]com
  • perlapersdoc1998@supportmanager.fullrecoveryaccount[.]agency

案例1 URLs:

  • messageconnection.blob.core[.]windows[.]net

发送文档共享邮件的电子邮件地址:

  • cfa@agroparistechl[.]fr
  • brantlawassoc@bellnet[.]ca

案例 2 URLs:

  • bestseoservices[.]com
  • kig[.]skyvaulyt[.]ru
  • hxxps://guvenbisiklet[.]com/wp-content/bin/Verify/Code/index.htm(?/1.AYWNjb3VudHNAY29vbHBvb2xsdGQuY29t)
  • microsftpsswddprotcct.approaches.it[.]com

发送 Spotify 邮件的电子邮件地址:

  • info47198@ha01s003[.]org-dns[.]com

 

 申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关    

网络安全学习路线/web安全入门/渗透测试实战/红队笔记/黑客入门


感谢各位看官看到这里,欢迎一键三连(点赞+关注+收藏)以及评论区留言,也欢迎查看我主页的个人简介进行咨询哦,我将持续分享精彩内容~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91309.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91309.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91309.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows服务器 maven 配置环境变量,验证maven环境变量是否配置成功

前置条件:先确认对应版本的jdk已安装配置好,可使用java -version检测; 我使用的apache-maven-3.6.3是对应jdk1.8 1.找到系统变量配置窗口 以windows server2019为例,右键计算机属性, 高级系统设置–》环境变量–》系统变量2.新建M…

安装 docker compose v2版 笔记250731

安装 docker compose v2版 笔记250731 简述 v2版是插件形式 确认系统要求, 已安装 Docker Engine(版本 20.10.5 或更高) 安装方式可分为 apt 或 yum 安装 (能自动升级) apt install docker-compose-pluginyum install docker-compose-plugin 手动二…

PHP 5.5 Action Management with Parameters (English Version)

PHP 5.5 Action Management with Parameters (English Version) Here’s a PHP 5.5 compatible script that uses URL parameters instead of paths for all operations: <?php // Start session for persistent storage session_start();// Initialize the stored actio…

GR-3(4B) 技术报告--2025.7.23--字节跳动 Seed

0. 前言 前两天字节发布了GR-3&#xff0c;粗略的看了一下&#xff0c;在某些方面超过了SOTA pi0&#xff0c;虽然不开源&#xff0c;但是也可以来看一看。 官方项目页 1. GR-3模型 1.1 背景 在机器人研究领域&#xff0c;一直以来的目标就是打造能够帮助人类完成日常任务…

Linux网络编程:UDP 的echo server

目录 前言&#xff1a; 一、服务端的实现 1、创建socket套接字 2、绑定地址信息 3、执行启动程序 二、用户端的实现 总结&#xff1a; 前言&#xff1a; 大家好啊&#xff0c;前面我们介绍了一些在网络编程中的一些基本的概念知识。 今天我们就借着上节课提到的&#…

AI+金融,如何跨越大模型和场景鸿沟?

文&#xff5c;白 鸽编&#xff5c;王一粟当AI大模型已开始走向千行百业之时&#xff0c;备受看好的金融行业&#xff0c;却似乎陷入了落地瓶颈。打开手机银行想查下贷款额度&#xff0c;对着屏幕说了半天&#xff0c;AI客服却只回复 “请点击首页贷款按钮”&#xff1b;客户经…

深度解析:从零构建跨平台对象树管理系统(YongYong框架——QT对象树机制的现代化替代方案)

一、技术背景与核心价值 1.1 QT对象树的局限性 在Qt框架中&#xff0c;QObject通过对象树机制实现了革命性的对象管理&#xff1a; #mermaid-svg-SvqKmpFjg76R02oL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Sv…

力扣46:全排列

力扣46:全排列题目思路代码题目 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路 看到所有可能首先想到的就是回溯。 回溯的结束条件也很好写&#xff0c;用数组的长度来判断即可。这道题的难点主要是如何进行判…

mac环境配置rust

rustup 是一个命令行工具&#xff0c;用于管理 Rust 编译器和相关工具链 sh 体验AI代码助手 代码解读复制代码curl --proto ‘https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh使得 Rust 的安装在当前 shell 环境中生效 如果你使用的是 bash, zsh 或其他类似的 shell&#xf…

脚手架搭建React项目

脚手架搭建项目 1. 认识脚手架工具 1.1. 前端工程的复杂化 1.1.1. 如果只是开发几个小的demo程序&#xff0c;那么永远不要考虑一些复杂的问题&#xff1a; 比如目录结构如何组织划分&#xff1b;比如如何关键文件之间的相互依赖&#xff1b;比如管理第三方模块的依赖&#xff…

Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数

&#x1f41b; Golang 调试技巧&#xff1a;在 Goland 中查看 Beego 控制器接收的前端字段参数 在使用 Beego 开发 Web 项目时&#xff0c;我们常常会在控制器中通过 c.GetString()、c.GetInt() 等方法获取前端页面传过来的字段值。而在调试过程中&#xff0c;如何在 Goland 中…

sqli-labs:Less-2关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型&#xff1a;数值型提示&#xff1a;参数id无需考虑闭合问题&#xff0c;相对简单 2. 手工注入步骤&#x1f3af; 我的地址栏是&#xff1a;http://l…

TRAE 软件使用攻略

摘要TRAE 是一款集成了人工智能技术的开发工具&#xff0c;旨在为开发者提供高效、智能的编程体验。它包括三个主要组件&#xff1a;TRAE IDE、TRAE SOLO 和 TRAE 插件。无论是编程新手还是经验丰富的开发者&#xff0c;都可以通过 TRAE 提高工作效率和代码质量。标题一&#x…

将开发的软件安装到手机:环境配置、android studio设置、命令行操作

将开发的软件安装到手机环境配置android studio4.1.2安装命令行操作环境配置 注意&#xff1a;所有的工具的版本都需要根据当下自己的软件需要的。 Node&#xff1a;14.16.0 &#xff08;如果安装了npm&#xff0c;可以使用npm进行当前使用node版本的更改&#xff09; &#x…

Jmeter 命令行压测、HTML 报告、Jenkins 配置目录

Jmeter 命令行压测 & 生成 HTML 测试报告 通常 Jmeter 的 GUI 模式仅用于调试&#xff0c;在实际的压测项目中&#xff0c;为了让压测机有更好的性能&#xff0c;多用 Jmeter 命令行来进行压测。 官方&#xff1a;Jmeter 最佳实践 同时&#xff0c;JMeter 也支持生成 HT…

记录几个SystemVerilog的语法——覆盖率

1. 前言 通常说的覆盖率有两种类型&#xff1a;code coverage(代码覆盖率)和functional coverage(功能覆盖率)。代码覆盖率是使用EDA工具自动从设计代码里提取出来的&#xff0c;功能覆盖率是用户指定的&#xff0c;用于衡量测试设计意图和功能进展。因此&#xff0c;功能覆盖…

深度学习基础—2

第一章、参数初始化 我们在构建网络之后&#xff0c;网络中的参数是需要初始化的。我们需要初始化的参数主要有权重和偏置&#xff0c;偏重一般初始化为 0 即可&#xff0c;而对权重的初始化则会更加重要&#xff0c;我们介绍在 PyTorch 中为神经网络进行初始化的方法。 1.1 常…

PyTorch深度学习快速入门学习总结(三)

现有网络模型的使用与调整 VGG — Torchvision 0.22 documentation VGG 模型是由牛津大学牛津大学&#xff08;Oxford University&#xff09;的 Visual Geometry Group 于 2014 年提出的卷积神经网络模型&#xff0c;在 ImageNet 图像分类挑战赛中表现优异&#xff0c;以其简…

是否需要买一个fpga开发板?

纠结要不要买个 FPGA 开发板&#xff1f;真心建议搞一块&#xff0c;尤其是想在数字电路、嵌入式领域扎根的同学&#xff0c;这玩意儿可不是可有可无的摆设。入门级的选择不少&#xff0c;全新的像 Cyclone IV、Artix 7 系列&#xff0c;几百块就能拿下&#xff0c;要是去二手平…