C10-05-1-Nmap常用参数说明

news/2024/11/14 18:43:19/文章来源:https://www.cnblogs.com/cnblogsfc/p/18425591

一、Nmap

免责声明

本文仅是个人对该工具的学习测试过程记录,不具有恶意引导意向。

本文工具仅面向合法授权的企业安全建设行为,如您需要测试本工具的可用性,请自行搭建靶机环境。

在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授权目标进行扫描,以避免侵犯对方的隐私或违反相关法律法规。

1.1 概述

下载地址:https://nmap.org/download.html

官方文档说明:https://nmap.org/man/zh/index.html

端口+IP+指纹

虽然Nmap这些年来功能越来越多,但它最初也是从一个端口扫描器开始的,并且这仍然是它的核心功能。

nmap 是一个网络扫描和安全审计工具,它被广泛用于网络发现和安全审核。

Nmap(“Network Mapper<网络映射器>”)是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速扫描大型网络,当然用它扫描单个主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,这些主机提供什么服务(应用程序名和版本),这些服务运行在什么操作系统中, 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。(端口和指纹信息)

虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些补充信息则依赖于所使用的选项。通常会列出端口号,协议,服务名称和状态。

nmap **这个简单的命令会扫描主机上的超过1660个TCP端口。许多传统的端口扫描器只列出所有端口是开放还是关闭的,Nmap的信息粒度比它们要细得多:

端口状态:

①open(开放的):意味着目标机器上的应用程序正在该端口监听连接/报文。

②filtered(被过滤的):意味着防火墙、过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知它是open还是closed。

③closed(关闭的):端口没有应用程序在它上面监听,但是它们随时可能开放。

④unfiltered(未被过滤的):当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是unfiltered。

⑤open|filtered 和 closed|filtered :状态组合,即Nmap无法确定该端口处于两个状态中的哪一个状态。

1.2 nmap目标指定规范

Nmap指定扫描目标支持IPv4的CIDR风格的地址:

192.168.10.0/24

Nmap通过八位字节地址范围支持IPv4这样的扫描:

192.168.0-255.1-254

0-255.0-255.13.37

Nmap扫描目标也可以是域名

1.3 选项及示例

nmap -A -T4 scanme.nmap.org

说明:

-A: Enable OS detection, version detection, script scanning, and traceroute

用来进行操作系统及其版本的探测,及路由跟踪。

-T4:时间模板;设置扫描速度。可以设置不同的速度等级,以适应不同的扫描环境。速度级别从0到5,级别越高,扫描速度越快,但也越容易被防火墙拦截。


模板名称:默认模式为Normal(T3)

paranoid (0)、sneaky (1)、polite (2)、normal(3)、aggressive(4)、insane(5)

(T0)适合需要极小网络影响的扫描,几乎不会被IDS/IPS检测到。这是串行扫描,速度极慢(至少间隔5m)

(T1)扫描速度很慢,可用于IDS躲避;仍然是串行扫描(15s)

(T2)降低了扫描速度以使用更少的带宽和目标主机资源(400ms,但会动态地调整间隔,最大为1s)

(T3)默认模式为Normal,因此 -T3实际上是未做任何优化;(不使用固定的扫描间隔,而是采用并行扫描技术,同时发送多个探测;单次扫描延时1s,一秒后当前端口被放弃并进行下一个端口扫描)

(T4)假设用户具有合适及可靠的网络从而加速扫描;(行扫描来增加速度,但可能会增加被检测到的风险;单次扫描延时10ms)

(T5)假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性最快,但可能会产生大量的网络流量,极有可能被IDS/IPS检测到;(单次扫描延时5ms)

从Nmap的某个版本开始(可能是Nmap 7.00或更高版本),-T 参数的行为有所变化,并且可能已经被新的参数(如--min-rate, --max-rate, --min-hostgroup, --max-hostgroup, --min-parallelism, --max-parallelism, --min-rtt-timeout, --max-rtt-timeout, --initial-rtt-timeout, --max-retries, --host-timeout, --scan-delay 等)所取代,这些参数提供了更细粒度的控制来优化扫描速度和避免被检测。

1.3.1 nmap指定主机的其他方式

除了直接自定域名或IP为扫描目标,也可以通过选项指定

