天天看点

OpsnSSH抓包分析 | SSH协议分析

SSH协议是建立在不安全的网络之上的进行远程安全登陆的协议。它是一个协议族,其中有三个子协议,分别是:

1、传输层协议​<code>​[SSH-TRANS]​</code>​:提供服务器验证、完整性和保密性功能,建立在传统的TCP/IP协议之上。

2、验证协议​<code>​[SSH-USERAUTH]​</code>​:向服务器验证客户端用户,有基于用户名密码和公钥两种验证方式,建立在传输层协议​<code>​[SSH-TRANS]​</code>​之上。

3、连接协议​<code>​[SSH-CONNECT]​</code>​:将加密隧道复用为若干逻辑信道。它建立在验证协议之上。

OpsnSSH抓包分析 | SSH协议分析

继续之前,补充一下两个概念:

1、​<code>​会话密钥 key​</code>​:key是通过客户端和服务器之间通过诸如D-H算法协商出来的。

2、​<code>​公钥 pub key​</code>​:pub key成为​<code>​服务器主机密钥server_host_key​</code>​,用于​<code>​SSH-TRANS​</code>​传输协议进行服务器验证,说白了就是客户端去验证服务器用的

SSH协议握手过程大致流程如下图所示:

OpsnSSH抓包分析 | SSH协议分析

下面使用Wirdshark进行抓包分析,开启wireshark抓包,进行一次正常的SSH登录,停止抓包,通过IP过滤出相关的报文如下:

如果将上述报文根据SSH协议运行的流程分析,流程和报文的对应关系如下:

TCP三次握手

OpsnSSH抓包分析 | SSH协议分析

版本协议交换

OpsnSSH抓包分析 | SSH协议分析

密钥协商

OpsnSSH抓包分析 | SSH协议分析

在协商阶段客户端和客户端互相告知自己支持的加密方法:

OpsnSSH抓包分析 | SSH协议分析

确定加密方法后,交换公钥:

OpsnSSH抓包分析 | SSH协议分析

加密通信

如果是通过密码登录,SSH就会采用这种自动协商密钥进行非对称加密通信。可以看到此后的报文全部为加密报文。

OpsnSSH抓包分析 | SSH协议分析

大概可以看出是以 ​<code>​New Keys​</code>​ 为界,区分密钥协商和加密通信。

内部加密的原理究竟是什么?这一点还需后期继续探索。

参考文献

SSH Official: ​​https://www.ssh.com/ssh/​​

OpenSSH:​​https://www.openssh.com/​​

SSH Wikipedia:​​https://zh.wikipedia.org/wiki/Secure_Shell​​

OpenSSH Wikipedia:​​https://zh.wikipedia.org/wiki/OpenSSH​​

--------------------- Author: ​

​Frytea​​Title: OpsnSSH抓包分析 | SSH协议分析

Copyright: This work by ​

TL-Song is licensed under a ​​Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License​​.​

OpsnSSH抓包分析 | SSH协议分析

​​

继续阅读