Yersiniaは、ネットワークのレイヤー2プロトコルの脆弱性をテストするために設計された強力なフレームワークです。ペスト菌(Yersinia pestis)にちなんで名付けられたこのツールは、ネットワークセキュリティにおけるその潜在的な影響力を示唆しています。主にネットワーク管理者やセキュリティ専門家が、自組織のネットワークの堅牢性を評価し、潜在的な攻撃経路を特定するために使用されます。
このブログ記事では、Yersiniaの基本的な使い方、主要な機能、そして最も重要な点として、倫理的な利用と法的遵守について詳しく解説します。Yersiniaは強力なツールであるため、その使用には大きな責任が伴います。😊
⚠️ 重要:倫理的な使用に関する警告
Yersiniaは、ネットワークプロトコルの脆弱性を悪用する可能性のある攻撃を実行できます。このツールは、必ず許可されたネットワーク環境でのみ、教育、研究、または正当なセキュリティ評価の目的で使用してください。許可なく他者のネットワークに対してYersiniaを使用することは、違法であり、重大な法的結果を招く可能性があります。このガイドは教育目的で提供されており、不正な活動を推奨するものではありません。
Yersiniaとは何か?
Yersiniaは、ネットワークのレイヤー2(データリンク層)に焦点を当てた攻撃およびテストツールです。開発者は、既存のツールではARPポイズニングやCAMフラッディングといった一般的なレイヤー2攻撃しかできず、より多様なプロトコルに対する攻撃手法が理論上は存在するものの、それを試すツールがないことに不満を感じていました。そこで、さまざまなレイヤー2プロトコルの脆弱性を調査し、悪用するための統合フレームワークとしてYersiniaを開発しました。
Yersiniaは、主に以下のネットワークプロトコルに対する攻撃やテストをサポートしています。
- Spanning Tree Protocol (STP)
- Cisco Discovery Protocol (CDP)
- Dynamic Trunking Protocol (DTP)
- Dynamic Host Configuration Protocol (DHCP)
- Hot Standby Router Protocol (HSRP)
- VLAN Trunking Protocol (VTP)
- IEEE 802.1Q (VLANタギング)
- IEEE 802.1X (ポートベース認証)
- Inter-Switch Link Protocol (ISL) – Cisco独自VLANトランキングプロトコル
- Multiprotocol Label Switching (MPLS)
このツールは、ネットワークの設定ミスやプロトコル固有の弱点を利用して、ネットワークのトポロジーを操作したり、サービス拒否(DoS)攻撃を引き起こしたり、不正なアクセスを獲得したりする可能性があります。
YersiniaはC言語で書かれており、libpcap(パケットキャプチャ用)、libnet(パケット構築用)、ncurses(テキストベースのGUI用)などのライブラリを利用しています。Linux、*BSD、SolarisなどのOSで動作し、マルチスレッドに対応しているため、複数の攻撃を同時に実行することも可能です。
インストール方法
Yersiniaは、多くのペネトレーションテスト用Linuxディストリビューション、特にKali Linuxにデフォルトで含まれていることが多いです。もし含まれていない場合や、他のディストリビューションで使用したい場合は、以下の手順でインストールできます。
Kali Linux / Debian / Ubuntu系の場合:
ターミナルを開き、以下のコマンドを実行します。
# パッケージリストを更新
sudo apt update
# Yersiniaをインストール
sudo apt install yersinia
ソースからコンパイルする場合 (最新版や特定機能が必要な場合):
最新のソースコードはGitHubリポジトリから入手できます。
# 必要な依存関係をインストール (Debian/Ubuntu系)
sudo apt install build-essential autoconf automake libpcap-dev libnet1-dev libncurses5-dev libgtk2.0-dev
# ソースコードをクローン
git clone https://github.com/tomac/yersinia.git
cd yersinia
# ビルドとインストール
./autogen.sh
./configure
make
sudo make install
注意: GTK GUI(グラフィカルインターフェース)のサポートに関して、最近のKali Linuxバージョンでは問題が発生することが報告されています(2024年頃)。もしyersinia -G
でGUIが起動しない場合は、依存関係を確認し、ソースから再コンパイルする必要があるかもしれません。特にlibgtk2.0-dev
ではなくlibgtk-3-dev
が必要になる場合もあります。
インストールが完了したら、以下のコマンドでヘルプメニューが表示されるか確認してください。
yersinia -h
Yersiniaのインターフェース
Yersiniaは主に3つのインターフェースモードを提供しています。
- コマンドラインインターフェース (CLI): スクリプトでの自動化や、特定の攻撃を直接実行する場合に適しています。
yersinia <protocol> [options]
の形式で使用します。 - ncursesインターフェース (テキストベースGUI): ターミナル内で動作するインタラクティブなインターフェースです。
yersinia -I
コマンドで起動します。プロトコルを選択し、攻撃を開始したり、キャプチャしたパケットを表示したりできます。 - GTKインターフェース (グラフィカルGUI): より視覚的で直感的な操作が可能です。
yersinia -G
コマンドで起動します。(環境によっては正常に動作しない場合があります。) - デーモンモード:
yersinia -D
コマンドで起動し、バックグラウンドで動作させ、ネットワーククライアントからリモートで制御することができます。デフォルトではTCPポート12000で待機します。
初心者にとっては、ncurses (-I
) または GTK (-G
) インターフェースが使いやすいでしょう。CLIモードは、特定のオプションを理解している場合に強力です。
yersinia -I
)
+-[Yersinia v0.8.2]-----------------------------------------------------------+
| |
| Select protocol: |
| |
| (c)dp Cisco Discovery Protocol |
| (d)hcp Dynamic Host Configuration Protocol |
| (.)dot1q IEEE 802.1Q |
| (x)dot1x IEEE 802.1X |
| (t)dtp Dynamic Trunking Protocol |
| (h)srp Hot Standby Router Protocol |
| (i)sl Inter-Switch Link Protocol |
| (m)pls MultiProtocol Label Switching |
| (s)tp Spanning Tree Protocol |
| (v)tp VLAN Trunking Protocol |
| |
| |
| (Q)uit |
| |
+-[Press the key]-------------------------------------------------------------+
主要なプロトコルと攻撃手法
Yersiniaがターゲットとする主要なプロトコルと、それぞれに対して実行可能な代表的な攻撃手法を見ていきましょう。
Spanning Tree Protocol (STP)
STPは、ネットワーク内のループを防ぐためのプロトコルです。しかし、設定が不十分だと攻撃の対象となります。
- ルートブリッジ乗っ取り (Claiming Root Role): 攻撃者は自身をルートブリッジであると偽装します。これにより、ネットワークトラフィックが攻撃者のマシンを経由するようになり、中間者攻撃(Man-in-the-Middle, MitM)が可能になる場合があります。Yersiniaは、現在のルートブリッジよりも優先度の高い(数値の小さい)ブリッジIDを持つBPDU(Bridge Protocol Data Unit)を送信することでこれを実現します。
- DoS攻撃 (DoS attack sending conf/tcn BPDUs): 大量の偽のコンフィグレーションBPDUやトポロジー変更通知(TCN)BPDUを送信することで、スイッチのCPUリソースを枯渇させ、ネットワークを不安定にしたり、通信を妨害したりします。TCN DoS攻撃では、トポロジー変更が頻繁に発生しているように見せかけ、スイッチ間の帯域幅を浪費させることもあります。
CLIコマンド例 (ルートブリッジ乗っ取り):
sudo yersinia stp -attack 5 -interface eth0
(-attack 5
は “NONDOS attack Claiming Root Role” に対応することが多いですが、バージョンによって番号は変わる可能性があります。yersinia stp -h
で確認してください。)
対策: BPDUガード(BPDU Guard)、ルートガード(Root Guard)などのSTPセキュリティ機能を有効にする。
Cisco Discovery Protocol (CDP)
CDPは、Ciscoデバイス同士が互いの情報を(デバイスの種類、IOSバージョン、IPアドレスなど)を交換するためのプロトコルです。
- CDPフラッディング (Flooding CDP table): 大量の偽のCDPネイバー情報を送信し、スイッチやルーターのCDPテーブルを溢れさせ、メモリを枯渇させるDoS攻撃です。これにより、デバイスが不安定になったり、クラッシュしたりする可能性があります。
- 偽デバイス情報の送信: ネットワーク管理者を混乱させるために、存在しないデバイスの情報を送信します。
CLIコマンド例 (CDPフラッディング):
sudo yersinia cdp -attack 1 -interface eth0
(-attack 1
は “Flooding CDP table” に対応することが多いです。)
対策: 不要なインターフェースでCDPを無効にする(no cdp enable
)。可能であれば、よりセキュアなLLDP(Link Layer Discovery Protocol)を使用する。
Dynamic Trunking Protocol (DTP)
DTPは、Ciscoスイッチ間でトランクリンクを自動的にネゴシエートするためのプロトコルです。デフォルト設定(dynamic autoまたはdynamic desirable)のままになっているポートは攻撃に対して脆弱です。
- トランクモード有効化 (Enabling trunking): 攻撃者はDTPパケットを送信して、スイッチポートを強制的にトランクモードにします。これにより、攻撃者は複数のVLANにアクセスできるようになり、VLANホッピング攻撃の足がかりとなります。
GUI (ncurses) での操作例:
yersinia -I
で起動。t
を押してDTPを選択。l
を押して攻撃リストを表示。1
(enabling trunking) を選択。- 実行するインターフェースを選択。
CLIコマンド例:
sudo yersinia dtp -attack 1 -interface eth0
(-attack 1
は “enabling trunking” に対応することが多いです。)
対策: アクセスポートとして使用するポートではトランクネゴシエーションを無効にする(switchport mode access
および switchport nonegotiate
)。トランクポートとして使用するポートでは明示的にトランクモードを設定する(switchport mode trunk
および switchport nonegotiate
)。
Dynamic Host Configuration Protocol (DHCP)
DHCPは、IPアドレスなどのネットワーク設定情報をクライアントに自動的に割り当てるプロトコルです。
- DHCP枯渇攻撃 (DHCP Starvation): 攻撃者は大量の偽のDHCP DISCOVERメッセージを送信し、DHCPサーバーのIPアドレスプールを使い果たします。これにより、正規のクライアントがIPアドレスを取得できなくなり、ネットワークに接続できなくなります (DoS)。
- 不正DHCPサーバー設置 (Setting up rogue DHCP Server): 攻撃者は偽のDHCPサーバーをネットワーク上に設置し、クライアントに不正なIPアドレス、ゲートウェイ、DNSサーバー情報を配布します。これにより、クライアントの通信を傍受したり(MitM)、悪意のあるサイトへ誘導したりすることが可能になります。
CLIコマンド例 (DHCP枯渇攻撃):
sudo yersinia dhcp -attack 1 -interface eth0
(-attack 1
は “sending DISCOVER packet” に対応し、これを大量に行うことで枯渇攻撃となります。)
対策: DHCPスヌーピング(DHCP Snooping)を有効にし、信頼できるポート(DHCPサーバーが接続されているポート)と信頼できないポート(クライアントが接続されているポート)を設定する。ポートセキュリティを使用して、1つのポートから学習できるMACアドレス数を制限する。
Hot Standby Router Protocol (HSRP)
HSRPは、ルーターの冗長化を提供するためのCisco独自のプロトコルです。
- アクティブルーター乗っ取り (Becoming active router): 攻撃者は、現在のアクティブルーターよりも高い優先度を持つHSRPメッセージを送信し、自身をアクティブルーターであると偽装します。これにより、デフォルトゲートウェイ宛てのトラフィックが攻撃者のマシンを経由するようになり、MitM攻撃が可能になります。
CLIコマンド例:
sudo yersinia hsrp -attack 3 -interface eth0 -vip <仮想IP> -routerip <攻撃者IP> -priority 255
(-attack 3
は “becoming active router” に対応することが多いです。仮想IPアドレスや自身のIPアドレスを指定する必要があります。)
対策: HSRPメッセージに対してMD5認証を設定する。
VLAN Trunking Protocol (VTP)
VTPは、スイッチ間でVLAN情報を同期するためのCisco独自のプロトコルです。
- VLAN追加/削除攻撃: 攻撃者がVTPサーバーモードで動作し、より高いリビジョン番号を持つVTPアップデートを送信することで、ドメイン内の他のスイッチのVLAN設定を変更(追加、削除)できます。例えば、全てのVLANを削除するDoS攻撃や、特定のVLANを追加してアクセス制御を回避する攻撃が考えられます。
- Catalystクラッシュ攻撃 (DOS attack crashing Catalyst): 特定の不正なVTPパケットを送信して、スイッチをクラッシュさせるDoS攻撃。
CLIコマンド例 (全VLAN削除):
sudo yersinia vtp -attack 1 -interface eth0 -domain <VTPドメイン名> -name <VLAN名>
(-attack 1
は “deleting ALL VTP vlans” に対応することが多いです。)
対策: VTPを使用しない場合はトランスペアレントモードに設定する。VTPを使用する場合は、強力なパスワードを設定し、信頼できないポートでVTPメッセージを受信しないようにする。VTPバージョン3は、よりセキュアな機能(プライマリサーバー指定、認証強化など)を提供します。
IEEE 802.1Q (VLAN Hopping)
802.1QはVLANタギングの標準規格です。DTP攻撃と組み合わせたり、特定の条件下で悪用されたりすることがあります。
- ダブルタギング攻撃 (Double Encapsulated 802.1Q): 攻撃者は、2つのVLANタグ(自身のVLANタグとターゲットVLANタグ)を持つ特殊なパケットを作成します。最初のスイッチが外側のタグ(ネイティブVLANなど)を剥がすと、内側のターゲットVLANタグが付いたパケットが意図しないVLANに転送される可能性があります。これは通常、攻撃者からターゲットへの単方向通信を可能にします。
CLIコマンド例 (ダブルタグパケット送信):
sudo yersinia dot1q -attack 2 -interface eth0 -nvid <ネイティブVLAN ID> -vid <ターゲットVLAN ID> -dest <宛先MAC>
(-attack 2
は “sending double encapsulated packet” に対応することが多いです。)
対策: トランクポートのネイティブVLANを未使用のVLAN IDに設定する。ユーザーポートを特定のVLANに固定し、ネイティブVLANに割り当てないようにする。
プロトコル | 主な攻撃手法 | 影響 | 主な対策 |
---|---|---|---|
STP | ルートブリッジ乗っ取り, DoS攻撃 | MitM, ネットワーク不安定化, 通信妨害 | BPDUガード, ルートガード |
CDP | CDPフラッディング, 偽情報送信 | DoS (メモリ枯渇), ネットワーク管理者の混乱 | 不要ポートでCDP無効化, LLDPへの移行 |
DTP | トランクモード有効化 | VLANホッピング, 不正アクセス | ポートモード固定 (access/trunk), nonegotiate設定 |
DHCP | DHCP枯渇攻撃, 不正DHCPサーバー | DoS (IPアドレス枯渇), MitM, 不正サイト誘導 | DHCPスヌーピング, ポートセキュリティ |
HSRP | アクティブルーター乗っ取り | MitM | MD5認証の設定 |
VTP | VLAN追加/削除, DoS | VLAN構成破壊, アクセス制御回避, スイッチクラッシュ | トランスペアレントモード設定, VTPパスワード設定, VTPv3利用 |
802.1Q | ダブルタギング | VLANホッピング (単方向) | 未使用VLANをネイティブVLANに設定, ユーザーポート固定 |
倫理的配慮と法的遵守 🔒
Yersiniaのような強力なツールを使用する際には、倫理的な配慮と法的遵守が不可欠です。繰り返しになりますが、許可なく他者のネットワークに対してこのツールを使用することは絶対に避けてください。
- 許可の取得: テスト対象のネットワーク所有者から、書面による明確な許可を得てください。テストの範囲、期間、許可されるアクションを明確に定義します。
- 影響の理解: Yersiniaによる攻撃は、ネットワークに深刻な影響(サービス停止、不安定化など)を与える可能性があります。テストを行う前に、潜在的なリスクを評価し、影響を最小限に抑える計画を立ててください。
- 目的の明確化: Yersiniaを使用する目的は、あくまでセキュリティの向上であるべきです。脆弱性を発見し、それを修正するための情報を得るために使用します。悪意のある目的での使用は許されません。
- 関連法規の遵守: コンピューターへの不正アクセスやネットワークへの妨害行為は、多くの国や地域で法律により禁止されています。関連する法律や規制を理解し、遵守してください。
Yersiniaは、ネットワーク管理者が自身の管理するネットワークの弱点を理解し、防御策を講じるための有効なツールとなり得ます。しかし、その力を悪用すれば、深刻な損害を引き起こす可能性も秘めています。責任ある使用を心がけましょう。
まとめ
Yersiniaは、レイヤー2プロトコルのセキュリティテストと分析のための強力なフレームワークです。STP、CDP、DTP、DHCP、HSRP、VTPなど、様々なプロトコルに対する攻撃シミュレーション機能を提供します。これにより、ネットワーク管理者は潜在的な脆弱性を特定し、適切な対策を講じることができます。
Yersiniaは、CLI、ncurses、GTKの各インターフェースを提供し、ユーザーのスキルレベルや好みに合わせて使用できます。しかし、その強力さゆえに、倫理的なガイドラインと法的要件を厳守し、許可された環境でのみ使用することが極めて重要です。
このツールを責任を持って使用することで、ネットワークインフラのセキュリティを強化し、より安全なデジタル環境の構築に貢献することができます。🛡️
コメント