scapy安装及SCTP包分析

关于Scapy

scapy是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等。它可以很容易地处理一些典型操作,比如端口扫描、tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,POF等)。最重要的他还有很多更优秀的特性——发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN)等,这要是其他工具无法处理完成的。

安装Scapy

由于scapy依赖于python,因此在安装scapy前,必须保证python的正确安装,python的安装此处不在赘述,如有需要可查阅网络。本人采用的python2.7。

如设备已联网,可直接用pip install scapy命令一键安装,如设备无法联网,可事先在scapy官方网站(http://www.secdev.org/projects/scapy)下载scapy最新版本,目前最新版本是2.3.3。scapy的官方使用指南详细描述了scapy的各种用法,如有兴趣,自行查阅http://scapy.readthedocs.io/en/latest/index.html

本文演示使用的系统是red hat 4.4.7,在下载完scapy的压缩包后,由于该版本是tgz的格式,在操作系统中使用命令tar –zvxf 解压缩,如下图:

 

解压后,进入scapy的文件夹,使用sudo python scapy.py install命令安装scapy,当出现welcome字样时,表示scapy安装成功。

在官方文档中也说明了,当在windows下安装scapy时,只需要运行cmd,在控制台界面,找到scapy解压后所在路径,进入后,输入python scapy.py install即可完成安装,当然,前提仍然是要正确安装python。

SCTP抓包分析

前面提到了,scapy可以很方便的构造各种包,目前也支持很多协议。对于通信行业来说,最重要的当然是SCTP包了。了解scapy的初衷是为了在自动化测试中,能够分析sctp包,从而做协议接口测试。网络上对于sctp包的描述较少,个人通过不断的尝试,终于成功将sctp包捕获并且分析和自动匹配,以下开始具体操作过程:

首先,要进入scapy界面:

 

 

然后就可以输入scapy命令了。先来构造一个接口的抓包,这里要借助sniff这个函数,使用说明如下:

 

 构造如下的sniff函数,开始嗅探特定sctp包:

 

 当抓包完成,会自动结束,此时返回的pkt是一个列表,每个元素是抓包的内容,如下图:

 

 上图所示的包为一个心跳请求包

通过这样的引用,可以找到sctp的类型,编号是遵循sctp协议的,如下图:

 

如果要分析sctp的包内容,那首先要找到的是数据块类型编码为0的sctp包,此时可方便通过循环判断,找到该sctp数据包,如下图:

 

可见pkt中的第12个包为数据包,以该包为例,可查看该数据包:

 

至此,就把抓到的sctp包的数据包给提取了出来。由于不支持sctp的更上层协议,因此需要自己去匹配协议字段,找到message type,从而判断消息类型。网上也有牛人可尝试制作新的协议模板,来做到自动匹配,有兴趣可查阅。这里用第一种方法。那么,为了方便知道具体字段标识的内容,我们还是要把抓到的包导出成wireshark可以打开的pcap包,从而方便我们来做编解码,方法如下:

则在scapy的文件路径下,会出现test.pcap的抓包,可以下载后用wireshark打开。找到wireshark的同样的第12个包,解码如下:

 

可见,这是一个s1setup的包,而s1setup位于data中的第二个字节,对应的procedure code是17,16进制表示是0x11,和提取到的data中是一致的:

 

因此,可以在data中判断第二个字节的type code来判断该SCTP所对应的上层消息,从而实现对SCTP的编解码分析。

posted @ 2017-08-25 16:54  景木  阅读(850)  评论(0编辑  收藏  举报