加黑字体的选项是网络安全人员常用选项

-iL (IP地址列表文件)

列表中的项可以是Nmap在命令行上接受的任何格式(IP地址,主机名,CIDR,IPv6,或者八位字节范围)。 每一项必须以一个或多个空格,制表符或换行符分开

-iR (主机数量)

(随机选择目标)可以用来选择随机的互联网主机来扫描;不合需要的IP如特定的私有,组播或者未分配的地址自动略过。选项0意味着永无休止的扫描;些网管对于未授权的扫描可能会很感冒并加以抱怨,使用该选项的后果自负!

--exclude <host1,host2,host3,...> (排除主机/网络)

--excludefile (排除文件中的列表)以换行符,空格,或者制表符分隔

1.3.2 主机发现常用参数(主机发现)

加黑字体的选项是网络安全人员常用选项

-sL (列表扫描)

它仅仅列出指定网络上的每台主机,不发送任何报文到目标主

机,也并不能确定主机是否存活,所以扫描速度是很快的。默认情况下,Nmap会对主机进行反向域名解析以获取它们的名字(是主机发现的退化形式);如果主机的域

名出乎您的意料,那么就值得进一步检查以防错误地扫描其它组织的网络。既然只是打印目标主机的列表,像其它一些高级功能如端口扫描,操作系统探测或者Ping扫描的选项就没有了。(从描述看,感觉该选项更多关注反向域名解析结果)

-sP (Ping扫描)

只进行ping扫描(主机发现),然后输出对扫描做出响应的那些主机,没有进一步的测试 (如端口扫描或者操作系统探测)当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时, 推荐使用那些高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。

-P0 (无ping)

默认情况下,Nmap只对正在运行的主机进行高强度的探测如端口扫描,版本探测,或者操作系统探测。用-P0禁止主机发现会使Nmap对每一个指定的目标IP地址进行所要求的扫描(也就是说默认情况nmap现对目标探活,再对活动的目标执行其他探测)

Namp -P0 10.0.0.0/24 (不预先探活,直接全部扫描,省时)

Nmap 10.0.0.0/24 (现探活,再对活目标扫描,耗时)

-PS [portlist] (TCP SYN Ping)

SYN标志位告诉对方正试图建立一个连接。 通常目标端口是关闭的,一个RST (复位) 包会发回来。 如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应一个SYN/ACK TCP报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST而非ACK报文, RST报文是运行Nmap的机器而不是Nmap本身响应的,因为它对收到的SYN/ACK感到很意外。Nmap并不关心端口开放还是关闭。 无论RST还是SYN/ACK 响应都告诉Nmap该主机正在运行;

定义:TCP SYN Ping扫描是Nmap用于检测目标主机是否存活的一种技术。

工作原理:在这种扫描方式中,Nmap向目标主机的特定端口(通常是80)发送一个TCP SYN数据包。如果目标主机在该端口上监听,并且主机是活跃的,它将返回一个SYN/ACK响应。Nmap收到这个响应后,就知道目标主机是活跃的,但并不会进一步尝试建立连接。

权限要求:通常不需要特殊权限,因为它不涉及建立完整的TCP连接。

应用场景:主要用于快速检测目标主机是否在线,而不进行深入的端口扫描或操作系统检测。

-PA [portlist] (TCP ACK Ping)

远程主机应该总是回应一个RST报文, 因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话;

-PU [portlist] (UDP Ping)

不指定端口,默认是31338;如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。 这对于Nmap意味着该机器正在运行。没有回应也被这样解释:类似许多其它类型的ICMP错误,像主机/网络无法到达或者TTL超时则表示down掉的或者不可到达的主机。(该扫描类型的主要优势是它可以穿过只过滤TCP的防火墙和过滤器)

-PE; -PP; -PM (ICMP Ping Types)

-PE:Nmap发送一个ICMP type 8 (回声请求),期望返回type 0 (回声响应)报文;type 0 (回声响应)报文;

当管理员特别封锁了回声请求报文,而忘了其它ICMP查询可能用于相同目的时,这两个查询可能很有价值:

-PP:时间戳请求;Nmap发送一个ICMP type 13 (回声请求),期望返回type 14 (回声响应)报文;

