Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
yersinia — Ciscoスイッチ上でSTPおよびCDPプロトコルを悪用し、DoS、ルートロールのハイジャック、メモリ枯渇攻撃を可能にするレイヤ2ネットワーク攻撃フレームワーク。 | Kitploit
ツール/GitHubGitHub/tomac/yersinia
IDS/IPS回避ネットワークセキュリティペネトレーションテストレッドチーミング
GitHubtomac/yersinia

yersinia

Ciscoスイッチ上でSTPおよびCDPプロトコルを悪用し、DoS、ルートロールのハイジャック、メモリ枯渇攻撃を可能にするレイヤ2ネットワーク攻撃フレームワーク。

リポジトリを見る
8611393年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Build Status

スパニングツリー

1: conf BPDUを送信するDoS攻撃

root@kitploit:~
conf BPDUを連続的に送信し、自分がルートであると主張します!!! ルートパスコスト0、ランダム生成されたブリッジID(したがって同じルートID)、およびその他のフィールドのデフォルト値を持つconf BPDUを継続的に送信することで、近くのスイッチを悩ませ、STPエンジンの解析と再計算を強制してDoSを引き起こそうとします。

送信元MAC: ランダム生成
宛先MAC: 01:80:c2:00:00:00
ブリッジID: 8000:送信元MAC
ルートID: 8000:送信元MAC
ハロータイム: 2
フォワードディレイ: 15
最大エージ: 20
ルートパスコスト: 0

<output from the cisco log>
01:20:26: STP: VLAN0001 heard root 32768-d1bf.6d60.097b on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-9ac6.0f72.7118 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-85a3.3662.43dc on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-3d84.bc1c.918e on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-b2e2.1a12.dbb4 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-4ba6.2d45.5844 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-deb0.4f14.7288 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-4879.8036.0e24 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-2776.e340.9222 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-299e.de76.c07d on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-d38b.bc5b.e90d on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-78ee.0205.afdb on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-b32b.e969.81b1 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-b16b.c428.88a3 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-dd01.1436.9044 on Fa0/8
</output>

2: tcn BPDUを送信するDoS攻撃

root@kitploit:~
この攻撃はtcn BPDUを連続的に送信し、ルートスイッチに変更を確認するconf BPDUの送信を強制します。さらに、ルートスイッチはトポロジ変更通知をツリーのメンバーに送信し、メンバーは新しい変更を学習するためにSTPエンジンを再計算する必要があります。

送信元MAC: ランダム生成
宛先MAC: 01:80:c2:00:00:00

<output from the cisco log>
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
</output>

3: ルートロールを主張するNONDOS攻撃

root@kitploit:~
ここでの目的は、ツリーのルートロールを取得することです。どうすればこれを達成できるでしょうか? 単にネットワークをリスニングしてルートロールを特定し、優先度を低くしたconf BPDUを送信してルートになることです。

送信元MAC: スニッフィングしたBPDUと同じ
宛先MAC: スニッフィングしたBPDUと同じ
ブリッジID: スニッフィングしたものを少し変更し、優先度を低くする
ルートID: 8000: ブリッジIDと同じ
ハロータイム: スニッフィングしたBPDUと同じ
フォワードディレイ: スニッフィングしたBPDUと同じ
最大エージ: スニッフィングしたBPDUと同じ
ルートパスコスト: スニッフィングしたBPDUと同じ

<output from the cisco log>
01:58:48: STP: VLAN0001 heard root 32769-000e.84d4.2280 on Fa0/8
01:58:48:     supersedes 32769-000e.84d5.2280
01:58:48: STP: VLAN0001 new root is 32769, 000e.84d4.2280 on port Fa0/8, cost 19
</output>

4: 非ルートロールを主張するNONDOS攻撃

root@kitploit:~
STPを利用して別の奇妙なスイッチのふりをし、ルートIDを称賛します :)

5: 永遠のルート選出を引き起こすDoS攻撃

root@kitploit:~
優先度を自動減算しながらconfig BPDUを送信することで、STPツリーに無限のルート選出を引き起こすことができます。これは、選挙の票を再集計して勝者を決定するようなものです(フロリダを覚えていますか?)

