最近用到nmap,感觉功能很强大,并开始深入学习,现将其中端口探测部分的一种Idel scan技术的理解记录如下(需要一些TCP/IP方面的知识):
1.理论基础
a. 每个IP包都有帧ID,记作IP ID
b. TCP正常建立链接的时候,第一步是主机A从端口X发给主机B端口Y一个 SYN,第二步是B回应A一个SYN/ACK,第三步是A回B一个ACK,连接建立了。如果A没有发给B一个SYN,而B发给A了一个SYN/ACK,那么A就会发给B一个RST
c. 大部分主机的TCP/IP协议实现中,RST中的IP ID是递增的,增加的单位是1,即incremental
2。TCP Idle scan原理和步骤
a. 这里需要三台主机,一台攻击者,一台没有什么网络流量的空闲主机,还有就是我们的目标主机
b. 目标的某个端口的状态可能是打开、关闭或则被过滤,在遇到我们的Idle scan的时候,不同状态的端口的scan的结果是不一样,由此来判断端口是否是打开的
c. 具体步骤为:
(1)找到一台空闲主机,并从攻击主机发给空闲主机一个SYN/ACK,获得并记录空闲主机的RST的IP ID
(2)在攻击者的主机上虚构一个从空闲主机到目标主机的一个SYN,于是根据目标主机的目标端口状态,如果目标主机的目标端口打开,将会发给空闲主机的一个SYN/ACK,所以空闲主机将会发给目标主机一个RST,否则不会发送RST