首页 > 其他分享 >【万字长文】 Nmap各种用法,带你玩转Nmap

【万字长文】 Nmap各种用法,带你玩转Nmap

时间:2024-12-15 12:31:53浏览次数:11  
标签:Nmap 端口 扫描 192.168 -- 玩转 主机 字长

免责声明:使用本教程或工具,用户必须遵守所有适用的法律和法规,并且用户应自行承担所有风险和责任。

文章目录

一、Nmap介绍

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具,它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。

Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。

二、功能概述

  1. 查看主机存活
  2. 扫描目标主机开放端口
  3. 识别目标主机操作系统
  4. 查看目标主机服务的版本信息
  5. 漏洞探测

三、Nmap参数详解

Nmap用法格式如下:

nmap [扫描类型][选项][目标指定]

在这里插入图片描述

  1. 目标指定

在这里插入图片描述

  • 可以传递主机名、IP地址、网络等。
  • 例如:scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  • -iL <输入文件名>:从指定文件中的主机/网络列表中输入,导入扫描地址
  • -iR <主机数量>:随机选择目标
  • --exclude <主机1[,主机2][,主机3],...>:排除主机/网络
  • --excludefile <排除文件>:从文件中排除列表
  1. 主机发现

在这里插入图片描述

  • -sL:列表扫描 - 仅列出要扫描的目标,不进行扫描
  • -sn:Ping扫描 - 禁用端口扫描,不扫描端口,只主机发现,跟-sP一样
  • -Pn:将所有主机视为在线 - 跳过主机发现
  • -PS/PA/PU/PY[端口列表]:对给定端口执行TCP SYN/ACK、UDP或SCTP发现
  • -PE/PP/PM:ICMP回显、时间戳和网络掩码请求发现探针
  • -PO[协议列表]:IP协议Ping,发送ICMP报文
  • -n/-R:永不进行DNS解析,可以加快扫描速度 /始终解析
  • --dns-servers <服务器1[,服务器2],...>:指定自定义DNS服务器
  • --system-dns:使用操作系统的DNS解析器
  • --traceroute:追踪到每个主机的跳数路径,一般不启用,会比较慢
  1. 端口扫描技术

Nmap支持的6种端口状态:

  • open(开放)
  • closed(关闭)
  • filtered(被过滤的)
  • unfiltered(未被过滤) 可访问但不确定开放情况
  • open|filtered(开放或被过滤)无法确定端口是开放的还是被过滤的
  • closed|filtered(关闭或被过滤)无法确认端口是关闭的还是被过滤的

在这里插入图片描述

  • -sS:TCP SYN扫描,半开放状态,扫描速度快隐蔽性好,能够明确区分端口状态
  • -sT:TCP连接扫描,容易产生记录,效率低
  • -sA:TCP ACK扫描,只设置ACK标志位,可以区分被过滤与过滤
  • -sW:窗口扫描
  • -sM:Maimon扫描
  • -sU:UDP扫描
  • -sN/sF/sX:TCP空、FIN和Xmas扫描
  • --scanflags <标志>:自定义TCP扫描标志
  • -sI <僵尸主机[:探测端口]>:空闲扫描,利用僵尸主机进行扫描
  • -sY/sZ:SCTP INIT/COOKIE-ECHO扫描
  • -sO:IP协议扫描,可以确定目标机支持哪些IP协议(TCP,ICMP,IGMP)
  • -b <FTP中继主机>:FTP反弹扫描
  1. 端口指定和扫描顺序

在这里插入图片描述

  • -p <端口范围>:仅扫描指定的端口
    • 例如:-p 22-p 1-65535
  • -p U:[UDP端口],T:[TCP端口]:对指定端口进行指定协议的扫描
    • 例如:-p U:53,111,137,T:21-25,80,139,8080,S:9
    • 注意,要既扫描 UDP又扫描TCP,您必须指定 -sU ,以及至少一个TCP扫描类型(如 -sS,-sF,或者 -sT)
  • --exclude-ports <端口范围>:从扫描中排除指定的端口
  • -F:快速模式 - 扫描的端口比默认扫描少(仅扫描100个最常用的端口)
  • -r:顺序扫描端口 - 不随机化
  • --top-ports <数量>:扫描最常见的<数量>个端口
  • --port-ratio <比例>:扫描比<比例>更常见的端口
  1. 服务/版本检测

在这里插入图片描述

  • -sV:探测开放端口以确定服务/版本信息
  • --version-intensity <等级>:设置从0(轻量级)到9(尝试所有探测),默认是7,强度越高,时间越长,服务越可能被正确识别
  • --version-light:限制到最可能的探测,轻量扫描(强度为2)
  • --version-all:尝试所有探测(强度为9)
  • --version-trace:显示详细的版本扫描活动(用于调试)
  1. 脚本扫描

