什么是dos攻击?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是dos攻击?相关的知识,希望对你有一定的参考价值。

DDOS全名是Distributed Denial of service (分布式拒绝服务),很多DOS攻击源一起攻击某台服务器就组成了DDOS攻击,DDOS 最早可追溯到1996年最初,在中国2002年开始频繁出现,2003年已经初具规模。 参考技术A

DOS,是Denial of
Service的简称,即拒绝服务,不是DOS操作系统,造成DOS的攻击行为被称为DOS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DOS攻击有计算机网络带宽攻击和连通性攻击。

DOS攻击常见方式如下:

SYN FLOOD

利用服务器的连接缓冲区,利用特殊的程序,设置TCP的header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。

如果SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求;其他合法用户的连接都被拒绝,可以持续SYN请求发送,直到缓冲区中都是自己的只有SYN标志的请求。

IP欺骗

DOS攻击这种攻击利用RST位来实现的,比如现在有一个合法用户已经同服务器建立正常连接,攻击者构造攻击的TCP数据,伪装自己的IP为正常ip,向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从合法用户发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户再发送合法数据,服务器就已经没有这样的连接了,该用户必须重新开始建立连接。

带宽DOS攻击

如果连接带宽足够大而服务器又不是很大,可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大,配合上SYN一起实施DOS,威力巨大。

自身消耗的DOS攻击

这种是老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG,比如win
95这样的系统。这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快地把资源消耗光,直接导致宕机。这种伪装对一些身份认证系统威胁还是很大的。

塞满服务器的硬盘

如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径:

1、发送垃圾邮件:一般公司的服务器可能把邮件服务器和Web服务器都放在一起,破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。

2、让日志记录满:入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。

3、向匿名FTP塞垃圾文件,这样也会塞满硬盘空间。

网络安全Dos攻击科普文

DOS攻击

技术图片

什么是DOS攻击

DOS是Denial of Service的简称,用中文简单翻译就是拒绝服务。DOS攻击的目的是:通过耗尽服务器的CPU、内存和网络带宽等资源使服务器无法为用户提供正常服务或使得服务质量下降。总结下就是攻击服务器,使得服务器拒绝为正常的用户请求提供服务。(这样已解释,感觉DOS这个名字还取得挺形象的,哈哈~)

在网上找了个比较详细的解释:

作个形象的比喻来理解DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要DoS餐馆的话,手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣……相应的计算机和网络系统则是为Internet用户提供互联网资源的,如果有黑客要进行DoS攻击的话,可以想象同样有好多手段!今天最常见的DoS攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

攻击手段分类

DOS拒绝服务攻击根据攻击手段,主要可分为两类:

  • 洪泛攻击:向目标服务器发送大量超过其处理能力的无用数据包从而使目标服务器无法为合法用户提供服务;
  • 半开连接攻击:使系统中存在大量处于半连接的请求服务,服务器为了维护这些半开连接,需要耗费大量内存,而且一般的Web服务器都是有连接数量限制的。这个时候如果正常的请求过来就会被拒绝掉。

具体的攻击方式举例

1. SYN FLOOD(属于半开连接攻击)
利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。

如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。

2. 带宽DOS攻击
如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。

3. Hash碰撞攻击
这个安全弱点利用了各语言的Hash算法的“非随机性”可以制造出N多的value不一样,但是key一样数据,然后让你的Hash表成为一张单向链表,而导致你的整个网站或是程序的运行性能以级数下降(可以很轻松的让你的CPU升到100%)。关于Hash碰撞DOS攻击,这篇博客已经总结的很全面了,就不自己再造个轮子了。

我自己做了个简单的实验,写了下面这个Controller

@RequestMapping("/convertJSONAndValid")
public Object convertJSON(@RequestBody JSONObject jspan){
    Map<String,Object> map = new HashMap<>();
    map.put("key1","value");
    return map;
}

技术图片

通过Postman向这个接口一次性发送1000000个"xx":"1"这样的键值对,通过任务管理器看到CPU瞬间就飙升到了88%。这个攻击还是非常恐怖的。下面代码用于生成1000000个键值对。

public static void main(String[] args) throws Exception {
    FileWriter fs = new FileWriter("D:\\json.txt");
    fs.write("{
");
    int count = 1000000;
    for(int i=0;i<count;i++){
        if(i!=count-1){
            fs.write(""xx":"1",
");
        }else {
            fs.write(""xx":"1"
");
        }
    }
    fs.write("}");
    fs.close();
}

优秀博客参考

  • https://www.cnblogs.com/botoo/p/9583388.html

DDOS攻击

传统上,攻击者所面临的主要问题是网络带宽,由于较小的网络规模和较慢的网络速度的限制,攻击者无法发出过多的请求。虽然类似“the ping of death”的攻击类型只需要较少量的包就可以摧毁一个没有打过补丁的UNIX系统,但大多数的DoS攻击还是需要相当大的带宽的,而以个人为单位的黑客们很难使用高带宽的资源。为了克服这个缺点,DoS攻击者开发了分布式的攻击。攻击者简单利用工具集合许多的网络带宽来同时对同一个目标发动大量的攻击请求,这就是DDoS(Distributed Denial of Service)攻击。

无论是DoS攻击还是DDoS攻击,简单的看,都只是一种破坏网络服务的黑客方式,虽然具体的实现方式千变万化,但都有一个共同点,就是其根本目的是使受害主机或网络无法及时接收并处理外界请求,或无法及时回应外界请求。

总结下:
DDOS攻击就是控制多台分布广泛的机器对目标机器发起DOS攻击

以上是关于什么是dos攻击?的主要内容,如果未能解决你的问题,请参考以下文章

什么叫DOS攻击

什么是DOS攻击,DOS攻击的命令都有哪些,攻击的方式都有哪些?

网络安全Dos攻击科普文

DOS和DDOS攻击

什么是DDOS攻击,有什么作用

什么是网络攻击及怎样防御攻击详解