Kerberos明显阻止攻击者在SSH中间情况下(攻击者已经获得用户信任其服务器的公钥并通过该服务器redirect通信的情况)获取用户凭据。 但是,如果攻击者没有获得用户凭证,那么他们将能够在authentication之后监听会话,并可能获取有价值的信息(包括随后input的凭证),从而会发生什么情况呢?
要清楚,这里是这种情况:
这会工作吗? 在authentication步骤中,这种情况显然会受到公钥authentication的阻碍。 但是在Kerberos或SSH协议中有什么可以防止这种情况呢?
从评论中的讨论中稍微扩展了一下:
您的问题是:如果您将SSHstream量从客户端转移到stream氓SSH服务器,那么通过将stream氓SSH服务器的客户端Kerberos票据捕获并转发到真正的Server1,可以用于重放攻击吗?
这依赖于防止MiTM攻击失败的SSH安全机制,即客户端还没有caching来自Server1的真实服务器密钥,或者如果存在, StrictHostKeyChecking
已被禁用或被忽略。
由于SSH + Kerberos GSS-API依靠SSH进行数据encryption,因此假设中间人恶意SSH服务器可以(如果对Server1的身份validation成功)访问所有传输的信息,因为SSH不使用Kerberos基于数据encryption的SSHencryption。
是的,这在理论上是可行的,但前提是你的stream氓SSH服务器Server2成功地将客户端模拟到Server1。
我认为真正的Server1会拒绝(或至less应该)拒绝转发的凭据。 作为Kerberos身份validation的一部分,客户端发送两个消息,即服务票证和身份validation器 。 虽然转发的服务票证是有效的,但随附的authentication者不会。
RFC 4121由SSH使用的Kerberos GSS-API规范将通道绑定信息作为validation器消息的一部分:
“通道绑定标签旨在用于标识GSS-API安全上下文build立令牌所针对的特定通信信道,因此限制了拦截的上下文build立令牌可被攻击者重新使用的范围。
即authentication者消息包括发送者的IP地址和源端口,以及目的IP地址和端口号。 如果这些与实际连接不匹配,那么Kerberos交换应该被Server1拒绝。