前言
本篇文章首先对黑客常用的工具Nmap(上帝之眼)做了一个基本介绍,然后对Nmap的常用命令做了一个详细的汇总,包括Nmap常用命令的解释说明,详情请看正文。
一、Nmap简介
Nmap(网络映射器)是一款用于网络探测和安全评估的开源工具。它可以帮助系统管理员和安全专家识别网络上的主机、服务和开放端口,以及发现潜在的漏洞和安全风险。Nmap具有强大的扫描功能,可以进行主机发现、端口扫描、操作系统检测、服务版本探测等操作。它支持多种扫描技术和灵活的配置选项,可以满足各种不同的网络安全需求。
Nmap官网:www.nmap.org(Nmap:网络映射器 - 免费安全扫描程序)。
一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
1.1 Nmap优点
Nmap的优点详细:
1.2 Nmap四项基本功能
Nmap包含以下四项基本功能,每个功能都有其独特的作用:
主机发现用于确定目标网络上存活的主机。Nmap使用各种技术,如ping扫描、ARP扫描、ICMP探测等,来确定主机是否在线。主机发现是进行后续扫描和评估的基础,它帮助用户创建一个有效的目标主机清单。
端口扫描用于确定目标主机上开放的网络端口。Nmap支持多种扫描技术,如TCP SYN扫描、TCP Connect扫描、UDP扫描等。通过分析响应和超时信息,Nmap可以识别主机上开放的端口,并确定所运行的服务类型。
操作系统检测用于确定目标主机运行的操作系统类型。Nmap通过分析目标主机的网络响应、TCP/IP栈行为和其他特征来进行操作系统识别。这提供了对目标主机的更深入了解,有助于评估其安全性,并确定适当的安全策略和防护措施。
服务版本探测用于确定目标主机上运行的具体服务及其版本信息。Nmap使用各种技术和指纹库来识别服务类型和版本,包括分析响应信息、探测已知漏洞等。服务版本探测有助于评估目标主机上运行的服务的安全性和漏洞风险,以及进行服务管理和升级计划。
这四项基本功能结合在一起,使Nmap成为一款强大而灵活的网络扫描和安全评估工具。它提供了全面的信息收集和分析功能,帮助用户了解目标网络的结构、安全状况和服务配置,从而制定有效的安全策略和防护措施。
而这四项功能之间,又存在大致的依赖关系(通常情况下的顺序关系,但特殊应用另外考虑),首先需要进行主机发现,随后确定端口状态,然后确定端口上运行的具体应用程序和版本信息,然后可以进行操作系统的侦测。而在这四项功能的基础上,nmap还提供防火墙和 IDS 的规避技巧,可以综合运用到四个基本功能的各个阶段。另外nmap还提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。
二、Nmap常用命令
2.1 主机发现
-iR
:随机选择目标。-iL
:从文件中加载 IP 地址。-sL
:进行简单的目标扫描。-sn
:Ping 扫描,禁用端口扫描。-Pn
:将所有主机视为在线,跳过主机发现。-PS [端口列表]
:使用 TCP SYN ping 进行主机发现,需要 root 权限。-PA [端口列表]
:使用 TCP ACK ping 进行主机发现。-PU [端口列表]
:使用 UDP ping 进行主机发现。-PY [端口列表]
:使用 SCTP ping 进行主机发现。-PE/PP/PM
:使用 ICMP 回显、时间戳和网络掩码请求探测进行主机发现。-PO [协议列表]
:使用 IP 协议 Ping 进行主机发现。-n/-R
:控制是否执行 DNS 解析。-n
表示从不执行 DNS 解析,-R
表示始终解析(默认情况下有时解析)。--dns-servers
:指定自定义 DNS 服务器。--system-dns
:使用操作系统的 DNS 服务器。--traceroute
:跟踪到每个主机的跃点路径。
2.2 扫描技术
-sS
:使用 TCP 的 SYN 进行扫描。-sT
:使用 TCP 进行扫描。-sA
:使用 TCP 的 ACK 进行扫描。-sU
:使用 UDP 进行扫描。-sI
:使用 Idle 扫描。-sF
:使用 FIN 进行扫描。-b
:进行 FTP 反弹扫描。
2.3 端口规格和扫描顺序
-p
:扫描指定的端口。--exclude-ports
:从扫描中排除指定的端口。-f
:快速模式,扫描比默认扫描更少的端口。-r
:连续扫描端口,不随机化扫描顺序。--top-ports
:扫描最常用的端口数量。
2.4 服务/版本探测
-sV
:探测服务/版本信息。--version-intensity
:设置版本扫描强度,范围从 0 到 9,值越大扫描越深入。--version-all
:尝试使用每个强度进行版本探测。--version-trace
:显示详细的版本扫描活动,用于调试目的。
使用
-sV
命令可以让 nmap 尝试识别正在运行的服务和其版本信息。
2.5 脚本扫描
-sC
:等效于--script=default
,启用默认脚本扫描。--script=,
:以逗号分隔的目录、脚本文件或脚本类别。--script-args=
:为脚本提供参数。--script-args-file=
:从文件中加载脚本参数。--script-trace
:显示发送和接收的所有数据。--script-updatedb
:更新脚本数据库。--script-help=
:显示有关脚本的帮助。
使用脚本可以扩展 nmap 的功能,以执行更具体的扫描和测试。可以指定特定的脚本或脚本类别,同时还可以为脚本提供参数以自定义行为。
--script-trace
可以帮助调试脚本的发送和接收数据。--script-updatedb
可以更新脚本数据库,确保使用最新的脚本。
2.6 操作系统检测
-O
:启用操作系统检测。--osscan-limit
:将操作系统检测限制为可能的目标。--osscan-guess
:推测操作系统检测结果。
使用
-O
命令可以让 nmap 尝试根据网络上的响应数据和其他特征来猜测目标主机的操作系统类型。可以使用--osscan-limit
对操作系统检测进行限制,只针对可能的目标进行检测。使用--osscan-guess
可以推测操作系统检测结果,提供更详细的信息和猜测。
2.7 时间和性能
--host-timeout
:设置主机超时时间,即等待目标主机响应的最长时间。--scan-delay
:设置探测之间的时间间隔,以便减少对目标主机产生过大负载或触发入侵检测系统(IDS)等警报的可能性。-T
:设置时间模板,范围从 0 到 5,值越小触发 IDS 警报的几率越低。
通过调整这些参数,可以控制 nmap 扫描过程中的超时时间、探测间隔和 IDS 警报的几率,以适应不同的网络环境和需求。
2.8 防火墙/IDS规避和欺骗
-f
:启用报文分段,将扫描报文分成较小的片段发送。-S
:欺骗源地址,使用指定的源 IP 地址进行扫描。-g
:使用指定的本地端口进行扫描,以改变扫描报文的源端口。--proxies
:使用指定的 HTTP/SOCK4 代理进行扫描。--data
:向发送的数据包中追加自定义的负载。--data-string
:将自定义的 ASCII 字符串附加到发送的数据包中。--data-length
:发送数据包时附加随机数据。--spoof-mac
:进行 MAC 地址欺骗,使用指定的 MAC 地址进行扫描。--badsum
:发送带有虚假 TCP/UDP/STCP 校验和的数据包。
这些命令允许你对 nmap 的扫描行为进行更具体的控制和定制,例如欺骗源地址、使用代理、自定义数据包负载等。
2.9 输出
-oN
:将结果输出到指定的标准输出文件。-oX
:将结果输出到指定的 XML 文件。-oS
:将结果输出到指定的 script jlddi3 文件。-oG
:将结果输出到指定的 grepable 文件。-oA
:同时输出到三种主要格式(标准输出、XML 和 grepable)的文件。-V
:显式显示版本和详细级别信息。-d
:设置调试级别,输出更详细的调试信息。--packet-trace
:跟踪发送和接收的网络报文。--reason
:显示端口处于特殊状态的原因。--open
:仅显示开放的端口。
这些命令可用于控制 nmap 输出的格式、详细级别和调试信息。你可以选择将结果输出到不同的文件类型(如标准输出、XML、grepable)中,或者跟踪发送和接收的报文,并显示端口状态的原因。
2.10 杂项
-6
:启动 IPv6 扫描,用于扫描 IPv6 网络。-A
:启用操作系统检测、版本检测、脚本扫描和 traceroute 功能。这是一个全面的扫描选项,提供了更全面的信息和功能。-V
:显示 nmap 的版本号。-h
:显示 nmap 的帮助信息,包括常用选项和使用说明。
总结
本篇内容到这里算是结束了,至于nmap命令的具体实践操作,目前还没开始实践整理,以后会出一篇博客对nmap命令进行实践的。