日立ソリューションズのセキュリティアナリストが独自の視点でセキュリティ情報をお届けします!

  • facebook
  • twitter
  • bookmark
セキュリティアナリストのつぶやき

日立ソリューションズのセキュリティアナリストが独自の視点でセキュリティ情報をお届けします!

  • ホーム
  • カテゴリ
    • 技術検証
    • Windows
    • インシデントハンドリング
    • 近況報告
    • Write-up
    • CTF
    • トレーニング
    • カンファレンス
    • セキュリティ人材
  • 作者
  • このサイトについて
  • お問合せ
  • ホーム
  • カテゴリ
    • 技術検証
    • Windows
    • インシデントハンドリング
    • 近況報告
    • Write-up
    • CTF
    • トレーニング
    • カンファレンス
    • セキュリティ人材
  • 作者
  • このサイトについて
  • お問合せ
  1. ホーム
  2.  
  3. 技術検証
  4. DHCPv6 spoofingについて

技術検証

2021.01.15

DHCPv6 spoofingについて

DHCPv6 spoofingについて

はじめに

IPv6はさまざまなOSでサポートされており、Windows 10ではインストール直後の状態でIPv6が有効になっています(下図参照)。

Windows 10 インストール直後のネットワークアダプター設定

IPv4の利用しか想定されていない環境でも、ネットワークアダプターの設定で有効になっていればIPv6で通信できるため、IPv6環境を対象とした攻撃が行われる可能性があります。

今回ご紹介するDHCPv6(Dynamic Host Configuration Protocol version 6) spoofingもIPv6環境に対する攻撃の1つで、名前のとおりDHCPv6を利用する手法です。 DHCPv6 spoofingが行われると、コンピューターに偽のDNSサーバーアドレスを設定される可能性があります。

本記事では、IPv4のみの利用を想定している環境でのDHCPv6 spoofingについて、ネットワークの通信内容を追いながら解説します。

※本記事に記載の内容や手法を用いることで生じたいかなる問題につきましても、当社は一切の責任を負いかねます。あらかじめご了承ください。

検証環境

検証環境は下記のとおりです。 以降、標的マシンをWIN10、攻撃者マシンをUbuntuと記載します。

  • マシン構成(VMwareのNAT環境に構築)
    • 標的(ホスト名: WIN10)
      • IPアドレス(v4): 10.212.33.110/16(固定アドレス)
      • IPアドレス(v6 Link Local): fe80::f883:764c:508c:5ca7
      • OS: Windows 10 Pro(バージョン: 20H2、OSビルド: 19042.685)
      • OSを新規インストール後、Windows Active Directoryドメイン(jupiter.solar.local)に参加
      • ログオン中のドメインユーザー: JUPITER\user1
    • 攻撃者(ホスト名: Ubuntu)
      • IPアドレス: 10.212.11.110/16(固定アドレス)
      • IPアドレス(v6 Link Local): fe80::d0cf:4695:c020:2097
      • OS: Ubuntu 20.04.1 LTS

WIN10およびUbuntuのネットワークアダプター情報は下記のとおりです。

Windows 10 インストール直後のネットワークアダプター設定

Ubuntuのネットワークインターフェース設定

DHCPv6 spoofing

概要

DHCPv6は、コンピューターのIPアドレスの自動設定など、IPv6環境でのネットワーク通信における各種設定を行う際に利用されるプロトコルです。 DHCPv6において、クライアントはIPアドレスの他にDNSサーバーやNTPサーバーなどの情報をDHCPv6サーバーから取得できます。 これらの情報を、DHCPv6サーバーになりすました攻撃者がクライアントに送信することをDHCPv6 spoofingと呼びます。

ここではbettercapというツールを使ってDHCPv6 spoofingを検証します。bettercapは、DHCPv6 spoofingやDNS spoofing(DNSサーバーへのなりすまし)など、さまざまなネットワーク機能を持ったフレームワークです。

DHCPv6 spoofing実行

Ubuntuにてbettercapを起動します。

bettercapの起動

dhcp6.spoof.domainsの値として、クライアントが所属しているドメイン「jupiter.solar.local」を設定し、DHCPv6 spoofingを開始します。 これによりUbuntuは、クライアントからのIPv6ネットワーク情報取得要求に対して「jupiter.solar.localドメインのDNSサーバーはUbuntu(のIPv6アドレス)である」という応答をするようになります。

