IPv6安全邻居发现
攻击方法 |
说明 |
---|---|
NS/NA欺骗 |
攻击者向合法节点(主机或者交换机)发送包含不同源链路层地址选项的NS报文,或者包含不同目标链路层地址选项的NA报文,通过NS/NA欺骗,使合法节点的报文发往其他的链路层地址达到攻击的目的。 |
邻居不可达探测NUD(Neighbor Unreachability Detection)失败 |
攻击者连续不断的发送伪造的NA报文来响应NUD检测中合法节点发送的NS报文,使得合法节点无法探测到邻居节点不可达。这种攻击的后果取决于邻居节点不可达的原因,以及节点在知道邻居节点不可达后所采取的具体行为。 |
重复地址检测DAD攻击 |
攻击者对每个接入网络的主机所发送的重复地址检测都进行响应,宣称拥有重复地址检测的地址,使主机无法获得该地址。 |
虚假的重定向报文 |
攻击者使用当前第一跳交换机的链路本地地址向合法主机发送重定向消息,使合法主机将该重定向消息误认为是来自第一跳交换机的消息,从而接收该重定向消息。 |
重放攻击 |
攻击者通过捕获合法的消息并且不断重放这些消息来达到攻击的目的。所以,即使NDP消息受到签名或证书的保护而使得其内容不能被伪造,但还是会受到重放攻击。 |
虚假的直连前缀攻击 |
攻击者发送伪造的RA报文指定某些地址前缀是直连的,使得主机不再向交换机发送这个地址前缀的报文。相反,该主机将试图通过发送NS报文来执行地址解析,但是实际上NS报文将不会被响应,主机将会受到拒绝服务的攻击。 |
恶意的最后一跳交换机 |
攻击者向试图发现合法的最后一跳交换机的主机发送伪造的多播RA报文,或者对该主机发送的多播RS报文回应伪造的单播RA报文,使主机将攻击者误认为最后一跳交换机。一旦主机选择攻击者作为它的缺省交换机,攻击者就可以拦截通讯双方的通话并插入新的内容。 |
为应对这些威胁,RFC3971 SEND(Secure Neighbor Discovery)对ND协议进行了扩展。SEND定义了CGA(Cryptographically Generated Address)地址、CGA选项和RSA(Rivest Shamir Adleman)选项,用来验证ND消息的发送者对消息源地址的合法拥有权。SEND还定义了时间戳(Timestamp)选项和随机数(Nonce)选项用来防止重放攻击。
- CGA地址:CGA地址由网络前缀和接口标识两部分组成,其中接口标识部分由公钥和附加参数,使用单向hash函数计算生成。
- CGA选项:包含接收方在验证发送方的CGA地址时需要的一些信息(包括发送方的公钥等)。CGA选项用来验证ND报文的发送者是其IPv6源地址的合法拥有者。
- RSA选项:包含发送方公钥的hash值,以及根据发送方私钥和ND报文,使用算法生成的数字签名。RSA选项用来验证ND报文的完整性和发送者的真实性。
说明:
当攻击者声称其为某地址的拥有者时(实际上此地址属于某合法节点),它必须使用合法节点的公钥进行加密,否则接收者可以通过CGA选项的校验发现其攻击行为,即使攻击者获取到了合法节点的公钥,但接收者通过对数字签名的校验,可以发现其攻击行为,因为攻击者也许并不知道消息发送者用来制作数字签名的私钥。 - 时间戳选项:包含一个时间戳的64位无符号整数,表示从1970年1月1号零时(UTC)以来的秒数。用来保护非请求的通告报文和重定向报文不会被重放。接收者应确保每个收到的报文其时间戳都比上一个收到的报文要新。
- 随机数选项:包含了由请求消息的发送者所生成的一个随机数。用来在请求和回应交互中防止重放攻击,比如在NS和NA报文的交互中,NS报文中携带Nonce选项,回应的NA报文中也携带此选项,发送者根据收到的选项判断是否为合法的回应报文。