hacktricks/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md
2023-07-07 23:42:27 +00:00

24 KiB
Raw Blame History

GLBP & HSRP 攻撃

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

このページは https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9 からコピーされました。

FHRP ハイジャッキング

FHRP とは?

FHRPFirst Hop Redundancy Protocolは、ネットワークプロトコルのクラスであり、冗長なルーティングシステムを作成するために設計されています。FHRPを使用すると、物理ルータを1つの論理デバイスに組み合わせることができ、信頼性を向上させ、負荷を分散するのに役立ちます。

Cisco Systems のエンジニアは、GLBP と HSRP の2つの FHRP プロトコルを開発しました。次にデモンストレーションします。

GLBP プロトコル

Cisco Systems のエンジニアによって開発されました。 HSRP と同様に、このプロトコルは TCP/IP プロトコルスタックの上に実装されています。そのため、サービス情報の変換にはポート番号 3222 の UDP トランスポート層プロトコルが使用されます。GLBP ルータは同じ論理グループ内で特別な「ハロー」パケットを3秒ごとに交換しますが、10秒以内に同じグループの GLBP ルータからハローパケットを受信しなかった場合、それを「死んだ」と認識します。ただし、タイマーの値は管理者のニーズに応じて設定することができます。

GLBP の骨組みと仕組み

GLBP は、1つの仮想 IP アドレスと複数の仮想 MAC アドレスを使用して、複数のルータ(ゲートウェイ)に負荷を分散します。各ホストは同じ仮想 IP アドレスで構成され、仮想グループ内のすべてのルータがパケットの送信に参加します。

HSRP および VRRP プロトコルとは異なる方法で動作します。真の負荷分散メカニズムを使用するため、以下に示します。

ホスト依存。 NAT が存在するネットワークで使用される負荷分散の一種。ホスト依存は、ホストが以前に使用された AVF デバイスの同じ MAC アドレスを取得することを保証し、ホストへの設定された NAT が壊れないことを保証します。

ラウンドロビン。 このモードでは、AVG デバイスが交互に AVF メンバーに MAC アドレスを配布します。これはデフォルトで使用されるメカニズムです。

重みベースのラウンドロビン。特別な「重み」メトリックに基づく負荷分散

GLBP ドメインの役割と用語

AVGActive Virtual Gateway - リーダーの役割を持つルータであり、同じ GLBP グループ内の他のルータに MAC アドレスを配布する責任もあります。GLBP ドメイン内の「ボス」のような存在です。ARP リクエストが到着すると、AVG は他のルータにトラフィックをどのように分散するかを伝えるために MAC アドレスを配布します。GLBP ドメインには AVG ルータが1つしか存在できませんが、AVF メンバーでもあることができます。

AVFActive Virtual Forwarder - ネットワーク内でトラフィックを処理する GLBP グループのルータです。

GLBP 優先度 - GLBP グループ内のどのルータが AVG になるかを決定する優先度値です。デフォルト値は100です優先度の範囲は1から255までです。手動で設定することもできます。つまり、ネットワークエンジニア自身が「上位」のルータと「スレーブ」のルータを決定します。優先度が高いほど、ルータが AVG の役割を得る可能性が高くなります。通常、AVG の役割はより強力なルータに与えられます。

GLBP ウェイト - GLBP グループのルータの GLBP ウェイトと呼ばれる値。GLBP ウェイトはルータの負荷レベルを定義します。この値は「浮動的」であり、物理チャネルの負荷に応じて変動することができます(オブジェクトトラッキングメカニズムが関与します)、しかし、手動で設定することもできます。

GLBP 仮想 IP アドレス - GLBP ドメイン内の仮想 IP アドレス。正当なホストのデフォルトゲートウェイアドレスとして使用されます。

GLBP は予約されたグループメーリング IP アドレス 224.0.0.102 と UDP トランスポート層プロトコルポート番号 3222 を使用してサービス情報を送信および処理します。特別な GLBP ハローパケットは 3秒ごと に送信されます。GLBP ルータが隣接するルータから 10秒以内 にハローパケットを受信しなかった場合、隣接ルータは「死んだ」と見なされ、GLBP ドメインから削除されます。

GLBP攻撃メカニズム

このネットワーク攻撃の技術は、最大優先度値を持つ悪意のあるGLBPパケットを注入することにより、自分のデバイスをメインルーターとして押し付けることです。**成功した攻撃は、ネットワーク内のトラフィックを傍受したり、リダイレクトを行ったり、AVGルーターの役割を引き継ぐことでDoS攻撃やMITM攻撃を引き起こすことができます。**必要なのは、最高優先度値255を持つGLBPパケットを構築し、ローカルネットワークに向けて送信するだけです。

GLBPインジェクションLoki

