如何解释nmap的结果,主机但没有端口打开

我用nmap来映射networking,使用下面的命令进行扫描

nmap -v -sS --no-stylesheet -T3 -sU -sV -O -oX <filename.xml> 192.168.69.0/24 

一些主机回来了一个奇怪的结果。 Nmap认为他们是由于syn-ack 。 我认为这意味着一个TCP连接到一个特定的端口和三方握手过程完成。 但是,没有列出的端口是开放的。 (但是有开放的,过滤的和closures的端口)。 任何人都可以解释我应该如何解释这个? 协商到主机的tcp连接是否意味着至less有一个端口是打开的?

扫描的主机的XML输出如下:

 <host starttime="1435615239" endtime="1435901758"> <status state="up" reason="syn-ack" reason_ttl="115"/> <address addr="192.168.69.23" addrtype="ipv4"/> <hostnames> <hostname name="example.com" type="PTR"/> </hostnames> <ports> <extraports state="open|filtered" count="1000"> <extrareasons reason="no-responses" count="1000"/> </extraports> <extraports state="filtered" count="996"> <extrareasons reason="no-responses" count="996"/> </extraports> <port protocol="tcp" portid="111"> <state state="closed" reason="reset" reason_ttl="115"/> <service name="rpcbind" method="table" conf="3"/> </port> <!-- more closed ports --> </ports> <os><!-- ... --></os> <times srtt="3165" rttvar="109" to="100000"/> </host> 

Nmap认为他们是由于同步。 我认为这意味着一个TCP连接到一个特定的端口和三方握手过程完成。

实际上,Nmap没有完成主机发现的三次握手(也没有使用-sS进行TCP SYN扫描)。 它将一个原始的TCP SYN数据包发送到端口443( 以及其他探测器 ),并且如果接收到任何多个不同的响应,则认为主机处于启动状态。 在你的情况下,目标发送了一个SYN-ACK响应,表示一个开放的端口。 然后,Nmap将它留给扫描主机的操作系统发送一个RST数据包作为回复,因为操作系统不知道传出的SYN,并且不期待SYN-ACK回复。 如果您的防火墙configuration为DROP无效或意外的数据包,那么RST将永远不会被发送。

一些TCP堆栈,特别是在embedded式设备上,不能很好地处理TCPexception。 您的目标可能是在端口443上使用半开TCP连接,等待从未到达的RST或ACK数据包,这将导致在端口扫描阶段随后的SYN探测无法获得响应。

虽然这是所有的猜测。 目标有可能是某种自适应主机防火墙,它检测到端口扫描,并在到达开放端口443之前开始丢弃Nmap的stream量。