常见的网络攻击方法和防御技术
网络攻击类型
侦查攻击:
搜集网络存在的弱点,以进一步攻击网络。分为扫描攻击和网络监听。
扫描攻击:端口扫描,主机扫描,漏洞扫描。
网络监听:主要指只通过软件将使用者计算机网卡的模式置为混杂模式,从而查看通过此网络的重要明文信息。
端口扫描:
根据 TCP 协议规范,当一台计算机收到一个TCP 连接建立请求报文(TCP SYN) 的时候,做这样的处理:
1、如果请求的TCP端口是开放的,则回应一个TCP ACK 报文, 并建立TCP连接控制结构(TCB);
2、如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。
相应地,如果IP协议栈收到一个UDP报文,做如下处理:
1、如果该报文的目标端口开放,则把该UDP 报文送上层协议(UDP ) 处理, 不回应任何报文(上层协议根据处理结果而回应的报文例外);
2、如果该报文的目标端口没有开放,则向发起者回应一个ICMP 不可达报文,告诉发起者计算机该UDP报文的端口不可达。
利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TC 或UDP端口是开放的。
过程如下:
1、发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);
2、如果收到了针对这个TCP 报文的RST 报文,或针对这个UDP 报文 的 ICMP 不可达报文,则说明这个端口没有开放;
3、相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP 端口没有开放) 。
这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。
主机扫描即利用ICMP原理搜索网络上存活的主机。
网络踩点(Footprinting)
攻击者事先汇集目标的信息,通常采用whois、Finger等工具和DNS、LDAP等协议获取目标的一些信息,如域名、IP地址、网络拓扑结构、相关的用户信息等,这往往是黑客入侵之前所做的第一步工作。
扫描攻击
扫描攻击包括地址扫描和端口扫描等,通常采用ping命令和各种端口扫描工具,可以获得目标计算机的一些有用信息,例如机器上打开了哪些端口,这样就知道开设了哪些服务,从而为进一步的入侵打下基础。
协议指纹
黑客对目标主机发出探测包,由于不同操作系统厂商的IP协议栈实现之间存在许多细微的差别(也就是说各个厂家在编写自己的TCP/IP 协议栈时,通常对特定的RFC指南做出不同的解释),因此各个操作系统都有其独特的响应方法,黑客经常能确定出目标主机所运行的操作系统。
常常被利用的一些协议栈指纹包括:TTL值、TCP窗口大小、DF 标志、TOS、IP碎片处理、 ICMP处理、TCP选项处理等。
信息流监视
这是一个在共享型局域网环境中最常采用的方法。
由于在共享介质的网络上数据包会经过每个网络节点, 网卡在一般情况下只会接受发往本机地址或本机所在广播(或多播)地址的数据包,但如果将网卡设置为混杂模式(Promiscuous),网卡就会接受所有经过的数据包。
基于这样的原理,黑客使用一个叫sniffer的嗅探器装置,可以是软件,也可以是硬件)就可以对网络的信息流进行监视,从而获得他们感兴趣的内容,例如口令以及其他秘密的信息。
访问攻击
密码攻击:密码暴力猜测,特洛伊木马程序,数据包嗅探等方式。中间人攻击:截获数据,窃听数据内容,引入新的信息到会话,会话劫持(session hijacking)利用TCP协议本身的不足,在合法的通信连接建立后攻击者可以通过阻塞或摧毁通信的一方来接管已经过认证建立起来的连接,从而假冒被接管方与对方通信。
拒绝服务攻击
伪装大量合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务响应。
要避免系统遭受DoS 攻击,从前两点来看,网络管理员要积极谨慎地维护整个系统,确保无安全隐患和漏洞;
而针对第四点第五点的恶意攻击方式则需要安装防火墙等安 全设备过滤DoS攻击,同时强烈建议网络管理员定期查看安全设备的日志,及时发现对系统存在安全威胁的行为。
常见拒绝服务攻击行为特征与防御方法
拒绝服务攻击是最常见的一类网络攻击类型。
在这一攻击原理下,它又派生了许多种不同的攻击方式。
正确了解这些不同的拒绝攻击方式,就可以为正确、系统地为自己所在企业部署完善的安全防护系统。
入侵检测的最基本手段是采用模式匹配的方法来发现入侵攻击行为。
要有效的进行反攻击,首先必须了解入侵的原理和工作机理,只有这样才能做到知己知彼,从而有效的防止入侵攻击行为的发生。

