Nmap学习使用

介绍

Nmap (Network Mapper) 是一个开源的网络扫描工具,用于发现主机和服务,并识别网络上的开放端口。它广泛用于网络管理员、安全专家和黑客等领域。Nmap提供了丰富的功能和参数,使其成为一种功能强大的网络探测工具。

底层原理

Nmap是用C和Lua两种编程语言编写的。

  1. C语言:Nmap的核心功能是用C语言编写的。C语言为Nmap提供了高效的性能和跨平台的特性,使其能在各种操作系统上运行。
  2. Lua脚本语言:Nmap引入了Lua作为脚本语言,用于编写自定义脚本和扩展功能。通过Lua脚本,用户可以实现更多自定义的扫描和探测行为,充分利用Nmap强大的网络探测能力。

使用方法

1
nmap [扫描目标] [参数]

示例

扫描单个主机: nmap 192.168.0.1
扫描多个主机: nmap 192.168.0.1 192.168.0.2 192.168.0.3
扫描整个子网: nmap 192.168.0.0/24
扫描特定端口: nmap -p 80 192.168.0.1
扫描常见端口: nmap -F 192.168.0.1

参数

  1. 基本扫描选项:
    • -sS:TCP SYN 扫描(默认)。
    • -sT:TCP connect 扫描。
    • -sU:UDP 扫描。
    • -sF:FIN 扫描。
    • -sX:Xmas 树扫描。
    • -sP:Ping 扫描,用于检测目标主机是否在线。
  2. 端口扫描选项:
    • -p :指定要扫描的端口范围,可以是单个端口或连续端口范围。例如:-p 80-p 1-100.
    • -F:快速扫描,仅扫描常见端口。
  3. 输出选项:
    • -oN :以正常格式将结果输出到文件。
    • -oX :以XML格式将结果输出到文件。
    • -oG :以Grepable格式将结果输出到文件。
  4. 服务/版本探测选项:
    • -sV:探测服务和版本信息。
  5. 操作系统探测选项:
    • -O:尝试猜测目标操作系统类型。
  6. 路径追踪(Traceroute)选项:
    • --traceroute:路径追踪功能。
  7. 脚本扫描选项:
    • -sC:使用默认脚本进行扫描。
    • --script=:指定要使用的脚本。
  8. 防火墙/IDS逃避选项:
    • -f:分片扫描。
    • -D :伪装成多个IP以逃避防火墙/IDS。
  9. 并行扫描选项:
    • -T<0-5>:设置扫描速度/时间延迟。例如:-T4 表示普通扫描。
  10. 其他选项:
    • -v:详细模式,显示更多输出信息。
    • --version:显示Nmap版本信息。
    • --help:显示帮助信息。

一次扫描步骤

  1. 主机发现(Host Discovery):Nmap首先需要确定哪些主机处于活动状态。它会发送不同类型的网络探测包(例如ICMP Echo Request、TCP SYN包等)到目标IP地址或IP地址范围,并根据收到的响应来确认主机是否在线。
  2. 端口扫描(Port Scanning):确定目标主机上哪些端口是开放的,以及运行在这些端口上的服务。Nmap通过发送不同类型的数据包(如TCP、UDP或SCTP)来探测目标主机上的端口。常见的扫描方式包括TCP SYN扫描、TCP Connect扫描、UDP扫描等。
  3. 服务版本识别(Service Version Detection):在端口扫描的基础上,Nmap还尝试识别目标主机上运行的具体服务和应用程序的版本信息。这样可以帮助管理员了解目标主机上存在的漏洞或弱点。
  4. 操作系统识别(OS Fingerprinting):Nmap还可以尝试识别目标主机的操作系统类型。它通过分析目标主机在网络上的行为和特征来进行推测。这可以帮助管理员了解目标系统的类型,从而采取更针对性的安全措施。
  5. 脚本扫描(Script Scanning):Nmap支持使用Lua脚本来进行高级的扫描和探测。这些脚本可以根据用户的需求编写,用于探测特定的漏洞、执行自定义扫描等功能。
  6. 输出结果(Output Results):扫描完成后,Nmap将收集到的信息整理并呈现给用户。输出结果可以是文本格式、XML格式或者Grepable格式,用户可以根据需要选择不同的输出方式。

GUI工具

第三方开发的图形化用户界面(Graphical User Interface,GUI)工具,可以与Nmap集成,提供更直观和易用的方式来运行Nmap扫描。

  1. Zenmap:Zenmap是Nmap的官方图形化前端,提供了易于使用的界面,让用户可以通过点击按钮和选择选项来运行Nmap扫描。它支持跨平台,可在Windows、Linux和macOS上使用。
  2. Nmapsi4:Nmapsi4是一个用于Nmap的Qt图形化界面,具有简单易用的特点。它提供了许多常用的Nmap选项,并且可以方便地保存和加载扫描配置。
  3. Umit:Umit是Kali Linux发行版中的一个图形化Nmap前端。它提供了一组高级功能,如自定义脚本扫描、主机拓扑图和报告生成等。
  4. NmapFE:NmapFE(Nmap Front-End)是一款老式的Nmap图形化前端,虽然它不再处于活跃维护状态,但在一些旧版本的Linux发行版中可能仍然可用。