Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
yersinia — STP 및 CDP 프로토콜을 악용하는 레이어 2 네트워크 공격 프레임워크로, Cisco 스위치에서 DoS, 루트 역할 하이재킹, 메모리 고갈 공격을 가능하게 합니다. | Kitploit
도구/GitHubGitHub/tomac/yersinia
IDS/IPS EvasionNetwork SecurityPenetration TestingRed Teaming
GitHubtomac/yersinia

yersinia

STP 및 CDP 프로토콜을 악용하는 레이어 2 네트워크 공격 프레임워크로, Cisco 스위치에서 DoS, 루트 역할 하이재킹, 메모리 고갈 공격을 가능하게 합니다.

저장소 보기
8611393년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Build Status

Spanning Tree

1: conf BPDU를 전송하는 DoS 공격

root@kitploit:~
conf BPDU를 계속 전송하여 자신이 루트라고 주장합니다!!! 루트 경로 비용(root pathcost)을 0으로 설정하고, 무작위로 생성된 브리지 ID(따라서 동일한 루트 ID) 및 기타 필드의 기본값을 사용하여 conf BPDU를 지속적으로 전송함으로써, 우리 주변의 스위치를 방해하여 STP 엔진을 구문 분석하고 재계산하려고 할 때 DoS를 유발하려고 합니다.

소스 MAC: 무작위 생성.
대상 MAC: 01:80:c2:00:00:00
브리지 ID: 8000:소스_MAC
루트 ID: 8000:소스_MAC
Hello 시간: 2
전달 지연: 15
최대 수명: 20
루트 경로 비용: 0

<시스코 로그 출력>
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

<시스코 로그 출력>
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: 루트 역할을 주장하는 비 DoS 공격

root@kitploit:~
이제 우리의 목표는 트리의 루트 역할을 얻는 것입니다. 어떻게 이 문제를 해결할 수 있을까요? 네트워크를 수신하여 루트 역할이 무엇인지 알아낸 다음, 낮은 우선순위를 가진 conf BPDU를 보내어 루트가 되는 것입니다.

소스 MAC: 스니핑된 BPDU와 동일.
대상 MAC: 스니핑된 BPDU와 동일.
브리지 ID: 스니핑된 것보다 약간 낮은 우선순위를 갖도록 수정된 값
루트 ID: 8000: 브리지 ID와 동일.
Hello 시간: 스니핑된 BPDU와 동일.
전달 지연: 스니핑된 BPDU와 동일.
최대 수명: 스니핑된 BPDU와 동일.
루트 경로 비용: 스니핑된 BPDU와 동일.

<시스코 로그 출력>
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: 루트가 아닌 역할을 주장하는 비 DoS 공격

우리는 STP를 가지고 놀며 우리의 루트 ID를 자랑하는 또 다른 이상한 스위치인 척 합니다 :)

5: 영원한 루트 선거를 유발하는 DoS 공격

root@kitploit:~
config BPDU를 보내면서 우선순위를 자동 감소시키면, STP 트리에서 무한한 루트 선거를 유발할 수 있습니다. 이는 승자를 결정하기 위해 선거 투표를 재검표하는 것과 비슷합니다 (플로리다 기억나시나요?)

<시스코 로그 출력>
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 트리에서 루트가 되지만, max_age (보통 20초)에 도달할 때까지 config BPDU 전송을 중단하여 새 선거 프로세스를 강제합니다.

<시스코 로그 출력>
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>

완화 방법 (시스코 전용)

  • 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

시스코 장치는 항상 서로 통신하기 위해 다른 언어를 사용해 왔으며, 자신이 살아 있고 어떤 멋진 기능을 가지고 있는지 모든 사람에게 알려줍니다. CDP는 Cisco Discovery Protocol의 약자입니다. 이 특별한 언어를 통해 시스코 장치는 모든 사람이 행복하고 범죄가 전혀 없는 가상 세계를 구축합니다. 또는 적어도 그렇게 보입니다. 많은 네트워크 관리자가 아직 CDP에 대해 걱정하지 않기 때문입니다. CDP 패킷으로 보낼 수 있는 일부 정보는 여전히 문서화되지 않았지만(CDP는 독점 프로토콜이며 시스코가 이에 대한 세부 정보를 제공하지 않는 것으로 보임), 적어도 하나의 오래된 공격(여전히 유효함)이 알려져 있으며 공개 구현(FX가 했습니다!)이 있습니다.

이 공격은 장치 메모리를 고갈시켜 어떤 장치 프로세스에도 메모리를 할당할 수 없게 만드는 DoS입니다. 어떻게 할 수 있을까요? 실제 시스코 장치를 시뮬레이션하는 가짜 데이터가 포함된 CDP 패킷을 보내면 됩니다. 대상 장치는 CDP 테이블에 메모리를 할당하여 새 이웃 정보를 저장하기 시작하지만, 수천 또는 수백만 명의 새 친구를 갖게 될 것이라는 사실을 모릅니다.

현재 코드에 구현된 다른 공격은 혼란을 일으키기 위해 지정된 새로운 가상 시스코 장치를 설정하여 네트워크 관리자를 혼란스럽게 하는 기능입니다.

공격 실행 중의 스크린샷:

시스코 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>

시스코 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 아이들은 없습니다...

도구 다운로드