1、正常情况下,一个网络接口应该只响应两种数据帧:与自己硬件地址相匹配的数据帧;向所有计算机的广播数据帧。在实际系统中由网卡来完成数据的收发。网卡接收到传来的数据,网卡内的程序接收数据帧的目的MAC 地址,然后根据网卡驱动程序设置的接收模式判断:认为应该接收,就在接收后产生中断信号通知CPU;认为不该接收就丢掉不管。CPU 得到中断信号产生中断,操作系统就根据网卡驱动程序设置的网卡中断程序地址调用驱动程序接收数据。驱动程序接收数据后,放入信号堆栈让操作系统处理。对于网卡来说一般有4种接收模式:广播方式:该模式下的网卡能够接收网络中的广播信息。组播方式:该模式下的网卡能够接收组播数据。直接方式:该模
2、式下只有目的网卡才能接收数据。混杂模式:该模式下的网卡能够接收一切通过它的数据。所以要想实现对网络的数据进行获取分析,首先应该把网卡设置成混杂模式。1.2数据获取数据获取主要有两种方法:通过数据链路层获取和通过网络层获取。(1通过链路层获取在TCP/IP的体系结构中,数据链路层和物理层共同构成网络接口层,作为TCP/IP 的第一层。在这一层传输的数据格式是以太帧。获取以太帧目前可以通过LibPcap和WinPcap两种捕包工具。LibPcap是一种与系统无关,采用分组捕获机制的分组捕获函数库。使用LibPcap编写的程序可自由的跨平台使用。而WinPcap 是LibPcap的Windows 版
3、本,集成于Windows95,98,ME,NT,2000和XP 操作系统的设备驱动程序,可以从网卡捕获或者发送原始数据,同时能够过滤并且存储数据包。(2通过网络层获取通过网络层获取数据主要借助原始套接字。套接字是网络应用编程接口。套接字有三类:流式套接字、数据报套接字和原始套接字。前两种套接字只能访问到传输层。而原始套接字则可以获取ICMP、TCP、UDP 等数据包。在Windows 环境下可用Winsock来实现。2相关协议介绍2.1IP 协议IP 的基本功能:寻址、路由选择和数据包的分割和组装。它不提供可靠的传输服务。依据IP 报文格式在程序中声明IP 首部:typedefstruct_I
4、PHEADERunsignedcharheader_len:4;unsignedcharversion:unsignedchartos;unsignedshorttotal_len;unsignedshortident;unsignedshortflags;unsignedcharttl;作者简介:卢建华(1982-,女,西安电子科技大学2006级硕士研究生,研究方向:计算机应用。蒋明(1958-,男,西安电子科技大学高工,硕士生导师。陈淑芳(1970-,女,山西省朔州市平鲁区职业中学讲师。unsignedcharproto;unsignedshortchecksum;unsignedints
5、ourceIP;unsignedintdestIP;IPHEADER;2.2TCP 协议TCP 提供全双工和可靠交付的服务。该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。依据T C P 报文格式在程序中声明T C P 报头:structTCPPacketHeadWORDSourPort;WORDDestPort;DWORDSeqNo;DWORDAckNo;BYTEHLen;BYTEFlag;WORDWndSize;WORDChkSum;WORDUrgPtr;2.3UDP协议UDP 是一个无连接协议,传输数据之前源端和终端不建立连接,也不使用拥塞控制、不保证可靠交付。依据U
6、DP 报文格式在程序中声明U D P 报头:structUDPPacketHeadWORDSourPort;WORDLen;2.4ICMP协议ICMP 是TCP/IP 协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。依据ICMP 报文格式在程序中声明I C M P 报头:structICMPPacketHeadBYTEType;BYTECode;WORDId;/增加了标识变量WORDSeq;/增加了序号变量3具体实现系统的开发环境是VC+6.0,利用RAWSOCKET 套接字来实现包捕获功能。3.1包捕获模块的实现(1m_s
7、=socket(AF_INET,SOCK_RAW,IPPROTO_IP ;/创建原始套接字(2setsockopt(m_s,SOL_SOCKET,SO_RCVTIMEO,(constchar*&rcvtimeo,sizeof(rcvtimeo;/设置IP头操作选项,超时接收选择(3SOCKADDR_INsa;sa.sin_family=AF_INET;sa.sin_port=htons(6000;/设置端口号sa.sin_addr.s_addr=m _iphostsource;/设置IP地址bind(m_s,(PSOCKADDR&sa,sizeof(sa;/将原始套接字绑定到本地网卡(4设置套
8、接字接收模式,并启动新的接收线程thread-FuncIf(SOCKET_ERROR!=WSAIoctl(m_s,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen,&dwBufferLen,sizeof (dwBufferLen,&dwBytesReturned,NULL,NULL其中threadFunc 方法的实现是:UINTthreadFunc(LPVOIDpParamPeekMessage(&msg,NULL,WM_USER,WM_USER,P M _N O R E M O V E ;pDlg-m_threadID=GetCurrentThre
9、adId(;/取得线程的ID 号While(TRUE/循环接收消息if(PeekMessage(&msg,0,WM_CLOSE,WM_CLOSE,PM_NOREMOVEclosesocket(pDlg-m_s;/检测W M _C L O S E 消息break;memset(buf,0,sizeof(buf;intiRet=recv(pDlg-m_s,buf,sizeof(buf,0;/从套接字接收数据/分析模块3.2包分析模块的实现首先根据先前定义各协议的报头,解析IP 报头内容,进而确定协议类型,T C P、U D P 或I C M P,之后再分别进行相应的报头解析。部分程序为:定义一个I
10、P头指针pIpHeader,利用指针的移动来实现包的解析。然后依据IP 数据包结构,分别读取IP 数据包的各项信息。根据proto 字段进一步确定其为TCP 数据包、UDP 数据包还是I C M P 数据包。下转27页Router(config#ipaccess-listextendedinternal_ACL Router(config-ext-nacl#permittcpanyhost192.1.2.1eqsmtp Router(config-ext-nacl#permittcpanyhost192.1.2.1eqpop Router(config-ext-nacl#denytcpanya
11、nyeppop Router(config-ext-nacl#denytcpanyanyeqsmtp Router(config-ext-nacl#permitipanyany Router(config-ext-nacl#exitRouter(config#ipinspectnameinternal_CBACftp Router(config#ipinspectnameinternal_CBAChttp Router(config#ipinspectnameinternal_CBACtcp Router(config#ipinspectnameinternal_CBACudp Router(
12、config#ipinspectnameinternal_CBACicmp Router(config#interfacee thernet0Router(config-if#ipaccess-groupinternal_ACLin Router(config-if#ipinspectinternal_CBACin(2在全局模式下,分别设置TCP 的建立时间为15秒,TCP 的空闲超时为60秒,UDP 的空闲超时为20秒,半开连接阀值为400,1分钟连接尝试次数为400,主机最大半开连接数为250。Router(config#ipinspecttcpsynwait-time15Router(c
13、onfig#ipinspecttcpidle-time60Router(config#ipinspectudpidle-time20Router(config#ipinspectmax-incompletehigh400Router(config#ipinspectmax-incompletelow300Router(config#ipinspectone-minutehigh400Router(config#ipinspectone-minutelow300Router(config#ipinspecttcpmax-incompletehost250block-time04结束语充分应用CB
14、AC 的访问控制特性,能够使我们在一定程度上较好的防御特定的DoS 风暴攻击。但应该注意,在修改超时值和连接阀值时,要考虑网络规模与具体应用,监控C B A C 及网络活动日志,确保没有因为参数设置影响正常的网络应用。另外,我们还可以结合CISCOIOS的ACL、入侵检测系统、日志和审查功能以及应用层过滤技术等,检测和防御更多类型的网络攻击,做好网络安全工作。应用CBAC 也存在一些局限性,如流量审查会增加路由器的负荷,不能审查加密的数据包,以及有限的应用层审查等。参考文献1李德全.拒绝服务攻击M.北京:电子工业出版社.2007.2W.RchardStevens.TCP/IPIllustrat
15、edVolume1:TheProtocols M.范建华等译.北京:机械工业出版社.2000.3RichardA.Deal.陈克忠译.CiscoRouterFirewallSecurityM.北京:人民邮电出版社.2000.HdrLen=(pIpHeader-header_len*4;m=pIpHeader-proto;switch(mcaseIPPROTO_TCP:pTCPHead=(structTCPPacketHead*(buf+HdrLen;break;caseIPPROTO_UDP:pUDPHead=(structUDPPacketHead*caseIPPROTO_ICMP:pICM
16、PHead=(structICMPPacketHead*d e f a u l t :break;根据不同的选择执行不同的程序,并把最后结果显示在对话框中。4总结本文主要实现的功能是对网络上的数据包进行捕获及分析。即首先通过捕包模块把经过主机网卡的数据包截获,并存储在缓冲存储器中,然后通过分析模块对它进行分析,从而得到网络层和传输层协议的报头内容。当然这个系统也有不完善的地方,如由于捕获到的数据包头不包含有帧信息,因此不能接收到与IP 同属网络层的其它数据包,如ARP 数据包、R A R P 数据包等。1谢希仁.计算机网络M.北京:清华大学出版社.2001.2韩新宇,章惠君.Windows下实现网络数据包捕获J.维普资讯网.3JennyJ.He,DimitraSimeonidou.FlowRoutinganditsPerfor-manceAnalysisinOpticalIPNetworks.PhotonicNetwork Communications.2001.上接17页
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1