Nmap(上帝之眼)简介及命令大全

前言

本篇文章首先对黑客常用的工具Nmap(上帝之眼)做了一个基本介绍,然后对Nmap的常用命令做了一个详细的汇总,包括Nmap常用命令的解释说明,详情请看正文。


一、Nmap简介

Nmap(网络映射器)是一款用于网络探测和安全评估的开源工具。它可以帮助系统管理员和安全专家识别网络上的主机、服务和开放端口,以及发现潜在的漏洞和安全风险。Nmap具有强大的扫描功能,可以进行主机发现、端口扫描、操作系统检测、服务版本探测等操作。它支持多种扫描技术和灵活的配置选项,可以满足各种不同的网络安全需求。

Nmap官网:www.nmap.org(Nmap:网络映射器 - 免费安全扫描程序)

一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

1.1 Nmap优点

Nmap的优点详细:

  1. 强大而灵活的扫描功能:Nmap提供了广泛的扫描选项和技术,可以满足不同的需求。它可以执行主机发现、端口扫描、操作系统检测、服务版本探测等操作,使用户能够深入了解目标网络的结构和安全状态。
  2. 平台兼容性:Nmap是一个跨平台的工具,可以在多种操作系统上运行,包括Windows、Linux、macOS等。这使得它成为广泛应用于各种环境的理想选择。
  3. 资源效率:Nmap具有出色的性能和资源管理能力。它可以快速扫描大型网络,而且对系统资源的占用非常低,因此可以在不影响其他活动的情况下进行扫描。
  4. 大量的社区支持和文档资源:Nmap有一个庞大的用户社区和活跃的开发者社区。这意味着有很多的文档、教程、插件和扩展可供使用,用户可以从其他人的经验中获益,并与其他使用Nmap的人交流。
  5. 漏洞评估和渗透测试能力:Nmap不仅可以发现开放端口和服务版本信息,还可以帮助发现潜在的漏洞和安全风险。这使其成为进行漏洞评估和渗透测试的强大工具,帮助系统管理员和安全专家评估系统安全性并采取相应的措施。
  6. 可视化和报告功能:Nmap可以生成清晰的报告,并支持可视化地展示扫描结果,包括网络拓扑图、端口状态图等,这有助于用户更好地理解扫描结果并进行进一步的分析和管理。

1.2 Nmap四项基本功能

Nmap包含以下四项基本功能,每个功能都有其独特的作用:

  1. 主机发现(Host Discovery):
    主机发现用于确定目标网络上存活的主机。Nmap使用各种技术,如ping扫描、ARP扫描、ICMP探测等,来确定主机是否在线。主机发现是进行后续扫描和评估的基础,它帮助用户创建一个有效的目标主机清单。
  2. 端口扫描(Port Scanning):
    端口扫描用于确定目标主机上开放的网络端口。Nmap支持多种扫描技术,如TCP SYN扫描、TCP Connect扫描、UDP扫描等。通过分析响应和超时信息,Nmap可以识别主机上开放的端口,并确定所运行的服务类型。
  3. 操作系统检测(OS Detection):
    操作系统检测用于确定目标主机运行的操作系统类型。Nmap通过分析目标主机的网络响应、TCP/IP栈行为和其他特征来进行操作系统识别。这提供了对目标主机的更深入了解,有助于评估其安全性,并确定适当的安全策略和防护措施。
  4. 服务版本探测(Service Version Detection):
    服务版本探测用于确定目标主机上运行的具体服务及其版本信息。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中继主机>:进行 FTP 反弹扫描。

2.3 端口规格和扫描顺序

  • -p <端口列表>:扫描指定的端口。
  • --exclude-ports <端口列表>:从扫描中排除指定的端口。
  • -f:快速模式,扫描比默认扫描更少的端口。
  • -r:连续扫描端口,不随机化扫描顺序。
  • --top-ports <number>:扫描最常用的端口数量。

2.4 服务/版本探测

  • -sV:探测服务/版本信息。
  • --version-intensity <0-9>:设置版本扫描强度,范围从 0 到 9,值越大扫描越深入。
  • --version-all:尝试使用每个强度进行版本探测。
  • --version-trace:显示详细的版本扫描活动,用于调试目的。

使用 -sV 命令可以让 nmap 尝试识别正在运行的服务和其版本信息。

2.5 脚本扫描

  • -sC:等效于 --script=default,启用默认脚本扫描。
  • --script=<lua脚本>,<lua脚本>:以逗号分隔的目录、脚本文件或脚本类别。
  • --script-args=<n1=v1,n2=v2>:为脚本提供参数。
  • --script-args-file=<文件名>:从文件中加载脚本参数。
  • --script-trace:显示发送和接收的所有数据。
  • --script-updatedb:更新脚本数据库。
  • --script-help=<lua脚本>:显示有关脚本的帮助。

使用脚本可以扩展 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>:设置时间模板,范围从 0 到 5,值越小触发 IDS 警报的几率越低。

通过调整这些参数,可以控制 nmap 扫描过程中的超时时间、探测间隔和 IDS 警报的几率,以适应不同的网络环境和需求。

2.8 防火墙/IDS规避和欺骗

  • -f:启用报文分段,将扫描报文分成较小的片段发送。
  • -S:欺骗源地址,使用指定的源 IP 地址进行扫描。
  • -g <端口>:使用指定的本地端口进行扫描,以改变扫描报文的源端口。
  • --proxies <url,port>:使用指定的 HTTP/SOCK4 代理进行扫描。
  • --data <十六进制字符串>:向发送的数据包中追加自定义的负载。
  • --data-string <ASCII字符串>:将自定义的 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命令进行实践的。

相关推荐
我是陈泽12 小时前
一行 Python 代码能实现什么丧心病狂的功能?圣诞树源代码
开发语言·python·程序员·编程·python教程·python学习·python教学
肖哥弹架构1 天前
Spring 全家桶使用教程
java·后端·程序员
IT杨秀才4 天前
自己动手写了一个协程池
后端·程序员·go
程序员麻辣烫6 天前
像AI一样思考
程序员
一颗苹果OMG8 天前
关于进游戏公司实习的第一周
前端·程序员
万少8 天前
你会了吗 HarmonyOS Next 项目级别的注释规范
前端·程序员·harmonyos
楽码9 天前
彻底理解时间?在编程中使用原子钟
后端·算法·程序员
江南一点雨9 天前
又一家培训机构即将倒闭!打工人讨薪无果,想报名的小伙伴擦亮眼睛~
java·程序员
用户86178277365189 天前
ELK 搭建 & 日志集成
java·后端·程序员
河北小田10 天前
局部变量成员变量、引用类型、this、static
java·后端·程序员