Linux环境下Wireshark抓包分析与OpsnSSH实战指南
SSH协议是建立在不安全的网络之上的进行远程安全登陆的协议。它是一系列相关协议的集合,在此之中涉及到了三个不同的子协议,分别是:1、传输层协议[SSH-TRANS]:提供服务器验证、确保信息的完整性与维护其保密性功能,建立在传统的TCP/IP协议之上。
2、验证协议[SSH-USERAUTH]:向服务器验证客户端用户,存在两种不同的验证途径,分别涉及用户名密码和公钥的验证,建立在传输层协议[SSH-TRANS]之上。
3、连接协议[SSH-CONNECT]:将加密隧道复用为若干逻辑信道。它是在验证协议的基础上构建的。
118047507292d7c7fdcdc0c809a63a51.png继续之前,对这两个概念进行进一步的阐释说明:1、会话密钥 key:key是通过客户端和服务器之间通过诸如D-H算法协商出来的。
2、公钥 pub key:pub key成为服务器主机密钥server_host_key,用于SSH-TRANS传输协议进行服务器验证,简而言之,就是由客户端负责验证服务器的有效性
SSH协议握手过程大致流程如下图所示:
b43386f7304b6db20dfd429af8fd644c.png下面使用Wirdshark进行抓包分析,开启wireshark抓包,进行一次正常的SSH登录,停止抓包,通过IP过滤出相关的报文如下:
3b13083b7bbb4bbbb01a45f4dfb95cd5.png如果将上述报文根据SSH协议运行的流程分析,流程和报文的对应关系如下:TCP三次握手
f35608454affd0f92a84659af8a09594.png版本协议的变更
530eed6b4b9299e1eda2165969fa778f.png密钥协商
1f9b8a449a2db560f7001a2ab7ce05e4.png在协商期间 客户端与客户端之间会互相通报各自所支持的加密协议:
eeddb5202f1d6bad12757761964714d2.png一旦选定了加密方案之后,交换公钥:
7d75c8f80f00bbb26e46d9062d0c3c79.png加密通信如果是采用密码验证的方式来进入系统,SSH就会采用这种自动协商密钥进行非对称加密通信。可以观察到从现在开始的所有报文都将采用加密形式进行传输。
f29bcce6ab0af1bac1c40cf4f3eb7d92.png可以大致看出是以 New Keys 为界,理解密钥协商与加密通信的区别。
内部加密的具体运作机制究竟是怎样的?这个问题还需要在未来的时间里进行更深入的研究和发现。
关注我们