zoukankan      html  css  js  c++  java
  • TCP安全,SYN Flooding 和 nmap

    SYN flooding

    简介:向target持续发送SYN=1的TCP报文,使target因内存满而拒绝服务。
    命令:netwox 76 -i target_ip -p port
    原理:TCP建立连接时,server收到SYN报文,会分配一个较大的TCB空间,存储相关信息,并进入half-opening状态。
    防御:发现这种攻击后,开启SYN Cookies:echo 1 > /prop/sys/net/ipv4/tcp_syncookies
    SYN Cookies原理:
    在ACK到达之前不分配任何资源。收到SYN数据包时,服务器构造SYN + ACK数据包发送回客户端,该数据包中的序列号不再是随机值,
    而是SYN Cookie,它根据以下规则构建:

    1. 前5位:t mod 32.设t是一个缓慢递增的时间戳(通常是time()逻辑上右移6个位置,这给出了64秒的分辨率)
    2. 中3位:表示m的编码值 .令m为服务器在SYN队列条目中存储的最大段大小(MSS)值
    3. 最后24位:s=Hash(server ip、port、client ip、port)

    当客户端向服务器发回ACK数据包后,服务器从确认号中减去1,得到发送给客户端的 SYN cookie,并执行检验:
    4. 检查值t与当前时间,以查看连接是否已过期。
    5. 重新计算s以确定它是否确实是一个有效的SYN cookie。
    6. 从SYN cookie中的3位编码解码值m,然后可以使用它来重建SYN队列条目。
    SYN Cookie的缺点:
    7. 服务器仅限于8个唯一的MSS值,因为它只能以3比特编码。
    8. 服务器必须拒绝所有TCP选项(例如大窗口或时间戳)。

    nmap

    简介:扫描工具,集成了多种扫描功能
    端口检测命令,nmap ip ,也称作tcp connect(-sT)扫描
    原理:向目标各端口发送SYN,若目标端口open,则建立连接,若close,则收到RST,若设置SYN过滤,则无回复。
    缺点:建立连接后会留下痕迹。

    改进:sudo nmap ip, TCP SYN(半开-sS)扫描
    原理:需要root权限,直接干预发包,在收到目标的syn+ack后,不回复ack,而是回复RST,避免连接建立。

    -sF,FIN扫描,可以判断port是close还是open/filter,扫描结果是closed 或 open|filtered
    -sA,ACK扫描,判断目标端口是否设置过滤。当port open/close时,收到ACK报,会回复RST。扫描结果是filtered或 unfiltered
    F和A的交集可判断目标port的状态。

    target port open closed filtered
    -sT SYN+ACK RST no reply
    -sS SYN+ACK RST no reply
    -sA RST RST no reply
    -sF no reply RST no reply

    nmap idle

    与nmap比,不用自己给target发包,不留痕。利用了ip数据报标识(identifier,用于分片重组)自增1的规律(目前已修补该漏洞)。
    步骤:

    1. hack 发SYN给zombie(僵尸,联网但没有活动的主机),zombie的RST回应中带有ip_id=1033
    2. hack 冒充zombie的ip,发SYN给target, 如果目标主机上该端口是开着的,那么会发送SYN+ACK,zombie收到这个数据包,会发RST;如果是关着的,会发送RST,zombie收到这个数据包,会直接忽略。
    3. hack 发syn给zombie,zombie的RST回复中带有ip_id,若它=1033+1,说明zombie没有与target建立连接,target为close,
      若id=1033+2,说明target open,若id=1033+3,说明zombie不是真的僵尸。

    原理:

    • 收到SYN包时,如果port open,回复SYN+ACK,若close,则回复RST。
    • 如果没有发送SYN,却收到一个SYN+ACK,会回复RST。
    • 根据id自增1的规律,检测identifier,判断主机距离上一次发包之后又发了几个数据包。

    参考1:
    https://zhuanlan.zhihu.com/p/59750145
    《TCP/IP详解》

  • 相关阅读:
    Equal Cut
    【线段树】Interval GCD
    zookeeper错误
    HBase之过滤器
    Hbase之缓存扫描加快读取速度
    Hbase之遍历超时处理
    Hbase之遍历获取数据
    Hbase之使用回调函数进行批处理操作
    Hbase之进行批处理操作
    Hbase之原子性更新数据
  • 原文地址:https://www.cnblogs.com/chzhyang/p/11360088.html
Copyright © 2011-2022 走看看