-PM:地址掩码请求;Nmap发送一个ICMP type 17 (回声请求),期望返回type 18 (回声响应)报文;

-n (不用域名解析)

告诉Nmap永不对它发现的活动IP地址进行反向域名解析;

-R (为所有目标解析域名)

告诉Nmap 永远 对目标IP地址作反向域名解析。 一般只有当发现机器正在运行时才进行这项操作。

1.3.3 端口扫描

虽然Nmap努力产生正确的结果,但请记住所有结果都是基于目标机器(或者它们前面的防火墙)返回的报文的。这些主机也许是不值得信任的,它们可能响应以迷惑或误导Nmap的报文。

这一节讨论Nmap支持的大约十几种扫描技术。一般一次只用一种方法。

-sS (TCP SYN扫描) 半连接扫描,使用最频繁,安全,快

它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接;

定义:半开放扫描(SYN Scan),也称为SYN半连接扫描,是Nmap中最常用的扫描技术之一。

工作原理:在这种扫描方式中,Nmap向目标端口发送一个SYN数据包,就像它打算建立一个完整的TCP连接一样。但是,一旦收到SYN/ACK响应,Nmap不会发送ACK数据包来完成三次握手,而是发送一个RST数据包来终止连接。这种方式的好处是,它不会建立一个完整的TCP连接,因此扫描速度更快,且不易被目标主机记录在系统日志中。

权限要求:通常需要root或管理员权限来执行,因为它涉及到发送原始套接字数据包。

应用场景:适用于快速扫描大量主机的开放端口,同时减少被目标主机记录的风险。

-sS和-PS的区别总结:

主要区别:-sS用于扫描目标主机的开放端口,而-PS主要用于检测目标主机是否存活。-sS会尝试与目标端口的TCP连接(但不完全建立),而-PS只是发送一个SYN数据包来检测主机是否响应。

使用场景:-sS适用于需要了解目标主机开放端口的情况,而-PS则适用于仅需要知道目标主机是否在线的场景。

-sT (TCP connect()扫描)

一种基本的TCP扫描方式,它基于TCP连接机制来探测目标主机的端口状态。

原理

-sT扫描通过发送TCP连接请求(即进行三次握手)来探测目标端口的开放状态。具体来说,扫描器会尝试与目标主机上的指定端口建立TCP连接。如果目标端口有程序在监听,那么连接会成功建立,此时端口被视为开放(open);如果目标端口没有程序监听,则目标主机会回复一个RST(重置)包,表示端口不可达(close)。

特点

易于使用:-sT扫描不需要特殊的权限,在大多数UNIX系统下,任何用户都可以自由使用这个系统调用。

易被发现:由于这种扫描方式需要建立完整的TCP连接,因此它很容易被目标主机察觉并记录在系统日志中。这表现为一系列的连接请求和可能的错误信息。

有效性:虽然易于被发现,但-sT扫描是一种非常有效的端口扫描方式,它能够准确地识别出目标主机的开放端口。

使用场景

-sT扫描适用于大多数需要探测目标主机开放端口的场景。然而,由于其易于被发现的特点,建议在网络扫描和渗透测试等需要高度隐蔽性的场景中谨慎使用,或者结合其他扫描方式以提高隐蔽性。

-sU (UDP扫描)

UDP扫描用-sU选项激活。它可以和TCP扫描如 SYN扫描 (-sS)结合使用来同时检查两种协议;UDP不建立连接,通常依赖于目标主机对特定类型 UDP 数据包的响应来推断端口状态;

closed(关闭的):回ICMP端口不可到达错误(类型3,代码3)

filtered(被过滤的):ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)

open(开放的):某服务会响应一个UDP报文

open|filtered(开放|被过滤的)几次重试后还没有响应:

防火墙和过滤规则:UDP 扫描可能会受到网络中的防火墙和过滤规则的影响。一些防火墙可能会丢弃 UDP 数据包或发送伪造的 ICMP 端口不可达消息来欺骗扫描器。

扫描速度和效率:由于 UDP 扫描的复杂性,它可能比 TCP 扫描更慢且效率更低。因此,在进行大规模 UDP 扫描时,需要仔细考虑扫描参数和扫描策略。

1.3.4 端口说明和扫描顺序

