链路伪造攻击.docx
- 文档编号:26077849
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:9
- 大小:266.75KB
链路伪造攻击.docx
《链路伪造攻击.docx》由会员分享,可在线阅读,更多相关《链路伪造攻击.docx(9页珍藏版)》请在冰豆网上搜索。
链路伪造攻击
将目前几种主流控制器与Mininet一起搭建测试组网,Mininet负责构造网络拓扑。
针对SDN中存在的链路伪造安全问题,如下图,通过侵入主机h1向交换机s1发送伪造的LLDP数据包,构造出h3到h1的单向伪造链路。
用wireshark抓取交换机各端口的LLDP包,可分析并伪造出想要的LLDP数据包以达到链路伪造的目的。
控制器
链路伪造攻击
伪造LLDP包注入
LLDP包重传
Opendaylight
可实现
注:
修改sourceMAC、ChassisID、PortID、SystemName、UnknownSubtypeContent(有两段要改,每个端口的是固定值)
可实现
Floodlight
可实现
注:
修改sourceMAC、ChassisID、PortID、
UnknownSubtypeContent
(有两段,只需改第一段,第二段同一个端口的每个LLDP包的值都不一样)
可实现
POX
可实现
注:
修改sourceMAC、ChassisID、PortID、SystemDescription
可实现
伪造LLDP包注入:
只需一个妥协的主机;LLDP包重传:
需要伪造链路两端的交换机各连着一个妥协的主机。
单向伪造链路和双向伪造链路(POX只认定双向链路为有效的链路)
链路发现服务基于两个约束条件:
(1)链路发现过程中LLDP包的来源是诚信的;
(2)LLDP包的传播路径只包含OpenFlow交换机。
不同OpenFlow控制器发送的LLDP数据包的语法不同,如:
POX和Floodlight用一个整数变量来代表交换机的端口号,而Opendaylight采用的是特定ASCII码值;一些控制器增加了额外的TLVs,如Floodlight增加了一个起源认证作为LLDP包额外的TLV,然而该认证在设置后始终保持不变。
当前的控制器没有机制来确保LLDP包的完整性。
一些OpenFlow控制器如Floodlight和Opendaylight提出了一个API——supressLinkDiscovery来阻止LLDP包传播给连接主机的端口。
DenialofServiceAttack
采用POX控制器,用Mininet创建3个交换机相连的线性拓扑,使能routing模块(l2,linkdiscovery模块和spanningtree模块(spanning,得到如下结果:
通过h1向s1发送伪造数据包,构造s1和s3之间的伪造链路:
伪造链路攻击后发现spanningtree服务改变了交换机端口的状态:
拓扑更新时,生成树服务被触发来关闭冗余的交换机端口,攻击者可利用此来发动拒绝服务攻击。
被攻击交换机原本可用的端口被误关闭,流可能不再从原来的链路走,而是从虚假链路走,导致连接到该端口的用户无法再使用网络资源。
Man-In-The-MiddleAttack:
使用Floodlight控制器,用Mininet构建图1中的拓扑,其中h4为妥协的主机,它与两个目标交换机s1和s3相连。
图1实际拓扑
用h1主机ping主机h3,此时h4的端口并不能监听到h1和h3之间的通信,说明h1与h3通信的数据流经过的路径不包括h4。
接下来进行伪造链路攻击。
h4将s3转发的LLDP包重传给s1,控制器会误以为s1和s3之间存在一条链路直接相连(如图2),则s1与s3之间传输的消息都会被h4窃听到。
图2控制器视角下的拓扑
再用h1主机ping主机h3,发现控制器选择的通信路径包括伪造链路,显然ping不通,而h4此时能监听到h1和h3之间的通信。
验证LLDP数据包
采用HMAC,一种密钥散列消息认证码:
其中
是密钥;
是HMAC计算出的信息,包含相关的LLDPTLVs,如ClassicID和PortID;
是加密哈希函数;‘|’表示级联;‘
’表示异或运算;
和
是衰减值常量。
定义HMAC需要一个加密用散列函数(表示为h(),如MD5算法)和一个密钥K。
我们用B来表示数据块的字节数(例如MD5的散列函数的分割数据块字长B=64),用L来表示散列函数的输出数据字节数(MD5中L=16)。
鉴别密钥的长度可以是小于等于数据块字长的任何正整数值,若使用的密钥长度比B大,则首先用散列函数h()作用于它,然后用h()输出的L长度字符串作为在HMAC中实际使用的密钥。
一般情况下,推荐的最小密钥K长度是L个字节。
opad用0x5c重复B次,ipad用0x36重复B次。
HMAC运算步骤:
(1)在密钥K后面添加0来创建一个字长为B的字符串(例如,如果K的字长是20字节,B=64字节,则K后会加入44个零字节)。
(2)将上一步生成的B字长的字符串与ipad做异或运算。
(3)将数据流text填充至第二步的结果字符串中。
(4)用h()作用于第三步生成的数据流。
(5)将第一步生成的B字长字符串与opad做异或运算。
(6)再将第四步的结果填充进第五步的结果中。
(7)用h()作用于第六步生成的数据流,输出最终结果。
阻止重传攻击:
注意基础HMAC对重传攻击无效。
若攻击者掌握两个主机,主机1会把接收到的加密LLDP包以外带通道传给主机2,同样能构造这两个主机间的虚假链路。
为阻止重传攻击,传统方法是使用独特的信息标识符以确保每个HMAC值是惟一的。
本文选择了一种变换方法:
将静态密钥
换成动态值
,它是为链路发现回合
中LLDP包
选择的随机值,这样攻击者几乎无法猜出
的值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 伪造 攻击