在这里插入图片描述

  • -sC:等同于 --script=default,启用默认脚本扫描模式
  • --script=<Lua 脚本><Lua 脚本> 是一个由逗号分隔的目录、脚本文件或脚本类别列表
  • --script-args=<n1=v1,[n2=v2,...]>:向脚本提供参数
  • --script-args-file=文件名:在文件中提供NSE脚本参数
  • --script-trace:显示发送和接收的所有数据
  • --script-updatedb:更新脚本数据库
  • --script-help=<Lua 脚本>:显示有关脚本的帮助信息。 <Lua 脚本> 是一个由逗号分隔的脚本文件或脚本类别列表
  1. 操作系统检测

在这里插入图片描述

  • -O:启用操作系统检测,-A可以同时启用操作系统检测和版本检测
  • --osscan-limit:针对指定的目标进行操作系统检测
  • --osscan-guess:更主动积极地猜测操作系统
  1. 定时和性能

在这里插入图片描述

  • 接受 <time> 的选项以秒为单位,或在值后附加 ‘ms’(毫秒)、‘s’(秒)、‘m’(分钟)或 ‘h’(小时)(例如 30m)。
  • -T <0-5>:设置定时模板(数值越高越快)
  • --min-hostgroup/max-hostgroup <大小>:调整并行主机扫描组大小,Nmap具有并行扫描多主机端口或版本的能力,Nmap将多个目标IP地址空间分成组,然后在同一时间对一个组进行扫描。通常,大的组更有效。缺点是只有当整个组扫描结束后才会提供主机的扫描结果
  • --min-parallelism/max-parallelism <numprobes>:探测并行化
  • --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>:指定探测往返时间。
  • --max-retries <尝试次数>:限制端口扫描探测的重传次数。
  • --host-timeout <时间>:在这么久之后放弃目标
  • --scan-delay/--max-scan-delay <时间>:调整探测之间的延迟
  • --min-rate <数量>:每秒发送数据包不低于 <数量>
  • --max-rate <数量>:每秒发送数据包不高于 <数量>
  1. 防火墙和IDS规避和伪装

在这里插入图片描述

  • -f; --mtu <值>:分片数据包(可选地使用给定的MTU),将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难
  • -D <诱饵1,诱饵2[,ME],...>:用诱饵隐蔽扫描,使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵
  • -S <IP地址>:伪装源地址
  • -e <接口>:使用指定的接口
  • -g/--source-port <端口号>:使用给定的端口号
  • --proxies <url1,[url2],...>:通过HTTP/SOCKS4代理中继连接
  • --data <十六进制字符串>:向发送的数据包追加自定义负载
  • --data-string <字符串>:向发送的数据包追加自定义ASCII字符串
  • --data-length <数量>:向发送的数据包追加随机数据
  • --ip-options <选项>:发送带有指定IP选项的数据包
  • --ttl <值>:设置IP生存时间字段
  • --spoof-mac <MAC地址/前缀/供应商名称>:伪装你的MAC地址
  • --badsum:发送带有错误TCP/UDP/SCTP校验和的数据包
  1. 输出

在这里插入图片描述

  • -oN <文件>:标准输出
  • -oX <文件>:XML格式输出
  • -oS <文件>:脚本格式输出
  • -oG <文件>:将扫描结果输出为普通、XML、s|<rIpt kIddi3和Grepable格式,分别输出到给定的文件名。
  • -oA <基名>:一次性输出三种主要格式
  • -v:增加详细程度(使用 -vv 或更多以增强效果)
  • -d:增加调试级别(使用 -dd 或更多以增强效果),9最高
  • --reason:显示端口处于特定状态的原因
  • --open:仅显示开放(或可能开放)的端口
  • --packet-trace:显示所有发送和接收的数据包
  • --iflist:打印主机接口和路由(用于调试)
  • --append-output:追加到指定的输出文件而不是覆盖
  • --resume <文件名>:恢复中断的扫描
  • --noninteractive:禁用通过键盘的运行时交互
  • --stylesheet <路径/URL>:XSL样式表,用于将XML输出转换为HTML
  • --webxml:引用Nmap.Org的样式表,以获得更便携的XML
  • --no-stylesheet:防止将XSL样式表与XML输出关联
  1. 杂项