除了所有前面讨论的常用扫描方法, Nmap提供选项说明哪些端口被扫描以及扫描是随机还是顺序进行。

默认情况下,Nmap用指定的协议对端口1到1024以及nmap-services 文件中列出的更高的端口在扫描。

-p (只扫描指定的端口)

该选项指明想扫描的端口,覆盖默认值,参数后面可以跟一个或多个端口号或端口范围。端口号之间可以用逗号(,)分隔,范围可以用连字符(-)表示(如1-1023)。

既扫描TCP端口又扫描UDP端口时,可以在端口号前加上T:或者U:指定协议( -p U:53,111,137,T:21-25,80,139,8080),但必须指定 -sU ,以及至少一个TCP扫描类型(如 -sS,-sF,或者 -sT)。如果没有给定协议限定符, 端口号会被加到所有协议列表

注意:

默认情况下,nmap 使用 TCP 协议进行扫描。如果你需要扫描 UDP 端口,可以使用 -sU 参数。

你可以通过 -p-(连字符后无空格)来指定扫描目标上的所有端口(TCP 或 UDP,取决于是否使用了 -sU)。

对于大范围的端口扫描,考虑使用 -T 参数来设置扫描的时间模板,以加快扫描速度。但要注意,提高扫描速度可能会增加被目标网络发现的风险

-r (不要按随机顺序扫描端口)

默认情况下,Nmap按随机顺序扫描端口(除了出于效率的考虑,常用的端口前移)。这种随机化通常都是受欢迎的, 但您也可以指定-r来按顺序进行端口扫描。

1.3.5 服务和版本探测

在用某种其它类型的扫描方法发现TCP 和/或者UDP端口后,版本探测会询问这些端口,确定到底什么服务正在运行。nmap-service-probes 数据库包含查询不同服务的探测报文和解析识别响应的匹配表达式

Nmap试图确定服务协议 (如 ftp,ssh,telnet,http),应用程序名(如ISC Bind,Apache httpd,Solaris telnetd),版本号, 主机名,设备类型(如 打印机,路由器),操作系统家族 (如Windows,Linux)以及其它的细节,如 如是否可以连接X server,SSH协议版本 ,或者KaZaA用户名)

-sV (版本探测)

打开版本探测,也可以用 -A 同时打开操作系统探测和版本探测。

--allports (不为版本探测排除任何端口)

用于指示Nmap扫描目标主机上所有可能的端口(通常是1到65535之间的所有端口),而不是仅限于Nmap的默认扫描范围;

默认情况下,Nmap版本探测会跳过 9100 TCP端口,因为一些打印机会打印发送到该端口的任何数据,会导致数十页HTTP get请求、二进制 SSL会话请求等等被打印出来。这一行为可以通过修改或删除nmap-service-probes 中的Exclude指示符改变,也可以不理会任何Exclude指示符,指定--allports扫描所有端口。

1.3.6 操作系统探测

-O (启用操作系统检测)

也可以使用 -A 来同时启用操作系统检测和版本检测。

1.3.7 时间和性能

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (设置时间模板)

详细说明

1.3.8 输出

-oN <文件名>: 将扫描结果保存到指定文件中,以标准格式(nmap 的默认输出格式)存储。

-oX <文件名>: 将扫描结果以 XML 格式保存到指定文件中,这便于后续使用其他工具进行解析和处理。

-oG <文件名>: 将扫描结果以 Grepable 格式保存到指定文件中,这种格式便于通过 grep 等工具进行搜索和过滤。

-oA <基本文件名>: 同时以 -oN、-oX 和 -oS 的格式保存扫描结果,文件名由指定的基本文件名和扩展名组成(例如,-oA myscan 将产生 myscan.nmap、myscan.xml 和 myscan.gnmap)。

-oS <文件名>: 将扫描结果以脚本 kiddie 友好的格式保存到指定文件中,这通常是一种更容易阅读的格式。

-v (提高输出信息的详细度)

通过提高详细度,Nmap可以输出扫描过程的更多信息。 输出发现的打开端口,若Nmap认为扫描需要更多时间会显示估计 的结束时间。这个选项使用两次,会提供更详细的信息。这个选 项使用两次以上不起作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/801604.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mockito提升单元测试覆盖率

