利用SSL的谷歌钓鱼攻击:ɢoogle.news并非google.news
2016年,我曾遇到一篇关于有人购买ɢoogle.com域名的帖子(注意首字母G的差异)。该域名被用于钓鱼目的。
同形异义字符看起来像ASCII字母,但编码方式不同,这种差异通常人眼难以察觉。网络钓鱼是通过伪装成可信实体,试图获取敏感信息(如用户名、密码和信用卡详情)的欺诈行为。通常通过电子邮件欺骗或即时消息进行,诱导用户在与合法网站外观相似的虚假网站中输入个人信息。
在与谷歌的交流中,他们表示:使用同形异义字符(例如,用仿冒G的Google)可能不会欺骗所有人,但根据采用的策略,可能会在安全、网络和其他系统方面遇到挑战。
我自问:
- 每年都有新的顶级域名推出,世界是否从ɢoogle.com事件中吸取了教训?
- 从头创建一个高质量的谷歌钓鱼网站有多难?
- 我能为此类域名获取SSL证书吗?
- 谷歌是否监控任何“ɢoogle”同形异义域名的注册?
- 我能通过Google Domains购买吗?域名注册商是否会提示?
- 我能否在谷歌用户和谷歌服务器之间成功实施中间人攻击?
我分享这些是因为我关心安全问题。请仅将此用于教育目的。
哪些顶级域名可供购买?
找到一些可用的ɢoogle域名并不难。只需在任何域名注册商(如Google Domains、NameCheap和GoDaddy)中搜索“ɢoogle”。我购买了以下域名:
- ɢoogle.company(类似company.google.com)
- ɢoogle.email(类似mail.google.com)
- ɢoogle.tv(类似tv.google.com)
- ɢoogle.life(类似life.google.com)
- ɢoogle.live(类似live.google.com)
- ɢoogle.news(类似news.google.com)
- ɢoogletranslate.com(类似translate.google.com)
这些域名是自动建议的,我甚至不需要发挥创意。Google Domains为我建议了“ɢoogletranslate.com”!价格也很合理。
而且它奏效了…我使用了一个虚假身份进行整个流程,组织名称为“Not Google :)”。
使用SSL证书设置钓鱼网站
- 在云中启动VPS(AWS、Google Cloud、Azure等)。
- 将DNS路由到该服务器。
- 安装Nginx/Apache HTTP服务器。
- 申请LetsEncrypt证书(是的,我成功为这些域名从LetsEncrypt获取了SSL证书)。
|
|
然后,我们需要设置Nginx配置以代理方式查看客户端与“Google”的流量:
|
|
注意,我为谷歌返回的每个响应添加了一个HTTP头:NOT-GOOGLE-HEADER OK(可在浏览器开发者工具中检查)。
现在,可以使用https://链接来获取信任,同时提供恶意内容。看看这个链接,它通过Medium重定向到我的钓鱼域名ɢoogletranslate.com:
Google Translate Google的免费服务可即时在英语和100多种其他语言之间翻译单词、短语和网页。 xn–oogletranslate-u5f.com
使用代理的好处是,我的域名链接预览在每个平台上都会获取Google Translate的确切描述,同时指向我的链接。以Whatsapp为例。
结果
几分钟内设置完成,无需编码。很酷,对吧?如你所见,Chrome将此域名显示为“安全”(锁图标)。在移动设备上,我域名中的“ɢ”看起来像真正的“G”。谷歌的JavaScript从我的域名正常运行。谷歌的JS为我完成所有工作——我甚至不需要模仿Google服务。
获取流量
通过一些社会工程学,我们可以让用户点击这些域名,并以极少的努力获得有机流量,从而证明这种攻击的能力。我想在安全导向的网站上发布一些链接/帖子,以证明即使是安全意识强的人也可能被这些域名误导。
一些预览效果更好,一些由于同形异义字符的URL引用而吸引力降低。来自Reddit和Hacker News的示例:
最终,没有太多工作,我获得了数百名独立访客(不包括机器人和安全扫描器或我发布的平台)。
我们能对访客做什么?
它看起来和行为都像任何谷歌单页面应用程序。如链接中所述,我正在与用户进行SSL握手。原始的谷歌应用程序被提供,功能如预期,但我暴露于用户的流量与域名。因此,我可以更改谷歌响应的正文。这是一种中间人攻击,利用IDN同形异义攻击获得一些关注。
我们最想获取的宝贵数据可能是登录凭据或令牌。谷歌使用域accounts.google.com进行身份验证。例如,我可以覆盖HTML中的所有<a>标签。不将它们指向google.com的子域(例如accounts.google.com),而是将它们指向ɢoogletranslate.com域内的自定义钓鱼登录页面。
我们可以通过覆盖页面内的链接,将它们指向accounts.ɢoogletranslate.com(登录按钮的HTML标签的href属性),窃取用户的谷歌登录凭据。
还可以在HTTP正文中注入恶意的<script>标签,并在客户端浏览器中执行JavaScript/其他代码。访问链接的大多数用户代理是长时间未更新的旧浏览器。我的访问日志中的许多Chrome、Firefox和Safari用户代理是易受0 day攻击(包括沙箱逃逸)的设备。
如何预防此类攻击?
对链接中域名内的大写/奇怪字母保持怀疑。2016年,ɢoogle.com发生了同样的事情,但“ɢoogle”顶级域名仍在出售。ɢoogle.com被列入黑名单——但这不是正确的修复方式。每个包含“ɢoogle”甚至“oogle”的域名都应被域名注册商和浏览器禁止。
Google Domains和其他域名注册商中的自动建议域名有助于社会工程学攻击——他们甚至不需要想出域名名称。🤦🏻♂️
能够为同形异义域名从LetsEncrypt请求SSL证书。Translate.google.com的JavaScript在页面运行,同时在ɢoogletranslate.com下提供。JavaScript应检查(window.location应为合法的Google域)并阻止其余脚本加载。服务还可以通过验证请求的Referrer返回HTTP错误响应,在我们的案例中,Referrer是:https://xn–oogletranslate-u5f.com/。
对于系统管理员——在IDS/IPS中实施规则,对网络流量进行静态分析。Snort、Zeek(Bro)和Suricata有针对同形异义主机的警报和规则。确保规则集是最新的。恶意主机一直被列入黑名单。
谷歌的回应
这并不令我惊讶。谷歌认真对待我的安全报告。
“感谢您提供的大量材料、背后的思考以及用于保护这些域名以创建此报告的实际资金。同形异义攻击在其社会工程学应用中总是有趣的,但更具挑战性的是部署不仅欺骗用户而且欺骗基础设施的攻击。您的提交有一些考虑因素……我们实际上仍在讨论。我有一些攻击场景需要澄清和解释,但自那以后我将POC推进了一步。”
这个问题并非谷歌特有。互联网可以采取一些次要步骤来预防此类攻击。在有解决方案之前,每个大公司或服务都必须通过花费大量资金购买类似域名来保护其域名和资产。
我希望您同意——对于具有基本Linux和网络知识的任何人来说,重现此类攻击的步骤非常简单。我没有做任何魔术,我也不是第一个(4年过去了,我只是好奇)。某种攻击真的很难阻止。
我认为Gmail会更有趣(我拥有ɢoogle.email)。这里展示了一个成功的POC,如需更多信息,请随时联系我。