在这里插入图片描述

  • -6:启用IPv6扫描
  • -A:启用操作系统检测、版本检测、脚本扫描和traceroute
  • --datadir <目录名>:指定自定义Nmap数据文件位置
  • --send-eth/--send-ip:使用原始以太网帧或IP数据包发送
  • --privileged:假设用户具有完全权限
  • --unprivileged:假设用户缺乏原始套接字权限
  • -V:打印版本号
  • -h:打印此帮助摘要页面。

四、Nmap用法

使用示例

常用扫描命令

  1. 普通/综合扫描

    nmap 192.168.30.196
    

    Nmap 会自动检测目标主机 192.168.30.196 上开放的常见端口,并尝试识别端口对应的服务及版本信息,这种扫描方式速度较快,但可能不会扫描到所有端口,适用于快速初步了解目标主机的端口开放情况和基本服务信息
    在这里插入图片描述

    nmap 192.168.30.196 -A
    

    -ANmap 会自动检测目标主机 192.168.30.196 包含1-10000端口的ping扫描,操作系统扫描,路由跟踪,服务探测,会显示端口状态,服务信息,以及服务版本,会比普通扫描慢
    在这里插入图片描述


  1. 扫描整个网段(支持CIDR和地址范围)

    nmap 192.168.30.0/24
    nmap 192.168.30.1-254
    

    Nmap将扫描网段192.168.30.1-192.168.30.254内在线的主机,并且初步显示在线主机的端口,端口状态以及服务类型
    在这里插入图片描述


  2. 扫描文件中的主机列表

    nmap -iL hosts.txt
    

以普通扫描方式扫描文件中的主机
在这里插入图片描述
还可以额外添加参数,比如启用综合扫描

   nmap -iL hosts.txt -A

在这里插入图片描述


  1. 主机发现(不扫描端口)

    nmap -sn 192.168.30.1-254
    nmap -sP 192.168.30.0/24
    

    -sn 参数表示只进行主机存活探测,不进行端口扫描,这里是对 192.168.30.1 - 192.168.30.254这 个 IP 地址段内的主机进行存活检测

    -sP参数也是一样表示只进行主机存活探测,不进行端口扫描,采用CIDR方式对192.168.30.1 - 192.168.30.254这 个 IP 地址段内的主机进行存活检测
    在这里插入图片描述


  2. 扫描特定端口

    nmap 192.168.30.196 -p 22,80
    nmap 192.168.30.196 -p 1-65535
    nmap 192.168.30.196 -p-
    

    使用-p 1-65535参数指定扫描目标主机 192.168.30.196 的所有 65535 个端口,-p-也是扫描全端口,扫描速度会比较缓慢
    在这里插入图片描述


  3. TOP100 端口扫描

    nmap -sT -A --top-ports=100 192.168.30.1-254 -oG top-port-sweep.txt
    

    多种功能,-A 参数启用全面扫描模式,包括操作系统探测、版本探测、脚本扫描等--top-ports=100 指定只扫描最常见的 100 个端口,这种扫描方式在保证一定全面性的同时, 通过只扫描常见端口可以提高扫描速度,适用于对一个网络范围内的主机进行快速的初步安全评估,获 取主机开放的常见端口信息、对应的服务版本以及操作系统类型等基本信息,并将结果以 Grepable 格式输出到 top-port-sweep.txt 文件中,方便后续整理和分析
    在这里插入图片描述
    查看top-port-sweep.txt

