• home > tools > NetTools > throughGFW >

    ProjetV(1):SSH和ShadowSocks如何防止中间人攻击的?Shadowsocks原理

    Author:[email protected] Date:

    SSH和ShadowSocks如何防止中间人攻击呢?shadowsocks 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端。SS服务器搭建好配置密钥后,客户端使用同一个密钥加密内容传输。无论中间人何时出现,(客户端和服务端之间)接收到

    常规http请求,都是赤身裸体在大街行走,都被人家看光。所以非常日用被劫持。

    SSH与SSR都可以作为端对端的加密方式。SSH和ShadowSocks如何防止中间人攻击呢?

    SSH

    案例下本站的《SSL/TLS协议的运行原理浅析—https通信过程及CA证书诠释

    虽然有著名的DH密钥交换算法,但SSH原理上不能抵御中间人攻击。然而实际上,SSH使用TOFU(参考 1)安全模型等同于做到了防中间人攻击。SSH的首次连接会下载服务端的公钥,用户确认后公钥将被保存并信任。下次访问时客户端将会核对服务端发来的公钥和本地保存的是否相同,不同就发出中间人攻击的警告拒绝连接,除非用户手动清除已保存的公钥。所以,如果首次连接没有中间人,之后的连接就无需担心中间人因为中间人给出的公钥和服务端给出的公钥相同的可能性可以忽略。如果首次连接就有中间人攻击,那么恭喜你中奖了

    TOFU模型类似于使用Firefox浏览器访问自签https证书的网站,首次访问会提示风险,让用户确认亦或选择离开。如果用户确认了并添加网站证书到信任列表,之后的访问都不会再提示,连接也会被标识为安全的。

    ShadowSocks为什么是安全

    SS和SSH的解决方案又不一样,原因在于SS不需要交换通信密钥。SS服务器搭建好配置密钥后,客户端使用同一个密钥加密内容传输无论中间人何时出现,(客户端和服务端之间)接收到的内容都是被加密过的,从这些内容反推出密钥的可能性很小

    从另外一个角度来看,SS安全的原因是它只是一个代理传输通道,而不是用户和服务器的通讯信道。用户的数据需要经过SS客户端、SS服务器两层转发才最终达到真实服务器。只要密钥没有泄露出去,SS能保证的是SS客户端到SS服务器的这段是安全。用户到SS客户端以及SS服务端到真实服务器的数据安全就不属于SS所能管控的范围。

    Shadowsocks原理详解

    shadowsocks 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似

    1、客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题

    2、ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密

    3、ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回

    Socks 5客户端  <---Socks 5--->   sslocal 《 密文》ssserver  <---正常请求--->  目标主机

    Note : 整个流程的关键部分都在内部完成,在网络中传输的都是加密后的密文,很巧妙。          


    SOCKS 5协议原理

    • SOCKS 5 是一种代理协议,位于应用层于传输层的一个中介层,具体说应该属于会话层。

    • 与SOCKS 4对比:

    • 比SOCKS 4具有更高的安全性,支持更多的加密方式;

    • 支持UDP;

    • 地址方面支持域名和IPV6;

    • SOCKS工作在比HTTP代理更低的层次:

    • SOCKS使用握手协议来通知代理软件其客户端试图进行的连接SOCKS,然后尽可能透明地进行操作,而常规代理可能会解释和重写报头;

    • 同时SOCKS还支持反向代理。

    如果度网络层不熟悉,可以参看 《细说OSI七层协议模型及OSI参考模型中的数据封装过程》SOCK5是属于TCP/IP模型中应用层的协议,因此从以上的网络连接过程,就可以理解基于SOCKS 5协议的请求由客户机到代理机的整个过程如下:

    • 将用户数据添加SOCKS 5头部,发到传输层;

    • 传输层将SOCKS 5协议数据分段,添加TCP/UDP协议数据发到网络层;

    • 网络层将TCP/UDP协议数据添加IP协议头,发往链路层;

    • 链路层添加帧头与尾,将数据封装成帧发往代理机。

    源码分析可以看:https://sq.163yun.com/blog/article/185531711118745600

    文中2张图片来自:http://www.nbsite.cn/database/176

    参考文章: 

    shadowsock原理详解 http://www.nbsite.cn/database/176

    https://tlanyan.me/ssh-shadowsocks-prevent-man-in-middle-attack/

    https://sq.163yun.com/blog/article/185531711118745600

    最后来张图片,解解压……

    美女,性感,写真



    转载本站文章《ProjetV(1):SSH和ShadowSocks如何防止中间人攻击的?Shadowsocks原理》,
    请注明出处:https://www.zhoulujun.cn/html/tools/NetTools/throughGFW/7744.html