hacktricks/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md

7.4 KiB
Raw Permalink Blame History

{% hint style="success" %} AWSハッキングの学習と練習:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングの学習と練習: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksのサポート
{% endhint %}

IPv6基本理論

ネットワーク

IPv6アドレスはネットワークの構成とデバイス間の相互作用を向上させるために構造化されています。IPv6アドレスは以下に分割されます:

  1. ネットワークプレフィックス: ネットワークセグメントを決定する最初の48ビット。
  2. サブネットID: ネットワーク内の特定のサブネットを定義するために使用される続く16ビット。
  3. インターフェース識別子: サブネット内のデバイスを一意に識別するために使用される最後の64ビット。

IPv6はIPv4に見られるARPプロトコルを省略していますが、ICMPv6を導入しています。ICMPv6には次の2つの主要なメッセージがあります:

  • Neighbor Solicitation (NS): アドレス解決のためのマルチキャストメッセージ。
  • Neighbor Advertisement (NA): NSへのユニキャスト応答または自発的なアナウンス。

IPv6には特別なアドレスタイプも組み込まれています:

  • ループバックアドレス (::1): IPv4の127.0.0.1に相当し、ホスト内での内部通信に使用されます。
  • リンクローカルアドレス (FE80::/10): インターネットルーティングではなく、ローカルネットワーク活動用です。同じローカルネットワーク上のデバイスは、この範囲を使用して互いを発見できます。

ネットワークコマンドでのIPv6の実用的な使用

IPv6ネットワークとやり取りするために、さまざまなコマンドを使用できます:

  • リンクローカルアドレスのPing: ping6を使用してローカルデバイスの存在を確認します。
  • Neighbor Discovery: ip neighを使用してリンク層で発見されたデバイスを表示します。
  • alive6: 同じネットワーク上のデバイスを発見するための代替ツール。

以下はいくつかのコマンドの例です:

ping6 I eth0 -c 5 ff02::1 > /dev/null 2>&1
ip neigh | grep ^fe80

# Alternatively, use alive6 for neighbor discovery
alive6 eth0

MACアドレスからリンクローカルIPv6アドレスを導出する

与えられたMACアドレス 12:34:56:78:9a:bc から、次のようにリンクローカルIPv6アドレスを構築できます

  1. MACをIPv6形式に変換1234:5678:9abc
  2. 先頭に fe80:: を追加し、中央に fffe を挿入:fe80::1234:56ff:fe78:9abc
  3. 左から7番目のビットを反転させ、12341034 に変更:fe80::1034:56ff:fe78:9abc

IPv6アドレスの種類

  • Unique Local Address (ULA): ローカル通信用で、公共インターネットルーティングには適していません。プレフィックス:FEC00::/7
  • マルチキャストアドレス: 一対多の通信用。マルチキャストグループ内のすべてのインターフェースに配信されます。プレフィックス:FF00::/8
  • エニーキャストアドレス: 一番近いインターフェースに送信される、一対最寄りの通信用。2000::/3 グローバルユニキャスト範囲の一部。

アドレスプレフィックス

  • fe80::/10: リンクローカルアドレス169.254.x.xに類似
  • fc00::/7: ユニークローカルユニキャスト10.x.x.x、172.16.x.x、192.168.x.xなどのプライベートIPv4範囲に類似
  • 2000::/3: グローバルユニキャスト
  • ff02::1: マルチキャスト全ノード
  • ff02::2: マルチキャストルーターノード

ネットワーク内のIPv6アドレスの発見

方法1: リンクローカルアドレスの使用

  1. ネットワーク内のデバイスのMACアドレスを取得します。
  2. MACアドレスからリンクローカルIPv6アドレスを導出します。

方法2: マルチキャストの使用

  1. ローカルネットワーク上のIPv6アドレスを発見するために、マルチキャストアドレス ff02::1 にpingを送信します。
service ufw stop # Stop the firewall
ping6 -I <IFACE> ff02::1 # Send a ping to multicast address
ip -6 neigh # Display the neighbor table

IPv6 Man-in-the-Middle (MitM) Attacks

IPv6ネットワークでMitM攻撃を実行するためのいくつかの技術が存在します:

  • ICMPv6ネイバーやルーター広告のスプーフィング。
  • ルーティングを操作するためにICMPv6リダイレクトや「パケットが大きすぎる」メッセージを使用する。
  • モバイルIPv6を攻撃する通常、IPSecを無効にする必要があります
  • ローグDHCPv6サーバーを設定する。

IPv6アドレスの特定

サブドメインの探索

IPv6アドレスに関連付けられている可能性のあるサブドメインを見つける方法は、検索エンジンを活用することです。たとえば、ipv6.*のようなクエリパターンを使用することが効果的です。具体的には、Googleで次の検索コマンドを使用できます:

site:ipv6./

DNSクエリの利用

IPv6アドレスを特定するために、特定のDNSレコードタイプをクエリできます:

  • AXFR: 完全なゾーン転送をリクエストし、幅広いDNSレコードを明らかにする可能性があります。
  • AAAA: 直接IPv6アドレスを検索します。
  • ANY: 利用可能なすべてのDNSレコードを返す広範なクエリです。

Ping6を使用したプロービング

組織に関連付けられたIPv6アドレスを特定した後、ping6ユーティリティを使用してプロービングできます。このツールは、特定されたIPv6アドレスの応答性を評価するのに役立ち、隣接するIPv6デバイスを発見するのにも役立つかもしれません。

参考文献