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

socks5 代理服务端可以实现中间人攻击吗?

  •  
  •   serge001 · 2019-12-21 22:37:05 +08:00 · 1419 次点击
    这是一个创建于 1828 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt,在客户端使用 https,并且没有安装服务端签发的证书情况下,服务端理论上可以实现中间人攻击吗?

    10 条回复    2019-12-22 10:53:12 +08:00
    windyland
        1
    windyland  
       2019-12-21 22:38:22 +08:00 via Android
    不能,socks 只能拿到加密后的数据
    ZRS
        2
    ZRS  
       2019-12-21 22:47:29 +08:00
    不能
    binux
        3
    binux  
       2019-12-22 01:25:09 +08:00 via Android
    当然可以啊,只是不能不被发现。你让客户忽略证书错误不就好了。
    lihongming
        4
    lihongming  
       2019-12-22 04:00:19 +08:00 via iPhone
    短期不行,长期可以分两步走——

    1. 诱骗用户安装你的根证书

    2. 给自己签发相关域名(可以用通配符)的证书,然后作为中间人监听

    这里面的关键是诱骗用户安装你的根证书。如果在国外这不容易,但在中国很简单,因为很多中国网站在用自签发证书(比如 12306 )。所以你发和它发没什么区别,反正都是不受信任的,嫌麻烦的用户自然会安装。
    serge001
        5
    serge001  
    OP
       2019-12-22 09:46:03 +08:00
    @windyland @ZRS @lihongming 但是为什么 shadowsocks 之类的就不需要客户端安装证书呢?
    linhua
        6
    linhua  
       2019-12-22 09:51:18 +08:00
    不安装证书 是 看不到 HTTPS 里面的明文的,shadowsocks 只是起到 流量转发的作用,看不到明文
    lihongming
        7
    lihongming  
       2019-12-22 10:21:22 +08:00
    @serge001 @linhua 也不能说看不到 HTTPS 里面的明文,而是客户端会提示风险,中间人就被发现了。

    HTTPS 的原理大概如下:

    1. 浏览器有一个受信的根证书列表
    2. CA 们用这些根证书签发域名证书给网站
    3. 网站用域名证书的私钥把 http 传输的内容加密,并连同公钥一起传给浏览器
    4. 浏览器检查公钥是否由受信任的根证书签发
    5. 如果公钥确实由受信任的根证书签发,则继续检查域名与证书是否匹配
    6. 如果都没问题,则用公钥解密并显示内容

    以上是个精简版的步骤,其实还有有效期、吊销列表等检查,暂且不表。

    如果第 4 步有问题,则浏览器会提示“此网站出具的安全证书不是由受信任的证书颁发机构颁发的”。因为很多企业的内部系统会使用自签发证书,所以用户可以选择将根证书加入受信任列表,以后就不会再提示了。

    如果第 5 步有问题,则浏览器会提示“安全证书上的名称无效,或者与站点名称不匹配”。

    所以,如果你想做“中间人”,就必须在第 4 步之前截获数据,然后用正版的证书解密内容,就好像你是发出请求的那个浏览器一样。然后再用盗版证书把数据加密,并连同盗版证书的公钥一起发给浏览器。如果你的盗版证书是受信任的,且域名无误的话,则用户不会看到任何警告。
    aqutor
        8
    aqutor  
       2019-12-22 10:32:45 +08:00
    @lihongming #4 12306 已经没有用自签名证书了。
    serge001
        9
    serge001  
    OP
       2019-12-22 10:39:10 +08:00
    @lihongming 非常感谢回复,所以我的理解是如果客户端不信任第三方自签证书,socks5 服务端拿到的也是加密后的传输层数据,看不到明文的是吗?
    lbp0200
        10
    lbp0200  
       2019-12-22 10:53:12 +08:00 via iPhone
    你以为看不到明文就不知道你在干嘛了? too young
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2774 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:49 · PVG 22:49 · LAX 06:49 · JFK 09:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.