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

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

我使用 nmap 映射网络,并使用以下命令进行扫描

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

某些主机返回了奇怪的结果。Nmap 认为它们处于启动状态,原因是syn-ack。我假设这意味着已与某个端口建立了 TCP 连接,并且已完成三次握手过程。但是,没有列出打开的端口。(但是有打开|过滤、过滤和关闭的端口)。有人能解释一下我应该如何解释这一点吗?与主机协商 TCP 连接是否不意味着必须至少有一个端口打开?

扫描后该主机的 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>

答案1

Nmap 认为它们已启动,这是由于 syn-ack。我猜想这意味着已与某个端口建立了 tcp 连接,并且 3 次握手过程已完成。

实际上,Nmap 不会完成主机发现的三次握手(也不会完成 TCP SYN 扫描-sS)。它向端口 443 发送原始 TCP SYN 数据包(在其他调查中),如果主机收到任何不同的响应,则认为主机已启动。在您的例子中,目标发送了一个 SYN-ACK 响应,表示端口开放。然后,Nmap 让扫描主机的操作系统发送 RST 数据包作为回复,因为操作系统不知道传出的 SYN,也不期待 SYN-ACK 回复。如果您将防火墙配置为丢弃无效或意外的数据包,则永远不会发送 RST。

某些 TCP 堆栈(尤其是嵌入式设备上的堆栈)不能很好地处理 TCP 异常。您的目标可能在端口 443 上处于半开 TCP 连接状态,等待永远不会到达的 RST 或 ACK 数据包,这将导致在端口扫描阶段得不到回应。

不过,这全都是猜测。目标很可能有某种自适应主机防火墙,可以检测到端口扫描,并在 Nmap 流量到达开放端口 443 之前开始丢弃它。

相关内容