<output from the cisco log>
00:20:21: STP: VLAN0001 heard root 32769-000e.84d4.2280 on Fa0/9
00:20:21:     supersedes 32769-000e.84d5.2280
00:20:21: STP: VLAN0001 new root is 32769, 000e.84d4.2280 on port Fa0/9, cost 19
00:20:23: STP: VLAN0001 heard root 32769-000e.84d3.2280 on Fa0/9
00:20:23:     supersedes 32769-000e.84d4.2280
00:20:23: STP: VLAN0001 new root is 32769, 000e.84d3.2280 on port Fa0/9, cost 19
00:20:25: STP: VLAN0001 heard root 32769-000e.84d2.2280 on Fa0/9
00:20:25:     supersedes 32769-000e.84d3.2280
00:20:25: STP: VLAN0001 new root is 32769, 000e.84d2.2280 on port Fa0/9, cost 19
00:20:27: STP: VLAN0001 heard root 32769-000e.84d1.2280 on Fa0/9
00:20:27:     supersedes 32769-000e.84d2.2280
00:20:27: STP: VLAN0001 new root is 32769, 000e.84d1.2280 on port Fa0/9, cost 19
00:20:29: STP: VLAN0001 heard root 32769-000e.84d0.2280 on Fa0/9
00:20:29:     supersedes 32769-000e.84d1.2280
00:20:29: STP: VLAN0001 new root is 32769, 000e.84d0.2280 on port Fa0/9, cost 19
00:20:31: STP: VLAN0001 heard root 32769-000e.84cf.2280 on Fa0/9
00:20:31:     supersedes 32769-000e.84d0.2280
00:20:31: STP: VLAN0001 new root is 32769, 000e.84cf.2280 on port Fa0/9, cost 19
00:20:33: STP: VLAN0001 heard root 32769-000e.84ce.2280 on Fa0/9
00:20:33:     supersedes 32769-000e.84cf.2280
00:20:33: STP: VLAN0001 new root is 32769, 000e.84ce.2280 on port Fa0/9, cost 19
00:20:35: STP: VLAN0001 heard root 32769-000e.84cd.2280 on Fa0/9
00:20:35:     supersedes 32769-000e.84ce.2280
00:20:35: STP: VLAN0001 new root is 32769, 000e.84cd.2280 on port Fa0/9, cost 19
00:20:37: STP: VLAN0001 heard root 32769-000e.84cc.2280 on Fa0/9
00:20:37:     supersedes 32769-000e.84cd.2280
00:20:37: STP: VLAN0001 new root is 32769, 000e.84cc.2280 on port Fa0/9, cost 19
00:20:39: STP: VLAN0001 heard root 32769-000e.84cb.2280 on Fa0/9
00:20:39:     supersedes 32769-000e.84cc.2280
00:20:39: STP: VLAN0001 new root is 32769, 000e.84cb.2280 on port Fa0/9, cost 19
</output>

6: ルート消失を引き起こすDoS攻撃

root@kitploit:~
今回は、ルート選出プロセスを枯渇させようと試みます。STPツリーでルートになることに成功しますが、config BPDUの送信を停止してmax_age秒(通常20秒)が経過するまで待ち、新しい選出プロセスを強制します。

<output from the cisco log>
02:02:43: STP: VLAN0001 heard root 32769-000e.84d4.2280 on Fa0/9
02:02:43:     supersedes 32769-000e.84d5.2280
02:02:43: STP: VLAN0001 new root is 32769, 000e.84d4.2280 on port Fa0/9, cost 19
02:03:03: STP: VLAN0001 we are the spanning tree root
02:03:04: STP: VLAN0001 heard root 32769-000e.84d4.2280 on Fa0/9
02:03:04:     supersedes 32769-000e.84d5.2280
02:03:04: STP: VLAN0001 new root is 32769, 000e.84d4.2280 on port Fa0/9, cost 19
02:03:04: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:06: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:08: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:10: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:12: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:14: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:16: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:18: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:20: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:22: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:24: STP: VLAN0001 we are the spanning tree root
02:03:24: STP: VLAN0001 heard root 32769-000e.84d4.2280 on Fa0/9
02:03:24:     supersedes 32769-000e.84d5.2280
02:03:24: STP: VLAN0001 new root is 32769, 000e.84d4.2280 on port Fa0/9, cost 19
02:03:24: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:26: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:28: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:30: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:32: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:34: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:36: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:38: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:40: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:42: STP: VLAN0001 sent Topology Change Notice on Fa0/9
02:03:44: STP: VLAN0001 we are the spanning tree root
</output>

軽減策(Ciscoのみ)

  • ポートセキュリティを使用し、STPが必要ないポートでSTPを無効にします。 ポートセキュリティの詳細については、次のURLを確認してください: http://www.cisco.com/en/US/products/hw/switches/ps628/products_configuration_guide_chapter09186a0080150bcd.html

  • STP設定でportfast機能を使用している場合は、ポートが自動的にフォワーディング状態になったときにこれらの攻撃を回避するために、BPDUガードも有効にしてください: http://www.cisco.com/warp/public/473/65.html

  • 不正なデバイスがルートになるのを防ぐために、ルートガード機能を使用してください: http://www.cisco.com/en/US/tech/tk389/tk621/technologies_tech_note09186a00800ae96b.shtml

参考文献

  • Guillermo Marroの優れた修士論文: http://seclab.cs.ucdavis.edu/papers/Marro_masters_thesis.pdf

  • Oleg K. Artemjev, Vladislav V. Myasnyankin. Fun with the Spanning Tree Protocol http://phrack.org/issues/61/12.html

CDP

