Nmap学习使用
介绍
Nmap (Network Mapper) 是一个开源的网络扫描工具,用于发现主机和服务,并识别网络上的开放端口。它广泛用于网络管理员、安全专家和黑客等领域。Nmap提供了丰富的功能和参数,使其成为一种功能强大的网络探测工具。
底层原理
Nmap是用C和Lua两种编程语言编写的。
- C语言:Nmap的核心功能是用C语言编写的。C语言为Nmap提供了高效的性能和跨平台的特性,使其能在各种操作系统上运行。
- Lua脚本语言:Nmap引入了Lua作为脚本语言,用于编写自定义脚本和扩展功能。通过Lua脚本,用户可以实现更多自定义的扫描和探测行为,充分利用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 |
参数
- 基本扫描选项:
-sS
:TCP SYN 扫描(默认)。-sT
:TCP connect 扫描。-sU
:UDP 扫描。-sF
:FIN 扫描。-sX
:Xmas 树扫描。-sP
:Ping 扫描,用于检测目标主机是否在线。
- 端口扫描选项:
-p
:指定要扫描的端口范围,可以是单个端口或连续端口范围。例如:-p 80
或-p 1-100
.-F
:快速扫描,仅扫描常见端口。
- 输出选项:
-oN
:以正常格式将结果输出到文件。-oX
:以XML格式将结果输出到文件。-oG
:以Grepable格式将结果输出到文件。
- 服务/版本探测选项:
-sV
:探测服务和版本信息。
- 操作系统探测选项:
-O
:尝试猜测目标操作系统类型。
- 路径追踪(Traceroute)选项:
--traceroute
:路径追踪功能。
- 脚本扫描选项:
-sC
:使用默认脚本进行扫描。--script=
:指定要使用的脚本。
- 防火墙/IDS逃避选项:
-f
:分片扫描。-D
:伪装成多个IP以逃避防火墙/IDS。
- 并行扫描选项:
-T<0-5>
:设置扫描速度/时间延迟。例如:-T4
表示普通扫描。
- 其他选项:
-v
:详细模式,显示更多输出信息。--version
:显示Nmap版本信息。--help
:显示帮助信息。
一次扫描步骤
- 主机发现(Host Discovery):Nmap首先需要确定哪些主机处于活动状态。它会发送不同类型的网络探测包(例如ICMP Echo Request、TCP SYN包等)到目标IP地址或IP地址范围,并根据收到的响应来确认主机是否在线。
- 端口扫描(Port Scanning):确定目标主机上哪些端口是开放的,以及运行在这些端口上的服务。Nmap通过发送不同类型的数据包(如TCP、UDP或SCTP)来探测目标主机上的端口。常见的扫描方式包括TCP SYN扫描、TCP Connect扫描、UDP扫描等。
- 服务版本识别(Service Version Detection):在端口扫描的基础上,Nmap还尝试识别目标主机上运行的具体服务和应用程序的版本信息。这样可以帮助管理员了解目标主机上存在的漏洞或弱点。
- 操作系统识别(OS Fingerprinting):Nmap还可以尝试识别目标主机的操作系统类型。它通过分析目标主机在网络上的行为和特征来进行推测。这可以帮助管理员了解目标系统的类型,从而采取更针对性的安全措施。
- 脚本扫描(Script Scanning):Nmap支持使用Lua脚本来进行高级的扫描和探测。这些脚本可以根据用户的需求编写,用于探测特定的漏洞、执行自定义扫描等功能。
- 输出结果(Output Results):扫描完成后,Nmap将收集到的信息整理并呈现给用户。输出结果可以是文本格式、XML格式或者Grepable格式,用户可以根据需要选择不同的输出方式。
GUI工具
第三方开发的图形化用户界面(Graphical User Interface,GUI)工具,可以与Nmap集成,提供更直观和易用的方式来运行Nmap扫描。
- Zenmap:Zenmap是Nmap的官方图形化前端,提供了易于使用的界面,让用户可以通过点击按钮和选择选项来运行Nmap扫描。它支持跨平台,可在Windows、Linux和macOS上使用。
- Nmapsi4:Nmapsi4是一个用于Nmap的Qt图形化界面,具有简单易用的特点。它提供了许多常用的Nmap选项,并且可以方便地保存和加载扫描配置。
- Umit:Umit是Kali Linux发行版中的一个图形化Nmap前端。它提供了一组高级功能,如自定义脚本扫描、主机拓扑图和报告生成等。
- NmapFE:NmapFE(Nmap Front-End)是一款老式的Nmap图形化前端,虽然它不再处于活跃维护状态,但在一些旧版本的Linux发行版中可能仍然可用。