考虑在 UNIX 机器启动时捕获的以下 ARP 数据包。
我从数据包中了解到,这台机器的 MAC 地址为 00:22:22:22:22:22 正在请求有关 IP 192.160.100.20 分配给哪个 MAC 地址的信息(数据包 1-4)
然后有两个数据包(id 5,6)我不太明白。我猜机器会请求 IP,然后为其分配 MAC 地址。我说得对吗?您能提供关于数据包 5 和 6 的用途的精确信息吗?
答案1
该系统可能运行伪造的使用默认配置。免费 ARP 回复通常用于安装和/或更新网络中其他系统的 ARP 缓存中的条目。在这种情况下,系统广播 ARP 回复,并在 2 秒后发送具有类似目的的 ARP 请求。第二个之所以这样做,是因为某些操作系统拒绝免费 ARP 回复,但仍会嗅探网络以查找 ARP 请求并使用其中的发送者信息来更新其 ARP 缓存。在这种情况下,预期用途是让备份服务器接管故障服务器的 IP,方法是强制其余网络设备更新其 ARP 缓存并开始与新启动的机器通信。
如果你有兴趣,相应的代码行fake
是277-304:
if [ "${IFCONFIG}" = "TRUE" ]; then
# Setup the target interface, route and send gratuitous arp
/sbin/ifconfig "$TARGET_INTERFACE" $SPOOF_IP netmask $SPOOF_NETMASK \
broadcast $SPOOF_BROADCAST \
|| die "Could not bring up interface"
/sbin/route add -host $SPOOF_IP "$TARGET_INTERFACE" \
|| warn "Could not add local route"
fi
# Get the mac address to use
set_MACADDR $TARGET_INTERFACE
#Send gratutious arp
log "Sending endless Gratuitous Arp."
while [ 1 ]; do
/usr/sbin/send_arp \
${SPOOF_IP} ${MACADDR} \
${SPOOF_IP} ${MACADDR} \
${TARGET_INTERFACE} ${MACADDR} FF:FF:FF:FF:FF:FF reply \
|| die "Could not send gratuitous arp"
sleep $ARP_DELAY
/usr/sbin/send_arp \
${SPOOF_IP} ${MACADDR} \
${SPOOF_IP} 00:00:00:00:00:00 \
${TARGET_INTERFACE} ${MACADDR} FF:FF:FF:FF:FF:FF request \
|| die "Could not send gratuitous arp"
sleep $ARP_DELAY
done
/usr/sbin/send_arp
无限 ARP 欺骗循环中使用的是一个小的 C 程序,它是伪造的并用于发送欺骗性的 ARP。
它也可能是地址解析机制的一部分。当一个网络主机认为它拥有给定的 IP 时,它会向网络广播一个免费的 ARP,以强制其他可能具有相同 IP 的机器发生冲突。例如,当它收到与其自己的 IP 地址匹配的 ARP 消息时,Windows 会显示臭名昭著的气泡通知,表示网络上存在地址冲突。DHCP 客户端使用它来评估其他网络主机是否拥有 DHCP 服务器提供的 IP 地址。