工作任务一 
生成树欺骗攻击与防御策略
【工作目的】
掌握交换机生成树选举过程、欺骗原理、攻击过程和防范策略。
【工作背景】
A 企业收购B企业,合并后两企业技术部和工程部分布在办公楼A 栋和B栋某楼
层,通过接入层交换机SW1和SW2连接起来,经三层交换机SW3(根交换机)汇聚后,通
过vlan40虚拟接口与企业路由器R1相连,接入Internet路由器R2。其中vlan10为技
术部,vlan20为工程部,vlan30为服务器群。
【工作任务】
A 栋楼某员工想获得B栋楼工程部主机与外网通信的机密信息,将黑客交换机接入
SW1和SW2中工程部vlan20任一接口(E0/0/11~E0/0/22),并将黑客交换机设置为
根交换机,以此劫持SW2所有流量,从中分析工程部主机登录的账号和密码。
工程部主机账号屡遭被盗后,管理员发现SW3为非根交换机,初步判定为生成树欺
骗攻击所致,遂将SW1和SW2主机接入端口(Access)设为边缘端口,避免重演SW1和
SW2流量劫持事件。
【任务分析】
生成树端口有Disable、Blocking、Listening、Learning、Forwarding5个状态。交换机
边缘端口(Portfast)不接收BPDU,选举时直接从阻塞状态转变为转发状态,不参与生成
树选举过程。默认情况下,交换机所有端口均为非边缘端口。为避免生成树欺骗攻击,可
将交换机用于主机接入的端口设为边缘端口。
将交换机E0/0/1接口配置为边缘端口: 
[Huawei]interface Ethernet0/0/1 
[Huawei-Ethernet0/0/1]stp edged-port enable 
【设备器材】
接入层交换机(S3700)3台,汇聚层交换机(S5700)1台,路由器(AR1220)2台,主机

2 
4台,各主机分别承担角色见表1-1。
表1-1 主机配置表
角 色接入方式网卡设置IP地址操作系统工 具
技术部主机Cloud1接入VMnet1 192.168.1.10 Win7/10 
工程部主机Cloud2接入VMnet2 192.168.2.10 Win7/10 
内网服务器eNSPServer接入192.168.3.10 
公网Web服务器Cloud3接入VMnet3 116.64.100.10/24 Win2008/2012/2016 BBSWeb 
【环境拓扑】
工作拓扑图如图1-1所示。
图1-1 工作拓扑图
【工作过程】
一、基本配置@ 
1.交换机vlan和端口配置 
<Huawei>system-view 
[Huawei]sysname SW1 
[SW1]vlan batch 10 20 //batch:批量
[SW1]stp enable //STP 默认开启,本行可不输
[SW1]stp mode rstp 
[SW1]port-group 1 //技术部组
[SW1-port-group-1]group-member Ethernet 0/0/1 to Ethernet 0/0/10 
[SW1-port-group-1]port link-type access 
[SW1-port-group-1]port default vlan 10

