【问题标题】:DNS lookup using Pcap and C使用 Pcap 和 C 进行 DNS 查找
【发布时间】:2011-10-09 19:58:13
【问题描述】:

我正在尝试使用 Pcap 库和 C 代码执行 DNS 攻击。目前我可以: 1. 读取 DNS 查询 2. 根据 DNS 查询,创建 DNS 答案并注入恶意 IP。 3. 将虚假响应注入网络。

在使用 Wireshark 时,我可以看到我的数据包已成功注入网络。然而 IP 地址没有改变,即在 ns 查找时,它说“连接超时;无法访问服务器”。相反,它接受来自 DNS 服务器的实际响应。

知道为什么这不起作用吗?我哪里出错了?

【问题讨论】:

  • 您使用的 DNS 客户端的操作系统是什么?

标签: dns


【解决方案1】:

确保交易 ID 匹配。此外,根据客户端,您可能需要欺骗源 IP 地址。 TTL 可能很重要,但如果它很小则无关紧要,即根据 RFC 1035,可以阻止超过 1 周。

另请注意,第一个有效的 DNS 响应是被接受的响应。因此,您需要确保您的回复速度比其他服务器快。

这也可能对http://www.sans.org/reading_room/whitepapers/dns/dns-spoofing-man-middle_1567 有所帮助。

【讨论】:

    【解决方案2】:

    您生成的数据包可能有问题。您是否更新了所需的标志并设置了正确的部分?并正确复制交易ID? 在创建新答案之前,您可以尝试捕获真实答案并对其进行修改。

    作为旁注,我建议在这个练习中使用 Python,编码要简单得多;-)

    【讨论】:

    • 这是我的模块任务之一,我只能使用 Pcap 和 C。 :) 我签入了wireshark,我的数据包和原始数据包被捕获。但是客户端会根据原始数据包而不是我的假数据包进行更新。此外,根据wireshark,数据包被生成并且事务ID似乎是相同的。标志已设置并且与原始响应相同。 (能够比较我的虚假响应和来自 DNS 服务器的原始响应。所有字段都相同!) TTL 字段重要吗?我已将其设置为随机 58 秒。
    • 另外,当受害者收到两个 DNS 响应(假的和原始的)时,它如何决定使用哪一个?
    【解决方案3】:

    首先,确保你可以让你的假服务器响应直接发送给它的数据包,这样它就不必“赢得比赛”就可以先到达。

    然后您可以使用简单的dig 命令来确保您实际上符合 DNS 协议规范。

    除了这里提到的其他事项外,您还需要确保您的数据包在 IP 层也是一致的。如果您要欺骗响应,则需要确保 IP 校验和字段已正​​确计算 - 如果不正确,您的数据包可能永远无法到达预期的受害机器的更高级别。

    【讨论】:

      猜你喜欢
      • 2012-02-16
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多