下面这种扫描方法,极度隐蔽!有点像玄幻小说中的炼尸。。。。就是那种需要各种材料,选好时间,选好环境,炼制九九百十一天的炼尸。。。
首先,就是僵尸主机产生的条件非常苛刻。。。必须要是闲置系统,什么是闲置系统?就是几乎没人访问的系统。。。其次,僵尸主机系统还要使用递增的IPID,就是对于TCP协议中,每次回复一个包,IPID都会增加一。要知道,现在的系统基本上都是随机IPID,所以,即使找到了万中无一的闲置系统,也不敢保证闲置系统使用的是递增的IPID。。。
另外,还需要一个条件,就是攻击者得能伪造源地址。这个伪造源地址就不容易实现,现在的辨别技术应该可以判断。(具体的就不清楚了)
因此,综上所述。僵尸扫描形成条件非常苛刻!
但是,一旦有僵尸扫描,那么,攻击者将会非常隐蔽!非常非常隐蔽!
原理如下:
攻击者像僵尸机发送一个syn+ack包,由于僵尸机之前并没有主动向攻击者发送SYN包,因此收到这个syn+ack包会觉得很突兀。所以就返回RST包,表示,"你为什么给我发SYN+ACK包?我之前不知道,所以给你一个RST自己体会",然后,在将自己的IPID+1,假设现在的僵尸机的IPID是2,(可以通过抓包看)
然后,重点来了,攻击者现在知道了僵尸机的IPID,攻击者开始向目标发送请求了,此刻,攻击者会先将自己地址伪造成僵尸机的地址,像目标发送一个SYN包,目标一看,“哎,僵尸机像我发送SYN包了”,如果,此刻目标的端口是开放的,那么就会向僵尸机回复SYN+ACK包。这时候,重点中的重点又来了,僵尸机一看,“有一个人莫名其妙给我发SYN+ACK,可我之前没收到他的SYN啊!不管了,返回RST,让他自己体会”,僵尸机回复完之后,自己的IPID又加一,那么现在就变成3了。这里,如果目标的端口没开放,那么即使攻击者伪装成僵尸机,给目标发送SYN,那么目标也不会给僵尸机返回SYN+ACK,也就是说僵尸机的IPID还是2.
最后,基于上面这两种情况,攻击者给僵尸机发最后一个SYN+ACK,僵尸机还是返回RST,然后看IPID,如果是2,则说明攻击者想攻击的目标端口是关闭的,如果是3,则说明目标端口是开放的,因为目标给僵尸机发了SYN+ACK
之所以说这种方法非常隐蔽,是因为,攻击者没有和僵尸机、目标进行有效的连接,也就没有被僵尸机和目标机器记录到日志里。所以,才说非常非常隐蔽。一切全靠套路与分析,哈哈。
不过,遗憾的是,这个实现方法很难。。。
但是,我们是否可以刻意的去伪造僵尸机呢?