IPv6 SLAAC攻撃

画像



私は最近、 「銃口でのIPv6」という記事を読み、SLAAC攻撃(SLAAC攻撃)についてさらに詳しく書くことにしました。 私はこの攻撃を長い間頭で抱えていましたが、ロシア語で詳細な資料を見つけていません。自分で繰り返すのは面白かったです。



攻撃の本質



攻撃の本質は何ですか? まず、非常にシンプルで信頼性が高いため、 標準のOSテクノロジーとツールを使用します。 実際、ネットワーク上の唯一のIPv6ルーターになり、クライアントがアドレスを自動生成(SLAAC)するか、DHCPv6サーバーに問い合わせるIPv6サブネットをクライアントに配布します。 IPv6は、 すべての最新のデスクトップ、モバイル、およびサーバーオペレーティングシステムでデフォルトで有効になっており、IPv4より優先される(場合を除く)、IPv4とは異なり、接続時だけでなくいつでもIPv6アドレスを取得できることを思い出してください。また、大きなWebサイトはIPv6を介して長い間利用されてきました。 この攻撃は、有線ネットワークと無線の両方で機能します。 最新のスイッチを含むすべてのスイッチがルーターアドバタイズフィルタリングをサポートしているわけではありません。また、ネットワーク上にIPv6がないと仮定すると、スイッチでサポートされている場合でも、すべてがこの機能を有効にするわけではないと思います。 ところで、現時点では、実装の欠陥を使用して、ルーターアドバタイズメントフィルターをすべてのスイッチでバイパスできます。



攻撃の2つの実装を思いつくことができました。



実施番号1



この方法を使用すると、AAAAレコードを持つホストへの実際のIPv6トラフィックのみをインターセプトできます。 長さ/ 64のIPv6サブネットとルーターアドバタイズ用のソフトウェアが必要になるため、dnsmasqを使用しました。 6to4 IPv6サブネットは機能しません。 すべての6to4アドレスはIPv4よりも優先度が低いため、トンネルブローカーを使用する必要があります。 DNSを使用せず、DHCPv6を使用せずに、アドレス範囲のみをクライアントに配布します。



dnsmasqデーモンは、インターフェイスから直接サブネットを取得できます。このため、構成ファイルに次の行を指定するだけで十分です。

dhcp-range=::, constructor:wlp3s0, ra-only
      
      



ここで、wlp3s0はネットワークインターフェイスであり、私の場合はワイヤレスです。 グローバルにルーティングされたサブネット2001:470::/64



をインターフェイスに設定し、dnsmasqを実行し、wiresharkを調べます。

画像



ネットワーク上のすべてのコンピューターは、すぐに自分自身にIPv6アドレスを割り当て、デフォルトルートを設定します。

  % ip -6 r 2001:470:abcd::/64 dev enp4s0 proto kernel metric 256 expires 3542sec fe80::/64 dev enp4s0 proto kernel metric 256 default via fe80::223:15ff:fe5b:240c dev enp4s0 proto ra metric 1024 expires 1781sec
      
      





ルーティングを有効にすることを忘れないでください!

 # sysctl net.ipv6.conf.all.forwarding=1
      
      





この実装の欠点は、IPv6トラフィックのみがルーターを通過することです。 繰り返しますが、ほとんどの場合、お使いのコンピューターのIPv4アドレスはNATの背後にあります。つまり、IPv6サブネットを取得するのはそれほど簡単ではない可能性があります。 最も一般的なトンネリングプロトコル-SIT-はNATでは機能しません。 少数のトンネルブローカーでサポートされているAYIYAプロトコルを使用したトンネリングを使用するか、独自の転送スキームを考え出す必要があります。 攻撃者がIPリンクサイトを使用している場合、攻撃を確認できます。 しかし、この攻撃は技術的に非常に単純であり、文字通り1分で適用できます。



実装番号2



必要なホストにIPv6アドレスがない場合、どうすれば目立たないMITM攻撃をしたいのですか? この状況から抜け出す素晴らしい方法があります-NAT64 + DNS64。 NAT64を使用すると、IPv4範囲全体を/ 96 IPv6アドレス範囲にマップでき、DNS64はこれらのアドレスをクライアントに提供できます。

Linuxには、 TAYGA (ユーザースペース)とEcdysis (カーネルスペース)、 Jool (カーネルスペース)、 DNS64が3つのNAT64デーモンがあり、Bind9、Unbound、および放棄されているがまだコンパイルおよび動作している特別なtotdデーモンがサポートされています。

まず、顧客に配布する2つのサブネットを選択する必要があります。 最初のサブネットはアドレスマッピングに必要であり、2番目はルーティングに必要です。 2001:db8:1:ffff::/96



(「for documentation」範囲から)を最初のサブネットとして使用し、2番目としてfde4:8dba:82e1:ffff::/64



IPv6 ULA 、イントラネット範囲の類似物として)を使用することにしましたIPv4で)。



dnsmasqの再構成:

 dhcp-range=fde4:8dba:82e1:ffff::1, fde4:8dba:82e1:ffff::ff, slaac
      
      



TAYGAで設定を指定します。

 prefix 2001:db8:1:ffff::/96
      
      



そしてtotdで:

 forwarder 74.82.42.42 port 53 prefix 2001:db8:1:ffff:: port 53
      
      





そして、すべての悪魔を実行します。 その結果、次のようになります。

 % dig aaaa habrahabr.ru ; <<>> DiG 9.9.2-P2 <<>> aaaa habrahabr.ru ;; ANSWER SECTION: habrahabr.ru. 2363 IN AAAA 2001:db8:1:ffff::d418:2c8d habrahabr.ru. 2363 IN AAAA 2001:db8:1:ffff::d418:2c85
      
      





2001:db8:1:ffff :: / 96の範囲に送信されるすべてのトラフィックは、実際にはIPv4を通過します。



残念ながら、DNSは接続されている場合にのみ設定されます。 ルーターアドバタイズメントはカーネルを受け入れます。DNSを取得するにはDHCPv6が必要ですが、カーネルはこれを行いません。 Windows 7でも同様の動作が見られます(他のバージョンは試していません)。



おわりに



私はこの攻撃が本当に好きです。 これは非常にシンプルで信頼性が高く、ARPスプーフィングおよびIPv4 ACLに対する保護がある場合に機能します。 別の、しかし本質的に非常に似ている攻撃があります。RogueRA。既存のIPv6インフラストラクチャを持っている場合でも、MITMを実行できるようにしますが、それについてはいつか変更します。



All Articles