zoukankan      html  css  js  c++  java
  • Nmap 之 TCP 空闲扫描 (-sI)

    文章转载自:http://blog.chinaunix.net/uid-28811518-id-5601227.html

    1998年,安全研究员Antirez在Bugtraq邮件列表上,提到了一个巧妙的端口扫描技术–空闲扫描。众所周知,它允许进行端口完全欺骗扫 描。使得攻击者能够不使用自己的IP向目标主机发送数据包。它的巧妙之处在于,利用不活跃的“僵尸主机”反弹给攻击者一个旁通信道,从而使得攻击者可以进 行端口扫描。入侵检测系统(Intrusion detection system)也就会把无辜的僵尸主机当成攻击者。除了异常隐蔽外,该种扫描还可以 用于发现基于IP的机器间的信任关系。

    因为空闲扫描比目前任何一种扫描技术都要复杂,所以要理解它,你不必成为TCP/IP专家。总而言之可以概括为以下几个方面:

    判断一个TCP端口是否开放,其中一种方法是向该端口发送SYN(会话建立)包。若端口开放,则目标主机会返回一个SYN/ACK(会话建立确认)包;若端口关闭,则目标主机会返回RST(重置)包。这就是前面所讨论的半开扫描基本概念。
    机器收到SYN/ACK包后会返回一个RST包,而收到的RST包则会被忽略掉。
    互联网上的每个IP数据包都有一个分段身份识别号(IP ID)。许多操作系统只是简单的把该识别号递增,因此分析最后一次的IPID就可以告诉攻击者已经发送了多少数据包。
    结合这些特征,通过伪造你的身份,就可以扫描一个目标网络,而看起来就像无辜的僵尸主机在扫描。本质上,空闲扫描在扫描每个端口时都由以下三步组成:

    探测僵尸主机的IP ID并记录。
    向需要扫描的目标主机端口发送一个伪造成来自僵尸主机的SYN包。根据目标主机端口状态的不同,目标主机返回的数据包会使得僵尸主机的IP ID递增或否。
    再次探测僵尸主机的IP ID。并对比第一步记录的IP ID就可以确定目标主机端口的状态。
    每次扫描后,僵尸主机数据包的IP ID应该增加1或2。增加1说明僵尸主机没有发送任何数据包,只有攻击者探测时导致的加1。而未发送任何数据包 则说明目标端口是未打开的(目标主机向僵尸主机发送了RST包,该包会被忽略,或者什么也没发送)。增加2说明僵尸主机在两次探测之间发送了一个额外的数 据包。这个额外的数据包表明目标端口是开放的(即目标主机收到伪造的SYN包后向僵尸主机发送SYN/ACK包,僵尸主机向目标主机回复一个RST包)。 增加数大于2则说明我们选择的中间层不适合做僵尸主机。它可能含有不可预测的IP ID,或者说在进行空闲扫描时该端口有其他的通讯。空闲扫描利用的是空 闲的端口,如果该端口有其他的通讯,就会导致扫描程序误判目标主机的端口状态。建议选择打印机、考勤机或者不活跃的web服务器做僵尸主机

    尽管被过滤的端口与关闭的端口有少许的不同,但是攻击者会得到相同的结果,即IPID都增加1。因此利用空闲扫描技术不能区分关闭的端口或被过滤掉 的端口。所以,当nmap收到增长为1的IPID后就会把该端口标记为closed|filtered(关闭的或者被过滤的)。

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/jiaojiaow/p/13552599.html
Copyright © 2011-2022 走看看