网络利器之Scapy
0x00 Scapy简介
“It can replace hping, 85% of nmap, arpspoof, arp-sk, arping, tcpdump, tethereal, p0f, etc.”
这是摘自Scapy官方文档中一句话,这句话足以彰显出Scapy的强大功能。
Scapy是Python上的一个强大的构造网络数据包的模块,它可以完成绝大多数工具所能完成的功能,例如:扫描,网络发现,跟踪路由,探测,单元测试,攻击等。。。它也可以发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN) 等。
Scapy与普通工具最大的不同之处在于,它最大程度上满足你对数据包的
任何操作。
0x01 Scapy安装
因为Scapy属于Python的一个模块,所以利用pip进行安装即可,无需担心平台问题。
kali:pip install scapy
Windows:pip install scapy
测试:
无报错表示安装成功。
0x02 Scapy基础使用
在kali下可以直接输入scapy直接进入工具,也可以在python导入模块来使用。
Scapy所支持的各类协议可通过ls()获得,并且ls(协议名)可以查看协议的内部参数,它贴心的根据本地环境设置了一些默认值,也可根据自己所需更改
内置参数。
可以查看IP协议的详细信息,并且通过的方法可以修改内部参数
列出Scapy中可以使用的命令或函数。其中常用对数据包进行操作的有,通过不同的函数
利用sniff()可以实现对数据包的抓取,a.summary()查看捕获数据包内容,通过sniff抓取的数据包可以轻松的观察出icmp协议的数据包由Ether 、IP 、ICMP三个协议构成,之后的数据包构建部分会用到这里的这三个协议。
同样可以Scapy可以把捕获的数据包写入pcap文件利用wireshark进行辅助分析数据。
wrpcap()把捕获到的数据包写入pcap文件icmp.pcap
利用wireshark可以对捕获的数据包
0x03 数据包的构建与发送
在上面的章节中我们利用sniff抓取的数据包中可以看到Ether / IP / ICMP这样的数据包结构,在Scapy之中数据包便是由这种形式构建不同的协议之间利用"/"连接,这样下一层下协议可以重载上一层协议的值。
学习 发送数据包函数使用
函数工作在第三层
函数工作在第二层,你可以选择网卡和协议
函数用来来发送数据包和接收响应,他会返回两个列表数据,一个是answer list 另一个是unanswered list
是一个变种,他们发送的数据包必须是第3层数据包(IP,ARP等)。sr1()只返回应答发送的分组,并且只接收返回的第一个包。
0x04 Scapy实验——stp根桥欺骗
实验原理:
实验思路:
实验脚本:
实验结果:
实验前:
试验后:
上传markdown图片出了点小问题各位表哥看附件吧,附件是试验后的效果
实验结论:
通过实验前后交换机的信息对比可见通过竞争,新构造的id被选为rootid。根桥作为生成树的顶端,他可以监视整个网络。由此可以更改网络拓扑,控制流量走向,从而进行下一阶段的攻击。这里因为是演示scapy的强大所以不再进行下一步的攻击测试。
可见如果没有正确配置好交换机会对整个网络系统产生多严重的影响。配置生成树协议安全特性可以有效防止根桥欺骗。
领取专属 10元无门槛券
私享最新 技术干货