DHCPv6 spoofingの開始

WIN10を起動または再起動すると、DHCPv6のプロセスが開始されます。 実際の通信を見てみると、下記のような「4-message exchange」が行われていることが分かります。 (このプロセスの詳細についてはRFC 8415の18. DHCP Configuration Exchangesを参照してください。)

  1. WIN10からのDHCPv6サーバー応答要請(Solicit)
  2. UbuntuからのDHCPv6サーバー応答(Advertise)
  3. WIN10からのネットワーク設定情報要求(Request)
  4. Ubuntuからのネットワーク設定情報応答(Reply)

4-message exchangeの様子

このとき、UbuntuからのReplyにおいて下記のオプション値がWIN10へ送信されます。 (下記オプション値の詳細についてはRFC 3646(DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6))を参照してください。)

  • DNS recursive name server(DNS server address): fe80::d0cf:4695:c020:2097
  • Domain Search List(Domain Search List FQDN): jupiter.solar.local

Replyメッセージの応答内容

上記の値はそれぞれ、bettercapを起動しているUbuntuのIPv6 Link Localアドレス「fe80::d0cf:4695:c020:2097」と、bettercapのdhcp6.spoof.domainsで設定したドメイン名「jupiter.solar.local」となっています。

ここでWIN10のネットワークアダプター設定を確認してみると、IPv6のDNSサーバーアドレスとしてUbuntuのアドレスが設定されており、DHCPv6 spoofingが成功したことが分かります。

DHCPv6 spoofing実行後のネットワークアダプター設定

動作確認

DHCPv6 spoofingによって設定したDNSサーバーに対して、WIN10が実際にDNS名前解決問い合わせを行っているかどうかを確認します。

下記の結果から、「jupiter.solar.local」ドメイン上ホストのDNS名前解決において、WIN10はDHCPv6 spoofingによって設定したUbuntuのIPv6 Link Localアドレス(fe80::d0cf:4695:c020:2097)に対して問い合わせていることが分かります。

コマンド実行による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

上記において、UbuntuはWIN10に対して応答していませんが、Ubuntuが「jupiter.solar.local」ドメイン上の任意のホストに対する名前解決問い合わせに対して偽の応答を返した場合(DNS spoofing)、それ以降WIN10は不正なホストに対して通信を行う可能性があります。

なお、上記のように明示的にコマンドを実行するのではなく、OSの機能により自動的にDNS名前解決が行われる場合があります。 このような場合にWIN10は、「jupiter.solar.local」ドメイン上ホストのDNS名前解決を行う際はIPv6のDNSサーバーアドレスへ優先的に問い合わせを行い、名前解決できなかった場合はIPv4のDNSサーバーアドレスへ問い合わせを行っています(下図参照)。

OS機能による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

DNS spoofingとの連携

概要

DHCPv6 spoofingによってWIN10に偽のDNSサーバーアドレスを設定することができたので、WIN10からのDNS名前解決問い合わせに対して偽の応答を返すDNS spoofingと連携させてみます。 ここでもbettercapを使います。

DNS spoofing実行(DHCPv6 spoofingと連携)

Ubuntuにてbettercapを起動します。

bettercapの起動

dhcp6.spoof.domainsの値として「jupiter.solar.local」を設定し、dns.spoof.domainsの値として「jupiter.solar.local」を設定します。 (IPv6アドレスの逆引き用ドメイン「ip6.arpa」も便宜上設定しています。)

各種パラメーターの設定

DHCPv6 spoofingおよびDNS spoofingを開始します。 これによりUbuntuは、クライアントからの「jupiter.solar.local」ドメイン上ホストに関するDNS名前解決問い合わせに対して自分のIPアドレス(ここでは10.212.11.110)を返すようになります。

DHCPv6 spoofingとDNS spoofingの開始

動作確認

