我正在努力了解如何绕过HSTS保护。我读过LeonardoNve(https://github.com/LeonardoNve/sslstrip2和https://github.com/LeonardoNve/dns2proxy)。但我完全不明白。
-
如果客户端是第一次请求服务器,它将随时工作,因为sslstrip只会剥离Strict Transport Security:header字段。所以我们又回到了原来的sslstrip。
-
如果不是?会发生什么?客户端知道它应该只使用HTTPS与服务器交互,所以它会自动尝试使用HTTPS连接到服务器,不是吗?在这种情况下,MitM是无用的…><
从代码中可以看出,sslstrip2将更改客户端所需资源的域名,因此客户端将不必使用HSTS,因为这些资源不在同一域上(这是真的吗?)。客户端将发送一个DNS请求,dns2proxy工具将拦截该请求,并发回真实域名的IP地址。最后,客户端只会以HTTPS方式对它应该完成的资源进行HTTP处理。
示例:根据服务器响应,客户端必须下载mail.google.com。攻击者将其更改为gmail.googlecom,因此它不是同一个(子)域。然后客户端将对此域进行DNS请求,dns2proxy将使用mail.google.com的真实IP进行应答。然后客户端将通过HTTP简单地询问此资源。
我没有得到的是在此之前。。。攻击者如何在客户端到服务器的连接应该是HTTPS的情况下剥离html?
缺少一块…:s
感谢
好的,看完视频后,我对dns2proxy工具可能的作用范围有了更好的了解。根据我的理解:
- 大多数用户将通过单击链接或重定向进入HTTPS页面。如果用户直接获取HTTPS版本,则攻击失败,因为我们无法在没有服务器证书的情况下解密流量
- 在重定向或链接启用sslstrip++dns2proxy的情况下,我们处于连接的中间。。mitm!===>
- 用户登录谷歌网站
- 攻击者拦截从服务器到客户端的流量,并更改要登录的链接"https://account.google.com"到"http://compte.google.com"
- 用户浏览器将向"compte.google.com"发出DNS请求
- 攻击者拦截该请求,向真名"account.google.com"发出真实的DNS请求,并向用户发回"假域名+真实IP"的响应
- 当浏览器收到DNS应答时,它将搜索是否应该通过HTTPS访问此域。通过检查预加载的HSTS域列表,或者通过查看缓存中或会话中已访问的域,不知道。由于域不是真实的,浏览器只需通过real地址ip进行HTTP连接。===>最后的HTTP流量;)
因此,真正的限制仍然是需要间接HTTPS链接才能实现。有时浏览器会直接"重新键入"输入HTTPS链接的url。
干杯!