




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP/IP技术课程论文基于C+的ICMP网络嗅探器协议编程摘要:随着Internet网络的普及与发展,各大专院校、集团公司和企事业单位等都已组建自己的内联网(Intranet)。内联网的路由器和交换机设备的正常工作是保证其网络通信正常的基础。因此,如何在最短的的时间内得知网络所有设备的工作状态是极其关键的。本文提出了利用ICMP协议技术的方法。以最快的方式批次的监测整个网络设备,极大的提高了网络管理效率。关键词: ICMP协议 网络检测ICMP protocol network sniffer-based programming in C+Abstract: with the popularization and development of the Internet network, the various tertiary institutions, group companies and enterprises have already set up their own intranet (Intranet). Intranet routers and switches the device to work properly is the basis for securing their network traffic to normal. Therefore, how to learn in the shortest possible time all network devices work are extremely Qiang Bullock. This paper presents method of using ICMP protocol technology. Monitoring is the fastest way to batches of the whole network equipment, greatly improving the efficiency of network management.Keywords: ICMP protocol Network detection1 引言1.1 应用背景网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息。可见,嗅探器实际是一把双刃剑。虽然网络嗅探器技术被黑客利用后会对网络安全构成一定的威胁,但嗅探器本身的危害并不是很大,主要是用来为其他黑客软件提供网络情报,真正的攻击主要是由其他黑软来完成的。而在网络安全方面,网络嗅探手段可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。权衡利弊,有必要对网络嗅探器的实现原理进行深入的了解。1.2 设备简介数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,存在安全方面的问题。每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式,那么它就可以捕获网络上所有的数据包和帧。其工作原理如图1所示。原理介绍:首先要创建一个套接字,然后把网卡设置为混杂模式(网卡设为混杂模式,就可以接收所有的网络数据包,无论其目的地址是否等于自已的地址,都一并接收),接着就可以接收数据包了,收到数据包后,就可以根据数据包的类型而判定它是哪种包,最后再做分析,如果没有收到数据包的话,就直接结束了。图11.3 攻击描述“诱骗端口扫描”即Intemet上变化很大的源地址对于同一系列端口的扫描。在这种变化很大的源地址中,有真正的攻击者的地址,也有无辜的被冒用的地址。UDP是无连接的、不可靠的传输层协议,与面向连接的、可靠的TCP不同,被扫描主机上打开的端口对扫描探测并不回应一个确认。然而,在攻击者A向一被攻击主机B上的未打开的UDP端口发送一个数据包时,被攻击主机B会向攻击者A返回一个ICMP-PORT-UNREACH错误(type=3,code=3的ICMP报文)。于是,攻击者A就能利用此发现哪个端口是关闭的。如果许多无辜者在短时间内收到大量来自同一地址的不同端口的ICMP-PoRBIINREAcH错误包;同时,攻击者也隐秘地在短时间内收到大量来自同一地址的不同端口的ICMP-PORT-UNREACH错误包,这样便实现了“诱骗端口扫描”。对网卡处监听到的这类数据包进行分析可知,以太网帧中封装了数据报,数据报中封装了ICMP报文,ICMP报文中又封装了UDP数据报。TCP/IP协议规定,传输层的端口标识上层的服务类型,由16位(两个字节)组成,因此端口的范围是065 535。UDP数据包格式如图2所示。图22协议内容2.1协议简介ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP与我们息息相关。在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。我们在网络中经常会使用到ICMP协议。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。2.2协议主要内容ICMP消息内容主要包括:a)目的不可达消息用来报告子网或路由器没法找到目的地。b)超时消息用来报告分组由于TTL为0而丢弃。c)参数问题消息表明头部字段不正确,可能是发送主机或者路由器软件有问题。d)源抑制消息希望主机能够降低发送的速度。e)重定向消息在路由器发现可能出现路由错误时发送。f)回声请求和应答消息测试目的地是否可达且正常运作。g)时间戳请求和应答与回声请求消息类似,只是要记录消息到达和发出的时间,用于测试网络性能。2.3 ICMP协议存在的不足的解决办法ICMP非常容易被用于攻击网络上的路由器和主机。虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。设置ICMP数据包处理规则的方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。具体设置如下:a)在Windows 2000 Server中设置ICMP过滤Windows 2000 Server提供了“路由与远程访问”服务,但是默认情况下是没有启动的,因此首先要启动它:点击“管理工具”中的“路由与远程访问”,启动设置向导。在其中选择“手动配置服务器”项,点击下一步按钮。稍等片刻后,系统会提示“路由和远程访问服务现在已被安装。要开始服务吗?”,点击是按钮启动服务。服务启动后,在计算机名称的分支下会出现一个“IP路由选择”,点击它展开分支,再点击“常规”,会在右边出现服务器中的网络连接(即网卡)。用鼠标右键点击你要配置的网络连接,在弹出的菜单中点击“属性”,会弹出一个网络连接属性的窗口,有两个按钮,一个是“输入筛选器”(指对此服务器接受的数据包进行筛选),另一个是“输出筛选器”(指对此服务器发送的数据包进行筛选),这里应该点击输入筛选器 按钮,会弹出一个“添加筛选器”窗口,再点击添加按钮,表示要增加一个筛选条件。在“协议”右边的下拉列表中选择“ICMP”,在随后出现的“ICMP类型”和“ICMP编码”中均输入“255”,代表所有的ICMP类型及其编码。ICMP有许多不同的类型(Ping就是一种类型),每种类型也有许多不同的状态,用不同的“编码”来表示。因为其类型和编码很复杂,这里不再叙述。点击确定按钮返回“输入筛选器”窗口,此时会发现“筛选器”列表中多了一项内容。点击确定按钮返回“本地连接”窗口,再点击确定按钮,此时筛选器就生效了,从其他计算机上Ping这台主机就不会成功了。b) 用防火墙设置ICMP过滤现在许多防火墙在默认情况下都启用了ICMP过滤的功能。如果没有启用,只要选中“防御ICMP攻击”、“防止别人用ping命令探测”就可以了。3 实验代码及运行结果#include stdafx.h#include #include #include #include #pragma comment( lib, ws2_32.lib )using namespace std;struct IPHeader unsigned char mHeaderLengthAndVersion; unsigned char mTypeOfService; unsigned short mTotalLength; unsigned short mIdentifier; unsigned short mFragment; unsigned char mTTL; unsigned char mProtocolType; unsigned short mCheckSum; unsigned int mSourceIP; unsigned int mDestIP;int getHeaderLength() const return mHeaderLengthAndVersion & 0xf; ;struct TCPHeader unsigned short mSourcePort; unsigned short mDestPort; unsigned int mSequence; unsigned int mAck; unsigned char mLengthAndReserve; unsigned char mFlags; unsigned short mWindow; unsigned short mCheckSum; unsigned short mUrgent;struct UDPHeader unsigned short mSourcePort; unsigned short mDestPort; unsigned short mLength; unsigned short mCheckSum;struct ICMPHeader unsigned char mType; unsigned char mCode; unsigned short mCheckSum; unsigned short mID; unsigned short mSequence; unsigned long mTimeStamp;void ProcessIPPacket( char*, int );void ProcessTCPPacket( char*, int );void ProcessUDPPacket( char*, int );void main( ) WSADATA data; WSAStartup( MAKEWORD( 2, 0 ), &data ); SOCKET rawSock = socket( AF_INET, SOCK_RAW, IPPROTO_IP ); char name 1024 ;BOOL ICMP(char* hostname)/可传入IP地址字符串或者域名 DWORD timeOut=1000;/设置超时 ULONG hAddr=inet_addr(hostname);/如果是IP地址就直接转换 if(hAddr=INADDR_NONE) hostent* hp=gethostbyname(hostname);/如果是域名就用DNS解析出IP地址 if(hp) memcpy(&hAddr,hp-h_addr_list,hp-h_length);/IP地址 else return false; HANDLE hIp=pIcmpCreateFile(); IP_OPTION_INFORMATION ipoi; memset(&ipoi,0,sizeof(IP_OPTION_INFORMATION); ipoi.Ttl =128;/Time-To-Live unsigned char pSend36;/发送包 memset(pSend,E,32); int repSize=sizeof(ICMP_ECHO_REPLY)+32; unsigned char pReply100;/接收包 ICMP_ECHO_REPLY* pEchoReply=(ICMP_ECHO_REPLY*)pReply; DWORD nPackets=pIcmpSendEcho(hIp,hAddr,pSend,32,&ipoi,pReply,repSize,timeOut);/发送ICMP数据报文 if(pEchoReply-Status!=0)/超时,可能是主机禁用了ICMP 或者目标主机不存在 pIcmpCloseHandle(hIp); return false; pIcmpCloseHandle(hIp); return true; SOCKADDR_IN addr; addr.sin_family = AF_INET; addr.sin_port = htons( 8888 ); memcpy( &addr.sin_addr.S_un.S_addr, ent-h_addr_list 0 , ent-h_length ); bind( rawSock, (PSOCKADDR)&addr, sizeof( addr ) ); DWORD dummy; WSAIoctl( rawSock, SIO_RCVALL, &dummy, sizeof( dummy ), &dummy, sizeof( dummy ), &dummy, NULL , NULL ); for(;) vector vc( 128 * 1024 ); ProcessIPPacket( &vc0, recv( rawSock, &vc0, (int)vc.size(), 0) ); void ProcessIPPacket( char* packet, int size ) IPHeader* header = (IPHeader*)packet; if( header-mProtocolType = IPPROTO_TCP ) ProcessTCPPacket( packet + header-getHeaderLen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青苗班培训总结
- 老年智能机培训
- 防疫歌曲教学课件
- 暖通施工技术试题及答案
- 电气自动化技术专业试题及答案
- 建设银行2025东营市秋招笔试综合模拟题库及答案
- 邮储银行2025金融科技岗笔试题及答案吉林地区
- 邮储银行2025宣城市秋招笔试专业知识题专练及答案
- 2025年3D打印技术的家具制造应用
- 邮储银行2025南通市秋招笔试专业知识题专练及答案
- 泥浆护壁旋挖钻孔灌注桩施工技术交底
- 初中地理跨学科学习实践研究
- 幼儿园常见传染病的预防课件
- GB/T 36287.1-2025轨道交通地面装置直流牵引供电能量利用第1部分:储存系统
- TY/T 3501.5-2024高山滑雪板性能测定第5部分:弯曲振动
- DB42∕T 1496-2019 公路边坡监测技术规程
- 塔拉韦斯特弗《你当像鸟飞往你的山》中英互译
- 工勤技能考试职业道德试题
- 全国2024年10月自学考试财务报表分析(一)试题和答案
- 《红色的天空》话剧剧本
- 2025版地热能钻井服务合同范本3篇
评论
0/150
提交评论