第五章TCPIP体系的协议安全2_第1页
第五章TCPIP体系的协议安全2_第2页
第五章TCPIP体系的协议安全2_第3页
第五章TCPIP体系的协议安全2_第4页
第五章TCPIP体系的协议安全2_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TCP安全TCP概述-TCP协议涉及到TCP报文段的结构、TCP连接的建立与终止、TCP数据的传输、流量控制、差错控制、数据重传等内容。连接建立-TCP是面向连接的。在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。建立连接的过程可以确保通信双方在发送用户数据之前已经准备好了传送和接收数据。TCP-面向连接的、端到端的可靠传输服务对于一个要建立的连接,通信双方必须用彼此的初始化序列号SEQ和来自对方成功传输确认的确认序号ACK来同步。(ACK号指明希望收到的下一个字节的编号)习惯上将同步信号写为SYN,应答信号写为ACK。TCP连接建立时的三次握手数据传输在连接建立后,TCP将以全双工方式传送数据,在同一时间主机A与主机B之间可以同时进行TCP报文段的传输,并对接收到的TCP报文段进行确认。当通过三次握手建立了主机A与主机B之间的TCP连接后,现在假设主机A要向主机B发送1800字节的数据,主机B要向主机A发送1500字节的数据。

TCP报文段的传输过程连接终止对于一个已经建立的连接,TCP使用改进的三次握手来释放连接(使用一个带有FIN附加标记的报文段,即在TCP报文段首部中将FIN字段的值置为1)。TCP关闭连接的步骤如图所示。TCP使用改进的三次握手来释放连接TCP的安全问题-BadTCP要实现可靠的数据传输,首先要通过三次握手方式建立主机之间的TCP连接,但在TCP连接过程中很容易出现一个严重的安全问题:TCPSYN泛洪攻击。-拒绝服务攻击DOS(DenyofService)三次握手-当源主机A要建立与目的主机B之间的TCP连接时,源主机A首先发送一个用于同步的SYN报文段(第一次握手)。当目的主机B接收到这个报文段时,在正常情况下目的主机会打开连接端口,并给源主机A返回一个SYN+ACK的报文段(第二次握手)。

在目的主机B的队列中存在大量的“半开放状态”的连接,最终将队列的存储空间填满,并因资源耗尽而瘫痪。TCPSYN泛洪攻击的工作过程

源IP地址是伪造的(spoofed),目的主机无法通过TCP三次握手建立连接。在此期间因为TCP缓存队列已经填满,而拒绝新的连接请求。目的主机一直尝试直至超时(如75秒)。这就是该攻击类型的基本机制。关于TCPSYN欺骗攻击攻击者目的是使目标系统上的TCP连接请求表溢出。从而不能对合法连接请求进行响应。假设目标主机系统上的TCP连接请求表项为256项。目标系统的每次超过时间为30S,运行超时次数为5次。如果一个连接请求超时未有应答,而且超时次数大于5,那么这个请求将会从TCP连接请求表中删除。在没有相关的应对措施和攻击者已经占满了目标系统的TCP连接请求表的情况下,为了能够持续占满目标系统的TCP连接请求表,攻击者应以什么样的速率发送TCP连接请求?扫描-Scan

一种信息收集型攻击、其他攻击的初步Ping扫射(PingSweep)-端口扫描(PortScanning)Ping扫射:运用ping这样的程序探测目标地址,来发现那些目标在启动并运行。防火墙通常阻止ICMP因而可以采用端口扫描:向大范围的主机连接一系列的TCP端口或UDP端口,扫描软件报告它成功的建立了连接的主机所开的端口。慢速扫描:由于一般扫描侦测器的实现是通过监视某个时间里一台特定主机发起的连接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。网络漏洞扫描器-网络入侵者收集信息的重要手段-由于系统管理员的疏忽或缺乏经验,导致旧有的漏洞依然存在-许多人出于好奇或别有用心,不停的窥视网上资源安全评估工具-系统管理员保障系统安全的有效工具扫描器的主要功能-扫描目标主机识别其工作状态(开/关机)-识别目标主机端口的状态(监听/关闭)-识别目标主机系统及服务程序的类型和版本-根据已知漏洞信息,分析系统脆弱点-生成扫描结果报告扫描内容-主机扫描确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。-端口扫描当确定了目标主机可达后,就可以使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。-栈指纹OS识别根据各个OS在TCP/IP协议栈实现上的不同特点,采用黑盒测试方法,通过研究其对各种探测的响应形成识别指纹,进而识别目标主机运行的操作系统。网络扫描的主要技术主机扫描技术端口扫描技术栈指纹OS识别技术主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。常用的传统扫描手段有:ICMPEcho扫描ICMPSweep扫描BroadcastICMP扫描Non-EchoICMP扫描ICMPecho扫描实现原理:Ping的实现机制,在判断在一个网络上主机是否开机时非常有用。向目标主机发送ICMPEchoRequest(type8)数据包,等待回复的ICMPEchoReply包(type0)。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉。ICMP协议