この攻撃をデモンストレーションするために、Lokiを使用します。これにより、最大優先度値255と最大ウェイト値255を持つ悪意のあるGLBPインジェクションが実行されます。ただし、攻撃を実行する前に、次の情報を調査する必要があります

  • GLBPドメインで使用される仮想IPアドレス
  • 認証の可用性
  • ルーターの優先度の値

これらの情報は、GLBPトラフィックを分析することで抽出することができます。Wiresharkを使用します。

見てわかるように、GLBPプロセスには2つのルーターのみが関与しています10.10.100.100と10.10.100.200

GLBP広告

最初のルーターからのGLBP広告

GLBPトラフィックを分析した結果、次のことがわかります

  • 優先度設定において設定ミスが検出されました。AVGルーターは優先度200のGLBPルーターと見なされるため、GLBPハイジャックのためのベクターが存在します
  • 認証なし
  • GLBPドメインで使用される仮想IPアドレスは10.10.100.254です

この情報を元に、簡単にGLBPを攻撃することができます

Lokiが2つのルーターからGLBP広告を見つけました

攻撃を行う前に、プロミスキャスモードに切り替えてトラフィックルーティングを許可してください:

~$ sudo ip link set eth0 promisc on
~$ sudo sysctl -w net.ipv4.ip_forward=1

次の手順で、IPアドレス10.10.100.100のルーターを選択し、Get IPオプションを有効にします。また、Gratuitous ARPを生成する必要があります。

悪意のあるGLBPインジェクションの構造

ご覧の通り、AVGルーターは攻撃システムを装っています。優先値は255で、重み値も255です。つまり、最大値です。

インジェクションを実行した後、GLBPドメインの仮想IPアドレスの値でネットワークインターフェースにセカンダリIPアドレスを作成する必要があります。また、24ビットのマスクを設定する必要もあります。

これにより、正規のトラフィックは私たちにループバックされます。なぜなら、GLBPドメインで使用される仮想IPアドレスはホストのデフォルトゲートウェイアドレスだからです:

~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0

SNAT (マスカレーディング) のための小さなルールを作成することで、着信トラフィックだけでなく送信トラフィックも表示することができます。

~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

私たちは、マシン上のデフォルトルートを削除し、新しいルートを書く必要があります。この新しいルートは、以前のAVGルーターアドレスは10.10.100.100)を経由します。 ルーターからAVGの役割を乗っ取ったとしても、それはまだトラフィックをルーティングすることができます。

~$ 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を実行します。 例えば、暗号化されていないFTPトラフィックやNTLMハッシュなどです。

~$ sudo python2 net-creds.py -i eth0

ユーティリティを実行した後、GLBPルーターの背後にあるIPアドレス172.16.100.70のSMB共有を読み取ろうとします。

user@Boundless:~$ smbclient -L \\172.16.100.70 --user mercy

ネットワーク内のトラフィックを傍受する方法は、GLBPドメインを攻撃することです。

HSRPハイジャッキング

**HSRPHot Standby Router/Redundancy Protocol**は、ネットワークゲートウェイの冗長性を提供するためのCisco独自のプロトコルです。一般的なアイデアは、複数の物理ルータを1つの論理ルータに組み合わせ、共通のIPアドレスを持つものとして扱うことです。仮想ルータのアドレスは、マスター役割を持つルータのインターフェースに割り当てられ、後者はトラフィックの転送を担当します。HSRPドメインでは、トラフィックの処理は主にプライマリ役割を持つルータによって行われます。これはGLBPとは異なり、特殊なメトリック優先度と重みを使用して負荷分散が提案されたプロトコルです。

HSRPドメインの役割と用語

HSRPアクティブルータ - ソースネットワークから宛先ネットワークへのトラフィックの転送を提供する仮想ルータとして機能するデバイスです。
HSRPスタンバイルータ - アクティブルータの故障を待ち、アクティブルータの役割を引き継ぎます。プライマリアクティブルータが故障した場合、スタンバイルータはプライマリ役割を引き継ぎ、アクティブルータの役割を引き継ぎます。
HSRPグループ - 論理ルータの動作と耐障害性を確保するデバイスのグループです。
HSRP MACアドレス - HSRPドメイン内の論理ルータの仮想MACアドレスです。
HSRP仮想IPアドレス - HSRPグループ内で使用される特別な仮想IPアドレスです。このIPアドレスはエンドホストのデフォルトゲートウェイとして使用され、論理ルータ自体で使用されます。

HSRPプロトコルのバージョン

HSRPプロトコルにはHSRPv1とHSRPv2の2つのバージョンがあります。これらは以下のパラメータで異なります。

  • 可能な論理グループの数。 HSRPv1は最大255グループを持つことができます。HSRPv2は最大4096グループを持つことができます。
  • マルチキャストIPアドレス。 HSRPv1はサービス情報を送信するためにIPアドレス224.0.0.2を使用し、HSRPv2は224.0.0.102を使用します。
  • 仮想MACアドレス。 HSRPv1は仮想MACアドレスとして00:00:0C:07:AC:XXを使用します。HSRPv2は仮想MACアドレスとして00:00:0C:9F:FX:XXを使用しますXXはHSRPグループ番号です

