Gweek Posthub Gweek Posthub
首页 关于
首页 关于
Gweek
Gweek
Fake it till you make it
抖音 Github X

扫码关注

二维码

扫描二维码

分类

  • 技术分享 20
  • 生活点滴 3
  • 云计算 21
  • 网络 0

标签云

windows server nmap kvm docker vps openstack

归档

  • 2025年12月

Nmap基本用法

Gweek 2025年12月05日 云计算 0 条评论

一、Nmap的定义

Nmap(Network Mapper)是一款开源的网络扫描和安全审计工具,广泛用于网络管理和安全评估。它能够发现网络上的设备、开放的端口、运行的服务及其版本信息,帮助用户识别潜在的安全风险。

二、Nmap的作用

  1. 网络发现:识别网络中活跃的设备和主机,了解网络拓扑结构。
  2. 端口扫描:检测目标主机上开放的端口,了解哪些服务在运行。
  3. 服务版本探测:识别运行在开放端口上的服务及其版本,帮助评估安全性。
  4. 操作系统探测:推测目标主机的操作系统类型,帮助进行针对性的安全评估。

三、Nmap的安装

  1. 在Linux上安装

    • 使用包管理器安装

      • Ubuntu/Debian:

        sudo apt-get update
        sudo apt-get install nmap
      • CentOS/RHEL:

        sudo yum install nmap
    • 从源代码安装

      • 下载源代码:

        wget https://nmap.org/dist/nmap-<version>.tar.bz2
      • 解压并编译:

        tar -xjf nmap-<version>.tar.bz2
        cd nmap-<version>
        ./configure
        make
        sudo make install
  2. 在Windows上安装

    • 访问Nmap官网下载Windows安装包。
    • 双击安装包,按照安装向导完成安装。
  3. 在macOS上安装

    • 使用Homebrew:

      brew install nmap

四、Nmap的基本扫描

image.png

  1. 基本命令格式

    • Nmap的基本命令格式为:

      nmap [选项] [目标]
  2. 常用扫描命令

    • 扫描单个IP地址:默认扫描1000个端口

image.png
image.png

  • 扫描整个子网:
nmap 192.168.1.0/24
  • 该命令将扫描192.168.1.0到192.168.1.255范围内的所有IP地址。

    • 扫描多个IP地址:
nmap 192.168.1.1,192.168.1.2
  • 该命令将同时扫描多个指定的IP地址。
  1. 扫描特定端口

    • 扫描特定端口(如80和443):使用 -p 参数

      nmap 192.168.1.1 -p 80,443 
      • 该命令将仅扫描指定IP地址的80和443端口。
        image.png
  2. 服务版本探测

    • 识别服务版本:

      nmap -sV 192.168.1.1
      • 该命令将探测目标IP地址上运行的服务及其版本信息。
      • -sV 参数告诉 Nmap 执行 服务版本检测(Service Version Detection),目的是识别目标主机上运行的服务以及这些服务的版本号。具体来说,Nmap 会扫描目标主机的开放端口,并对每个端口尝试识别正在运行的服务(如 HTTP、FTP、SSH 等),然后进一步尝试确认这些服务的版本信息。例如,可能会显示出运行的 Apache 服务器版本,或者是 OpenSSH 的版本号。
  3. 操作系统探测

    • 识别目标操作系统:

      nmap -O 192.168.1.1
      • 该命令将尝试识别目标IP地址的操作系统类型。
  4. 输出结果到文件

    • 将扫描结果保存为文本文件:

      nmap -oN output.txt 192.168.1.1
      • 该命令将扫描结果保存到名为output.txt的文件中。

以下是您请求的 Nmap 扫描选项的详细说明汇总表:

扫描选项描述示例命令详细说明
-sSTCP SYN 扫描(半开放扫描)nmap -sS 192.168.1.1发送 SYN 包(握手请求),但不完成握手过程,因此目标主机不会记录到连接。它是最常见的扫描方式,具有隐蔽性,能够绕过一些防火墙和入侵检测系统(IDS)。
-sTTCP 连接扫描(全开放扫描)nmap -sT 192.168.1.1完全建立 TCP 连接,发送 SYN 包并回应 ACK 包,完成三次握手。目标主机会记录到连接,但比 -sS 更容易被检测到,通常在目标机器未配置防火墙时使用。
-sUUDP 扫描nmap -sU 192.168.1.1扫描 UDP 服务,类似于 TCP 扫描,但因 UDP 是无连接的协议,响应的检测比较复杂,通常通过发送特定请求来判断端口是否开放。
-sPPing 扫描(主机发现)nmap -sP 192.168.1.0/24仅检测目标主机是否在线(即是否响应 ICMP Echo 请求)。在大规模网络中进行主机发现,扫描结果会列出哪些主机在指定的子网内处于活动状态。
-sATCP ACK 扫描nmap -sA 192.168.1.1发送 ACK 包,用来探测防火墙或过滤器。通过响应判断目标主机的端口是否存在过滤或 NAT(网络地址转换)。如果目标端口关闭,返回 RST 包;如果端口开放,返回 RST 或无响应。
-sWTCP Window 扫描nmap -sW 192.168.1.1基于 TCP 窗口大小进行扫描,用来探测防火墙策略和端口状态。它通过观察 TCP 窗口大小的变化来判断端口的开放与否。
-sMTCP Maimon 扫描nmap -sM 192.168.1.1使用 SYN/FIN 标志的组合(SYN+FIN),这是一种非常隐蔽的扫描方法,可以绕过某些防火墙或过滤系统。并非所有操作系统都支持此扫描。
-O操作系统检测nmap -O 192.168.1.1通过分析目标主机的网络行为,Nmap 尝试推测其操作系统类型和版本。包括 TCP/IP 栈的特征、TTL(生存时间)值等信息,精度不一。
-sV服务版本检测nmap -sV 192.168.1.1检测每个开放端口的服务类型及其版本信息。Nmap 会尝试通过与服务交互或分析返回的 banner 信息来获取版本号,帮助评估潜在的漏洞风险。
-p指定端口nmap -p 22,80 192.168.1.1指定需要扫描的端口或端口范围(如 -p 1-1000 或 -p 22,80)。可以用于精确控制扫描的端口,避免扫描所有端口。
-Pn不进行主机发现,直接扫描指定的主机nmap -Pn 192.168.1.1跳过主机发现步骤,直接扫描目标主机的指定端口。用于目标不可响应 ping 或防火墙阻止 ICMP 请求的情况下,强制扫描目标主机。
-T设置扫描速度(0-5,0为最慢,5为最快)nmap -T4 192.168.1.1设置扫描速度,T4 为常用的平衡速度(速度快且较为隐蔽),T0 最慢,T5 最快(非常高效,但可能会引起 IDS/IPS 警报)。根据需求选择速度。
-v增加详细输出nmap -v 192.168.1.1输出更详细的扫描过程和结果,适用于分析扫描过程的细节。可以查看每个端口的扫描信息和主机状态,通常用于调试或对扫描过程进行深度分析。
-oN将输出保存为普通文本文件nmap -oN output.txt 192.168.1.1将扫描结果保存为普通文本格式。适合查看和进一步分析结果。输出文件为 output.txt,包含标准的扫描报告。
-oG将输出保存为 grepable 格式nmap -oG output.gnmap 192.168.1.1将结果保存为 grep 可处理的格式,适合用脚本进一步分析扫描结果。输出文件为 output.gnmap。
-oX将输出保存为 XML 格式nmap -oX output.xml 192.168.1.1将结果保存为 XML 格式,适合进一步与其他工具或系统进行数据交换。输出文件为 output.xml,可以通过脚本或程序进一步处理。
--script使用 Nmap 脚本引擎(NSE)执行脚本nmap --script=http-enum 192.168.1.1使用 Nmap 脚本引擎(NSE)执行指定的脚本,例如 http-enum 脚本用于列出 HTTP 服务的目录和文件。NSE 脚本可用于渗透测试、漏洞扫描等。
-iL从文件中读取目标主机列表nmap -iL targets.txt从指定的文件中读取多个目标 IP 地址进行扫描。适用于大规模网络扫描。文件 targets.txt 中每行列出一个目标 IP。
-R反向 DNS 查找nmap -R 192.168.1.1对目标 IP 地址执行反向 DNS 查找,获取其域名(如果存在的话)。有助于确定目标主机的域名信息。
--traceroute路由追踪nmap --traceroute 192.168.1.1跟踪到目标主机的路由路径,查看经过的中间节点(路由器)。这对于网络分析、诊断和性能评估很有帮助。

端口状态

  1. open (开放的):

    • 端口是开放的,且可以接受外部的连接。
  2. closed (关闭的):

    • 端口是关闭的,目标主机明确表示它没有在该端口上提供服务。你可以与此端口建立连接,但是目标主机拒绝它。
  3. filtered (被过滤的):

    • 端口受到防火墙或某种过滤机制的保护,无法判断端口是否开放或关闭。Nmap通常无法得到关于该端口是否开放的明确反馈。
  4. unfiltered (未被过滤的):

    • 端口没有受到过滤,可以得出端口的开放或关闭状态。一般来说,Nmap能直接得到关于该端口的反馈。
  5. open|filtered (开放或者被过滤的):

    • 这种状态通常出现在某些TCP端口的扫描中,Nmap无法确认端口是开放还是被过滤。当目标主机没有响应(比如目标防火墙丢弃了响应)时,就会出现这种情况。Nmap无法确定端口的状态,可能是开放的,也可能是被过滤的。
  6. closed|filtered (关闭或者被过滤的):

    • 这通常表示Nmap无法确定端口是关闭还是被过滤,可能是由于某些特殊的网络条件,比如丢失了响应。

五、利用Nmap进行扫描的步骤

  1. 确定扫描目标

    • 确定需要扫描的IP地址或子网。例如,选择192.168.1.0/24作为目标。
  2. 选择扫描类型

    • 根据需求选择合适的扫描选项:

      • 如果只需快速了解网络设备,可以使用基本扫描命令。
      • 如果需要详细信息,可以选择服务版本探测和操作系统探测。
  3. 执行扫描

    • 在终端中输入相应的Nmap命令。例如:
nmap -sV -O 192.168.1.0/24
  1. 分析结果

    • 查看Nmap输出,分析开放端口、运行服务及其版本信息。输出示例:
    PORT STATE SERVICE VERSION 
    22/tcp open ssh OpenSSH 7.6 (protocol 2.0) 
    80/tcp open http Apache httpd 2.4.29
  2. 采取措施
上一篇
VPS常用脚本
下一篇
Nmap特殊用法
取消回复

添加新评论

RSS