简单实战1、准备工作从gitee下载一个例子工程,下面会在这个工程下补充测试用例 选择的是 Ruoyi的后台代码,gitclone之后,添加几个依赖,因为习惯用@RunWith(MockitoJUnitRunner.class) 的方式,就添加了下面的两个依赖 第一个Mockito是这篇文章的主题,第二个junit4能…

mysql安装(windows-mysql-8.1.0-winx64.zip安装)

1、官网下载,解压缩2、配置环境变量3、新增my.ini文件,根据电脑环境修改配置 # 设置mysql的安装目录 basedir # 设置mysql数据库的数据的存放目录 datadir my.ini文件内容如下: [mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\kaifa\mysql-8.1.0-winx64# …

【游记】CSP-S2024游记

寄。CSP-S2024 游记展开目录 目录CSP-S2024 游记初赛9.21 上午9.21 下午初赛 9.21 上午 关于为什么从比赛当天开始,原因是我记性太差全忘了。 早上起来水了会谷,吃完饭出发。 同车 @Vsinger_洛天依 和 @JustinXaviel. 我和洛天依都不考钩组,所以把 JustinXaviel 送到地方之后…

UML在线工具的使用

UML在线编辑网站 https://plantuml.com/zh/class-diagram 模板(类方法显示) @startuml skinparam classAttributeIconSize 0 class Config {+load() +save() } @enduml

CSP2024-24

2A 题意:给定长度为 \(n\) 的非负整数数组 \(a\),求最小的 \(r−l+1\) 满足 \(l≤r,\sum_{i = l}^ra_i\) 是合数。 考虑全是正数的情况,答案一定 \(\le 4\),考虑一下每个数的奇偶性即可。 那么就把所有正数及其位置存下来,使得 \(b_i = a_{p_i}\),暴力检查 \(b\) 中长度为…

放开那代码让我来!——Cursor帮你写代码的奇妙之旅

让我们开门见山:编程很酷,但也很折磨人。那些长时间盯着屏幕,debug无休止的日子,只有程序员懂得它的酸爽。而就在这个编程焦虑的世界中,Cursor横空出世,带着一系列魔法功能,如同你手中的一根智能魔杖,让写代码变得像煮速冻面一样简单。 Cursor,一款基于AI的编程助手,…

Mathtype公式相关:在mathtype中添加任意维数矩阵的方法以及矩阵中省略号的问题;输入空格;输入花体字母;输入空心字母;输入空心数字

一、在mathtype中添加任意维数矩阵的方法以及矩阵中省略号的问题 使用mathtype创建任意维数的矩阵: 打开mathtype后可点击矩阵工具栏,再点击右下角的图形,具体情况如下图所示。点击之后会弹出一个对话框如下图所示,可在行列处输入自己想要的行数和列数。使用此方法创建的矩…

GIS转码的秋招历程与踩坑经历

本文介绍地理信息科学(GIS)专业的2024届应届生,在研三上学期期间,寻找后端研发、软件开发等IT方向工作的非科班转码秋招情况~本文介绍地理信息科学(GIS)专业的2024届应届生,在研三上学期期间,寻找后端研发、软件开发等IT方向工作的非科班转码秋招情况。首先,这篇文章一…

树状数组浅谈

什么是树状数组 树状数组是一种码量小,常数小,支持单点修改和区间查询的数据结构。 树状数组维护的信息和运算需要满足结合律并且可差分 注意gcd和max操作虽然满足结合律,但不可差分,因此不能使用树状数组维护 其实,树状数组能做的,线段树都能做,线段树能做的,树状数组…

Filebeat

Filebeat 简介 Filebeat用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视指定的位置文件或位置,收集日志事件,并将他们转发到Elasticsearch 或Logstash进行索引。 架构图安装Filebeat 下载并安装 wget https://artifacts.elastic.co/download…

Tarjan算法及其应用 总结+详细讲解+详细代码注释

\(\text{Tarjan}\) 1.引入概念 1.强连通分量 1.定义 在有向图 \(G\) 中,强连通分量就是满足以下条件的 \(G\) 的子图:从任意一点出发,都有到达另一个点的路径。 不存在一个或者几个点,使得这个子图加入这些点后,这个子图还满足上一个性质。为什么要限定”在有向图中“而不…