网络攻击

渗透测试知识点

Posted by Sprint#51264 on January 18, 2021

DoS攻击

什么是DoS攻击?

即 Denail of Service 拒绝服务的缩写。其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络宽带攻击和连通性攻击。

实现的原理

打个比方,如果有人想搞垮一家餐厅,可以叫很多人去点餐,并且占着座位不走,其他的顾客就无法用餐,或者骚扰厨子和服务员等等的方式,现在目标网站就是提供服务的地方,类比一下同样有很多种方法使其无法提供正常的服务。

  • 网络带宽攻击

指以极大的通信量冲击目标网络,消耗占用网络资源,导致其无法通过用户的合法请求

  • 连通性攻击

用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。


但是由于较小的网络规模和较慢的网速,攻击者无法发出大量的请求,要解决网络带宽问题,攻击者开发了DoS的分布式攻击,即DDoS攻击(Distributed Denial of Service)

具体方式

1,制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。

2,利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。

3,利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。

分类

主要分为三类:流量型攻击、连接型攻击、特殊协议缺陷。

  • PingofDeath 死亡之ping

    一种畸形报文攻击,方法是由攻击者故意发送大于65535字节的ip数据包给对方。

    TCP/IP的特征之一是分片;它允许单一IP包被分为几个更小的数据包。

    是通过在最后分段中,改变其正确的偏移量和段长度的组合,使系统在接收到全部分段并重组报文时总的长度超过了65535字节,导致内存溢出

    这时主机就会出现内存分配错误而导致TCP/IP堆栈崩溃,导致死机

  • TearDrop 泪滴

    基于UDP的病态分片数据包的攻击方法

    攻击原理是向被攻击者发送多个IP分片包,其中包含了该分片数据包是在哪个数据包中的哪个位置的信息

    某些系统收到包含重叠偏移的伪造分片包时会出现系统崩溃重启的情况

    重叠偏移(假设数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象。

  • UDPflood UDP泛洪

    原理–>UDP是无连接协议,只要开放相关UDP服务的话,就可以对其进行攻击,攻击者可发送大量伪造源IP地址的小UDP包冲击服务器。

    防范–>攻击端口为业务端口:根据该业务UDP最大包长设置UDP最大包大小以过滤异常流量。

    攻击端口为非业务端口:一个是丢弃所有UDP包,可能会误伤正常业务;一个是建立UDP连接规则,要求所有去往该端口的UDP包,必须首先与TCP端口建立TCP连接。不过这种方法需要很专业的防火墙或其他防护设备支持。

  • SYNflood SYN泛洪

    利用TCP连接三次握手过程,制造大量的半连接状态,占用消耗服务器资源内存,使其最终宕机。

  • LandAttack

    Land 攻击发生的条件是攻击者发送具有相同IP的源地址、目标地址和 TCP 端口号的伪造 TCP SYN 数据包信息流。必须设置好 SYN 标记。

    其结果是该计算机系统将试图向自己发送响应信息,导致被攻击的机器死循环,最终使受害系统瘫痪或重启。

  • IPSpoofing IP欺骗

  • Connection Flood

    利用真实的IP地址向服务器发起大量的连接,并且建立连接之后很长时间不释放,占用服务器的资源,造成服务器服务器上残余连接(WAIT状态)过多,效率降低,甚至资源耗尽


DNS

  • Dns Query Flood

    通过发起大量的DNS请求,导致DNS服务器无法响应正常用户的请求,正常用户不能解析DNS,从而不能获取服务。

  • Dns NX攻击

    Dns NX攻击是dns query flood攻击的一个变种攻击方式

    区别是后者向dns服务器查询的是一个真实存在的域名,而前者向dns服务器查询的是一个不存在的域名。

    在进行dns nx攻击时,dns服务器会进行多次域名查询

    其获取不到域名的解析结果时,还会再次进行递归查询,向上一级的dns服务器发送解析请求并等待应答,这进一步增加了dns服务器的资源消耗。

    同时,dns服务器的缓存会被大量nx domian记录所填满,导致响应正常用户的dns解析请求变慢。

  • DNS Reply Flood

    攻击者通过发起大量伪造的DNS回应包,导致DNS服务器带宽拥塞无法响应正常用户的请求,正常用户不能解析DNS,从而不能获取服务。

  • DNS 投毒

    一台dns服务器只记录本地资源的所有授权主机,若要查询的是非本地的主机信息,则向信息持有者(授权dns服务器)发送查询请求。

    为了避免每次查询都发送请求,dns服务器会把授权服务器返回的查询结果保存在缓存中,并保持一段时间,这就构成了dns缓存。

    dns缓存投毒攻击就是通过污染dns cache,用虚假的IP地址信息替换cache中主机记录的真实IP地址信息来制造破坏。

    这种类型的攻击的目的是将依赖于此dns服务器的受害者重定向到其它的地址,例如重定向搜索引擎到广告网站。

    这种类型的典型攻击就是钓鱼方式的攻击,例如将一个银行的访问重定向到黑客伪造的网站。

    sH36Re.jpg

  • CC攻击

     利用代理服务器向受害者发起大量HTTP Get请求;主要请求动态页面,涉及到数据库访问操作;数据库负载以及数据库连接池负载极高,无法响应正常请求
    

慢速攻击

  • http slow header慢速攻击

    在http协议中规定,http的头部以连续的“\r\n\r\n”作为结束标志。

    许多web服务器在处理http请求的头部信息时,会等待头部传输结束后再进行处理。

    因此,如果web服务器没有接收到连续的“\r\n\r\n”,就会一直接收数据并保持与客户端的连接。

    Slow-header的工作原理是攻击者在发送http get请求时,缓慢地发送无用的header字段,并且一直不发送“\r\n\r\n”结束标志。

    Web服务器能够处理的并发连接数是有限的,如果攻击者利用大量的主机发送这种不完整的http get请求把那个持续占用这些连接,就会耗尽web服务器的资源。

  • http slow post慢速攻击

    在post提交方式中,允许在http的头中声明content-length,也就是指定http消息实体的传输长度。当web服务器接收到请求头部中含有content-length字段时,服务器会将该字段的值作为http body的长度,持续接收数据并达到content-length值时对实体的数据内容进行处理。slow post会传送包括整个header的http请求,在提交了头以后,将后面的body部分卡住不发送,这时候服务器在接受了post长度以后,在处理数据之前会等待客户端发送post的内容,攻击者保持连接并且以10s-100s一个字节的速度去发送,就达到了消耗资源的效果,因此不断增加这样的连接会使得服务器的资源被消耗


  • Https-ssl-dos攻击

    在进行SSL数据传输之前,通信双方首先要进行ssl握手,以协商加密算法交换加密密钥,进行身份认证。

    通常情况下,这样的ssl握手过程只需要进行一次即可,但是在ssl协议中有一个renegotiation选项,通过它可以进行密钥的重新协商以建立新的密钥。

    在ssl握手的过程中,服务器会消耗较多的CPU资源来进行加解密,并进行数据的有效性验证。

    SSL-dos攻击方式的本质是消耗服务器的CPU资源,在协商加密算法的时候,服务器CPU的开销是客户端的15倍左右。

    攻击者在一个TCP连接中不停地快速重新协商,如果建立多个连接,给服务器端造成的压力会更加明显,从而达到攻击目的。


特殊协议,UDP协议多种多样

  • Sip Invite Flood

    Sip协议为网络视频电话会议的udp协议,攻击者通过发起大量的Sip invite请求,导致网络视频电话会议Sip服务器无法响应正常用户的请求报文,占用服务器带宽使其阻塞,达到SIP报文洪水攻击的目的。

  • Sip Register Flood

    Sip协议为网络视频电话会议的udp协议,攻击者通过发起大量的Sip register注册信息,导致网络视频电话会议Sip服务器无法响应正常用户的注册报文信息,占用服务器带宽使其阻塞,达到SIP注册报文洪水攻击的目的。

  • Ntp Request Flood

    Ntp协议即为网络时间同步的udp协议,用于在分布式NTP服务器和客户端之间进行时间同步。NTP攻击,基于UDP协议,攻击者向NTP服务器发送大量的请求报文,占用服务器带宽使其阻塞,达到NTP攻击的目的。

  • Ntp Reply Flood

    攻击者向NTP服务器发送大量的响应报文,占用服务器带宽使其阻塞,达到NTP攻击的目的。

参见–>常见的DDOS攻击及原理-应用层

CC攻击

什么是CC攻击

一个页面访问的人越多,获取资源的速度也就越慢,CC攻击就是利用代理控制许多主机的方式模拟大量用户访问页面,导致该服务器的资源耗尽。

原理

CC攻击和DDoS的原理是相通的,用户访问页面,数据库就需要将所请求的资源检索一遍,如果有很多很多的用户一直在请求数据,那么数据库就需要一直进行查询,导致CPU的占用率一直很高,耗尽服务器资源。

  • 为什么使用代理

    代理隐蔽性高,不暴露自己真实的IP地址

    <???>代理可以绕过防火墙,防火墙会检测并发的TCP/IP连接数目,当其达到一定数目的时候就会被认定为Connection-Flood

变种

  • 慢速攻击

MAC泛洪

发生在OSI模型第二层,攻击者进入LAN内,将假冒源MAC地址和目的MAC地址将数据帧发送到以太网上导致交换机的内容可寻址存储器(CAM)满掉,然后交换机失去转发功能,导致攻击者可以像在共享式以太网上对某些帧进行嗅探,这种攻击可以通过端口安全技术方式,比如端口和MAC地址绑定。

具体原理

  • 交换机转发数据原理

    交换机接收到一个数据帧时,先解封链路层的封装,查看源MAC地址,并且把该MAC地址与接收到这个帧的端口关联起来,然后再广播出去

    当其他的MAC地址接收到这个帧之后交换机又会把它们的MAC地址和接收端口关联起来,以上的MAC-port信息都被一一对应更新到交换机的表中

    如果有LAN中的已知主机对已知主机进行消息发送,交换机就会直接进行转发,如果是向未知的MAC地址发送帧,那么交换机就会对所有的端口进行广播,寻找对应的MAC地址。

  • MAC泛洪原理

    攻击者将假冒的源MAC地址还有目的MAC地址发到交换机上,导致其内容可寻存储器(CAM)满掉,不能再存储新的MAC-port信息,失去其转发功能

    之后所有的要被转发的信息被发送到交换机时,它查找不到对应的信息,就会将帧复制然后转发到所有的接口上去,这就使得攻击者可以进行下一步的嗅探工作。

    参见–>MAC地址泛洪攻击详细过程及原理

常见分类

  • TCP SYN泛洪

    SYN泛洪基于TCP建立连接时的三次握手的过程

    客户端发出连接请求SYN,服务器端收到之后返回一个SYN-ACk包,服务器当前处于SYN——RECEIVED状态,半连接状态

    此时客户端再次发出确认包ACK包才能完成建立

    但如果客户端不发出确认包的话,这个TCP连接就会处于挂起状态

    服务器如果长时间没有收到确认还会再次发出ACK给客户端

    这样更加浪费服务器的资源,如果有大量的这种连接,服务器的CPU和内存就会被大量占用,最后可能宕机。

    防范措施

    对于SYN泛洪攻击的防范,优化主机系统设置是常用的手段。

    如降低SYN timeout时间,使得主机尽快释放半连接的占用;

    又比如采用SYN cookie设置,如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文。

    此外合理地采用防火墙等外部网络安全设施也可缓解SYN泛洪攻击。

  • [???]应用程序泛洪


中间人攻击

概念

(Man In The MiddleAttack)

一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。

通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

分类

  • 会话劫持

    基本概念

    通俗:你有一张某商场的礼品卡,但是礼品卡别人偷了,偷卡的人拿着你的礼品卡去商场消费,商户还是会认的对吧,认卡不认人,会话劫持同理

    会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听,甚至可以是代替某一方主机接管会话。

    分类

    1.主动会话劫持:
    将会话当中的某一台主机“踢”下线,然后由攻击者取代并接管会话

    2.被动会话劫持:
    在后台监视双方会话的数据流,从中获得敏感数据

    原理结构

    利用了TCP/IP工作原理来设计攻击。

    TCP端到端 IP点到点

    端到端通信:在数据传输之前,先为数据的传输开辟一条通道,然后在进行传输。从发送端发出数据到接收端接收完毕,结束。

    点到点通信:是指一个设备发数据给与该这边直接连接的其他设备,这台设备又在合适的时候将数据传递给与它相连的下一个设备,通过一台一台直接相连的设备把数据传递到接收端。

    即TCP用(源IP,源TCP端口号,目的IP,目的TCP端号)来唯一标识每一条已经建立连接的TCP链路。

    TCP报文首部的两个字段序号(seq)和确认序号(ackseq)非常重要

    序号(seq)和确认序号(ackseq)是与所携带TCP数据净荷(payload)的多少有数值上的关系:序号字段(seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq)指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。

    因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:它所要发出的报文中的seq值应等于它所刚收到的报文中的ackseq的值,而它所要发送报文中ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。

  • DNS欺骗

    基本概念

    DNS使用TCP和UDP端口53

    域名其实相当于IP的别名

    用户输入网站的IP地址或者域名都能够对其访问

    当一台机器a向其域名服务器A发出域名解析请求时,如果A可以解析,则将解析结果发给a,否则,A将向其上级域名服务器B发出解析请求,如果B能解析,则将解析结果发给a,如果B无法解析,则将请求发给再上一级域名服务器C,如此下去,直至解析到为止。

    方式

    攻击者通过入侵DNS服务器、控制路由器等方法把受害者要访问的目标机器域名对应的IP解析为攻击者所控制的机器,

    这样受害者原本要发送给目标机器的数据就发到了攻击者的机器上,这时攻击者就可以监听甚至修改数据,从而收集到大量的信息。

    如果攻击者只是想“监听”双方会话的数据,他会转发所有的数据到真正的目标机器上,让目标机器进行处理,再把处理结果发回到原来的受害者机器;

    如果攻击者要进行彻底的破坏,他会伪装目标机器返回数据,这样受害者接收处理的就不再是原来期望的数据,而是攻击者所期望的了。

    例如让DNS服务器解析银行网站的IP为自己机器IP,同时在自己机器上伪造银行登录页面,那么受害者的真实账号和密码就暴露给入侵者了。

    问题

    实际上它却很少派上大用场,为什么,因为DNS欺骗的攻击模型太理想了。

    在实际生活中,大部分用户的DNS解析请求均是通过自己的ISP服务器进行的,

    换句话说,就是系统在连接网络时会获取到ISP服务器提供的DNS服务器地址,所有解析请求都是直接发往这个DNS服务器的,攻击者根本无处入手,

    除非他能入侵更改ISP服务器上DNS服务的解析指向。所以这种手法在广域网上成功的几率不大。

    个例

    一个ISP服务器上存在Bind漏洞,攻击者就能通过Bind漏洞进入服务器更改掉DNS解析指向,甚至取得最高权限

    另一种方法是入侵路由设备,修改里面的DNS服务器地址为自己控制的机器地址

    参见–>百度百科中间人攻击

  • ARP欺骗

    基本概念

    是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。

    此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。

    防御

    最理想的防制方法是网上内的每台计算机的ARP一律改用静态的方式,不过这在大型的网上是不可行的,因为需要经常更新每台计算机的ARP表。、

    另外一种方法,例如DHCP snooping,网上设备可借由DHCP保留网络上各计算机的MAC地址,在伪造的ARP数据包发出时即可侦测到。此方式已在一些厂牌的网上设备产品所支持。

    有一些软件可监听网络上的ARP回应,若侦测出有不正常变动时可发送邮箱通知管理者。例如UNIX平台的Arpwatch以及Windows上的XArp v2或一些网上设备的Dynamic ARP inspection功能。