在这里插入图片描述


  1. SYN扫描

    nmap -sS 192.168.30.196
    

    -sS 参数表示使用 SYN 扫描方式,SYN 扫描是一种半开放扫描,它不建立完整的 TCP 连接,而是发送 一个 SYN 包到目标端口,如果收到 SYN + ACK 响应,则表示端口开放,如果收到 RST 响应,则表示端口关闭,这种扫描方式相对比较隐蔽,因为不会在目标系统上留下完整的连接记录,常用于渗透测试中对目标主机端口开放情况的探测,同时可以减少被目标系统的防火墙或入侵检测系统发现的概率
    在这里插入图片描述


  1. TCP连接扫描

    nmap -sT 192.168.30.196
    

    在这里插入图片描述

    -sT 参数表示进行 TCP 连接扫描,这种扫描方式会与目标主机的端口建立完整的 TCP 连接,就像正常的网络连接过程一样,它的优点是准确性高,因为建立了完整的连接,可以获取到更详细的服务信息,但缺点是容易被目标系统检测到,因为会在目标系统上留下完整的连接记录,适用于在合法授权且不需要过于隐蔽的情况下对目标主机端口进行扫描,例如在内部网络安全评估中对服务器端口的检查


  1. UDP扫描

    nmap -sU 192.168.30.196
    

    -sU 参数表示进行 UDP 扫描,用于探测目标主机 192.168.30.196 上开放的 UDP 端口,由于 UDP 协议的特性,UDP 扫描结果可能不如 TCP 扫描准确,因为 UDP 服务对扫描包的响应方式各不相同,有些服务可能不会响应空的扫描包,在对一些常见的 UDP 服务(如 DNS、SNMP 等)进行安全评估时,经常使用


  1. UDP和SYN扫描

    sudo nmap -sU -sS 192.168.30.196
    

    该命令同时使用-sU-sS 参数,即对目标主机 192.168.30.196 进行 UDP 和 SYN 扫描,这种方式可以在一次扫描过程中同时探测目标主机的 UDP 和 TCP 端口开放情况,节省时间并获取更全面的端口信息,但由于涉及到两种不同类型的扫描方式且都需要特殊权限,对系统资源和网络环境也有一定要求, 需要在合适的场景下使用,如在进行全面的网络安全评估且有足够权限和资源支持时


  1. 文件输出

    nmap -v -sn 192.168.30.1-253 -oG ping-sweep.txt
    

    这是在上述存活主机枚举的基础上,添加了-v参数以启用详细输出模式,这样可以在扫描过程中看到更多关于主机存活探测的详细信息,如每个 IP 地址的响应情况等。-oG ping-sweep.txt 参数表示将扫描结果以 Grepable 格式输出到 ping-sweep.txt 文件中,这种格式方便后续使用 grep 等工具对结果进行进一步处理和分析,例如提取存活主机的 IP 地址列表等
    在这里插入图片描述

    查看ping-sweep.txt
    在这里插入图片描述

    grep Up ping-sweep.txt | cut -d " " -f 2
    

    这行命令用于从 ping-sweep.txt 文件中提取存活主机的 IP 地址, grep Up命令会在文件中查找包含 Up字符串的行,因为 Nmap 在 Grepable 格式的输出中,存活主机的状态会标记为Upcut -d " " -f 2则是将查找到的行按照空格进行分割,并提取第二个字段,即存活主机的 IP 地址,通过这种方式,可以快速从 Nmap 的存活主机枚举结果中获取到存活主机的 IP 地址列表,以便进行后续的针对性操作
    在这里插入图片描述


  1. 指纹探测

    操作系统指纹探测

    nmap -O 192.168.30.196 --osscan-guess
    

    -O 参数表示进行操作系统指纹识别,Nmap 会通过发送一系列特殊的数据包并分析目标主机的响应来尝试确定目标主机运行的操作系统类型,--osscan-guess 参数启用操作系统猜测功能,当 Nmap 无法准确确定操作系统类型时,会根据已有的信息进行合理猜测。由于操作系统指纹识别涉及到一些特殊的网络探测技术,可能会被目标系统视为潜在的攻击行为,所以在使用时需要谨慎,确保是在合法授权的情况下进行操作,例如在内部网络安全评估或渗透测试的信息收集阶段
    在这里插入图片描述

    操作系统与端口服务指纹探测

    nmap 192.168.30.196 -p 22,80,139,445 -sV -sC -O --version-all
    

    -sV:进行版本检测,获取这些端口上运行的服务的版本信息,-sC:使用 Nmap 默认脚本集进行扫描,以检测常见的安全问题和漏洞,-O:尝试识别目标系统的操作系统,--version-all:启用更详细的版本检测,提供关于服务和版本的更多信息
    在这里插入图片描述
    在这里插入图片描述


  2. SMB枚举

    nmap -v -p 139,445 -oG smb.txt 192.168.30.1-254
    

    使用 Nmap 对 192.168.30.1 - 192.168.30.254地址段内的主机进行端口扫描, -v 启用详细输出模式-p 139,445指定只扫描 139 和 445 端口,这两个端口通常与 SMB(Server Message Block)服务 相关,SMB 服务用于文件共享、打印机共享等功能,在 Windows 网络环境中广泛使用,通过扫描这两 个端口,可以发现网络中哪些主机开放了 SMB 服务,为后续进一步的 SMB 相关安全评估(如 SMB 漏 洞检测、共享资源访问权限检查等)提供基础信息,并将扫描结果以 Grepable 格式输出到 smb.txt 文 件中,方便后续处理和分析
    在这里插入图片描述
    查看smb.txt
    在这里插入图片描述
    会将探测到smb服务的结果放在txt末尾


  3. 脚本扫描

    nmap --script=vuln 192.168.30.196 -A
    

    使用 Nmap 对目标主机 192.168.30.196 进行综合扫描,指定运行Nmap脚本vuln进行漏洞检测以及详细信息采集(-A),包括操作系统、服务版本、路由跟踪以及已知漏洞的检测,涉及较多,扫描会比较缓慢
    在这里插入图片描述

    nmap --script=http-title 192.168.30.196
    

    使用–script 参数指定运行特定的 Nmap 脚本,这里是 http-title 脚本,用于获取目标主机 192.168.30.196 上 HTTP 服务的标题信息
    在这里插入图片描述
    没有title,换一个有的
    在这里插入图片描述

    nmap --script="http-*" 192.168.30.196
    

    使用–script 参数指定运行所有以 http- 开头的脚本,适用于 HTTP 服务分析,涉及较多,十分缓慢


  4. 版本扫描

    nmap -sV 192.168.30.196
    

    -sV用于探测目标主机的开放端口及其运行的服务名称和版本信息,适合识别网络服务的具体类型和版本,用于安全评估和漏洞检测
    在这里插入图片描述

