Built To Last

廃れない計算機科学の知識体系を残す

Double Tagging Attackやってみた② ー アクセスリンクからの攻撃

はじめに ー 前記事の内容と本記事で扱う実験内容について

今回は前記事に引き続いて、レイヤー2での攻撃手法であるDouble Tagging Attackに関する記事です。前記事では、Double Tagging Attackをトランクリンクで繋がれた攻撃ホストから行い、通常ではアクセスすることができないVLANにいる標的ホストへとフレームを送信できることを見ました。

前記事の準備段階でDouble Tagging Attackに関する情報をWebで漁っている際、アクセスポートからDouble Tagging Attackを行えると書いてあるページを見つけたので、実際に攻撃可能か検証していこうと思います。

正直なところ、本攻撃が成功するかどうかは、私の持っているスイッチ(Catalyst 2960)の仕様に依ると思います。というのも、アクセスポートにてVLANタグのついたフレームを受け取った際に、そのフレームをドロップするか、それともそのままトランクリンクに流すかはスイッチの仕様依存だそうだからです。ちなみにCatalyst 2960はドロップするそうです笑 「じゃあ実験する前から失敗することわかってるやん」、となると思いますが、見てみるまで信用できないのです。

そんな感じで実験開始ですが、温かい目で失敗する様子を見守って下さい。

 

実験準備

今回の実験をまとめたネットワーク構成図です。

前記事と同様にスイッチにはCatalyst 2960を用いて、攻撃ホスト、標的ホストはともにRaspberry Pi 3 model Bを使います。

また、フレームのVLANタグ構造を確認したいので、監視ホストであるUbuntu22.04にWiresharkをインストールし、スイッチの各ポートにSPAN設定をし、受け取ったフレームを監視ホストに流せるようにしました。

ここまでの流れは前記事と全く同じです。

異なるのは攻撃ホストにつながれたスイッチのポートが、トランクポートではなくアクセスポートであることです。

スイッチの監視設定と接続状態を載せておきます。

SW1の接続状態と監視設定

SW2の接続状態と監視設定

ダブルタグされたフレーム送信

以前の記事と同様にscapyを用いてダブルタグされたフレームを送信しました。

以下はpythonで書かれた送信スクリプトです。

from scapy.all import *

dst_ip = '169.254.26.204'
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=10)/IP(dst=dst_ip)/ICMP()
sendp(packet, iface="eth0")

Wiresharkで確認

WiresharkでSW1での受信フレーム、SW2での受信フレーム、標的ホストでの受信フレームを確認しましたが、攻撃ホストから送信されたフレームは全くキャプチャできませんでした。

SW1のfa0/13でのDHCP受信

SW1のgi0/1でのDHCP受信

標的ホストでのDHCP受信

まとめ

アクセスポートにダブルタグされたフレームを送っても、Catalyst 2960ではドロップされることがわかりました。また、ドロップされたフレームは、その受信ポートでSPAN設定をしていても拾われないことが追加で判明したのが個人的に有益でした。