我想知道如何使用 UNIX 命令(不使用 ettercap 或 arpspoof 或类似的东西)进行简单的 ARP 毒药攻击。我不关心将数据包转发到实际路由器,我只想丢弃它们。我听说它通过向想要知道路由器 MAC 地址的机器发送假的 arp 数据包来工作。如何尽可能简单地做到这一点?
答案1
由于 Linux 和 BSD(包括 OS X)存在分歧,因此在特定类 Unix 操作系统上执行此操作的说明也存在分歧。以下是一些针对 OS X 的说明。
- 找到您的路由器的 IP 地址,也许可以通过运行
netstat -rnaf inet
并查看列表顶部的“默认”路由来找到。 - 找到您的路由器的 MAC 地址,也许可以通过运行
arp -an
并查找您的路由器的 IP 地址来实现。 - 告诉你的网络接口使用路由器的 MAC 地址:
sudo ifconfig en0 ether 00:11:22:33:44:55
- 希望它能奏效。如果没有专门用于 ARP 欺骗的工具,您只能听天由命,任由网络堆栈的 ARP 代码摆布。如果您的网络堆栈有现代 ARP 代码,如果已经有其他人使用该 MAC 地址(当然会有其他人:您的路由器),它可能不会尝试争夺该 MAC 地址。
我不知道有任何广泛部署的“内置”Unix命令行工具可让您伪造自定义ARP数据包。这就是人们安装其他命令(如arpspoof
和)的原因ettercap
。
在 OS X 中,您可以通过 Berkeley Packet Filter 内核工具传输任意字节序列。只需open(2)
一个/dev/bpfX
设备,使用ioctl(2)
它将其连接到像 这样的接口en0
,然后向其中写入字节。每个单独的写入(即,在对 的单独调用中交接的每个字节缓冲区write(2)
)都作为数据包传输。但这有点超出您使用 shell 脚本可以轻松完成的范围。我认为大多数 Unix 老手都会使用一些 C 工具来做到这一点。但这基本上是重新实现其他一些著名 ARP 欺骗工具的关键功能,在现代 Unix 环境中,更容易告诉您的包管理器安装arpspoof
或ettercap
其他东西。