《网络攻防技术(第2版)》 —3.4.4 重放攻击
3.4.4 重放攻击
在信息系统中,通信的双方在使用口令进行身份验证时,为了防止嗅探攻击,通常不直接发送明文口令进行认证,而是利用口令,按照一定的认证协议和加密算法进行认证,但如果协议本身设计不周,就容易受到重放攻击的威胁。
所谓重放攻击,就是指攻击者记录当前的通信流量,以后在适当的时候重发给通信的某一方,达到欺骗的目的。
重放攻击有多种形式,常见的有简单重放和反向重放两种。简单重放就是攻击者监听通信双方的数据并记录下来,以后再重新发送,达到欺骗的目的。反向重放是指向消息发送者重放数据。当采用传统的对称加密方式时,反向重放攻击是可能实现的。因为消息发送者不能识别发送的消息和收到的消息在内容上的区别。下面以SMB(Server Message Block,服务器消息块)协议为例,说明反向重放是如何工作的。
SMB协议是一个用于不同计算机之间共享文件、打印机、通信对象等各种计算机资源的协议。各种操作系统基本上都对SMB协议进行了实现,在Linux中使用Samba,在Windows系统中使用NetBIOS。早期SMB协议使用明文口令进行身份验证,后来出现了LAN Manager Challenge Response机制LM,企图在不泄漏明文口令本身的情况下证明客户端确实拥有正确的口令,但它的加密强度太低,很容易被破解。于是,微软提出了Windows NT Challenge Response验证机制NTLM,但由于挑战响应方式本身固有的弱点,导致这种认证仍然存在缺陷。
Windows系统的NTLM认证过程如图3-18所示。
图3-18 NTLM认证过程
1)用户在客户机上提供用户名和口令,系统计算口令的NTLM散列值,然后把口令丢掉。
2)客户机以明文方式把用户名发送给服务器。
3)服务器产生一个128位随机数(称之为挑战,Challenge),并发送给客户机。
4)客户机用NTLM散列作为密钥,加密随机数,并把结果送回给服务器,产生应答(Response)。
5)服务器通过用户名从SAM数据库得到用户口令的NTLM散列,用这个值作为密钥加密Challenge,并将加密后的结果和Response做比较,如果相等,则认证成功,否则认证失败。
上述认证机制称之为“挑战/响应”方式(CR方式)。通过分析可以看出,由于服务器提供的挑战数据没有时效要求,攻击者可以将这一挑战数据送回给服务器,让服务器自己计算响应值,即反向重放。具体过程如下:
1)主机A向主机B发出资源访问请求,B向A返回一个挑战值Challenge。
2)由于A没有B的合法账号,因此无法计算响应值Response,此时A暂时将会话挂起,等待机会。
3)在某一时刻,B向A发出了资源访问请求,于是A将前面获得的Challenge作为自己的挑战值发送给B。
4)B计算出Response,返回给A。
5)现在,A拥有了正确的Response,它可以继续进行在第一步中暂时挂起的会话,将响应值Response提交给B,而这个值显然是正确的。
6)B通过了A的身份验证,允许其访问自己的资源。
可以看到,在上述过程中,A始终没有B的合法账号和口令,然而通过反向重放的方法,A能够通过B的身份验证过程。
- 点赞
- 收藏
- 关注作者
评论(0)