InternetControlMessageProtocolIP的一部分,在IP协议栈中必须实现直接封装在IP数据报中,IP头中协议类型为1通过类型和代码的组合,ICMP报文报告在传输报文的过程中发生的各种情况ICMP协议

InternetControlMessageProtocol用途:网关或者目标机器利用ICMP与源通讯当出现问题时,提供反馈信息用于报告错误特点:其控制能力并不用于保证传输的可靠性它本身也不是可靠传输的并不用来反映ICMP报文的传输情况Echo(0)和EchoReply(8)-检测目的站的可达性与状态-主机或路由器向指定目的站发送ICMPECHO请求报文,请求报文包含一个可选的数据区;-收到ECHO请求报文的机器应立即回应一个ECHO应答报文,应答报文包含了请求报文中数据的拷贝-标识符:标识一个会话,例如,用进程ID-序号:可能这样用:每个请求增1Ping程序Ping:PacketInternetGroper–用来判断远程设备可访问性最常用的方法(网络层)–原理:发送ICMPEcho消息,然后等待ICMPEchoReply消息优点:简单,系统支持缺点:很容易被防火墙限制可以通过并行发送,同时探测多个目标主机,以提高探测效率(ICMPSweep扫描)。-注意:ping仅仅是判断在网络层的连通性;而防火墙可以过来ping操作那么我们可以判断主机的存活与否?检查主机存活的层次可以从不同层去探测网络的存活。-ARP协议-TCP协议等作业:分析扫描器AngryIPScanner或IPSCAN工作原理。即用Sniffer抓包,看本机在运行该程序扫描时发出什么样的报文。简要描述。BroadcastICMP扫描实现原理:将ICMP请求包的目标地址设为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机。缺点:只适合于UNIX/Linux系统,Windows会忽略这种请求包;这种扫描方式容易引起广播风暴Non-EchoICMP扫描一些其它ICMP类型包也可以用于对主机或网络设备的探测,如:StampRequest(Type13)Reply(Type14)InformationRequest(Type15)Reply(Type16)AddressMaskRequest(Type17)Reply(Type18)主机扫描技术-高级技术防火墙和网络过滤设备常常导致传统探测手段变得无效。为了突破这种限制,必须采用一些非常规的手段,利用ICMP协议提供网络间传送错误信息的手段,往往可以更有效的达到目的:-异常的IP包头-在IP头中设置无效的字段值-错误的数据分片-通过超长包探测内部路由器-反向映射探测异常的IP包头向目标主机发送包头错误的IP包,目标主机或过滤设备会反馈ICMPParameterProblemError信息。常见的伪造错误字段为HeaderLengthField和IPOptionsField。根据RFC1122的规定,主机应该检测IP包的VersionNumber、Checksum字段,路由器应该检测IP包的Checksum字段。不同厂家的路由器和操作系统对这些错误的处理方式不同,返回的结果也各异。如果结合其它手段,可以初步判断目标系统所在网络过滤设备的ACL。反向映射探测该技术用于探测被过滤设备或防火墙保护的网络和主机。通常这些系统无法从外部直接到达,但是我们可以采用反向映射技术,通过目标系统的路由设备进行有效的探测。当我们想探测某个未知网络内部的结构时,可以构造可能的内部IP地址列表,并向这些地址发送数据包。当对方路由器接收到这些数据包时,会进行IP识别并路由,对不在其服务的范围的IP包发送ICMPHostUnreachable或ICMPTimeExceeded错误报文,没有接收到相应错误报文的IP地址会可被认为在该网络中。当然,这种方法也会受到过滤设备的影响。端口扫描技术当确定了目标主机可达后,就可以使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。端口扫描技术主要包括以下三类:开放扫描会产生大量的审计数据,容易被对方发现,但其可靠性高;隐蔽扫描能有效的避免对方入侵检测系统和防火墙的检测,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息;半开放扫描隐蔽性和可靠性介于前两者之间。常用的端口扫描技术

-TCPconnect()扫描-最基本的TCP扫描-原理就是调用SOCKETAPI(套接字应用程序接口)中的connect()直接向远程机器发送连接请求,并通过套接字是否能建立连接来辨别其端口的状态。-如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。-不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。-这种方法的缺点是容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。开放性,不隐蔽常用的端口扫描技术

-TCPSYN扫描

-“半开放”扫描-这是因为扫描程序不必要打开一个完全的TCP连接。-扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)目标返回SYN|ACK,表示端口处于侦听状态。目标返回RST,表示端口没有处于侦听态。-如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。-这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。半开放,比较隐蔽隐蔽扫描技术

