OpsnSSH抓包分析 | SSH协议分析
时间:2022-07-23
本文章向大家介绍OpsnSSH抓包分析 | SSH协议分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
SSH协议是建立在不安全的网络之上的进行远程安全登陆的协议。它是一个协议族,其中有三个子协议,分别是:
- 1、传输层协议
[SSH-TRANS]
:提供服务器验证、完整性和保密性功能,建立在传统的TCP/IP协议之上。 - 2、验证协议
[SSH-USERAUTH]
:向服务器验证客户端用户,有基于用户名密码和公钥两种验证方式,建立在传输层协议[SSH-TRANS]
之上。 - 3、连接协议
[SSH-CONNECT]
:将加密隧道复用为若干逻辑信道。它建立在验证协议之上。
继续之前,补充一下两个概念:
- 1、
会话密钥 key
:key是通过客户端和服务器之间通过诸如D-H算法协商出来的。 - 2、
公钥 pub key
:pub key成为服务器主机密钥server_host_key
,用于SSH-TRANS
传输协议进行服务器验证,说白了就是客户端去验证服务器用的
SSH协议握手过程大致流程如下图所示:
下面使用Wirdshark进行抓包分析,开启wireshark抓包,进行一次正常的SSH登录,停止抓包,通过IP过滤出相关的报文如下:
如果将上述报文根据SSH协议运行的流程分析,流程和报文的对应关系如下:
- TCP三次握手
- 版本协议交换
- 密钥协商
在协商阶段客户端和客户端互相告知自己支持的加密方法:
确定加密方法后,交换公钥:
- 加密通信
如果是通过密码登录,SSH就会采用这种自动协商密钥进行非对称加密通信。可以看到此后的报文全部为加密报文。
大概可以看出是以 New Keys
为界,区分密钥协商和加密通信。
内部加密的原理究竟是什么?这一点还需后期继续探索。
参考文献
- 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
- SSH2.0编程 ssh协议过程实现:https://www.cnblogs.com/wchrt/p/4550208.html
- SSH协议介绍:https://blog.csdn.net/macrossdzh/article/details/5691924(转载版本:SSH协议详解)
- SSH 协议基本原理及 wireshark 抓包分析:https://juejin.im/post/6844903685047189512
--------------------- Author: Frytea
Title: OpsnSSH抓包分析 | SSH协议分析
Link: https://blog.frytea.com/archives/440/
Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
- 简单的客户机服务器投射模拟
- 使用gcc编译gdb调试
- 剑指OFFER之第一个只出现一次的字符(九度OJ1283)
- c++中类长度解析
- 剑指OFFER之丑数(九度OJ1214)
- 剑指OFFER之把数组排成最小的数(九度OJ1504)
- 剑指OFFER之从1到n中出现1的次数(九度OJ1373)
- 剑指OFFER之最大子向量和(连续子数组的最大和)(九度OJ1372)
- 剑指OFFER之最小的K个数(九度OJ1371)
- 剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
- 如何成为一名10x的数据分析师?
- 肥料生产商全套三拼在手:拟融资1.47亿元
- 《外媒Cointelegraph专访Qtum量子链Jordan Earls》—浅谈目前Dapps的主要问题
- ASP .Net Core 2.0 修改默认端口
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- GIT仓库、源码管理服务器gitea的安装、htttps访问
- 微信小程序显示当前系统年月日时分秒
- 【每日一题】40. Combination Sum II
- nginx url自动301加斜杠
- 【剑指offer】47.求1+2+3+...+n
- 【剑指offer】48.不用加减乘除做加法
- Gradle 6.6 发布,引入配置缓存特性,大幅提升构建性能
- 61.Vue 结合webpack使用vue-router
- 拨云见日:揭开ORA-00600:[4193]的神秘面纱
- AUCell | 识别单细胞对“基因集”的响应
- 未来十年,机器学习工程师会消失吗?
- Get了!用Python制作数据预测集成工具 | 附代码
- 定时任务最简单的3种实现方法(超好用)
- Swift:UICollectionReusableView xib创建报错
- echo-高性能,可扩展,极简的Go Web框架