3 
[SW1-port-group-1]quit 
[SW1]port-group 2 //工程部组
[SW1-port-group-2]group-member Ethernet 0/0/11 to Ethernet 0/0/22 
[SW1-port-group-1]port link-type access 
[SW1-port-group-1]port default vlan 20 
[SW1-port-group-2]quit 
[SW1]port-group 3 //Trunk 组
[SW1-port-group-3]group-member GigabitEthernet 0/0/1 GigabitEthernet 0/0/2 
[SW1-port-group-3]port link-type trunk 
[SW1-port-group-3]port trunk allow-pass vlan 10 20 
[SW1-port-group-2]quit 
[SW1] 
<Huawei>system-view 
[Huawei]sysname SW2 
[SW2]vlan batch 10 20 
[SW2]stp enable 
[SW2]stp mode rstp 
[SW2]port-group 1 //技术部组
[SW2-port-group-1]group-member Ethernet 0/0/1 to Ethernet 0/0/10 
[SW2-port-group-1]port link-type access 
[SW2-port-group-1]port default vlan 10 
[SW2-port-group-1]quit 
[SW2]port-group 2 //工程部组
[SW2-port-group-2]group-member Ethernet 0/0/11 to Ethernet 0/0/22 
[SW2-port-group-2]port link-type access 
[SW2-port-group-2]port default vlan 20 
[SW2-port-group-2]quit 
[SW2]port-group 3 //Trunk 组
[SW2-port-group-3]group-member GigabitEthernet 0/0/1 GigabitEthernet 0/0/2 
[SW2-port-group-3]port link-type trunk 
[SW2-port-group-3]port trunk allow-pass vlan 10 20 
[SW2-port-group-3]quit 
[SW2] 
<Huawei>system-view 
[Huawei]sysname SW3 
[SW3]vlan batch 10 20 30 40 
[SW3]stp enable 
[SW3]stp mode rstp 
[SW3]stp root primary //设置为主根,优先级为0(优先级最高) 
[SW3]interface GigabitEthernet 0/0/1 
[SW3-GigabitEthernet0/0/1]port link-type trunk 
[SW3-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 
//表面上含义是GE 0/0/1Trunk 口允许vlan 10 和vlan 20 通过,相当于把GE 0/0/1 加入
vlan 10 和vlan 20,此时vlan 10 和vlan 20 有物理接口,两个vlan 才能处于Up 状态。假
如一个vlan 没有任何接口,vlan 永远处于Down 状态
[SW3-GigabitEthernet0/0/1]quit 
[SW3]interface GigabitEthernet 0/0/2

4 
[SW3-GigabitEthernet0/0/2]port link-type trunk 
[SW3-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 20 
[SW3-GigabitEthernet0/0/2]quit 
[SW3]interface GigabitEthernet 0/0/3 
[SW3-GigabitEthernet0/0/3]port link-type access 
[SW3-GigabitEthernet0/0/3]port default vlan 30 
//此时交换机vlan 30 包含GE0/0/3,vlan 30 才会处于Up 状态
[SW3]interface GigabitEthernet 0/0/4 
[SW3-GigabitEthernet0/0/4]port link-type trunk 
[SW3-GigabitEthernet0/0/4]port trunk allow-pass vlan all 
[SW3-GigabitEthernet0/0/4]quit 
[SW3]interface Vlanif 10 
[SW3-Vlanif10]ip address 192.168.1.1 24 
[SW3-Vlanif10]quit 
[SW3]interface Vlanif 20 
[SW3-Vlanif20]ip address 192.168.2.1 24 
[SW3-Vlanif20]quit 
[SW3]interface Vlanif 30 
[SW3-Vlanif30]ip address 192.168.3.1 24 
[SW3-Vlanif30]quit 
[SW3]interface Vlanif 40 
[SW3-Vlanif40]ip address 192.168.4.1 24 
[SW3-Vlanif40]quit 
[SW3]interface GigabitEthernet 0/0/4 
[SW3-GigabitEthernet0/0/4]port trunk pvid vlan 40 
//vlan 40 与R1 的GE 0/0/0 接口相连。虽然vlan 40 包含GE 0/0/4 接口,但是默认仍属于
vlan 1,这与思科不同。将端口更改默认vlan,Access 模式命令为port default vlan 40, 
Trunk 模式命令为port trunk pvid vlan 40 
[SW3-GigabitEthernet0/0/4]quit 
[SW3] 
2.接口IP与路由协议配置 
[SW3]ospf 1 
[SW3-ospf-1]area 0 
[SW3-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255 
[SW3-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255 
[SW3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255 
[SW3-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255 
[SW3-ospf-1-area-0.0.0.0]quit 
[SW3-ospf-1]quit 
[SW3]ip route-static 0.0.0.0 0.0.0.0 192.168.4.2 
[SW3] 
<Huawei>system-view 
[Huawei]sysname R1 
[R1]interface GigabitEthernet 0/0/0 
[R1-GigabitEthernet0/0/0]ip address 192.168.4.2 24 
[R1-GigabitEthernet0/0/0]quit 
[R1]interface Serial 2/0/0

5 
[R1-Serial2/0/0]ip address 202.116.64.1 24 
[R1-Serial2/0/0]quit 
[R1]ospf 1 
[R1-ospf-1]area 0 
[R1-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255 
[R1-ospf-1-area-0.0.0.0]quit 
[R1-ospf-1]quit 
[R1]ip route-static 0.0.0.0 0.0.0.0 202.116.64.2 
[R1] 
<Huawei>system-view 
[Huawei]sysname R2 
[R2]interface GigabitEthernet 0/0/0 
[R2-GigabitEthernet0/0/0]ip address 116.64.100.1 24 
[R2-GigabitEthernet0/0/0]quit 
[R2]interface Serial 2/0/0 
[R2-Serial2/0/0]ip address 202.116.64.2 24 
[R2-Serial2/0/0]quit 
[R2] 
3.路由器R1Easy-IP配置 
[R1]acl 2000 
//基本ACL: <2000~2999>,只能根据源IP 地址过滤。高级ACL: < 3000~3999>,基于源IP、目
的IP、协议类型等过滤,类似扩展ACL 
[R1-acl-basic-2000]rule permit source 192.168.0.0 0.0.255.255 
[R1-acl-basic-2000]quit 
[R1]interface Serial 2/0/0 
[R1-Serial2/0/0]nat outbound 2000 
//加载ACL2000 过滤规则与公网接口出栈之间的转换关系,即把内网IP 经过滤规则匹配后转换
为公网接口IP 
[R1-Serial2/0/0]quit 
[R1] 
注:Easy-IP直接使用接口IP作为NAT 转换后地址;NAPT 需指定具体地址池IP 
作为NAT转换后的地址。
4.基本配置验证
(1)查看SW3生成树与端口详细信息。 
[SW3]display stp 
-------[CIST Global Info][Mode RSTP]------- 
CIST Bridge :0 .4c1f-cc32-6eac //当前网桥优先级和MAC 地址
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 
CIST Root/ERPC :0 .4c1f-cc32-6eac / 0 //生成树选举的根网桥优先级和MAC 
地址,其值与SW3 网桥相同,从而
判断SW3 就是根网桥
CIST RegRoot/IRPC :0 .4c1f-cc32-6eac / 0 
CIST RootPortId :0.0 
BPDU-Protection :Disabled

6 
CIST Root Type :Primary root 
TC or TCN received :216 
TC count per hello :0 
STP Converge Mode :Normal 
Time since last TC :0 days 0h:0m:13s 
Number of TC :89 
Last TC occurred :GigabitEthernet0/0/1 
----[Port1(GigabitEthernet0/0/1)][FORWARDING]---- //以下为所有端口详细信息
Port Protocol :Enabled 
Port Role :Designated Port 
Port Priority :128 
Port Cost(Dot1T ) :Config=auto / Active=20000 
Designated Bridge/Port :0.4c1f-cc32-6eac / 128.1 
Port Edged :Config=default / Active=disabled 
Point-to-point :Config=auto / Active=true 
Transit Limit :147 packets/hello-time 
----More --- - //显示的信息很长,按Enter 键显示下一行,按Space 键显示下一
页,按Ctrl+C 组合键或Tab 键退出显示信息
注:CIST(CommonandInternalSpanningTree,公共和内部生成树)是连接一个交
换网络内所有设备的单生成树。
(2)查看SW3生成树接口简要信息。 
[SW3]display stp brief 
MSTID Port Role STP State Protection 
0 GigabitEthernet0/0/1 DESI FORWARDING NONE 
0 GigabitEthernet0/0/2 DESI FORWARDING NONE 
0 GigabitEthernet0/0/3 DESI FORWARDING NONE 
0 GigabitEthernet0/0/4 DESI FORWARDING NONE 
可以看出,构建生成树的GE0/0/1和GE0/0/2为指定端口,处于转发状态。
(3)连通性测试。
对技术部主机和工程部主机配置IP后,可以连通公网Web服务器,TTL值为125, 
如图1-2所示。
图1-2 连通性测试图

7 
二、入侵实战@ 
1.黑客交换机接入与生成树配置
将黑客交换机接入SW1和SW2中工程部vlan20任一接口(E0/0/11~E0/0/22), 
如图1-3所示的E0/0/22。
图1-3 入侵拓扑图
注:如图1-3所示,SW3的MAC地址为4c1f-cc32-6eac,黑客交换机MAC 地址为
4c1f-cc1d-1011。在相同优先级(priority0)情况下,为使黑客交换机选举为根交换机,黑
客交换机MAC地址必须小于SW3的MAC地址。由于交换机MAC地址无法更改和自
定义,读者需反复尝试,直到找到适合的交换机作为黑客交换机为止。
黑客交换机生成树配置命令如下: 
<Huawei>system-view 
[Huawei]sysname Hacker 
[Hacker]stp enable 
[Hacker]stp mode rstp 
[Hacker]stp priority 0 //优先级与SW3 相同,都为0 
[Hacker] 
2.生成树重新选举与验证
(1)验证黑客交换机选举为根交换机。
由于黑客交换机和SW3生成树优先级都设置为0,则需比较双方MAC地址。由于
黑客交换机MAC地址小(网桥id=优先级+MAC地址),从而选举为根网桥。 
[Hacker]display stp 
-------[CIST Global Info][Mode RSTP]------- 
CIST Bridge :0 .4c1f-cc1d-1011 //黑客交换机优先级和MAC 地址
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20

8 
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 
CIST Root/ERPC :0 .4c1f-cc1d-1011 / 0 //生成树选举的根网桥优先级和MAC 
地址,其值与黑客网桥相同,从而判
断黑客交换机为根网桥
CIST RegRoot/IRPC :0 .4c1f-cc1d-1011 / 0 
CIST RootPortId :0.0 
BPDU-Protection :Disabled 
TC or TCN received :17 
TC count per hello :0 
STP Converge Mode :Normal 
Time since last TC :0 days 0h:8m:5s 
Number of TC :9 
Last TC occurred :Ethernet0/0/2 
----More ---- 
(2)验证SW3交换机为非根交换机。 
[SW3]display stp 
-------[CIST Global Info][Mode RSTP]------- 
CIST Bridge :0 .4c1f-cc32-6eac //网桥SW3 优先级和MAC 地址
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 
CIST Root/ERPC :0 .4c1f-cc1d-1011 / 220000 //选举黑客交换机为根网桥
CIST RegRoot/IRPC :0 .4c1f-cc32-6eac / 0 
CIST RootPortId :128.1 
BPDU-Protection :Disabled 
CIST Root Type :Primary root 
TC or TCN received :237 
TC count per hello :0 
STP Converge Mode :Normal 
Time since last TC :0 days 0h:2m:11s 
Number of TC :99 
Last TC occurred :GigabitEthernet0/0/1 
----More ---- 
(3)验证SW3阻塞端口与备份链路。
根据生成树选举经验,根网桥(黑客交换机)对角线为备份链路。进入交换机SW3查
看生成树接口简要信息。在SW3中,由于没有配置GE接口优先级,其优先级默认都为
128(注意:在选举指定端口时,以收到对方接口推送的PDU 优先级为准,即优先级不是
由自身端口优先级决定,而是由所连接的对方接口优先级决定),下一步则比较端口号。
由于GE0/0/1端口号小于GE0/0/2端口号,因此GE0/0/1选举为指定端口(DESI), 
GE0/0/2选举为替换端口(ALTE),处于阻塞DISCARDING 状态,SW3和SW2之间链
路为备份链路。 
[SW3]display stp brief 
MSTID Port Role STP State Protection 
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE

9 
0 GigabitEthernet0/0/2 ALTE DISCARDING NONE 
0 GigabitEthernet0/0/3 DESI FORWARDING NONE 
0 GigabitEthernet0/0/4 DESI FORWARDING NONE 
(4)验证SW2阻塞端口与备份链路。
根据“根网桥对角线为备份链路”准则,SW1和SW2之间链路也应为备份链路,进入
交换机SW2 查看生成树接口简要信息,发现GE0/0/1 选举为替换端口,处于阻塞
DISCARDING状态。 
[SW2]display stp brief 
MSTID Port Role STP State Protection 
0 Ethernet0/0/11 DESI FORWARDING N ONE 
0 Ethernet0/0/22 ROOT FORWARDING N ONE 
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE 
0 GigabitEthernet0/0/2 DESI FORWARDING NONE 
(5)生成树新拓扑结构。
黑客交换机接入后,生成树重新选举,阻塞备份端口,生成新拓扑如图1-4所示。生
成树选举过程会导致丢包现象,工程部与外网Web服务器连通情况如图1-5所示。此
时,SW2流量必须经过黑客交换机转发,从而引发安全事件。
图1-4 生成树新拓扑结构图
3.黑客交换机捕获工程部主机账号和密码
(1)在工程部主机上登录Web服务器,注册账号。
在公网Web服务器发布BBS论坛站点,可通过Win2008或Win2012或Win2016发
布,详细步骤请参阅本书附录2。在工程部主机上的浏览器输入地址http://116.64.100.10 
可以访问公网Web服务器站点,并注册账号。如图1-6所示在工程部主机上注册的账号
名为gdcp,密码33732878。注册完后,单击论坛“退出登录”按钮。

10
图1-5 工程部主机连通性测试图


图1-6 通过客户机在服务器上注册账号

(2)黑客交换机捕捉到账号和密码。
在黑客交换机E0/0/1或E0/0/2接口启用抓包,如图1-7所示。在工程部主机上通
过账号gdcp和密码33732878 成功登录公网服务器Web站点后停止抓包。在Wireshar界
面单击“查找下一分组”按钮,输入33732878;在下拉列表框中单击下拉按钮分别选择“字
符串”和“分组详情”选项,可以捕获在工程部主机上登录的账号和密码,如图1-8所示。