使用 SSLstrip2 + DNS2proxy 绕过 HSTS

信息安全 中间人 hsts ssls带
2021-09-03 06:17:05

我试图了解如何绕过 HSTS 保护。我读过 LeonardoNve 的工具(https://github.com/LeonardoNve/sslstrip2https://github.com/LeonardoNve/dns2proxy)。但我完全不明白。

  • 如果客户端是第一次请求服务器,它会随时工作,因为 sslstrip 会简单地剥离Strict-Transport-Security:头部字段。所以没关系。
  • 如果不?怎么了?客户端会自动尝试使用 HTTPS 连接到服务器吗?在那种情况下,MITM 是没用的,不是吗?

查看代码,我有点明白 SSLstrip2 将更改客户端所需资源的域名,因此客户端不必使用 HSTS,因为这些资源不在同一个域上(是真的吗?)。客户端将发送一个 DNS 请求,DNS2proxy 工具将拦截并发回真实域名的 IP 地址。最后,客户端只会 HTTP 它应该以 HTTPS 方式完成的资源。

示例:从服务器响应中,客户端必须下载 mail.google.com。攻击者将其更改为 gmail.google.com,因此它不是同一个(子)域。然后客户端将对该域进行 DNS 请求,DNS2proxy 将使用 mail.google.com 的真实 IP 进行响应。然后,客户端将简单地通过 HTTP 请求该资源。

在此之前我没有得到的是:攻击者如何在从客户端到服务器的连接应该是 HTTPS 的情况下进行 HTML 条带?

2个回答

要回答最初的问题 - 大多数人从不https://example.com直接输入。他们依赖链接(单击此处访问我们的安全登录服务器)或重定向("gmail.com"在浏览器中输入,您将被自动重定向到安全站点)。

这就是SSLStrip进来的地方:它拦截原始的、不安全的 HTTP 回复,并<a href="https">;用 HTTP(不安全)版本替换链接。此外,它还会更改"Location:"指向 HTTPS URL 的重定向(标头)。

使用SSLStrip2,这会更进一步(拦截、重定向到无效的子域、使用 DNS 拦截来实际为该子域提供有效的 IP)。

这里有整个过程的演练:http: //sign0f4.blogspot.com/2014/10/mitmf-v07-released-sslstrip-integration.html

总之,博客文章的作者演示了如何使用sslstrip2dns2proxy捕获凭据。在作者使用自己的MITMf工具时,该工具封装了sslstrip2dns2proxy,以及与之关联的 HSTS 配置文件。他提供了命令、浏览器和工具输出的屏幕截图。展示了两个案例研究:Google 和 Facebook。