常见攻击方式原理以及防御方法

Posted by Johan Niu on May 13, 2018

常见攻击方式原理以及防御方法

1 ARP

1.1 原理

https://zhuanlan.zhihu.com/p/28771785

  • ARP缓存表基于”后到优先”原则,IP与MAC的映射信息能被覆盖;
  • ARP攻击基于伪造的ARP回应包,黑客通过构造”错位”的IP和MAC映射,覆盖主机的ARP表(也被称为”ARP毒化”),最终截取用户的数据流;
  • 一旦遭受ARP攻击,账号密码都可能被窃取(如果通信协议不是加密的);
  • 通过Wireshark数据包分析,我们掌握了真实网络中ARP底层攻击原理及数据包组成。

https://zhuanlan.zhihu.com/p/28818627

1.2 防御

https://zhuanlan.zhihu.com/p/28865553

2 DDOS

2.1 DDOS 定义

DDoS攻击是Distributed Denial of Service的缩写。

分布式集中对攻击目标发起服务请求,致使目标服务器断网,最终停止提供服务。

DDoS攻击通常采用一对多控制僵尸网络,然后多对一发起攻击。

通过大量合法的请求占用大量网络资源,以达到使网络瘫痪的目的。

具体攻击方式可分为以下几种:

  • 通过使网络过载来干扰甚至阻断正常的网络通讯;
  • 通过向服务器提交大量请求,使服务器超负荷;
  • 阻断某一用户访问服务器;
  • 阻断某服务与特定系统或个人的通讯。

2.2 攻击案例

1、2016年5月,不法黑客针对全球范围内的多家银行网站发动了一系列的DDoS攻击。导致约旦、韩国以及摩纳哥等央行网络系统陷入了半小时的瘫痪状态,无法进行正常工作。

2、2016年11月,俄罗斯五家主流银行遭遇长达两天的DDoS攻击。来自30个国家2.4万台计算机构成的僵尸网络持续不断发动强大的DDOS攻击。

3、2017年4月初,江苏省某网络公司服务器频繁遭到DDoS流量攻击,导致挂载在服务器上的多个网站无法正常运营,损失严重。

4、2018年3月,Github遭受了迄今为止记录的最大的DDoS攻击。攻击者通过公共互联网发送小字节的基于UDP的数据包请求到配置错误的memcached服务器,作为回应,memcached服务器通过向Github发送大量不成比例的响应,形成巨大规模的DDoS攻击。

2.3 分类

在DDoS攻击中最常见的攻击便单包 。

单包攻击防御是防火墙具备的最基本的的方法功能。

单包攻击主要分为三类:

  • 扫描窥探攻击
  • 畸形报文攻击
  • 特殊报文攻击

2.3.1 SYN洪水(SYN flood)

原理

这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。建立TCP连接,需要三次握手——客户端发送SYN报文,服务端收到请求并返回报文表示接受,客户端也返回确认,完成连接。

SYN Flood 就是用户向服务器发送报文后突然死机或掉线,那么服务器在发出应答报文后就无法收到客户端的确认报文(第三次握手无法完成),这时服务器端一般会重试并等待一段时间后再丢弃这个未完成的连接。一个用户出现异常导致服务器的一个线程等待一会儿并不是大问题,但恶意攻击者大量模拟这种情况,服务器端为了维护数以万计的半连接而消耗非常多的资源,结果往往是无暇理睬客户的正常请求,甚至崩溃。

防御

https://www.jianshu.com/p/2a03fb550cf5

2.3.2 Land攻击

原理

这种攻击方式与SYN floods类似,不过在LAND攻击包中的原地址和目标地址都是攻击对象的IP。

这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。

具体来讲,伪造包将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时,从而大量的长时间的占用系统资源;

防御

通过设置防火墙和路由规则,检测源IP与目的IP相同的数据包,丢弃、过滤这种数据包。

2.3.3 ICMP Flood

原理

ICMP(Internet控制报文协议)用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。通过对目标系统发送海量数据包,就可以令目标主机瘫痪,如果大量发送就成了洪水攻击。

防御

过来ICMP echo request 包

2.3.4 死亡之ping(ping of death)

原理

路由器对包的大小是有限制的,IP报文的长度字段为16位,即IP报文的最大长度为65535。如果遇到大小超过65535的报文,会出现内存分配错误,从而使接收方的计算机系统崩溃。攻击者只需不断的通过Ping命令向攻击目标发送超过65535的报文,就可以使目标计算机的TCP/IP堆栈崩溃,致使接收方系统崩溃。

防御

检测报文的大小是否大于65535字节,对大于65535字节的报文直接丢弃。

2.3.5 Smurf攻击

原理

攻击者向网络广播地址发送ICMP包,并将回复地址设置成受害网络的广播地址,通过使用ICMP应答请求数据包来淹没受害主机的方式进行,最终导致该网络的所有主机都对次ICMP应答请求作出答复,导致网络阻塞。

更加复杂的Smurf攻击攻击将源地址改为第三方受害者,最终导致第三方崩溃。

一句话:伪造ICMP EHCO-REQUEST,把源地址设置为被攻击服务器地址,目的地址设置受害者的广播地址

防御
  • 配置路由器禁止IP广播包进网
  • 配置网络上所有计算机的操作系统,禁止对目标地址为广播地址的ICMP包响应。
  • 被攻击目标与ISP协商,有ISP暂时阻止这些流量。
  • 对于从本网络向外部网络发送的数据包,本网络应该将其源地址为其他网络的这部分数据包过滤掉。

现在的防火墙常用防御策略:

检查ICMP请求报文的目的地址是否为网络的A、B、C类广播地址,如果是则丢弃。

2.3.6 泪滴(teardrop)

原理

