红队ssh协议通信全流程以及安全研究
serverhostkey缓存阶段需要:
[*] 服务端host密钥对
流程:
[*] 服务端发送public server host key 公钥,和其他信息
[*] 客户端不提示告诫,说明之前访问过服务,已经获取到了服务的公钥和服务器相关信息并缓存到了~/.ssh/known_hosts,客户端只需要将信息与~/.ssh/known_hosts中的公钥等信息进行比对即可
[*] 客户端提示告诫,就将新的host key缓存到~/.ssh/known_hosts,提示告诫情况如下:
[*] 如果是未访问的服务,说明第一次创建通信
[*] 如果是访问过的服务可能是中心人攻击
会话创建阶段
需要:
[*] 客户端暂时密钥对
[*] 服务端暂时密钥对
流程:
[*] 客户端发送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公钥
[*] 主秘密钥验证算法,可由参数 HostKeyAlgorithms 指定,用于客户端验证服务器信息的算法
流程:
[*] 服务端天生exchange hash
[*] 服务端用host 私钥签名对天生exchange hash进行签名,签名算法使用HostKeyAlgorithms 指定的算法
[*] 客户端通过HostKeyAlgorithms 指定的算法,使用host公钥进行认证,host公钥从~/.ssh/known_hosts文件中获取
注:
[*] 此过程客户端校验服务端信息
身份验证阶段
密码登录
需要:
[*] 服务端密钥对
流程:
[*] 客户端发送ssh登录哀求
[*] 服务端发送公钥
[*] 客户端担当公钥并加密密码,发送
[*] 服务端担当到密文,用私钥解密得到密码,进行验证
密钥登岸
需要:
[*] 客户端有登录密钥对
[*] 服务端有登录密钥对的公钥
[*] 暂且称登录密钥对为login key与之前的暂时密钥对和session key(共享安全密钥)做区分
[*] 参数PublickeyAcceptedKeyTypes,客户端发送公钥的范例,此参数控制了 服务器 担当的公钥认证算法范例,决定了服务器公钥认证时使用的算法。
流程:
[*] 客户端发送ssh登录哀求
[*] 服务端天生随机数A并用login key公钥加密成密文A(加密算法受PublickeyAcceptedKeyTypes影响)
[*] 客户端私钥解密得到随机数A,天生摘要digest = sessionkey + 随机数Ahash(使用md5加密)
[*] 服务端以相同的方式天生摘要digest = sessionkey + 随机数Ahash(使用md5加密)与客户端发过来的摘要做对比
ssh安全性理论研究
中心人攻击以及ssh防御步伐
条件:
[*] hostkey缓存阶段,服务端在没有发送public host key到客户端之前均可攻击,一旦客户端吸收到了public host key,攻击条件丧失,缘故原由如下:
[*] 在接下来的完备性会话创建阶段,中心人没有private host key,因此无法对天生的exchange hash进行签名
ssh防御步伐:
[*] hostkey缓存阶段的提示
暴力破解密钥登岸
条件:
[*] 获取某一用户的login公钥
爆破:
[*] 网上下载密钥对,进行login公钥对比,查看哪个密钥对匹配
[*] 读取密钥对的私钥,进行登录
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]