DHCPv6 spoofingとDNS spoofingが連携できているかどうかを確認します。 下記の結果から、両者が連携できていることが分かります。

  • WIN10(IPv6 Link Localアドレス: fe80::f883:764c:508c:5ca7)は、「jupiter.solar.local」ドメイン上ホストへのDNS名前解決問い合わせをUbuntu(IPv6 Link Localアドレス: fe80::d0cf:4695:c020:2097)へ送信する
  • WIN10からのDNS名前解決問い合わせを受信したUbuntuは、当該問い合わせに対して自身のIPv4アドレス(10.212.11.110)を返す

コマンド実行による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

OS機能による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

条件を変えて検証

これまでの検証結果から、IPv4のみの利用を想定している環境において攻撃者がDHCPv6 spoofingとDNS spoofingを連携して実行することで、IPv6が有効な標的マシン(OS: Windows 10)は下記のような状態になることが分かっています。

  • 標的マシンは、攻撃者マシンのIPv6 Link LocalアドレスをDNSサーバーアドレスとして設定する
  • 標的マシンは、DNS spoofing対象のドメイン上ホストへのDNS名前解決問い合わせを攻撃者マシンに送信する

ここでは、下記それぞれの条件下でDHCPv6 spoofingとDNS spoofingを実行し、上記と同様の結果が得られるかどうか検証してみます。

  • クライアントのIPv6機能を無効化
  • クライアントのIPv4設定をDHCPに設定

クライアントのIPv6機能を無効化

下記のように、WIN10のネットワークアダプター設定でIPv6機能を無効にします。

WIN10のネットワークアダプター設定でIPv6機能を無効化

WIN10を起動または再起動すると、WIN10のDNSサーバーアドレスにUbuntuのIPv6 Link Localアドレスが表示されなくなります。 また、「jupiter.solar.local」ドメイン上ホストへのDNS名前解決問い合わせはIPv4のDNSサーバーに送信されます。 これはIPv6機能を無効化しているので想定どおりの結果です。

WIN10のネットワークアダプター設定

コマンド実行による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

OS機能による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

クライアントのIPv4設定をDHCPに設定

WIN10のネットワークアダプター設定のIPv6機能が有効な状態で、下記のようにIPv4機能のDHCP設定を有効にします。 ここではIPアドレスとDNSサーバーアドレス両方の取得方法を自動(DHCP設定有効)にしています。

WIN10のネットワークアダプター設定でIPv4のDHCP設定を有効化

WIN10を起動または再起動すると、WIN10のネットワークアダプター設定は下記のようになります。

WIN10のネットワークアダプター設定

この状態で「jupiter.solar.local」ドメイン上ホストへのDNS名前解決問い合わせを行うと、IPv6のDNSサーバーに送信されます。

コマンド実行による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

OS機能による「jupiter.solar.local」ドメイン上ホストのDNS名前解決

想定される影響

以上の結果から、IPv4の利用しか想定されていない環境でネットワークアダプターのIPv6機能を有効にしていると、DHCPv6 spoofingとDNS spoofingを組み合わせることで、攻撃者によるDNSサーバーへのなりすましが行われる可能性があると考えられます。 その結果、攻撃を受けたユーザーは偽のWebサイトやサーバーに誘導される可能性があります。

上記の具体例として、プロキシ設定を自動で行うために利用されるWPAD(Web Proxy Auto-Discovery)サーバーやプロキシサーバーに攻撃者がなりすまし、クライアントから送信された認証情報を中継することで、Active Directoryドメインに不正アクセスされるといった手法が存在します。 (参照先: mitm6 - compromising IPv4 networks via IPv6)

対策について

IPv4の利用しか想定されていないネットワークでのDHCPv6 spoofingへの対策としては下記が考えられます。

  • クライアントのネットワークアダプター設定でIPv6機能を無効化する
  • 端末のネットワーク接続時に認証を行うIEEE 802.1Xを導入し、不正な端末のネットワーク接続を制限する
  • 一部のCisco社製品に実装されているDHCPv6 Guardのような、ネットワーク機器が持つセキュリティ機能を導入する

おわりに

本記事では、IPv4のみの利用を想定している環境でDHCPv6 spoofingおよびDNS spoofingを実行した際のクライアントの動作などを、ネットワークの通信内容を交えて解説しました。

使用しているマシンのネットワークアダプターでIPv6機能が有効になっているかどうかについては、あまり気に留めていない方もいらっしゃるかと思いますが、これを機に設定状況を確認されてみては、と思います。

