V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kindjeff
V2EX  ›  问与答

这种山寨域名欺骗用户的 HTTPS 中间人思路是可行的吗?

  •  
  •   kindjeff · 2016-11-30 10:15:30 +08:00 · 3102 次点击
    这是一个创建于 2697 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这里有一篇文章, http://div.io/topic/907 ,说了一种思路可以使用山寨域名来欺骗用户,可以绕开 HSTS ,且不会有证书错误的提示。

    但是我认为这种思路是不可行的。

    这篇文章说这种手段和 SSLStrip 类似,只是从更改协议变成了干脆更改域名。但是 SSLStrip 是:用户本来就使用 HTTP 协议,中间人保持了和客户端的 HTTP 连接。而这篇文章的办法是:用户访问一个 HTTPS 站点时,让用户跳转到另外一个域名。

    我认为,这个跳转是无法做到的,因为:

    ①如果从 DNS 劫持入手,即使劫持了 DNS ,浏览器需要的还是特定域名的证书,没有证书,就没有办法完成之后的 SSL 握手(所以 HTTPS 不能被 DNS 劫持,只能被 DNS 污染从而无法完成连接)

    ②如果想在 SSL 握手时跳转,由于此时 SSL 握手还未完成,连接还未建立,中间人给客户端发送的 HTTP 的 302 请求也是不会被接受的。

    ③在 SSL 握手完成后,客户端与服务器的通信被加密,无法被篡改为 302 跳转的请求。

    我没有办法确定我是否对协议理解有误,或者还有什么忽略的点,特此来询问一下,这篇文章的思路可行吗?
    第 1 条附言  ·  2016-11-30 12:20:27 +08:00
    如果用 DNS 记录里的 URL 转发可以做到这个跳转吗?
    20 条回复    2016-11-30 21:52:55 +08:00
    otakustay
        1
    otakustay  
       2016-11-30 10:30:02 +08:00
    > 例如,将原本 https://www.alipay.com 的链接,跳转到 http://www.alipay.cn 这个钓鱼网站,仍会有不少用户觉察不到。

    首先就劫持不到 https://www.alipay.com 这个请求,怎么做跳转呢?如果是想通过 QQ 之类发链接给别人钓鱼,这确实是可以成功的毕竟傻子相对多,但这已经不是流量劫持的范畴了
    yankebupt
        2
    yankebupt  
       2016-11-30 10:45:49 +08:00 via Android
    曾经以为这种管用,用过 chrome 甚至某些国内浏览器后发现,维护一个带证书的恶意行为网址库比做个病毒特征库的难度小太多了,以至于微软都有这个功能......钓鱼者签证书怕是要签不过来的节奏
    kindjeff
        3
    kindjeff  
    OP
       2016-11-30 10:57:21 +08:00 via iPhone
    @yankebupt 是呀。但是这样的跳转是可行的吗?还是说像二楼那样的钓鱼。
    yankebupt
        4
    yankebupt  
       2016-11-30 11:21:17 +08:00 via Android
    @kindjeff 如果被劫持的主机防范不言允许 user generated content 的注入,很可能能跳转。但是现在有漏洞的基本为 0
    xmoiduts
        5
    xmoiduts  
       2016-11-30 11:23:04 +08:00 via Android
    学校网络会将未登录用户的访问请求跳转到 http 形式的登录页面, https 网站无法跳转。
    9hills
        6
    9hills  
       2016-11-30 11:25:01 +08:00
    如果目标站点是全 HTTPS 的话,是做不到的。

    针对那种 https 中混有部分 http 的站,可以通过插 http 的方法做跳转。但是这种站本身就不符合规范,也不算是什么高大上的攻击。。
    kfll
        7
    kfll  
       2016-11-30 11:42:20 +08:00
    看看他说的“之前那篇 《 SSLStrip 的未来 —— HTTPS 前端劫持》 ”再仔细看看这个文章基本可以明白他的意思了。

    就是:

    1. 先是劫持了一个 http 的网站,这个网站有个跳转到 https://www.alipay.com 的链接
    2. 按照他之前的文章,就是把所有 https 的链接替换成 http 的,就能进行劫持了
    3. 后来他发现了 HSTS ,这替换还是没啥用
    4. 这篇文章里面说的是把原来“ https 链接改 http 链接”的方法改成“ https 链接改钓鱼网站链接”的方法

    废话太多。

    “将原本 https://www.alipay.com 的链接,跳转到 http://www.alipay.cn 这个钓鱼网站”是说
    将原本跳往 https://www.alipay.com 的链接,改成跳往 http://www.alipay.cn 这个钓鱼网站的链接
    kindjeff
        8
    kindjeff  
    OP
       2016-11-30 11:43:46 +08:00
    @9hills 可以篡改一些内容,但是也没有办法实现跳转吧, HTTPS 页面包含 HTTP 链接的 js 文件的话,浏览器默认不会执行这段 js 的。
    kindjeff
        9
    kindjeff  
    OP
       2016-11-30 12:17:21 +08:00
    @kfll 又仔细看了一遍,应该确实是这个意思吧。明白了。如果这样,只有用户把某个 HTTP 页面当做浏览 HTTPS 页面的入口,才有这个效果,和 SSLStrip 还是相差很多的。
    kindjeff
        10
    kindjeff  
    OP
       2016-11-30 12:21:01 +08:00
    @kfll
    @yankebupt 用 DNS 记录里的 URL 转发可以做到这个跳转吗?
    kfll
        11
    kfll  
       2016-11-30 12:57:04 +08:00   ❤️ 1
    @kindjeff DNS 没有 URL 转发这种记录类型
    nfroot
        12
    nfroot  
       2016-11-30 14:07:23 +08:00
    楼猪你只要记住一点,用户使用了 HTTPS 打开网址,你就别指望劫持了,也别指望窃听了,也别指望篡改了。

    懂?懂就关贴下沉,再讨论是没有任何意义的。
    kindjeff
        13
    kindjeff  
    OP
       2016-11-30 14:09:33 +08:00
    @nfroot 伪造证书就可以。
    nfroot
        14
    nfroot  
       2016-11-30 14:23:22 +08:00
    除非你有本事拿到可信任证书机构伪造的证书,否则意义何在?


    每个浏览器都会提示这个证书是错误的,不可信任的,可能是伪造的。这样的劫持对于不会翻墙的人来说确实可行,人家没办法越过障碍。只能选择继续访问。

    那么你就这么来就好了。你都能伪造证书了。
    kindjeff
        15
    kindjeff  
    OP
       2016-11-30 14:48:55 +08:00
    @nfroot 我只是在反驳你“楼猪你只要记住一点,用户使用了 HTTPS 打开网址,你就别指望劫持了,也别指望窃听了,也别指望篡改了”,没打算讨论它的价值。

    但是这当然是有价值的,用户忽略是一种可能,另外在劫持 HTTP 的环境下,能篡改信息诱导用户安装自己的根证书,就像 12306 或者京东或者支付宝的行为;又或者把用户 HTTP 下载的文件篡改为会在系统中安装自己根证书的恶意软件;又或者我想特定攻击这个用户,早就通过一些途径在他电脑里安装过了根证书。之后还能说 HTTPS 是安全的吗?
    nfroot
        16
    nfroot  
       2016-11-30 15:04:25 +08:00
    @kindjeff

    HSTS 是可以无视用户以 http 协议登录网站(浏览器不会给服务器发包,而是直接跳转到 HTTPS ,没有网络包,还谈什么网络劫持?)

    HSTS 还可以指定自己这个域名的 SSL 证书颁发机构,你其他机构颁发出来的直接没用,浏览器还会强制拒绝你“我要坚持上这个网站”,自签证也是一样强制拒绝



    是的,你在用户机都有 ROOT 权限了,浏览器你都可以反编译掉,更别说什么植入证书了,还用得着绕过什么 HSTS ?你还在跟我讲安全,你还要坚持反驳我。

    就算设置了 HSTS 你都能在用户机删除这个设置,就算指定了证书颁发机构你也能在机器上删除这个设置,就算你心情好了你还能反编译或者干脆模拟个浏览器给用户。


    你这样实现的不是中间人,你是把客户端整个都控制了。再谈什么安全协议有意义吗?
    kindjeff
        17
    kindjeff  
    OP
       2016-11-30 15:11:06 +08:00
    @nfroot 你是对的。但是诱骗用户安装证书这种事情相比控制整个客户端成本要低很多。
    Quaintjade
        18
    Quaintjade  
       2016-11-30 15:13:07 +08:00
    DNS 的 URL 没用的,所谓 DNS 转发无非是 DNS 商的服务器帮你跳转一下。显性转发=301/302 ,隐性转发=网页里嵌套 frame 。
    kindjeff
        19
    kindjeff  
    OP
       2016-11-30 15:15:26 +08:00
    @Quaintjade 嗯,这个我已经查询过了,我也觉得 DNS 没有这么大权力……
    yankebupt
        20
    yankebupt  
       2016-11-30 21:52:55 +08:00 via Android
    赶紧关贴下沉。楼主说的是一种伪造证书的攻击,伪造要么用到了用户侧的漏洞要么用到了用户信任的 CA 的漏洞,但是为了伪装这个伪造的证书,只干了一件事就是立即跳转到一个看起来山寨的多的钓鱼域名上。一般用户发现时至多也就会怀疑自己中了病毒。这种事除了某些部门干得出来一般也不会有人干了,可能不宜讨论
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2778 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:08 · PVG 20:08 · LAX 05:08 · JFK 08:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.