对于一些大的IP数据包,为了迎合链路层的MTU(Maximum Transmission Unit)的要求,需要传送过程中对其进行拆分,分成几个IP包。在每个IP报头中有一个偏移字段和一个拆分标志(MF),其中偏移字段指出了这个片段在整个IP包中的位置。如果攻击者截取IP数据包后,把偏移字段设置成不正确的值,接收端在收到这些分拆的数据包后,就不能按数据包中的偏移字段值正确组合出被拆分的数据包,这样,接收端会不停的尝试,以至操作系统因资源耗尽而崩溃。

防御

对接收到的分片数据包进行分析,计算数据包的偏移量是否有误

2.3.7 UDP洪水(UDP flood)

原理

UDP协议是一种无连接的服务,在UDP Flood 中,攻击者通常发送大量伪造源IP地址的小UDP包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k bps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。上述传统的流量型攻击方式技术含量较低,伤人一千自损八百,攻击效果通常依赖受控主机本身的网络性能,而且容易被查到攻击源头,单独使用的情况已不常见。于是,具有四两拔千斤效果的反射型放大攻击就出现了。

防御

https://forum.huawei.com/enterprise/zh/thread-293807-1-1.html

2.3.8 反射攻击 如NTP Flood

原理

NTP是标准的基于UDP协议传输的网络时间同步协议,由于UDP协议的无连接性,方便伪造源地址。

攻击者使用特殊的数据包,也就是IP地址指向作为反射器的服务器,源IP地址被伪造成攻击目标的IP,反射器接收到数据包时就被骗了,会将响应数据发送给被攻击目标,耗尽目标网络的带宽资源。一般的NTP服务器都有很大的带宽,攻击者可能只需要1Mbps的上传带宽欺骗NTP服务器,就可给目标服务器带来几百上千Mbps的攻击流量。

因此,“问-答”方式的协议都可以被反射型攻击利用,将质询数据包的地址伪造为攻击目标地址,应答的数据包就会都被发送至目标,一旦协议具有递归效果,流量就被显著放大了,堪称一种“借刀杀人”的流量型攻击。

防御
  • 使用防 DDoS 设备进行清洗;
  • 加固并升级NTP服务器;
  • 在网络出口封禁 UDP 123 端口;
  • 通过网络层或者借助运营商实施 ACL 来防御;
  • 关闭现在 NTP 服务的 monlist 功能,在ntp.conf配置文件中增加disable monitor选项。

2.3.9 放大攻击 如 DNS Query Flood

原理

放大攻击类似于放射攻击,通过伪造IP,对目标进行攻击。但是放大攻击使攻击者以较小的带宽,换服务器数倍的带宽消耗,达到放大攻击的目的。常用的有DNS查询,NTP攻击。

DNS Query Flood采用的方法是操纵大量傀儡机器,向目标服务器发送大量的域名解析请求。

服务器在接收到域名解析请求时,首先会在服务器上查找是否有对应的缓存,若查找不到且该域名无法直接解析时,便向其上层DNS服务器递归查询域名信息。通常,攻击者请求解析的域名是随机生成或者是网络上根本不存在的域名,由于在本地无法查到对应的结果,服务器必须使用递归查询向上层域名服务器提交解析请求,引起连锁反应。解析过程给服务器带来很大的负载,每秒钟域名解析请求超过一定的数量就会造成DNS服务器解析域名超时。

一台DNS服务器所能承受的动态域名查询的上限是每秒钟9000个请求。而一台P3的PC机上可以轻易地构造出每秒钟几万个域名解析请求,足以使一台硬件配置极高的DNS服务器瘫痪,由此可见DNS服务器的脆弱性。

防御
  • 联系ISP清洗上游流量;
  • DNS服务器只对可信域内提供服务,限制对域外用户提供DNS解析服务;
  • 对单个IP的查询速率做限制;
  • 拥有足够的带宽承受小规模攻击;
  • 关闭DNS服务器的递归查询;
  • 利用防火墙等对ANY Request进行过滤。

2.3.10 CC攻击

原理

CC攻击(ChallengeCollapsar)又称作HTTP 泛洪攻击,其原理是攻击者控制肉鸡、僵尸网络或使用代理服务器,不停地向目标的web服务发送大量合法请求,使得正常用户的web请求处理缓慢甚至得不到处理,制造大量的后台数据库查询动作,消耗目标CPU资源,最终导致服务器宕机崩溃。这种攻击方式不需要很大的带宽,且无法使用伪造IP地址进行攻击,需要真实的机器与web服务器建立连接,因为HTTP协议是建立在TCP协议上,必须先进行TCP三次握手才能进行HTTP通信。如果目标web服务器支持HTTPS,那么发起的HTTPS泛洪攻击还能穿透一些防护设备。

防御
  • 必要时将网页做成静态,减少数据库的使用;
  • 限制连接数量;
  • 修改最大超时时间;
  • 让用户手动输入验证码;
  • 在response报文中添加特殊字段,验证IP合法性;
  • 屏蔽频繁访问服务器的主机IP。

参考文献:

3 APT

原理

APT(Advanced Persistent Threat)是指高级持续性威胁,本质是针对性攻击。

APT攻击可以大致分为探测期、入侵期、潜伏期、退出期4个阶段,这4个阶段通常是循序渐进的

  • 长时间且多次攻击一个目标;
  • 传统的安全防护方案无力应对;
  • 学习目标系统的防护手段不断提升自身的攻击能力。
防御
  • 探测期:防止端口扫描等,弱口令等
  • 入侵期:采取基于异常检测的IDS实现,主要检测异常行为
  • 潜伏期:IDS/IPS,异常流量检测

APT攻击检测与防御详解

4 测试工具

5 端口扫描

6 缓冲器溢出

7 弱口令检测

5、6、7见博客:

几种攻击简单测试