ɢoogle.news不是google.news

iso60001  1703天前

aa.png

早在2016年,我就曾写过某些人会购买ɢoogle.com域名,用于钓鱼攻击。

这些同形字符看起来像ASCII字符,但它们的编码方式不同,肉眼很难第一时间看出来。

而我也很快和谷歌进行过交流:

同形异义词引发的钓鱼欺诈可能不会欺骗到所有人,这和所采用的策略有关,可能会遇到安全、网络和其他系统方面的各种挑战。

我当时就想:

1.每年都有新的顶级域名,以前的钓鱼案例可以重复么?

2.从头开始创建一个精致的谷歌钓鱼网站有多难?

3.我可以获得该域名的SSL证书吗?

4.谷歌会监视到任何涉及ɢoogle的域名吗?

5.我可以在Google Domains购买钓鱼域名吗?域名注册商会有什么提示么?

6.我能在谷歌用户和谷歌服务器之间进行一次成功的中间人攻击吗?

顶级域名

其实找到和ɢoogle相关的域名并不复杂,很多域名服务商都有数据。

以下主要以Google DomainsNameCheapGoDaddy为主。

我购买了以下域名:

ɢ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!顺便说一下,价格很便宜。

33.png

我还能说什么呢。我在注册使用的整个过程中使用了一个假身份,并将Not Google :)作为组织名称。

44.png

使用SSL证书

1.在cloud中启动一个VPS(AWS、谷歌云、Azure等)

2.将DNS路由到该服务器。

3.安装Nginx/Apache等HTTP服务器。

4.请求一个LetsEncrypt证书(LetsEncrypt是全球知名的免费SSL证书提供商)。

sudo certbot — nginx certonly — dry-run -d “xn — oogletranslate-u5f.com”

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Cert not due for renewal, but simulating renewal for dry run
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for xn — oogletranslate-u5f.com
Waiting for verification…
Cleaning up challenges

IMPORTANT NOTES:
 — The dry run was successful.

接下来,为了通过“Google”查看客户端的流量,我们需要以下nginx代理:

server {
    location / {
           proxy_pass https://translate.google.com/;
           add_header NOT-GOOGLE-HEADER OK;
    }

    listen 80;

    server_name www.xn--oogletranslate-u5f.com;
    server_name xn--oogletranslate-u5f.com;
    server_name *.xn--oogletranslate-u5f.com;

    listen 443 ssl; # managed by Certbot
    ssl_certificate <cert path> # managed by Certbot
    ssl_certificate_key <cert path> # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

你应该注意到了,我为每个发回的谷歌响应添加了一个HTTP头:

NOT-GOOGLE-HEADER OK # You can check it in your browser's dev tools.

55.png

现在,我们可以在https://的掩护下提供钓鱼内容。

看看以下链接,它会把你重定向到我的钓鱼域名

https://xn--oogletranslate-u5f.com/#view=home&op=translate&sl=auto&tl=en&text=This%20is%20not%20really%20Google%2C%20you%20are%20proxied%20by%20%C9%A2oogletranslate.com.%0AYou%20made%20an%20SSL%20handshake%20with%20%C9%A2oogletranslate.com%2C%20but%20you%20use%20Google%20Translate%20normally.

66.png

使用代理的一个好处在于我的域链接预览,在不同的网络平台中,我发出的钓鱼链接既展示了谷歌翻译的准确描述,又指向了我的域名。以Whatsapp为例:

77.png

88.png

一切仅需几分钟,无需编码。

99.png

而且,Chrome浏览器认为这个域是“安全”的。

此外在移动设备上,我的“ɢ”看起来就像一个真正的“G”。

谷歌的javascript可以在我的域中正常运行,我不需要做任何模仿谷歌网站的工作。

得到流量

通过一些社会工程学,我们可以让用户点击这些域名,截取到受害者的流量。

我想在一些和网络安全相关的网站上发布钓鱼链接,以证明即使是安全意识强的人也可能被这些域名误导。

某些网站的预览具有欺骗性,但也有效果较差的。RedditHacker News为例:

100.png

110.png

最终,我看到了数百个独立访问者(不包括机器人和扫描器)的流量。

我们能做些什么?

在现在的情况下,我的钓鱼域名处于用户与谷歌之间,因此可以进行中间人攻击。我可以改变谷歌的回复,获取一些敏感的信息。

我们想要获取的最珍贵的数据可能是登录凭证或令牌。

而Google会使用accounts.Google.com进行身份验证。

例如,我可以覆盖HTML文件中的所有<a>标签,让它们指向ɢoogletranslate.com域中的自定义钓鱼登录页面。

我们也可以覆盖页面内的所有链接,将其指向accounts.ɢoogletranslate.com(修改登录按钮的href属性),窃取用户的Google的凭据。

还可以在HTTP正文中插入恶意的<script>,以在客户端浏览器上执行恶意js代码。

很少有人可以及时更新浏览器。网络中出现的和浏览器有关的1day漏洞都可以为我所用。

怎样才能阻止这种攻击?

1.看清URL中的字母。

2.2016年也出现过同样的事,ɢoogle.com已被列入黑名单,但这不是解决问题的正确方法,每一个顶级域名都有可能出现这种情况,所有包含“ɢoogle”甚至“oogle”的域名都应加入黑名单。

3.Google Domains别给人推荐钓鱼域名了。

4.限制这些域名请求LetsEncrypt证书的能力。

5.谷歌的js文件应该检查引用它们的域名是否正确。例如在我们的案例中,Referrer是:https://xn--oogletranslate-u5f.com/

6.安全流量分析软件或许也应该把这些域名加入黑名单。

谷歌的回应

谷歌的确认真对待我的安全报告,一直在持续和我讨论其中的风险。

但这个问题不是谷歌特有的,每个大公司或服务都面临这种问题,它们必须花费一定的资金来保护自己的域名和资产。

我不是第一个攻击者,也不会是最后一个。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/@avi_59283/poc-for-google-phishing-in-10-minutes-%C9%A2oogletranslate-com-dcd0d2c32d91

最新评论

昵称
邮箱
提交评论