红队ssh协议通信全流程以及安全研究

serverhostkey缓存阶段

需要:

  • 服务端host密钥对

流程:

  • 服务端发送public server host key 公钥

  • 客户端提示警告(如果客户端没有缓存过接受的public server host key)是否继续,情况如下:

    • 如果是未访问的服务,说明第一次建立通信

    • 如果是访问过的服务可能是中间人攻击

会话建立阶段

需要:

  • 临时密钥生成算法,可由参数 HostKeyAlgorithms 指定,用于两端生成临时密钥对

  • 共享安全密钥生成算法,可由参数PublickeyAcceptedKeyTypes指定,用于两端生成相同的session key

  • 客户端临时密钥对

  • 服务端临时密钥对

流程:

  • 客户端发送ssh会话请求(协商加密算法等)

  • 服务端发送public server key给客户端(响应加密算法)

  • 客户端向服务端发送public client key给服务端,此时密钥情况:

    • 客户端:public client key、private client key、public server key

    • 服务端:public server key、private server key、public client key

    • 客户端和服务端具备了生成同一个key(也就是对称加密密钥)的能力

  • 生成对称加密密钥session key(也叫共享安全密钥)进行加密通信

完整性会话建立阶段

需要:

  • 服务端host密钥对

  • 客户端缓存public server host key公钥

流程:

  • 服务端生成exchange hash,并用host 私钥加密

  • 客户端host公钥解密,自己再以相同的方式生成exchange hash,与发过来的对比

注:

  • 此过程客户端校验服务端信息

  • 客户端校验服务端的信息就是,服务端生成exchange hash所利用到的信息

身份验证阶段

密码登录

需要:

  • 服务端密钥对

流程:

  • 客户端发送ssh登录请求

  • 服务端发送公钥

  • 客户端接受公钥并加密密码,发送

  • 服务端接受到密文,用私钥解密获得密码,进行验证

密钥登陆

需要:

  • 客户端有登录密钥对

  • 服务端有登录密钥对的公钥

  • 暂且称登录密钥对为login key与之前的临时密钥对和session key(共享安全密钥)做区分

流程:

  • 客户端发送ssh登录请求

  • 服务端生成随机数A并用login key公钥加密成密文A

  • 客户端公钥解密得到随机数A,生成摘要digest = sessionkey + 随机数A(使用md5加密)

  • 服务端以相同的方式生成摘要与客户端发过来的摘要做对比

ssh安全性理论研究

中间人攻击以及ssh防御措施

条件:

  • hostkey缓存阶段,服务端在没有发送public host key到客户端之前均可攻击,一旦客户端接收到了public host key,攻击条件丧失,原因如下:

    • 在接下来的完整性会话建立阶段,中间人没有private host key,因此无法对生成的exchange hash进行加密

ssh防御措施:

  • hostkey缓存阶段的提示

暴力破解密钥登陆

条件:

  • 获取某一用户的login公钥

爆破:

  • 网上下载密钥对,进行login公钥对比,查看哪个密钥对匹配

  • 读取密钥对的私钥,进行登录

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值