SSH流量分析

原理

总来说:ssh连接大致是以下四个流程

1、tcp三次握手
2、客户端和服务端进行版本详细,加密算法、公钥、的相互交换确认
3、服务端发送新的密钥new keys 交换新的密钥,客户端使用该new key发送空字符串表示没问题
4、进行用户密码登入、以及通信交流,数据被封装在Encrypted Packet进行传输

  1. 前三次是TCP三次握手

  1. 客户端发送版本信息给服务器:Protocol: SSH-2.0-OpenSSH_for_Windows_7.7

  1. 服务器发送版本信息给客户端:Protocol: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6

  1. 客户端发送支持加密的加密算法

  1. 这里描述了客户端的秘钥初始化,长度为1386

Key Exchange (method:curve25519-sha256):描述了SSH协议中的密钥交换方法,这里使用的是curve25519-sha256

kex_algorithms: 包含了客户端和服务器之间支持的密钥交换算法的列表,这些算法用于在SSH连接的初始阶段协商密钥交换算法,curve25519-sha256就包含在其中

server_host_key_algorithms :表示服务器主机密钥算法的数量

server_host_key_algorithms string:服务器主机密钥算法的列表

encryption_algorithms_client_to_server string:包含了客户端到服务器的加密算法的列表

encryption_algorithms_server_to_client string: 包含了服务器到客户端的加密算法的列表

mac_algorithms_client_to_server string:包含了客户端到服务器的消息认证码算法的列表。这些算法用于验证数据的完整性和防止数据篡改

mac_algorithms_server_to_client string: 包含了服务器到客户端的消息认证码算法的列表。这些算法用于验证数据的完整性和防止数据篡改

compression_algorithms_server_to_client string: 包含了服务器到客户端的压缩算法的列表。在这个例子中,列表中只有一个值"none",表示不使用任何压缩算法。

  1. 这里描述了服务端的秘钥初始化,长度为1186

字段跟上面一样

  1. 客户端发送临时公钥,长度:114

ECDH client's ephemeral public key length: 客户端的临时公钥长度为32字节。

ECDH client's ephemeral public key (Q_C): 客户端的临时公钥为90513e71fdb978b2cef939b65e96e8b6cb18115179136b2a2f0918baf2120d10,用于与服务器进行密钥交换。

  1. 与上面类似,服务器发送公钥,进行公钥交换

Packet Length: 260: 表示整个数据包的长度为260字节。

Padding Length: 10: 表示填充字段的长度为10字节。

Key Exchange (method:curve25519-sha256): 表示使用curve25519-sha256算法进行密钥交换。

Message Code: Elliptic Curve Diffie-Hellman Key Exchange Reply (31): 表示这是一个椭圆曲线Diffie- Hellman密钥交换的回复消息。

KEX host key (type: ecdsa-sha2-nistp256): 表示使用ecdsa-sha2-nistp256算法进行主机密钥交换。

ECDH server's ephemeral public key length: 32: 表示服务器的临时公钥长度为32字节。

ECDH server's ephemeral public key (Q_S):

a04932d57ee031204f335a4521f303a378c4db6d3813b3490db5ad01532dad5c: 表示服务器的临时公

钥的具体数值。

KEX H signature length: 100: 表示KEX H签名的长度为100字节。

KEX H signature:

0000001365636473612d736861322d6e697374703235360000004900000020093be4329d…: 表示KEX H签名的具体数值。

Padding String: 00000000000000000000: 表示填充字段的具体数值。

服务器会回复一个 Message Code: New Keys (21) 表示确认秘钥

客户端用该秘钥发送空字符串表示确认

  1. 用户输入的账号密码在Encrypted Packet字段中,发送给服务器,后续的数据传输以及回显也在这个字段

Packet Length (encrypted): e3518438:表示加密后的数据包长度为e3518438,这是一个十六进制数。

Encrypted Packet: 63c74dba790639324c201a37c066205b5aac5e7c0c0b5756:表示加密后的数据包内 容,这是一个十六进制数。

MAC: 233043a44882f0d76368c6f5e9323b18:表示消息认证码,用于验证数据包的完整性和真实性。

SSH流量是加密的,所以在内容上是不好区分是否是登入成功还是登入失败

ssh爆破特征分析

这是登入失败的数据包

服务端返回 Server: Encrypted packet (len=44)、Server: Encrypted packet (len=52)

客户端请求 Client: Encrypted packet (len=44)、Client: Encrypted packet (len=60)

再输错一次密码的数据包

Client: Encrypted packet (len=148)

Server: Encrypted packet (len=52)

输入正确的账号密码发现 Encrypted packet 的长度没有52

因此:登入失败的数据包长度特征为52

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ESXi 上进行 SSH 抓包可以帮助您分析网络流量和故障排除。以下是一些步骤来进行 SSH 抓包: 1. 首先,确保已启用 ESXi 主机的 SSH 服务。您可以通过 vSphere 客户端或直接连接到 ESXi 主机的控制台来启用 SSH。 2. 使用 SSH 客户端(例如 PuTTY)连接到 ESXi 主机的 IP 地址或主机名。 3. 在 SSH 客户端中,使用您的 ESXi 主机的管理员凭据登录。 4. 一旦登录成功,您可以使用以下命令来进行抓包: ``` pktcap-uw --switchport=<虚拟交换机名称> --dir=<方向> --stage=<阶段> --outfile=<输出文件路径> ``` - `<虚拟交换机名称>`: 要抓取流量的虚拟交换机名称。 - `<方向>`: 可以是 "in"(入站)或 "out"(出站),用于指定抓取流量的方向。 - `<阶段>`: 可以是 "uplink"(上行)或 "virtualWire"(虚拟线),用于指定抓取流量的阶段。 - `<输出文件路径>`: 用于保存抓包数据的文件路径。 例如,要抓取名为 "vSwitch0" 的虚拟交换机的入站流量,并将结果保存到 "/tmp/capture.pcap" 文件中,可以使用以下命令: ``` pktcap-uw --switchport=vSwitch0 --dir=in --stage=uplink --outfile=/tmp/capture.pcap ``` 5. 抓包过程中,您可以根据需要执行相关操作。抓包数据将保存到指定的文件路径中。 6. 当需要停止抓包时,可以按 Ctrl + C 组合键来中断抓包进程。 请注意,进行抓包可能会对系统性能产生一些影响。因此,在生产环境中进行抓包时,请确保谨慎操作并在必要时限制抓包的时间范围。另外,抓包文件可能会占用较大的磁盘空间,因此在完成分析之后,请及时清理不再需要的抓包文件。 希望这些信息对您有所帮助!如果您有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值