参照先

  • IPv6 Security - An Overview
  • DHCPv6
  • bettercap
  • (RFC 8415)Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
  • (RFC 3646)DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
  • Web Proxy Auto-Discovery Protocol draft-cooper-webi-wpad-00.txt
  • mitm6 - compromising IPv4 networks via IPv6
  • IPv6 First-Hop Security Configuration Guide(Chapter: DHCP--DHCPv6 Guard)
池内 丈人 池内 丈人

記事の著者

池内 丈人

セキュリティ診断業務に10年間従事後、2016年よりシニアセキュリティアナリストとしてペネトレーションテスト業務に従事。 診断業務開始当初は社内イントラサイトの脆弱性に対する過激な指摘により物議を醸したが、 現在はだいぶおとなしくなっている。好きな周波数は13.56MHz。
GXPN、GAWN、GREM、GPEN、GDAT、GCPN、GCFA、GCFE、CRTE、CARTP、CEH

池内丈人さんの記事をもっと読む

関連記事

RELATED ARTICLE

  • SECCON CTF 2022 予選に参加しました。

    近況報告

    2022.12.26

    SECCON CTF 2022 予選に参加しました。

    池内 丈人

    池内 丈人

  • Azure AD導入環境に対するペネトレーションテストの資格「Certified Az Red Team Professional(CARTP)」を取得しました

    近況報告

    2022.03.09

    Azure AD導入環境に対するペネトレーションテストの資格「Certified Az Red Te...

    池内 丈人

    池内 丈人

  • GIAC Cloud Penetration Tester (GCPN)を取得しました

    近況報告

    2021.08.19

    GIAC Cloud Penetration Tester (GCPN)を取得しました

    池内 丈人

    池内 丈人

  • DHCPv6 spoofingについて

    技術検証

    2021.01.15

    DHCPv6 spoofingについて

    池内 丈人

    池内 丈人

  • セキュリティコンテストを開催しました。

    CTF

    2020.12.09

    セキュリティコンテストを開催しました。

    池内 丈人

    池内 丈人

  • C2フレームワークSliverについて

    技術検証

    2020.09.29

    C2フレームワークSliverについて

    池内 丈人

    池内 丈人

株式会社日立ソリューションズ トータルセキュリティ

カテゴリ

  • 技術検証
  • Windows
  • インシデントハンドリング
  • 近況報告
  • Write-up
  • CTF
  • トレーニング
  • カンファレンス
  • セキュリティ人材

よく読まれている記事

  • C2フレームワークSliverについて
    2020.09.29

    C2フレームワークSliverについて

  • Azure AD導入環境に対するペネトレーションテストの資格「Certified Az Red Team Professional(CARTP)」を取得しました
    2022.03.09

    Azure AD導入環境に対するペネトレーションテストの資格「Certified Az Red Te...

  • GIAC Cloud Penetration Tester (GCPN)を取得しました
    2021.08.19

    GIAC Cloud Penetration Tester (GCPN)を取得しました

  • Certified Red Team Expert(CRTE)を取得しました
    2020.06.29

    Certified Red Team Expert(CRTE)を取得しました

  • SECCON CTF 2021参加報告
    2021.12.20

    SECCON CTF 2021参加報告

新着記事

  • SECCON CTF 2022 予選に参加しました。
    2022.12.26

    SECCON CTF 2022 予選に参加しました。

  • Azure AD導入環境に対するペネトレーションテストの資格「Certified Az Red Team Professional(CARTP)」を取得しました
    2022.03.09

    Azure AD導入環境に対するペネトレーションテストの資格「Certified Az Red Te...

  • SECCON CTF 2021(Case-insensitive)
    2022.01.11

    SECCON CTF 2021(Case-insensitive)

  • SECCON CTF 2021参加報告
    2021.12.20

    SECCON CTF 2021参加報告

  • GIAC Cloud Penetration Tester (GCPN)を取得しました
    2021.08.19

    GIAC Cloud Penetration Tester (GCPN)を取得しました

デジタルトレンドメディア
トップにもどる

© Hitachi Solutions, Ltd. 2020. All rights reserved.

  • 個人情報保護に関して

© Hitachi Solutions, Ltd. 2020. All rights reserved.