UDP 和 TCP 都不包含源地址,但怎么就说 UDP IP 欺骗比 TCP 更容易呢?例如,下面的网页也说了 UDP 漏洞。
“与 TCP 不同,UDP 没有验证数据包源的机制,这使其非常容易受到源数据包欺骗和入侵攻击。” http://www.onlamp.com/pub/a/onlamp/2004/10/14/dnssec.html
请帮助我理解。
答案1
UDP 和 TCP 均不包含源地址
您的问题是基于误解。确实,UDP 或 TCP 报头都不包含源地址,但这是因为它们不必包含:源地址已包含在封装传输协议的报头中,在本例中是IP 报头。
至于为什么UDP欺骗特别值得注意:
- TCP 会话在有效负载传递之前通过三次握手启动。(
SYN
,ACK
,SYN ACK
)持有其他设备正在欺骗的 IP 地址的设备将拒绝意外的ACK
或SYN ACK
数据包,从而阻止会话建立。这仍然浪费了受害者的资源,但带宽效率不高。 - 通过 UDP 传输有效载荷无需握手。任何数据包身份验证都必须在有效载荷本身内实现,而不是内置在协议中。因此,通常不实现此类检查的服务(DNS、NTP)容易受到源地址欺骗的攻击,因为软件会假定任何带有欺骗源地址的传入数据都是有效的,并使用请求的信息进行回复。
- 由于许多基于 UDP 的应用程序可能会被欺骗,用更大的 UDP 回复来回复较小的 UDP 查询,因此恶意方在攻击中利用这些可以更有效地利用带宽。这种现象被称为放大效应。
答案2
假设您想要欺骗 DNS 请求,因为 DNS 服务器将响应 UDP 和 TCP。
对于通过 UDP 发出的 DNS 请求,您需要发送多少个数据包?对于通过 TCP 发出的相同请求,您需要发送多少个数据包?哪种攻击更容易?