Ciscoデバイスは、互いに通信するために常に異なる言語を話し、自分たちが生きていることや持っている便利な機能を伝え合ってきました。CDPはCisco Discovery Protocolの略です。この特別な言語によって、Ciscoデバイスは誰もが幸せで犯罪がまったくない仮想世界を構築します。あるいは少なくとも、多くのネットワーク管理者がまだCDPを気にしていないため、そう見えているかもしれません。CDPパケットで送信できる情報の一部はまだ文書化されていませんが(CDPはプロプライエタリプロトコルであり、Ciscoは詳細を公開したがっていないようです)、少なくとも1つの古い攻撃(現在も有効)が知られており、公開実装も存在します(FXがやりました!)。

この攻撃は、デバイスのメモリを枯渇させて、デバイスプロセスのためのメモリをそれ以上割り当てられなくするDoS攻撃です。どうやって行うのでしょうか? 単に実際のCiscoデバイスを模した偽のデータを含むCDPパケットを送信します。ターゲットデバイスはCDPテーブルにメモリを割り当てて新しいネイバー情報を保存し始めますが、数千または数百万もの新しい友達ができるとは知りません。

現在のコードに実装されている別の攻撃は、ネットワーク管理者を混乱させることを目的とした新しい仮想Ciscoデバイスをセットアップし、少し混乱を引き起こす機能です。

攻撃実行中のスクリーンショット:

Cisco 2503ルーターの出力:

root@kitploit:~
athens#sh mem
               Head   Total(b)    Used(b)    Free(b)  Lowest(b) Largest(b)
Processor     4873C    3893444    3893444          0          0          0
I/O          400000    2097152    2097088         64         64         64

<log>
%SCHED-3-THRASHING: Process thrashing on watched queue 'CDP packets' (count 57).
-Process= "CDP Protocol", ipl= 6, pid= 9
-Traceback= 3159232 31594DE 3201660
%LANCE-5-COLL: Unit 0, excessive collisions. TDR=7
%SCHED-3-THRASHING: Process thrashing on watched queue 'CDP packets' (count 57).
-Process= "CDP Protocol", ipl= 6, pid= 9
-Traceback= 3159232 31594DE 3201660
%SYS-2-MALLOCFAIL: Memory allocation of 100 bytes failed from 0x3201B3E, pool Processor, alignment 0
-Process= "CDP Protocol", ipl= 0, pid= 9
-Traceback= 314E8A4 314FA06 3201B46 32016C8
%SCHED-3-THRASHING: Process thrashing on watched queue 'CDP packets' (count 57).
-Process= "CDP Protocol", ipl= 6, pid= 9
-Traceback= 3159232 31594DE 3201660
%SYS-2-MALLOCFAIL: Memory allocation of 100 bytes failed from 0x3201B3E, pool Processor, alignment 0
-Process= "CDP Protocol", ipl= 0, pid= 9
-Traceback= 314E8A4 314FA06 3201B46 32016C8
%SYS-2-MALLOCFAIL: Memory allocation of 100 bytes failed from 0x3201B3E, pool Processor, alignment 0
-Process= "CDP Protocol", ipl= 0, pid= 9
-Traceback= 314E8A4 314FA06 3201B46 32016C8
</log>

そして攻撃を停止してから数分後、ルーターは驚くべきことに数秒間停止し、その後ターミナルからキックアウトされます :)

root@kitploit:~
<log>
%SYS-3-CPUHOG: Task ran for 16884 msec (69/69), Process = Exec, PC = 3158D42
-Traceback= 3158CEE 3158D4A 30F7330 30F742A 30FF3A4 30FEF76 30FEF1C 3116860
</log>

Cisco 2950スイッチの出力:

root@kitploit:~
00:06:08: %SYS-2-MALLOCFAIL: Memory allocation of 224 bytes failed from 0x800118D0, alignment 0
Pool: Processor  Free: 0  Cause: Not enough free memory
Alternate Pool: I/O  Free: 32  Cause: Not enough free memory

-Process= "CDP Protocol", ipl= 0, pid= 26
-Traceback= 801DFC30 801E1DD8 800118D8 80011218 801D932C 801D9318
00:06:08:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:09:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:10:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:11:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:12:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:13:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:14:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:15:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:16:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:17:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:18:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:19:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:20:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:21:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:22:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:23:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:38: %SYS-2-MALLOCFAIL: Memory allocation of 140 bytes failed from 0x801E28BC, alignment 0
Pool: Processor  Free: 0  Cause: Not enough free memory
Alternate Pool: I/O  Free: 32  Cause: Not enough free memory

-Process= "Calhoun Statistics Process", ipl= 0, pid= 21
-Traceback= 801DFC30 801E1DD8 801E28C4 801F13BC 801F1470 802F7C90 802F9190 802F9788 801D932C 801D9318
00:06:38:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:39:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:40:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:41:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:42:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:44:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:45:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:46:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:47:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:48:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:49:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:50:  ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:59: %SYS-3-CPUHOG: Task ran for 2076 msec (11/10), process = Net Background, PC = 801ABD40.
-Traceback= 801ABD48 801D932C 801D9318

そして、攻撃を停止してもCDPプロセスは完全にダウンし、それ以上CDPの赤ちゃんは生まれません...

ツールをダウンロード