gpt4 book ai didi

c - DNS 客户端不接受 DNS 响应

转载 作者:行者123 更新时间:2023-12-02 03:55:17 24 4
gpt4 key购买 nike

我正在为我的家庭作业创建一个虚假的 DNS 响应。

我能够在 DNS 服务器实际响应之前成功发送欺骗响应(通过数据包捕获验证)

DNS 响应的数据包捕获:

=======================================================================
MY FAKE DNS RESPONSE
--------------------
Wed Apr 20 22:04:25 2016 Ether-type: IP (0x0800)
Source MAC Address: 00:0c:29:b6:95:c8 Destination MAC Address: 00:0c:29:0f:e9:96
Source IP Address: 192.168.88.132 Destination IP Address: 192.168.88.131
UDP packet Source Port: 53 Destn Port: 37837 UDP Length = 46
============
UDP PAYLOAD:
============
2d 97 81 80 00 01 00 01 00 00 00 00 02 69 6e -............in
05 79 61 68 6f 6f 03 63 6f 6d 00 00 01 00 01 .yahoo.com.....
c0 0c 00 01 00 01 00 00 02 58 00 04 9b 21 11 .........X...!.
44 D........X...!.


=======================================================================
ACTUAL DNS RESPONSE
-------------------
Wed Apr 20 22:04:25 2016 Ether-type: IP (0x0800)
Source MAC Address: 00:50:56:e9:cd:36 Destination MAC Address: 00:0c:29:0f:e9:96
Source IP Address: 192.168.88.2 Destination IP Address: 192.168.88.131
UDP packet Source Port: 53 Destn Port: 37837 UDP Length = 89
============
UDP PAYLOAD:
============
2d 97 81 80 00 01 00 03 00 00 00 00 02 69 6e -............in
05 79 61 68 6f 6f 03 63 6f 6d 00 00 01 00 01 .yahoo.com.....
c0 0c 00 05 00 01 00 00 00 05 00 0f 06 66 64 .............fd
2d 66 70 32 03 77 67 31 01 62 c0 0f c0 2a 00 -fp2.wg1.b...*.
01 00 01 00 00 00 05 00 04 62 8b b7 18 c0 2a .........b....*
00 01 00 01 00 00 00 05 00 04 62 8b b4 95 ..........b...*


=======================================================================

如您所见,我的虚假响应在实际 DNS 响应之前到达。但由于某种原因,DNS 客户端总是接受较晚的(真实的)响应。

问题:

  1. 为什么 DNS 客户端不接受我的 DNS 响应,即使它在实际到达之前到达?
  2. 是否是因为 DNS 响应数据包格式错误?
  3. 是否是因为虚假响应的 IP 地址与实际 IP 地址不同?
  4. 是否有任何 DNS 客户端调试/日志这可以帮助我找出为什么 DNS 客户端不接受我的响应?
  5. 还有其他原因吗?

调试输出来自 Ubuntu 14.04

我真的被这个问题困扰了三天,但我无法找出原因。如有任何帮助,我们将不胜感激:)

最佳答案

为了让您的虚假 DNS 响应正常工作,首先:UDP 目标端口、DNS 事务 ID 和所请求的域名必须与客户端请求匹配。我假设您已经正确执行了此操作。

但是,正如Stian提到的,DNS响应源IP地址必须与合法的DNS服务器IP地址匹配;如果没有,它就会被客户端丢弃。 (据我所知,源 MAC 地址不需要匹配。)

为了自己设置源IP地址,您需要创建一个RAW IP套接字而不是UDP套接字,并使用RAW IP数据包伪造完整的UDP数据包(假DNS响应)。您可以找到here用于创建此类 RAW IP 套接字并从 RAW 伪造 UDP 数据包(包括 UDP 校验和)的代码片段。

关于c - DNS 客户端不接受 DNS 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36802723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com