HSRPは予約されたIPアドレス224.0.0.2または224.0.0.102HSRPバージョンによって異なると、UDPトランスポート層プロトコルを使用し、ポート番号1985でサービス情報をブロードキャストおよび処理します。特別なHSRPハローパケットは3秒ごとに送信されます。HSRPルータが隣接ルータから10秒以内にハローパケットを受信しない場合、隣接ルータは「ダウン」と見なされ、HSRPドメインから削除されます。

HSRP攻撃のメカニズム

**これはGLBPハイジャッキングとまったく同じです。最大優先度値255で悪意のあるHSRPインジェクションを実行する必要があります。**これにより、アクティブルータの役割をハイジャックし、MITM攻撃の道を開くことができます。ただし、攻撃を実行する前に以下の情報を調査する必要があります。

  • HSRPドメインで使用される仮想IPアドレス
  • 認証の有無
  • ルータの優先度の値

HSRPトラフィックを分析することで、この情報を抽出することができます。Wiresharkを使用しましょう。

スクリーンショットでわかるように、HSRPプロセスには10.10.100.100と10.10.100.200の2つのルータが関与しています。

HSRP広告

最初のHSRPルータ

2番目のHSRPルータ

HSRPトラフィックの分析に基づいて、次の情報が得られます。

  • 優先度設定内でミス構成が検出されました。優先度200のHSRPルータがアクティブルータと見なされるため、HSRPハイジャッキングのためのベクトルがあります
  • HSRPドメインで使用される仮想IPアドレスは10.10.100.254です
  • MD5認証が使用されています

ドメイン内で認証が行われているため、私たちは制約されていますが、それを修正します。

HSRP認証のバイパス

HSRPトラフィックのダンプを**.pcap形式で保存し、エクストラクタがダンプから正しくMD5ハッシュを抽出できるようにします。エクストラクタとしてhsrp2john.py**を使用します。

~/cisconightmare/exfiltrate$ python2 hsrp2john.py hsrp_with_authentication.pcap

HSRPトラフィックダンプから抽出したMD5ハッシュ

私はJohn the Ripperを使用してハッシュをクラックします。入力としてハッシュ自体を指定します。そして、--wordlistスイッチを使用して辞書のパスを指定します。

~/cisconightmare/exfiltrate$ john hsrp_hashes --wordlist=wordlistforbrute

HSRPドメインのパスワードがクラックされました

その結果、HSRPドメインに入るためのキーであるendgameを手に入れました。

HSRPインジェクションLoki

同じLokiを使用してHSRPプロトコルを攻撃します。その中には、認証をバイパスするのに役立つキーインジェクション機能があります。以前のHSRPハイジャックのセクションで、HSRPドメインに関するすべての必要な情報を取得しました。

Lokiを起動します。

LokiがHSRP広告を検出しました

攻撃を実施する前に、プロミスキャスモードに切り替えてトラフィックルーティングを許可することを忘れないでください。

~$ sudo ip link set eth0 promisc on
~$ sudo sysctl -w net.ipv4.ip_forward=1

次のアドレスを持つルーターを選択します:10.10.100.100、優先度は200です。Secretパラメータには、HSRPドメインからクラックされたパスワードを入力し、Gratuitous ARPを生成し、Get IPオプションを選択します。

見てわかるように、アクティブなルーターは攻撃システムになりました。優先度の値は255です。

インジェクション後、HSRPドメインの仮想IPアドレスの値でネットワークインターフェースにセカンダリIPアドレスを作成する必要があります。また、24ビットのマスクを指定する必要があります。この方法で、正規のトラフィックはループバックされ、HSRPドメインで使用される仮想IPアドレスはホストのデフォルトゲートウェイアドレスです。

~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0

私たちは、すべてのトラフィックを傍受するために、よく知られたソースNATマスカレーディングを設定しました:

~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

デフォルトルートを削除し、新しいルートを書き込みます。この新しいルートは、以前のアクティブルーターアドレスは10.10.100.100です)を経由して通信を行います。ルーターのアクティブな役割を乗っ取ったにもかかわらず、ルーターは依然としてトラフィックをルーティングすることができます。

~$ 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を実行しましょう:

~$ sudo python2 net-creds.py -i eth0

ユーティリティを実行した後、172.16.100.140のFTPサーバーへの認証試行を再現します。

~$ ftp 172.16.100.140

その結果、FTPサーバーからクレデンシャルを取得します: insomnia:betrayal

これがHSRPドメインを攻撃し、トラフィックを傍受する方法です。基本的に、すべてはGLBPと同様です。

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