0

我正在尝试评估一个名为ohrwurm的工具,它声称能够破坏两个 SIP 端点之间的 RTP 流量。通过阅读它的源代码,我不相信它有效,并且在我尝试之前想听听其他人的意见。

它的前提很简单:

  • 假设端点 A 的 IP 地址为 192.168.0.11,端点 B 的 IP 地址为 192.168.0.22。
  • 在与 A 和 B 位于同一子网的第三个框 C 上,在两个 SSH 会话中执行以下命令:
    • arpspoof 192.168.0.11
    • arpspoof 192.168.0.22
  • 执行 ohrwurm。

查看ohrwurm 的源代码,它执行以下操作:

  • 将 /proc/sys/net/ipv4/ip_forward 设置为 1。
  • 在混杂模式下使用 libpcap 来拦截上面两个框之间的所有 IP 数据包。
  • 对于那些是 SIP 的数据包,获取 RTP 端口号。
  • 对于之前抓取的两个 RTP 端口之间的 UDP 数据包,模糊 RTP 内容。

这是我不明白的。我接受 arpspoofing 将导致 A 和 B 之间的所有 IP 流量通过 C 传输。此外,通过将 /proc/sys/net/ipv4/ip_forward 设置为 1,我们让内核正确转发此 IP 流量我们。

但我认为 libpcap 是只读的?如何就地修改我们在混杂模式下嗅探到的数据包?您会在ohrwurm.c 第 401 行注意到我们甚至试图丢弃 RTCP 数据包!这可能吗?

我对 libpcap 一无所知,很想知道更多!请教育我。谢谢。

4

1 回答 1

0

Libpcap 无法修改数据包。它只能用于审计它们。您可以将其视为从接口获取数据包到内核的基础。

Arpspoof 需要其他库(例如“Libnet”)来执行 ARP 欺骗。 http://arpspoof.sourceforge.net/(参见“与 arpspoof 相关的链接”部分)

Libnet 引入了一个 API,可提供对多种协议的访问。它可用于创建任意数据包或即时修改数据包。 http://libnet.sourceforge.net/

可以在以下位置找到一个不错的教程:http: //networksecurity.org.ua/0596007949/networkst-chp-11-sect-4.html

于 2012-02-04T17:45:18.453 回答