下面我们针对几种典型的拒绝服务攻击原理进行简要分析,并提出相应的对策。
死亡之Ping( Ping of death)攻击
由于在早期的阶段,路由器对包的最大大小是有限制的,许多操作系统TCP/IP栈规定ICMP包的大小限制在64KB 以内。
在对ICMP数据包的标题头进行读取之后,是根据该标题头里包含的信息来为有效载荷生成缓冲区。
当大小超过64KB的ICMP包,就会出现内存分配错误,导致TCP/IP堆栈崩溃,从而使接受方计算机宕机。
这就是这种“死亡之Ping”攻击的原理所在。
根据这一攻击原理,黑客们只需不断地通过Ping命令向攻击目标发送超过64KB的数据包,就可使目标计算机的TCP/IP堆栈崩溃,致使接受方宕机。
防御方法:
现在所有的标准TCP/IP协议都已具有对付超过64KB大小数据包的处理能力,并且大多数防火墙能够通过对数据包中的信息和时间间隔分析,自动过滤这些攻击。
Windows 98 、Windows NT 4.0(SP3之后)、Windows 2000/XP/Server 2003 、Linux 、Solaris和Mac OS等系统都已具有抵抗一般“Ping of death ”拒绝服务攻击的能力。
此外,对防火墙进行配置,阻断ICMP 以及任何未知协议数据包,都可以防止此类攻击发生。
泪滴( teardrop)攻击
对于一些大的IP数据包,往往需要对其进行拆分传送,这是为了迎合链路层的MTU(最大传输单元)的要求。
比如,一个6000 字节的IP包,在MTU为2000的链路上传输的时候,就需要分成三个IP包。
在IP 报头中有一个偏移字段和一个拆分标志(MF)。
如果MF标志设置为1,则表面这个IP包是一个大IP包的片断,其中偏移字段指出了这个片断在整个 IP包中的位置。
例如,对一个6000字节的IP包进行拆分(MTU为2000),则三个片断中偏移字段的值依次为:0,2000,4000。
这样接收端在全部接收完IP数据包后,就可以根据这些信息重新组装没正确的值,这样接收端在收后这些分拆的数据包后就不能按数据包中的偏移字段值正确重合这些拆分的数据包,但接收端会不断偿试,这样就可能致使目标计算朵操作系统因资源耗尽而崩溃。
泪滴攻击利用修改在TCP/IP 堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。
IP分段含有指示该分段所包含的是原包的哪一段的信息,某些操作系统(如SP4 以前的 Windows NT 4.0 )的TCP/IP 在收到含有重叠偏移的伪造分段时将崩溃,不过新的操作系统已基本上能自己抵御这种攻击了。
防御方法:
尽可能采用最新的操作系统,或者在防火墙上设置分段重组功能,由防火墙先接收到同一原包中的所有拆分数据包,然后完成重组工作,而不是直接转发。
因为防火墙上可以设置当出现重叠字段时所采取的规则。
TCP SYN 洪水(TCP SYN Flood)攻击
TCP/IP栈只能等待有限数量ACK(应答)消息,因为每台计算机用于创建TCP/IP连接的内存缓冲区都是非常有限的。
如果这一缓冲区充满了等待响应的初始信息,则该计算机就会对接下来的连接停止响应,直到缓冲区里的连接超时。
TCP SYN 洪水攻击正是利用了这一系统漏洞来实施攻击的。
攻击者利用伪造的IP地址向目标发出多个连接(SYN)请求。
目标系统在接收到请求后发送确认信息,并等待回答。
由于黑客们发送请示的IP地址是伪造的,所以确认信息也不会到达任何计算机,当然也就不会有任何计算机为此确认信息作出应答了。
而在没有接收到应答之前,目标计算机系统是不会主动放弃的,继续会在缓冲区中保持相应连接信息,一直等待。
当达到一定数量的等待连接后,缓区部内存资源耗尽,从而开始拒绝接收任何其他连接请求,当然也包括本来属于正常应用的请求,这就是黑客们的最终目的。
防御方法:
在防火墙上过滤来自同一主机的后续连接。
不过“SYN洪水攻击”还是非常令人担忧的,由于此类攻击并不寻求响应,所以无法从一个简单高容量的传输中鉴别出来。
防火墙的具体抵御TCP SYN 洪水攻击的方法在防火墙的使用手册中有详细介绍。
Land 攻击
这类攻击中的数据包源地址和目标地址是相同的,当操作系统接收到这类数据包时,不知道该如何处理,或者循环发送和接收该数据包,以此来消耗大量的系统资源,从而有可能造成系统崩溃或死机等现象。
防御方法:
这类攻击的检测方法相对来说比较容易,因为它可以直接从判断网络数据包的源地址和目标地址是否相同得出是否属于攻击行为。
反攻击的方法当然是适当地配置防火墙设备或包过滤路由器的包过滤规则。
并对这种攻击进行审计,记录事件发生的时间,源主机和目标主机的MAC地址和IP地址,从而可以有效地分析并跟踪攻击者的来源。
Smurf 攻击
这是一种由有趣的卡通人物而得名的拒绝服务攻击。
Smurf攻击利用多数路由器中具有同时向许多计算机广播请求的功能。
攻击者伪造一个合法的IP地址,然后由网络上所有的路由器广播要求向受攻击计算机地址做出回答的请求。
由于这些数据包表面上看是来自已知地址的合法请求,因此网络中的所有系统向这个地址做出回答,最终结果可导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,这也就达到了黑客们追求的目的了。
这种Smurf攻击比起前面介绍的“Ping of Death ”洪水的流量高出一至两个数量级,更容易攻击成功。
还有些新型的Smurf攻击,将源地址改为第三方的受害者(不再采用伪装的IP地址),最终导致第三方雪崩。
防御方法:
关闭外部路由器或防火墙的广播地址特性,并在防火墙上设置规则,丢弃掉ICMP协议类型数据包。
Fraggle 攻击
Fraggle 攻击只是对Smurf 攻击作了简单的修改,使用的是UDP协议应答消息,而不再是ICMP协议了(因为黑客们清楚 UDP 协议更加不易被用户全部禁止)。
同时Fraggle攻击使用了特定的端口(通常为7号端口,但也有许多使用其他端口实施 Fraggle 攻击的),攻击与Smurf 攻击基本类似,不再赘述。
防御方法:
关闭外部路由器或防火墙的广播地址特性。在防火墙上过滤掉UDP报文,或者屏蔽掉一些常被黑客们用来进Fraggle攻击的端口。
电子邮件炸弹
电子邮件炸弹是最古老的匿名攻击之一,通过设置一台计算机不断地向同一地址发送大量电子邮件来达到攻击目的,此类攻击能够耗尽邮件接受者网络的带宽资源。
防御方法:
对邮件地址进行过滤规则配置,自动删除来自同一主机的过量或重复的消息。
虚拟终端(VTY)耗尽攻击
这是一种针对网络设备的攻击,比如路由器,交换机等。
这些网络设备为了便于远程管理,一般设置了一些TELNET用户界面,即用户可以通过TELNET到该设备上,对这些设备进行管理。
一般情况下,这些设备的TELNET用户界面个数是有限制的。比如,5个或10个等。
这样,如果一个攻击者同时同一台网络设备建立了5个或10个TELNET连接。
这些设备的远程管理界面便被占尽,这样合法用户如果再对这些设备进行远程管理,则会因为TELNET连接资源被占用而失败。
ICMP洪水
正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO 后,会回应一个ICMP ECHO Reply 报文。
而这个过程是需要CPU 处理的,有的情况下还可能消耗掉大量的资源。
比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO 报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。
WinNuke 攻击
NetBIOS 作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享, 进程间通信( IPC),以及不同操作系统之间的数据交换。
一般情况下,NetBIOS 是运行在 LLC2 链路协议之上的,是一种基于组播的网络访问接口。
为了在TCP/IP协议栈上实现NetBIOS ,RFC规定了一系列交互标准,以及几个常用的 TCP/UDP 端口:
139:NetBIOS 会话服务的TCP 端口;
137:NetBIOS 名字服务的UDP 端口;
136:NetBIOS 数据报服务的UDP 端口。
WINDOWS操作系统的早期版本(WIN95/98/NT )的网络服务(文件共享等)都是建立在NetBIOS之上的。
因此,这些操作系统都开放了139端口(最新版本的WINDOWS 2000/XP/2003 等,为了兼容,也实现了NetBIOS over TCP/IP功能,开放了139端口)。
WinNuke 攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文。
但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样WINDOWS操作系统在处理这些数据的时候,就会崩溃。
分片 IP 报文攻击
为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP 分片报文组装起来。
目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文。
这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。
如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时)。
如果攻击者发送了大量的分片报文,就会消耗掉目标计 算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。
T
分段攻击。利用了重装配错误,通过将各个分段重叠来使目标系统崩溃或挂起。
欢迎关注的我的头条号,私信交流,学习更多的网络技术!
网络攻击技术论文
目前,网络攻击方法层出不穷,而且随着技术的不断发展,网络攻击日益呈现自动化、低门槛的趋势,黑客、间谍常采用的网络攻击技术。下面是由我整理的网络攻击技术论文,谢谢你的阅读。
网络攻击技术论文篇一
浅谈网络中黑客攻击技术
【摘 要】虽然计算机网络安全已被各国计算机专家所重视,但由于计算机网络具有联结形式多样性、终端分布不均匀性和计算机网络的开放性、互连性等特征,致使计算机网络易受黑客、病毒、恶意软件和其他不轨行为的攻击。
【关键词】网络;黑客攻击;防御技术
一、黑客攻击最常见的八大技术
(一)利用硬件的黑客技术
在BIOS芯片中植入病毒木马,让目前的防火墙、防毒软件都失效; 针对主机板上的电磁辐射进行信息获取的技术……仅仅使用软件非法侵入的方式可能已经落伍,新时期的黑客技术应包括破解硬件本身。2012年微软公司曾经对硬件黑客侵犯其Xbox设备的行为采取法律与技术措施。索尼公司的PS2游戏机也成为一些专门修改芯片的黑客目标,其核心技术Sony的记忆棒被破解。美国苹果公司新推出的iPhone 3Gs的加密系统也被硬件黑客破解,造成磁盘文件数据可以被实时偷走。
(二)利用逆向工程对软件执行码直接进行分析,可被看做是“开发周期的逆行”
实际应用中逆向工程主要分成两种情况:第一种,软件的源代码可用,但描述文档不再适用或者丢失;第二种,软件没有可用的源代码,任何能找到它的源代码的努力都被称为逆向工程。软件的逆向工程实现方法有:通过观察信息交换进行分析、使用反汇编器进行反汇编和使用反编译器进行反编译等。黑客则利用反逆向工程的方法保护自己的恶意代码。
(三)利用社会工程学
因其乃是定位在计算机信息安全工作链的一个最脆弱的环节,即“人”这个环节上。“人”这个环节在整个信息安全体系中是非常重要的,这一点信息安全的脆弱性是普遍存在的,它不会因为系统平台、软件、网络或者是设备的新旧等因素不相同而有所差异。无论是在物理上,还是在虚拟的信息系统上,任何一个可以访问系统某个部分的人都有可能构成潜在的安全风险与威胁。任何细微的信息都可能会被黑客用做“补给资料”来运用,使其得到其他的信息。
(四)利用0day
0day通常是指没有公布补丁的漏洞,或者是还没有被漏洞发现者公布出来的漏洞利用工具。一般,带有0day名字的黑客软件指的是软件公布时对应的漏洞还没有打补丁。0day漏洞的利用程序对于网络安全具有巨大威胁,因此0day不但是黑客的最爱,掌握多少0day也成为评价黑客技术水平的一个重要参数。
(五)利用Rootkit软件
Rootkit已被大多数的防毒软件归类为具危害性的恶意软件,Rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先采用密码猜测或者密码强制破译的方式获得系统的访问权限,进入系统后,再通过某些安全漏洞获得系统的root权限。攻击者会在侵入的主机中安装rootkit,并经常通过rootkit的后门来检查系统是否有其他的用户登录,如果只有攻击者登录,攻击者就开始着手清理日志中的有关信息。攻击者通过rootkit的嗅探器获得其他系统的用户和密码之后,就会利用这些信息侵入其他的系统。
(六)利用痕迹销毁与反取证技术
计算机取证将犯罪者留在计算机中的“痕迹”作为证据提供给法庭。可以用做计算机取证的信息源很多,如系统日志、防火墙与入侵检测系统的工作记录、反病毒软件日志、系统审计记录、网络监控流量、电子邮件、操作系统文件、数据库文件和操作记录、硬盘交换分区、软件设置参数和文件、完成特定功能的脚本文件、Web浏览器数据缓冲、书签、历史记录或会话日志、实时聊天记录等。随着计算机取证技术的发展和取证工具的广泛使用,黑客在入侵过程中越来越多地使用痕迹销毁技术和反取证技术,以对抗调查人员的取证分析。因此,取证与反取证往往形成矛与盾的关系,成为黑客攻击技术与反黑客技术较量的技术制高点之一。
(七)是利用虚拟机实施攻击发起
近年更多的攻击者倾向于在虚拟机环境中进行攻击,这是由于虚拟机可模拟多种系统平台,造成了攻击主机系统与位置的隐蔽性。黑客可通过快速卸载或简单删除等方式来逃避一般的搜查追踪。当前各黑客网站都有虚拟机安装和使用的详细教学资料,并且认为虚拟机相关知识是黑客重要的基本知识之一。因此,今后一旦发生类似于“熊猫烧香”事件时,黑客完全可能改用虚拟机作案,然后立即关闭虚拟机系统并删除该虚拟机文件夹。调查人员必须首先发现该机器上的虚拟机痕迹,再从中寻找黑客制造病毒并进行传播的证据,这项工作往往变得异常复杂,需要特殊的技术和工具。
(八)利用无线入侵技术
无线通信既包括手机、卫星电视和无线局域网,还包括无线传感网络、红外、蓝牙、RFID等,它们在人们的日常工作生活中扮演着越来越重要的角色。无线通信在给人们带来很大便利的同时,也带来了很多安全隐患:一方面,针对无线通信的窃听和恶意代码能获取用户的通信内容、侵犯用户的隐私权;另一方面,入侵者可以通过这些无线通信技术,进一步接入网络的核心部分。无线通信极大扩展了网络的边界,使得网络接入的控制变得复杂起来,黑客通过无线入侵往往能起到事半功倍的效果。
二、安全防御技术
为了实现服务器与客户机的通信,服务器和客户机都建立套接字,这样做目的是为了确保数据的安全性。在这种安全连接上,数据在发送前经过加密码,然后在接收时先解密再进行处理。浏览器和服务器在发送任何数据之前都对所有流量加密,如此可做到有效防御。
参考文献
[1] 曹爱娟,刘宝旭,许榕生.抵御网络攻击的陷阶系统[J].计算机工程,2013,4.
[2] 神龙工作室.新手学黑客攻防[M].人民邮电出版社,2009.
作者简介:李松(1989- ),男,汉族,贵州盘县人,本科,研究方向:计算机科学与技术。
点击下页还有更多网络攻击技术论文
网络攻击的一般原理和方法是什么
下载:
常见网络攻击原理
1.1 TCP SYN拒绝服务攻击
一般情况下,一个TCP连接的建立需要经过三次握手的过程,即:
1、 建立发起者向目标计算机发送一个TCP SYN报文;
2、 目标计算机收到这个SYN报文后,在内存中创建TCP连接控制块(TCB),然后向发起者回送一个TCP ACK报文,等待发起者的回应;
3、 发起者收到TCP ACK报文后,再回应一个ACK报文,这样TCP连接就建立起来了。
利用这个过程,一些恶意的攻击者可以进行所谓的TCP SYN拒绝服务攻击:
1、 攻击者向目标计算机发送一个TCP SYN报文;
2、 目标计算机收到这个报文后,建立TCP连接控制结构(TCB),并回应一个ACK,等待发起者的回应;
3、 而发起者则不向目标计算机回应ACK报文,这样导致目标计算机一致处于等待状态。
可以看出,目标计算机如果接收到大量的TCP SYN报文,而没有收到发起者的第三次ACK回应,会一直等待,处于这样尴尬状态的半连接如果很多,则会把目标计算机的资源(TCB控制结构,TCB,一般情况下是有限的)耗尽,而不能响应正常的TCP连接请求。
1.2 ICMP洪水
正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO后,会回应一个ICMP ECHO Reply报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。
1.3 UDP洪水
原理与ICMP洪水类似,攻击者通过发送大量的UDP报文给目标计算机,导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。
1.4 端口扫描
根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCP SYN)的时候,做这样的处理:
1、 如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结构(TCB);
2、 如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。
相应地,如果IP协议栈收到一个UDP报文,做如下处理:
1、 如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报文(上层协议根据处理结果而回应的报文例外);
2、 如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起者计算机该UDP报文的端口不可达。
利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:
1、 发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);
2、 如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;
3、 相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)。
这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。
1.5 分片IP报文攻击
为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。
目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。
1.6 SYN比特和FIN比特同时设置
在TCP报文的报头中,有几个标志字段:
1、 SYN:连接建立标志,TCP SYN报文就是把这个标志设置为1,来请求建立连接;
2、 ACK:回应标志,在一个TCP连接中,除了第一个报文(TCP SYN)外,所有报文都设置该字段,作为对上一个报文的相应;
3、 FIN:结束标志,当一台计算机接收到一个设置了FIN标志的TCP报文后,会拆除这个TCP连接;
4、 RST:复位标志,当IP协议栈接收到一个目标端口不存在的TCP报文的时候,会回应一个RST标志设置的报文;
5、 PSH:通知协议栈尽快把TCP数据提交给上层程序处理。
正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
1.7 没有设置任何标志的TCP报文攻击
正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于这样的假设,没有针对不设置任何标志的TCP报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。
1.8 设置了FIN标志却没有设置ACK标志的TCP报文攻击
正常情况下,ACK标志在除了第一个报文(SYN报文)外,所有的报文都设置,包括TCP连接拆除报文(FIN标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了FIN标志却没有设置ACK标志的TCP报文,这样可能导致目标计算机崩溃。
1.9 死亡之PING
TCP/IP规范要求IP报文的长度在一定范围内(比如,0-64K),但有的攻击计算机可能向目标计算机发出大于64K长度的PING报文,导致目标计算机IP协议栈崩溃。
1.10 地址猜测攻击
跟端口扫描攻击类似,攻击者通过发送目标地址变化的大量的ICMP ECHO报文,来判断目标计算机是否存在。如果收到了对应的ECMP ECHO REPLY报文,则说明目标计算机是存在的,便可以针对该计算机进行下一步的攻击。
1.11 泪滴攻击
对于一些大的IP包,需要对其进行分片传送,这是为了迎合链路层的MTU(最大传输单元)的要求。比如,一个4500字节的IP包,在MTU为1500的链路上传输的时候,就需要分成三个IP包。
在IP报头中有一个偏移字段和一个分片标志(MF),如果MF标志设置为1,则表面这个IP包是一个大IP包的片断,其中偏移字段指出了这个片断在整个IP包中的位置。例如,对一个4500字节的IP包进行分片(MTU为1500),则三个片断中偏移字段的值依次为:0,1500,3000。这样接收端就可以根据这些信息成功的组装该IP包。
如果一个攻击者打破这种正常情况,把偏移字段设置成不正确的值,即可能出现重合或断开的情况,就可能导致目标操作系统崩溃。比如,把上述偏移设置为0,1300,3000。这就是所谓的泪滴攻击。
1.12 带源路由选项的IP报文
为了实现一些附加功能,IP协议规范在IP报头中增加了选项字段,这个字段可以有选择的携带一些数据,以指明中间设备(路由器)或最终目标计算机对这些IP报文进行额外的处理。
源路由选项便是其中一个,从名字中就可以看出,源路由选项的目的,是指导中间设备(路由器)如何转发该数据报文的,即明确指明了报文的传输路径。比如,让一个IP报文明确的经过三台路由器R1,R2,R3,则可以在源路由选项中明确指明这三个路由器的接口地址,这样不论三台路由器上的路由表如何,这个IP报文就会依次经过R1,R2,R3。而且这些带源路由选项的IP报文在传输的过程中,其源地址不断改变,目标地址也不断改变,因此,通过合适的设置源路由选项,攻击者便可以伪造一些合法的IP地址,而蒙混进入网络。
1.13 带记录路由选项的IP报文
记录路由选项也是一个IP选项,携带了该选项的IP报文,每经过一台路由器,该路由器便把自己的接口地址填在选项字段里面。这样这些报文在到达目的地的时候,选项数据里面便记录了该报文经过的整个路径。
通过这样的报文可以很容易的判断该报文经过的路径,从而使攻击者可以很容易的寻找其中的攻击弱点。
1.14 未知协议字段的IP报文
在IP报文头中,有一个协议字段,这个字段指明了该IP报文承载了何种协议 ,比如,如果该字段值为1,则表明该IP报文承载了ICMP报文,如果为6,则是TCP,等等。目前情况下,已经分配的该字段的值都是小于100的,因此,一个带大于100的协议字段的IP报文,可能就是不合法的,这样的报文可能对一些计算机操作系统的协议栈进行破坏。
1.15 IP地址欺骗
一般情况下,路由器在转发报文的时候,只根据报文的目的地址查路由表,而不管报文的源地址是什么,因此,这样就 可能面临一种危险:如果一个攻击者向一台目标计算机发出一个报文,而把报文的源地址填写为第三方的一个IP地址,这样这个报文在到达目标计算机后,目标计算机便可能向毫无知觉的第三方计算机回应。这便是所谓的IP地址欺骗攻击。
比较著名的SQL Server蠕虫病毒,就是采用了这种原理。该病毒(可以理解为一个攻击者)向一台运行SQL Server解析服务的服务器发送一个解析服务的UDP报文,该报文的源地址填写为另外一台运行SQL Server解析程序(SQL Server 2000以后版本)的服务器,这样由于SQL Server 解析服务的一个漏洞,就可能使得该UDP报文在这两台服务器之间往复,最终导致服务器或网络瘫痪。
1.16 WinNuke攻击
NetBIOS作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。一般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。为了在TCP/IP协议栈上实现NetBIOS,RFC规定了一系列交互标准,以及几个常用的TCP/UDP端口:
139:NetBIOS会话服务的TCP端口;
137:NetBIOS名字服务的UDP端口;
136:NetBIOS数据报服务的UDP端口。
WINDOWS操作系统的早期版本(WIN95/98/NT)的网络服务(文件共享等)都是建立在NetBIOS之上的,因此,这些操作系统都开放了139端口(最新版本的WINDOWS 2000/XP/2003等,为了兼容,也实现了NetBIOS over TCP/IP功能,开放了139端口)。
WinNuke攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文,但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样WINDOWS操作系统在处理这些数据的时候,就会崩溃。
1.17 Land攻击
LAND攻击利用了TCP连接建立的三次握手过程,通过向一个目标计算机发送一个TCP SYN报文(连接建立请求报文)而完成对目标计算机的攻击。与正常的TCP SYN报文不同的是,LAND攻击报文的源IP地址和目的IP地址是相同的,都是目标计算机的IP地址。这样目标计算机接收到这个SYN报文后,就会向该报文的源地址发送一个ACK报文,并建立一个TCP连接控制结构(TCB),而该报文的源地址就是自己,因此,这个ACK报文就发给了自己。这样如果攻击者发送了足够多的SYN报文,则目标计算机的TCB可能会耗尽,最终不能正常服务。这也是一种DOS攻击。
1.18 Script/ActiveX攻击
Script是一种可执行的脚本,它一般由一些脚本语言写成,比如常见的JAVA SCRIPT,VB SCRIPT等。这些脚本在执行的时候,需要一个专门的解释器来翻译,翻译成计算机指令后,在本地计算机上运行。这种脚本的好处是,可以通过少量的程序写作,而完成大量的功能。
这种SCRIPT的一个重要应用就是嵌入在WEB页面里面,执行一些静态WEB页面标记语言(HTML)无法完成的功能,比如本地计算,数据库查询和修改,以及系统信息的提取等。这些脚本在带来方便和强大功能的同时,也为攻击者提供了方便的攻击途径。如果攻击者写一些对系统有破坏的SCRIPT,然后嵌入在WEB页面中,一旦这些页面被下载到本地,计算机便以当前用户的权限执行这些脚本,这样,当前用户所具有的任何权限,SCRIPT都可以使用,可以想象这些恶意的SCRIPT的破坏程度有多强。这就是所谓的SCRIPT攻击。
ActiveX是一种控件对象,它是建立在MICROSOFT的组件对象模型(COM)之上的,而COM则几乎是Windows操作系统的基础结构。可以简单的理解,这些控件对象是由方法和属性构成的,方法即一些操作,而属性则是一些特定的数据。这种控件对象可以被应用程序加载,然后访问其中的方法或属性,以完成一些特定的功能。可以说,COM提供了一种二进制的兼容模型(所谓二进制兼容,指的是程序模块与调用的编译环境,甚至操作系统没有关系)。但需要注意的是,这种对象控件不能自己执行,因为它没有自己的进程空间,而只能由其它进程加载,并调用其中的方法和属性,这时候,这些控件便在加载进程的进程空间运行,类似与操作系统的可加载模块,比如DLL库。
ActiveX控件可以嵌入在WEB页面里面,当浏览器下载这些页面到本地后,相应地也下载了嵌入在其中的ActiveX控件,这样这些控件便可以在本地浏览器进程空间中运行(ActiveX空间没有自己的进程空间,只能由其它进程加载并调用),因此,当前用户的权限有多大,ActiveX的破坏性便有多大。如果一个恶意的攻击者编写一个含有恶意代码的ActiveX控件,然后嵌入在WEB页面中,被一个浏览用户下载后执行,其破坏作用是非常大的。这便是所谓的ActiveX攻击。
1.19 Smurf攻击
ICMP ECHO请求包用来对网络进行诊断,当一台计算机接收到这样一个报文后,会向报文的源地址回应一个ICMP ECHO REPLY。一般情况下,计算机是不检查该ECHO请求的源地址的,因此,如果一个恶意的攻击者把ECHO的源地址设置为一个广播地址,这样计算机在恢复REPLY的时候,就会以广播地址为目的地址,这样本地网络上所有的计算机都必须处理这些广播报文。如果攻击者发送的ECHO 请求报文足够多,产生的REPLY广播报文就可能把整个网络淹没。这就是所谓的smurf攻击。
除了把ECHO报文的源地址设置为广播地址外,攻击者还可能把源地址设置为一个子网广播地址,这样,该子网所在的计算机就可能受影响。
1.20 虚拟终端(VTY)耗尽攻击
这是一种针对网络设备的攻击,比如路由器,交换机等。这些网络设备为了便于远程管理,一般设置了一些TELNET用户界面,即用户可以通过TELNET到该设备上,对这些设备进行管理。
一般情况下,这些设备的TELNET用户界面个数是有限制的,比如,5个或10个等。这样,如果一个攻击者同时同一台网络设备建立了5个或10个TELNET连接,这些设备的远程管理界面便被占尽,这样合法用户如果再对这些设备进行远程管理,则会因为TELNET连接资源被占用而失败。
1.21 路由协议攻击
网络设备之间为了交换路由信息,常常运行一些动态的路由协议,这些路由协议可以完成诸如路由表的建立,路由信息的分发等功能。常见的路由协议有RIP,OSPF,IS-IS,BGP等。这些路由协议在方便路由信息管理和传递的同时,也存在一些缺陷,如果攻击者利用了路由协议的这些权限,对网络进行攻击,可能造成网络设备路由表紊乱(这足可以导致网络中断),网络设备资源大量消耗,甚至导致网络设备瘫痪。
下面列举一些常见路由协议的攻击方式及原理:
1.21.1 针对RIP协议的攻击
RIP,即路由信息协议,是通过周期性(一般情况下为30S)的路由更新报文来维护路由表的,一台运行RIP路由协议的路由器,如果从一个接口上接收到了一个路由更新报文,它就会分析其中包含的路由信息,并与自己的路由表作出比较,如果该路由器认为这些路由信息比自己所掌握的要有效,它便把这些路由信息引入自己的路由表中。
这样如果一个攻击者向一台运行RIP协议的路由器发送了人为构造的带破坏性的路由更新报文,就很容易的把路由器的路由表搞紊乱,从而导致网络中断。
如果运行RIP路由协议的路由器启用了路由更新信息的HMAC验证,则可从很大程度上避免这种攻击。
1.21.2 针对OSPF路由协议的攻击
OSPF,即开放最短路径优先,是一种应用广泛的链路状态路由协议。该路由协议基于链路状态算法,具有收敛速度快,平稳,杜绝环路等优点,十分适合大型的计算机网络使用。OSPF路由协议通过建立邻接关系,来交换路由器的本地链路信息,然后形成一个整网的链路状态数据库,针对该数据库,路由器就可以很容易的计算出路由表。
可以看出,如果一个攻击者冒充一台合法路由器与网络中的一台路由器建立邻接关系,并向攻击路由器输入大量的链路状态广播(LSA,组成链路状态数据库的数据单元),就会引导路由器形成错误的网络拓扑结构,从而导致整个网络的路由表紊乱,导致整个网络瘫痪。
当前版本的WINDOWS 操作系统(WIN 2K/XP等)都实现了OSPF路由协议功能,因此一个攻击者可以很容易的利用这些操作系统自带的路由功能模块进行攻击。
跟RIP类似,如果OSPF启用了报文验证功能(HMAC验证),则可以从很大程度上避免这种攻击。
1.21.3 针对IS-IS路由协议的攻击
IS-IS路由协议,即中间系统到中间系统,是ISO提出来对ISO的CLNS网络服务进行路由的一种协议,这种协议也是基于链路状态的,原理与OSPF类似。IS-IS路由协议经过 扩展,可以运行在IP网络中,对IP报文进行选路。这种路由协议也是通过建立邻居关系,收集路由器本地链路状态的手段来完成链路状态数据库同步的。该协议的邻居关系建立比OSPF简单,而且也省略了OSPF特有的一些特性,使该协议简单明了,伸缩性更强。
对该协议的攻击与OSPF类似,通过一种模拟软件与运行该协议的路由器建立邻居关系,然后传颂给攻击路由器大量的链路状态数据单元(LSP),可以导致整个网络路由器的链路状态数据库不一致(因为整个网络中所有路由器的链路状态数据库都需要同步到相同的状态),从而导致路由表与实际情况不符,致使网络中断。
与OSPF类似,如果运行该路由协议的路由器启用了IS-IS协议单元(PDU)HMAC验证功能,则可以从很大程度上避免这种攻击。
1.22 针对设备转发表的攻击
为了合理有限的转发数据,网络设备上一般都建立一些寄存器表项,比如MAC地址表,ARP表,路由表,快速转发表,以及一些基于更多报文头字段的表格,比如多层交换表,流项目表等。这些表结构都存储在设备本地的内存中,或者芯片的片上内存中,数量有限。如果一个攻击者通过发送合适的数据报,促使设备建立大量的此类表格,就会使设备的存储结构消耗尽,从而不能正常的转发数据或崩溃。
下面针对几种常见的表项,介绍其攻击原理:
1.22.1 针对MAC地址表的攻击
MAC地址表一般存在于以太网交换机上,以太网通过分析接收到的数据帧的目的MAC地址,来查本地的MAC地址表,然后作出合适的转发决定。
这些MAC地址表一般是通过学习获取的,交换机在接收到一个数据帧后,有一个学习的过程,该过程是这样的:
a) 提取数据帧的源MAC地址和接收到该数据帧的端口号;
查MAC地址表,看该MAC地址是否存在,以及对应的端口是否符合;
c) 如果该MAC地址在本地MAC地址表中不存在,则创建一个MAC地址表项;
d) 如果存在,但对应的出端口跟接收到该数据帧的端口不符,则更新该表;
e) 如果存在,且端口符合,则进行下一步处理。
分析这个过程可以看出,如果一个攻击者向一台交换机发送大量源MAC地址不同的数据帧,则该交换机就可能把自己本地的MAC地址表学满。一旦MAC地址表溢出,则交换机就不能继续学习正确的MAC表项,结果是可能产生大量的网络冗余数据,甚至可能使交换机崩溃。
而构造一些源MAC地址不同的数据帧,是非常容易的事情。
1.22.2 针对ARP表的攻击
ARP表是IP地址和MAC地址的映射关系表,任何实现了IP协议栈的设备,一般情况下都通过该表维护IP地址和MAC地址的对应关系,这是为了避免ARP解析而造成的广播数据报文对网络造成冲击。ARP表的建立一般情况下是通过二个途径:
1、 主动解析,如果一台计算机想与另外一台不知道MAC地址的计算机通信,则该计算机主动发ARP请求,通过ARP协议建立(前提是这两台计算机位于同一个IP子网上);
2、 被动请求,如果一台计算机接收到了一台计算机的ARP请求,则首先在本地建立请求计算机的IP地址和MAC地址的对应表。
因此,如果一个攻击者通过变换不同的IP地址和MAC地址,向同一台设备,比如三层交换机发送大量的ARP请求,则被攻击设备可能会因为ARP缓存溢出而崩溃。
针对ARP表项,还有一个可能的攻击就是误导计算机建立正确的ARP表。根据ARP协议,如果一台计算机接收到了一个ARP请求报文,在满足下列两个条件的情况下,该计算机会用ARP请求报文中的源IP地址和源MAC地址更新自己的ARP缓存:
1、 如果发起该ARP请求的IP地址在自己本地的ARP缓存中;
2、 请求的目标IP地址不是自己的。
可以举一个例子说明这个过程,假设有三台计算机A,B,C,其中B已经正确建立了A和C计算机的ARP表项。假设A是攻击者,此时,A发出一个ARP请求报文,该请求报文这样构造:
1、 源IP地址是C的IP地址,源MAC地址是A的MAC地址;
2、 请求的目标IP地址是A的IP地址。
这样计算机B在收到这个ARP请求报文后(ARP请求是广播报文,网络上所有设备都能收到),发现B的ARP表项已经在自己的缓存中,但MAC地址与收到的请求的源MAC地址不符,于是根据ARP协议,使用ARP请求的源MAC地址(即A的MAC地址)更新自己的ARP表。
这样B的ARP混存中就存在这样的错误ARP表项:C的IP地址跟A的MAC地址对应。这样的结果是,B发给C的数据都被计算机A接收到。
1.22.3 针对流项目表的攻击
有的网络设备为了加快转发效率,建立了所谓的流缓存。所谓流,可以理解为一台计算机的一个进程到另外一台计算机的一个进程之间的数据流。如果表现在TCP/IP协议上,则是由(源IP地址,目的IP地址,协议号,源端口号,目的端口号)五元组共同确定的所有数据报文。
一个流缓存表一般由该五元组为索引,每当设备接收到一个IP报文后,会首先分析IP报头,把对应的五元组数据提取出来,进行一个HASH运算,然后根据运算结果查询流缓存,如果查找成功,则根据查找的结果进行处理,如果查找失败,则新建一个流缓存项,查路由表,根据路由表查询结果填完整这个流缓存,然后对数据报文进行转发(具体转发是在流项目创建前还是创建后并不重要)。
可以看出,如果一个攻击者发出大量的源IP地址或者目的IP地址变化的数据报文,就可能导致设备创建大量的流项目,因为不同的源IP地址和不同的目标IP地址对应不同的流。这样可能导致流缓存溢出
网络攻击器的原理是什么?是怎么向固定的ip地址发起进攻的?
常见网络攻击原理
1.1 TCP SYN拒绝服务攻击
一般情况下,一个TCP连接的建立需要经过三次握手的过程,即:
1、 建立发起者向目标计算机发送一个TCP SYN报文;
2、 目标计算机收到这个SYN报文后,在内存中创建TCP连接控制块(TCB),然后向发起者回送一个TCP ACK报文,等待发起者的回应;
3、 发起者收到TCP ACK报文后,再回应一个ACK报文,这样TCP连接就建立起来了。
利用这个过程,一些恶意的攻击者可以进行所谓的TCP SYN拒绝服务攻击:
1、 攻击者向目标计算机发送一个TCP SYN报文;
2、 目标计算机收到这个报文后,建立TCP连接控制结构(TCB),并回应一个ACK,等待发起者的回应;
3、 而发起者则不向目标计算机回应ACK报文,这样导致目标计算机一致处于等待状态。
可以看出,目标计算机如果接收到大量的TCP SYN报文,而没有收到发起者的第三次ACK回应,会一直等待,处于这样尴尬状态的半连接如果很多,则会把目标计算机的资源(TCB控制结构,TCB,一般情况下是有限的)耗尽,而不能响应正常的TCP连接请求。
1.2 ICMP洪水
正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO后,会回应一个ICMP ECHO Reply报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。
1.3 UDP洪水
原理与ICMP洪水类似,攻击者通过发送大量的UDP报文给目标计算机,导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。
1.4 端口扫描
根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCP SYN)的时候,做这样的处理:
1、 如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结构(TCB);
2、 如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。
相应地,如果IP协议栈收到一个UDP报文,做如下处理:
1、 如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报文(上层协议根据处理结果而回应的报文例外);
2、 如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起者计算机该UDP报文的端口不可达。
利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:
1、 发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);
2、 如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;
3、 相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)。
这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。
1.5 分片IP报文攻击
为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。
目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。
1.6 SYN比特和FIN比特同时设置
在TCP报文的报头中,有几个标志字段:
1、 SYN:连接建立标志,TCP SYN报文就是把这个标志设置为1,来请求建立连接;
2、 ACK:回应标志,在一个TCP连接中,除了第一个报文(TCP SYN)外,所有报文都设置该字段,作为对上一个报文的相应;
3、 FIN:结束标志,当一台计算机接收到一个设置了FIN标志的TCP报文后,会拆除这个TCP连接;
4、 RST:复位标志,当IP协议栈接收到一个目标端口不存在的TCP报文的时候,会回应一个RST标志设置的报文;
5、 PSH:通知协议栈尽快把TCP数据提交给上层程序处理。
正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
1.7 没有设置任何标志的TCP报文攻击
正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于这样的假设,没有针对不设置任何标志的TCP报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。
1.8 设置了FIN标志却没有设置ACK标志的TCP报文攻击
正常情况下,ACK标志在除了第一个报文(SYN报文)外,所有的报文都设置,包括TCP连接拆除报文(FIN标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了FIN标志却没有设置ACK标志的TCP报文,这样可能导致目标计算机崩溃。
1.9 死亡之PING
TCP/IP规范要求IP报文的长度在一定范围内(比如,0-64K),但有的攻击计算机可能向目标计算机发出大于64K长度的PING报文,导致目标计算机IP协议栈崩溃。
1.10 地址猜测攻击
跟端口扫描攻击类似,攻击者通过发送目标地址变化的大量的ICMP ECHO报文,来判断目标计算机是否存在。如果收到了对应的ECMP ECHO REPLY报文,则说明目标计算机是存在的,便可以针对该计算机进行下一步的攻击。
1.11 泪滴攻击
对于一些大的IP包,需要对其进行分片传送,这是为了迎合链路层的MTU(最大传输单元)的要求。比如,一个4500字节的IP包,在MTU为1500的链路上传输的时候,就需要分成三个IP包。
在IP报头中有一个偏移字段和一个分片标志(MF),如果MF标志设置为1,则表面这个IP包是一个大IP包的片断,其中偏移字段指出了这个片断在整个IP包中的位置。例如,对一个4500字节的IP包进行分片(MTU为1500),则三个片断中偏移字段的值依次为:0,1500,3000。这样接收端就可以根据这些信息成功的组装该IP包。
如果一个攻击者打破这种正常情况,把偏移字段设置成不正确的值,即可能出现重合或断开的情况,就可能导致目标操作系统崩溃。比如,把上述偏移设置为0,1300,3000。这就是所谓的泪滴攻击。
1.12 带源路由选项的IP报文
为了实现一些附加功能,IP协议规范在IP报头中增加了选项字段,这个字段可以有选择的携带一些数据,以指明中间设备(路由器)或最终目标计算机对这些IP报文进行额外的处理。
源路由选项便是其中一个,从名字中就可以看出,源路由选项的目的,是指导中间设备(路由器)如何转发该数据报文的,即明确指明了报文的传输路径。比如,让一个IP报文明确的经过三台路由器R1,R2,R3,则可以在源路由选项中明确指明这三个路由器的接口地址,这样不论三台路由器上的路由表如何,这个IP报文就会依次经过R1,R2,R3。而且这些带源路由选项的IP报文在传输的过程中,其源地址不断改变,目标地址也不断改变,因此,通过合适的设置源路由选项,攻击者便可以伪造一些合法的IP地址,而蒙混进入网络。
1.13 带记录路由选项的IP报文
记录路由选项也是一个IP选项,携带了该选项的IP报文,每经过一台路由器,该路由器便把自己的接口地址填在选项字段里面。这样这些报文在到达目的地的时候,选项数据里面便记录了该报文经过的整个路径。
通过这样的报文可以很容易的判断该报文经过的路径,从而使攻击者可以很容易的寻找其中的攻击弱点。
1.14 未知协议字段的IP报文
在IP报文头中,有一个协议字段,这个字段指明了该IP报文承载了何种协议 ,比如,如果该字段值为1,则表明该IP报文承载了ICMP报文,如果为6,则是TCP,等等。目前情况下,已经分配的该字段的值都是小于100的,因此,一个带大于100的协议字段的IP报文,可能就是不合法的,这样的报文可能对一些计算机操作系统的协议栈进行破坏。
1.15 IP地址欺骗
一般情况下,路由器在转发报文的时候,只根据报文的目的地址查路由表,而不管报文的源地址是什么,因此,这样就 可能面临一种危险:如果一个攻击者向一台目标计算机发出一个报文,而把报文的源地址填写为第三方的一个IP地址,这样这个报文在到达目标计算机后,目标计算机便可能向毫无知觉的第三方计算机回应。这便是所谓的IP地址欺骗攻击。
比较著名的SQL Server蠕虫病毒,就是采用了这种原理。该病毒(可以理解为一个攻击者)向一台运行SQL Server解析服务的服务器发送一个解析服务的UDP报文,该报文的源地址填写为另外一台运行SQL Server解析程序(SQL Server 2000以后版本)的服务器,这样由于SQL Server 解析服务的一个漏洞,就可能使得该UDP报文在这两台服务器之间往复,最终导致服务器或网络瘫痪。
1.16 WinNuke攻击
NetBIOS作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。一般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。为了在TCP/IP协议栈上实现NetBIOS,RFC规定了一系列交互标准,以及几个常用的TCP/UDP端口:
139:NetBIOS会话服务的TCP端口;
137:NetBIOS名字服务的UDP端口;
136:NetBIOS数据报服务的UDP端口。
WINDOWS操作系统的早期版本(WIN95/98/NT)的网络服务(文件共享等)都是建立在NetBIOS之上的,因此,这些操作系统都开放了139端口(最新版本的WINDOWS 2000/XP/2003等,为了兼容,也实现了NetBIOS over TCP/IP功能,开放了139端口)。
WinNuke攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文,但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样WINDOWS操作系统在处理这些数据的时候,就会崩溃。
1.17 Land攻击
LAND攻击利用了TCP连接建立的三次握手过程,通过向一个目标计算机发送一个TCP SYN报文(连接建立请求报文)而完成对目标计算机的攻击。与正常的TCP SYN报文不同的是,LAND攻击报文的源IP地址和目的IP地址是相同的,都是目标计算机的IP地址。这样目标计算机接收到这个SYN报文后,就会向该报文的源地址发送一个ACK报文,并建立一个TCP连接控制结构(TCB),而该报文的源地址就是自己,因此,这个ACK报文就发给了自己。这样如果攻击者发送了足够多的SYN报文,则目标计算机的TCB可能会耗尽,最终不能正常服务。这也是一种DOS攻击。
0条大神的评论