-TCPFIN扫描-有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。-FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。(基于Unix的TCP/IP协议栈产生影响)-这种方法和系统的实现有一定的关系。有的系统(Windows)不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且这种方法在区分Unix和Windows时,是十分有用的。

隐蔽隐蔽扫描技术

-TCP间接扫描实现原理:利用第三方的IP(欺骗主机)来隐藏真正扫描者的IP。由于扫描主机会对欺骗主机发送回应信息,所以必须监控欺骗主机的IP行为,从而获得原始扫描的结果。扫描主机通过伪造第三方主机IP地址向目标主机发起SYN扫描,并通过观察其IP序列号的增长规律获取端口的状态(NMAP的idle扫描)优点:隐蔽性好缺点:对第三方主机的要求较高隐蔽扫描技术-TCPXmasTree扫描FINURG

PUSH分组发送给目标端口;目标系统应该向所有关闭端口回送RST。-TCPNull扫描该技术关闭所有的标识;目标系统应该向所有关闭端口回送RST。RFC793端口扫描技术

-UDPICMP端口不能到达扫描这种方法与以上方法的区别是使用UDP协议。由于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。-But许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。-UDP和ICMP错误都不保证能到达,因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。同样,这种扫描方法需要具有root权限。分段扫描实现原理:并不直接发送TCP探测数据包,是将数据包分成两个较小的IP段。这样就将一个TCP头分成好几个数据包,从而包过滤器就很难探测到。优点:隐蔽性好,可穿越防火墙缺点:可能被丢弃;某些程序在处理这些小数据包时会出现异常。栈指纹OS识别技术根据各个OS在TCP/IP协议栈实现上的不同特点,采用黑盒测试方法,通过研究其对各种探测的响应形成识别指纹,进而识别目标主机运行的操作系统。根据采集指纹信息的方式,又可以分为主动扫描和被动扫描两种方式。Ping的结果-TTL值可以判断0S类型LINUX64WIN2K/NT128WINDOWS系列32UNIX系列255修改默认TTL值被动扫描通过Sniff收集数据包,再对数据包的不同特征(TCPWindow-size、IPTTL、IPTOS、DF位等参数)进行分析,来识别操作系统。被动扫描基本不具备攻击特征,具有很好的隐蔽性,但其实现严格依赖扫描主机所处的网络拓扑结构;和主动探测相比较,具有速度慢、可靠性不高等缺点。主动扫描采用向目标系统发送构造的特殊包并监控其应答的方式来识别操作系统类型。主动扫描具有速度快、可靠性高等优点,但同样严重依赖于目标系统网络拓扑结构和过滤规则。FIN探测:发送一个FIN包给一个打开的端口,一般的行为是不响应,但某些实现例如MSWindows,BSDI,CISCO,HP/UX,MVS,和IRIX发回一个RESET。BOGUS标记探测(QUESO):设置一个未定义的TCP"标记"(64或128)在SYN包的TCP头里。Linux机器到2.0.35之前在回应中保持这个标记。TCPISN取样:找出当响应一个连接请求时由TCP实现所选择的初始化序列数式样。这可分为许多组例如传统的64K(许多老UNIX机器),随机增量(新版本的Solaris,IRIX,FreeBSD,DigitalUNIX,Cray,等),真“随机”(Linux2.0.*,OpenVMS,新的AIX,等),Windows机器(和一些其他的)用一个“时间相关”模型,每过一段时间ISN就被加上一个小的固定数不分段位:许多操作系统开始在送出的一些包中设置IP的"Don'tFragment"位。TCP初始化窗口:检查返回包的窗口大小。如queso和nmap保持对窗口的精确跟踪因为它对于特定OS基本是常数。ACK值:不同实现中一些情况下ACK域的值是不同的。例如,如果你送了一个FIN|PSH|URG到一个关闭的TCP端口。大多数实现会设置ACK为你的初始序列数,而Windows会送给你序列数加1。ICMP错误信息终结:一些操作系统跟从限制各种错误信息的发送率。例如,Linux内核限制目的不可达消息的生成每4秒钟80个。测试的一种办法是发一串包到一些随机的高UDP端口并计数收到的不可达消息。ICMP消息引用:ICMP错误消息可以引用一部分引起错误的源消息。对一个端口不可达消息,几乎所有实现只送回IP请求头外加8个字节。然而,Solaris送回的稍多,而Linux更多。SYN洪水限度:如果收到过多的伪造SYN数据包,一些操作系统会停止新的连接尝试。许多操作系统只能处理8个包。参考:NmapRemoteOSDetection/nmap/nmap-fingerprinting-article.html

NMAP-最好的端口探测工具下载页面:http:///download.html

帮助文档:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论