空扫描Idle Scanning
空扫描Idle Scanning是一种借助第三方实施的端口扫描技术,可以很好的隐蔽扫描主机本身。它的实现基于以下两个TCP工作机制。
(1)在TCP三次握手阶段,目标主机接收到发起方的SYN的TCP包,会返回SYN+ACK的TCP包。发起方接受到后,如果发现不是自己发起的连接,会发送RST的TCP包,取消此次连接。
(2)主机发送的每个包中,IP层都包含一个ID字段,用来标识发送的数据包。这个ID字段是一个整数值,大部分系统采用递增数列进行标记。也就是说,每发送一个包,该值加一。
在实施Idle Scanning时,攻击机先获取网络一个主机IP,向该主机发送给一个数据包,根据返回包,获取该主机的IP层的ID值。然后,伪造该主机IP向目标主机的特定端口发送SYN包。目标主机收到后,返回响应包。被伪造的主机接受到响应包,发送RST包,取消该次连接请求。攻击机再次向伪造的主机发送数据包,获取IP层的ID值。如果两次ID值差2,表示被伪造的主机发送过数据包,最大可能是向目标主机发送过RST包。如果差1,说明被伪造的主机没有发送任何包,这说明目标主机特定端口没有打开或者过滤了。
在Kali Linux中,通过发包工具hping,可以很轻松实现Idle Scanning。
PS:在扫描过程中,由于被伪造的主机可能因为其他缘故发包,会影响探测结果,所以需要多次扫描,以判断准确性。