以上就是Nmap各种基础用法,后面还会持续更新高级用法

文章原创,欢迎转载,请注明文章出处

标签:Nmap,端口,扫描,192.168,--,玩转,主机,字长
From: https://blog.csdn.net/weixin_72986003/article/details/144474838

相关文章

  • Pillow:图像处理魔法师!轻松玩转图片
    ......
  • CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
    SeleniumSelenium是一款开源且可移植的自动化软件测试工具,专门用于测试网页端应用程序或者采集网页端数据。它能够在不同的浏览器和操作系统上运行,具有很强的跨平台能力。Selenium可以帮助测试人员更高效地自动化测试基于Web网页端的应用程序,也可以帮忙开发者方便地完成网页端数......
  • 远程连接利器:玩转MobaXterm
    今天这篇文章轻松不烧脑,主要是想和大家分享一下我在工作中常用的远程管理工具——MobaXterm。这款工具不仅功能强大,而且在日常的远程操作中极为高效,特别适合用来管理远程服务器。MobaXterm结合了多种网络工具,支持SSH、X11、RDP等协议,能够通过图形界面连接不同的远程系统,同时也兼具......
  • 『玩转Streamlit』--片段Fragments
    在Streamlit应用开发中,Fragments组件是一种用于更精细地控制页面元素更新和显示顺序的工具。它允许开发者将内容分解成多个小的片段,这些片段可以按照特定的顺序或者逻辑进行更新,而不是一次性地更新整个页面或容器中的所有内容。这为创建动态且交互性强的用户界面提供了更多的......
  • 「Mac玩转仓颉内测版47」小学奥数篇10 - 数列求和
    本篇将通过Python和Cangjie双语实现数列求和的计算。通过这个题目,学生将学会如何通过公式法和循环法求解等差数列与等比数列的和。关键词小学奥数Python+Cangjie数列求和一、题目描述编写一个程序,计算等差数列和等比数列的和。用户输入首项、公差/公比以及项数,......
  • 「Mac玩转仓颉内测版48」小学奥数篇11 - 最大公约数与最小公倍数
    本篇将通过Python和Cangjie双语实现最大公约数(GCD)和最小公倍数(LCM)的计算。这个题目帮助学生理解如何运用数学算法,并将其与编程实现结合。关键词小学奥数Python+Cangjie最大公约数(GCD)最小公倍数(LCM)一、题目描述编写一个程序,接收两个正整数,计算并输出它们的最大公......
  • 渗透测试人员的 Nmap:漏洞扫描零基础入门教程,网络安全看这一篇就够了!
    此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用......
  • 带你玩转burp嘿嘿
    带你玩转burp嘿嘿免责声明:学习视频来自B站up主泷羽sec,如涉及侵权马上删除文章。笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。B站地址:https://space.bilibili.com/350329294前面我们学习了抓包这......
  • 《掌握Nmap:全面解析网络扫描与安全检测的终极指南》
    nmap#简介(帮助)用法:nmap[扫描类型][选项]{目标指定内容}简介(帮助)用法:nmap[扫描类型][选项]{目标指定内容}一、目标指定:可以传入主机名、IP地址、网络等。例如:scanme.nmap.org、microsoft.com/24、192.168.0.1;10.0.0-255.1-254-iL<输入文件名>:从主......
  • JSON 全面解析:从基础到实战,带你玩转前端数据交互
    文章目录前言一、什么是JSON?二、JSON的基本语法三、JSON与JavaScript的互操作四、JSON实战案例案例2:JSON字符串转换为对象案例3:数组与JSON的互操作总结前言在现代Web开发中,JSON(JavaScriptObjectNotation)已成为最流行的数据交换格式之一。......