《局域网安全嗅探》由会员分享,可在线阅读,更多相关《局域网安全嗅探(8页珍藏版)》请在金锄头文库上搜索。
1、局域网安全嗅探器软件设计一、本软件的设计意义和目的网络监听软件可以作为网络安全管理人员进行安全管理的工具,可以用来监视网络的状态、数据流动情况以及网络上传输的信息,以获取有用信息。一方面,黑客通过截取用户的数据包可以获得诸如密码等重要信息。另一方面,网络安全管理员可通过网络监控对黑客的非法活动和其他网络发最进行侦查、取证,并且通过监听技术来获取必要的信息。因此,利用网络监听技术分析局域网内的数据有利于防护网络安全,同时对打击网络犯罪也具有重要的现实意义本毕业设计的目的在于利用相关技术实现对局域网内数据包的实时监控,了解局域网内计算机发送数据包的来源、去向以及各协议的内容,进而能寻找出局域网内计
2、算机的不安全的因素,如ARP攻击。二、主要技术简介2.1本课题的研究方法 在本系统的开发使用MyEclipse10 开发工具,利用Java语言来编写一个具备数据包统计和分析功能的局域网监听软件。 由于核心Java API不能访问底层的网络数据,因此,在使用Java编写网络监听程序时就须借助一些工具。本设计借助Winpcap和Jpcap这两个工具来对网络底层进行访问,帮助实现网络监听程序。2.2 本软件的运行环境要求 首先确定了所使用的语言Java,并利用开发工具MyEclipse进行开发。 由于Java API语言不能访问底层的网络数据,所以使用一些工具,如Winpcap和Jpcap,来帮助实
3、现对底层网络数据的访问。在此,本软件必须首先安装 Winpcap然后在jre中配置好Jpcap的环境。 2.3理论基础介绍2.3.1网络监听原理 网络适配器有过滤功能。但适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他处理,否则就将此帧丢弃,不再进行其他处理。这里“发往本站的帧”包括以下三种:(1) 单播帧(一对一)(2) 广播帧(一对多)(3) 多播帧(一对全体)以太网适配器还可以设置为一种特殊的工作方式,即混杂方式。工作在混杂方式的适配器只要“听到”有帧在以太网上传输就接受下来,而不管这些帧发往哪个站。这样实际是监听其他站点的通信
4、而不中断其他站点的通信。网络维护和管理人员需要用这种方式监视和分析以太网上的数据,从而找出威胁局域网安全的因素。2.3.2检测ARP攻击的原理(1) 发生ARP攻击,主机 C(192.168.0.3)感染了ARP病毒,如图2.1所示,它会在局域网内发送伪造的ARP REPLY包,内容如下,主机 B(192.168.0.2)的MAC地址为 cc-cc-cc-cc。图2.1(2) 接收到此包的客户端主机 A、 D更新本地的ARP缓存。如图2.2所示,在主机A、D看来,B的IP地址没有变,但它的MAC地址已经不是原来那个了,而是变成了主机C的MAC地址。图2.2(3) 如图2.3所示,接收到此包的客
5、户端主机 A、D 在访问主机 B(192.168.0.2)的时候,就会变成先访问主机 C,这样,主机 C 就成功获取了主机 A、 D 发送的消息。 图2.3综上所述,想要检测局域网中是否存在ARP攻击,就要分析比较ARPRequest(ARP请求)和ARPResponse(ARP回应)两种数据包的个数,一般情况下,ARP请求和ARP 回应的个数比例大致为1:1,如果差别较大,就表示网络中很可能存在ARP攻击。 3.1功能模块图如图3.1所示:图3.1 功能模块图3.2各个功能模块介绍3.2.1初始化模块 获取本机上可进行监听的所有的网络设备。在确定所选择的设备后,可以设定截取哪一种数据包,是只
6、截取数据包头还是截取整个数据包。 指定对象监听就是使用用户指定监听的主机的IP地址,监听内容是源IP为指定IP的数据包,如果符合条件则处理,不符合则丢弃。 3.2.2 数据包截获模块 将主机的网络适配器设置为混杂方式,利用Winpcap提供的接口捕获局域网内数据包,利用Jpcap类的成员函数对四种数据包(IP、TCP、UDP、ARP)进行过滤,并利用Jpcap的库函数对截获的数据包做初步处理,每截获一个数据包都放入缓冲区中。3.2.3协议解析模块 截获数据包后自动分析数据包的信息。Jpcap会对抓取到的数据包进行一定程序的解析,根据数据包内容,将数据包封装为对应的对象。调用对象的方法可以获取数
7、据包的信息。本模块进行分析的对象主要有:1、 数据包的基本信息。根据Jpacp中Packet类的数据成员和成员函数,获取已经捕获到的数据包的信息,包括长度、数据和时间信息等等。2、IP报文首部字段信息 图3.2 IP报文首部格式利用Jpcap中IPPacket类中的方法分析IP报文,要获得的首部字段信息有:(1)版本号:长度4比特。(2)IP包头长度:长度4比特。(3)服务类型:长度8比特。(4)IP包总长:长度16比特。(5)标识符:长度16比特。(6)标记:长度3比特。(7)片偏移:长度13比特。(8)协议:长度8比特。(9)头部校验:长度16比特。(10)源IP地址和目的IP地址:这两个
8、地段都是32比特。1. ARP报文首部信息ARP报文首部字段总共有28个字节 2字节 2字节 1字节 1字节 2字节 6字节 4字节 6字节 4字节硬件类型协议类型硬件地址长度协议地址长度操作类型发送方MAC地址发送方IP地址目的MAC地址目的IP地址 图3.3 ARP报文首部格式利用Jpcap中ARPPacket类中的方法分析ARP报文,要获取的首部字段信息有:(1) 发送方MAC地址:长度48比特。(2) 发送方IP地址:长度32比特。(3) 目的MAC地址:长度48比特。(4) 目的IP地址:长度32比特。调用toString获得数据报类型,记录ARP REQUEST与 ARP REPL
9、Y的数目。3、TCP报文首部信息TCP报文首部字段总共有20个字节 0 31源端口目的端口序号确认号数据偏移保留URGACKPSHRSTSYNFIN窗口校验和紧急指针图3.4TCP报文首部格式利用Jpcap中TCPPacket类中的方法分析TCP报文,要获取的首部字段信息有:(1) 源端口:16比特(2) 目的端口:16比特(3) 序号:32比特(4) 确认号:32比特(5) 数据偏移:4比特(6) URG:1比特(7) ACK:1比特(8) PSH:1比特(9) RST:1比特(10) SYN:1比特(11) FIN:1比特(12) 窗口大小:16比特(13) 校验和:16比特(14) 紧急
10、指针:16比特4、UDP报文首部信息UDP报文首部字段总共有8个字节0 31源端口目的端口长度校验和图3.5UDP报文首部格式利用Jpcap中UDPPacket类中的方法分析UDP报文,要获取的首部字段信息有:(1)源端口:16比特(2)目的端口:16比特(3)UDP长度:16比特5.各个协议的数量(统计图方式)利用Jpcap类库,使用JAVA语言中的多线程、AWT和SWING技术,实现对网络流量分析图示分析。 主线程持续捕获数据包,判断数据包类型,每次启动四个线程分别动态地画出当前网络流量状况。包括柱状图、图表、线图和饼图四种显示方式。3.2.4 ARP攻击分析模块分比较ARPRequest
11、(ARP请求)和ARPResponse(ARP回应)两种数据包的个数,一般情况下,ARP请求和ARP 回应的个数比例大致为1:1,如果差别较大,就表示网络中很可能存在ARP攻击。发出警报,并向用户标注出可疑的ARP分组。3.2.5解析结果输出模块当用户选择截获的数据包编号后,根据协议解析模块得各个部分相应的进行输出,具体包括: 1. 数据包的基本信息。如捕获时间,数据包大小等2. 数据包使用各层协议的类型3. IP、TCP、UDP、ARP协议的首部字段及其含义4. 协议的数量(统计图方式)5. ARP应答分组和ARP请求分组的个数在选择某一个数据包后,将该数据包具有的所有协议内容组成一棵树,父
12、结点是协议名,子结点是协议具有的字段名,叶子是字段取值。用户选择查看此数据包后将次树呈现到用户窗口。当用户选择保存此数据包时,将该数据包的解析出的信息存入数据库中,以便以后查看。当ARP应答分组的数目和ARP请求分组数目比远远偏离1:1时,我们就可以推测网络中可能存在ARP攻击,发出警告信息。3.2.6用户界面模块该模块的主要功能是对用户界面进行定义,其中包括各个控件的名称、属性值、设置等参数的具体定义,以及相应的表框大小,表框栏目的定义。允许多个窗口同时运行。为了使各个窗口间的监听不相互干扰,因此为每一个监听过程都开辟一个新的线程,在线程中完成从截获数据包到分析数据包到最后将结果显示出来的全部过程。根据网络各层使用的协议绘制饼状统计图,目的是使用户了解局域网各层计算机使用的各种协议所占比重。