平时看到别人的nmap命令都是一大串,根本看不懂为什么,自己只会nmap ip,所以记录下对nmap -h的说明,方便以后的使用。有的指令单独没什么,是要配合其他指令一起使用。

主机发现

1. -iL <inputfilename> 批量扫描指定主机/网络的文件列表
2. -sL <scan List> 仅列出指定目标的ip
3. -sn Ping扫描,只进行主机发现
4. -Pn 将所有主机视为在线,有的主机会禁Ping
5. -PS/PA/PU/PY 给指定端口使用TCP SYN/ACK UDP SCTP 进行发现
6. -PE/PP/PM ICMP 回显、时间戳好网络掩码请求发现
7. -PO 使用IP协议包发现
8. -n/-R 不做DNS解析/总是做DNS解析(默认为有时)
--dns-servers 指定自定义的DNS服务器
--system-dns 使用操作系统的DNS解析器
--traceroute 跟踪每个主机的跃点路径

扫描技术

-sS/sT/sA/sW/sM 使用TCP SYN/Connect()/ACK/Window/Maimon 的方式进行扫描

TCP SYN扫描是在三次握手中收到SYN/ACK后发送RST断开连接,没有建立正常的TCP连接,一般不会留下扫描痕迹,不容易被发现;

Connect()是通过操作系统与目标建立连接,会留下很多连接记录,很容易被发现。

ACK扫描发送一个只设置ACK标志位的数据包,目标主机端口无论是关闭还是开放状态,都会返回RST数据包。但ACK扫描不能确定目标主机的端口状态,可以确定对方主机是否存活,可以发现防火墙规则来确定防火墙的状态。

窗口扫描,在某些系统上,开放端口用正数表示窗口大小,而关闭的窗口大小则为0。窗口扫描,就是通过检查返回RST报文的窗口字段,来判断端口是否开放。

FIN/ACK扫描也被称作Maimon扫描,根据发现者Uriel Maimon命名。其实Maimon扫描与NULL、FIN扫描的原理一样,根据RFC 793,无论端口是关闭还是开放,目标主机都会对FIN+ACK探测数据包,响应RST报文(但许多基于BSD的系统,会丢弃FIN+ACK探测数据包)。

-sU 使用UDP进行扫描

UDP扫描,通常与ICMP相结合进行。在给目标主机发送没有携带任何数据的UDP数据包时,如果返回信息为“ICMP端口不可达”(类型为3,代码为3)的提示,则表示目标端口是关闭的,但主机是存活的;如果某服务响应一个UDP报文,则表明该端口是开放的。

当然,UDP扫描也存在瓶颈,那就是速度。很多主机默认限制发送“ICMP端口不可达”信息,或者限制发包的频率。如Linux2.4.20内核,就只允许一秒钟发送一条目标不可达信息。这样,扫描65535个端口,需要18小时的时间。这是不可接受的,所以加速UDP扫描的方法,通常是并发扫描或先扫描主要端口。

-sN/sF/sX 使用TCP NULL/FIN/Xmas进行扫描 --scanflags <flags>

根据RFC 793,主机发送一个没有任何标志位的TCP包,如果目标主机的对应端口是关闭的话,则会返回一个RST数据包,如果没有响应则表示该端口是开放的。NULL扫描,可以躲过无状态防火墙和报文过滤路由器,且比SYN扫描要隐秘。值得注意的是,并不是所有系统都遵循RFC 793。一些系统不管端口是开放还是关闭,都响应RST数据包。如Cisco设备、BSDI等。也判断是否为Windows系统(不返回)还是Unix(返回)。

与NULL有点类似,只是FIN为指示TCP会话结束,在FIN扫描中一个设置了FIN位的数据包被发送后,若响应RST数据包,则表示端口关闭,没有响应则表示开放。此类扫描同样不能准确判断windows系统上端口开发情况。

通过发送带有下列标志位的tcp数据包

URG:指示数据时紧急数据,应立即处理。

PSH:强制将数据压入缓冲区。

FIN:在结束TCP会话时使用。

正常情况下,三个标志位不能被同时设置,但在此种扫描中可以用来判断哪些端口关闭还是开放,与上面的反向扫描情况相同,依然不能判断windows平台上的端口,开放不返回。

真正的Nmap高级用户不需要被这些现成的扫描类型束缚。 --scanflags选项允许指定任意TCP标志位来设计您自己的扫描。 让您的创造力流动,躲开那些仅靠本手册添加规则的入侵检测系统!

-sI <僵尸主机:prot>空闲扫描,让僵尸主机替你扫描,完全隐蔽自己。想知道原理的可以看这个[https://nmap.org/book/idlescan.html]()
-sY/sZ 使用SCTP INIT/COOKIE-ECHO 扫描

流控制传输协议(英语:Stream Control Transmission Protocol,缩写:SCTP)是在2000年由IETF的SIGTRAN工作组定义的一个传输层协议。

SCTP INIT扫描是TCP SYN扫描的SCTP等效物。它可以快速执行,在快速网络上每秒扫描数千个端口,而不受限制性防火墙的限制。与SYN扫描一样,INIT扫描相对不显眼且隐蔽,因为它永远不会完成SCTP关联。它还允许在打开,关闭和过滤状态之间进行清晰,可靠的区分。

SCTP COOKIE ECHO SCAN 是一种更先进的SCTP扫描。 它利用了SCTP实现应该在开放端口上静默丢弃包含COOKIE ECHO块的数据包这一事实,但如果端口关闭则发送ABORT。 这种扫描类型的优点是端口扫描不像INIT扫描那么明显。 此外,可能存在阻止INIT块的非状态防火墙规则集,但不阻止COOKIE ECHO块。 不要误以为这会使端口扫描不可见; 一个好的IDS也能够检测到SCTP COOKIE ECHO扫描。 缺点是SCTP COOKIE ECHO扫描不能区分打开和过滤的端口,在这两种情况下都会打开状态。

-sO 使用IP协议扫描

端口规格和扫描顺序

-p 指定端口 例 -p22; -p 1-65535; -p U:53,111,T:21-25
--exclude-ports 排除指定端口

-F 扫描比默认端口更少的端口
-r 按顺序扫描,nmap默认情况会随机顺序,常用的端口靠前

服务/版本检测

-sV :探测开放端口以确定服务/版本信息 --version-intensity <level>:设置从 0(轻)到 9(尝试所有探针) --version-light:限制最可能的探测(强度 2) --version-all:尝试每一个探测(强度 9) --version-trace:显示详细的版本扫描活动(用于调试)

脚本扫描

-sC 默认是--script=default

Nmap的脚本位置:/usr/share/nmap/scripts/

ls /usr/share/nmap/scripts/ | wc -l  查看脚本的数量(默认是605个)
nmap --script=auth 192.168.123.1 检查弱口令
nmap --script=brute 192.168.123.1 暴力破解
nmap --script=vuln 192.168.123.1 扫描常见漏洞
nmap --script external bbskali.cn whois解析
nmap --script=http-brute 192.168.123.1 HTTP认证爆破
nmap --script=http-ls bbskali.cn 目录扫描
nmap --script-updatedb 更新脚本数据库

(原来有这么多功能,一直当一个端口扫描工具的,看来学好nmap还是很必要的)

操作系统检测

-O 操作系统检测
--osscan-limit 将操作系统检测限制为有希望的目标
--osscan-guess 更积极地猜测操作系统

时间和性能:

-T <0-5>  越高约快
--min-hostgroup/max-hostgroup <size> 设置并行主机扫描组大小
--min-parallelism/max-parallelism <numrobes> 调整探测报文的并行度
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间> 调整探测报文超时
--max-retries <tries>:限制端口扫描探测重传的次数。
--host-timeout <time> 放弃低速目标主机
--scan-delay/--max-scan-delay <time> 调整探测报文的时间间隔(还可以躲闭基于阈值的入侵检测和预防系统(IDS/IPS))
--min-rate <number>:每秒发送数据包不低于 <number>
--max-rate <number>:每秒发送数据包的速度不超过 <number>

防火墙/IDS的逃避和欺骗

-F; --mtu<val> 分片数据包 (没太懂)
-D <decoy1,decoy2[,ME],...> 使用诱饵隐藏扫描

使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵,这时可使用 ME选项说明。如果在第6个位置或 更后的位置使用ME选项,一些常用 端口扫描检测器(如Solar Designer's excellent scanlogd)就不会报告 这个真实IP。如果不使用ME选项,Nmap 将真实IP放在一个随机的位置。

注意,作为诱饵的主机须在工作状态,否则会导致目标主机的SYN洪水攻击。 如果在网络中只有一个主机在工作,那就很容易确定哪个主机在扫描。也可 使用IP地址代替主机名(被诱骗的网络就不可能在名字服务器日志中发现)。

诱饵可用在初始的ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描 阶段。诱饵也可以用于远程操作系统检测(-O)。在进行版 本检测或TCP连接扫描时,诱饵无效。

使用过多的诱饵没有任何价值,反而导致扫描变慢并且结果不准确。 此外,一些ISP会过滤哄骗的报文,但很多对欺骗IP包没有任何限制。

-S <IP_Address>  欺骗源地址
-e <iface> 使用指定接口
-g/--source-port <portnum> 使用给定的端口号
--proxies <url1,[url2],...> 通过 HTTP/SOCKS4 代理中继连接
--data <hex string> 将自定义有效负载附加到发送的数据包
--data-string <string> 将自定义 ASCII 字符串附加到发送的数据包中
--data-length <num> 将随机数据附加到发送的数据包中
--ip-options <options> 发送带有指定ip选项的数据包
--ttl <val> 设置 IP 生存时间字段
--spoof-mac <mac地址/前缀/供应商名称> 欺骗你的MAC地址
--badsum 发送带有虚假 TCP/UDP/SCTP 校验和的数据包

输出

-oN/-oX/-oS/-oG <file>:输出扫描 正常,XML,脚本小子,Grep
-oA <basename>:一次输出三种主要格式
-v:增加详细程度(使用 -vv 或更多以获得更好的效果)
-d:增加调试级别(使用 -dd 或更多以获得更好的效果)
--reason:显示端口处于特定状态的原因
--open:仅显示打开(或可能打开)的端口
--packet-trace:显示所有发送和接收的数据包
--iflist:打印主机接口和路由(用于调试)
--append-output:附加到而不是破坏指定的输出文件
--resume <文件名>:恢复中止的扫描
--noninteractive:通过键盘禁用运行时交互
--stylesheet <path/URL>:将 XML 输出转换为 HTML 的 XSL 样式表
--webxml:参考 Nmap.Org 的样式表以获得更便携的 XML
--no-stylesheet:防止 XSL 样式表与 XML 输出相关联

杂项

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

知道原理后就也可以用一大串参数达到自己想要的扫描或功能。

***************************转载请注明出处,尊重原创!***************************

nmap命令说明的更多相关文章

  1. Nmap命令的29个实用范例

    Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口.它会扫描远程在线主机,该主机的操作系统,包过滤器 ...

  2. 十条常用nmap命令行格式

    十条常用nmap命令行格式 ) 获取远程主机的系统类型及开放端口 nmap -sS -P0 -sV -O <target> 这里的 < target > 可以是单一 IP, 或 ...

  3. [转]给Linux系统管理员准备的Nmap命令的29个实用范例+ tsysv 系统服务器管理器

    原文链接:http://os.51cto.com/art/201401/428152.htm Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探 ...

  4. 给Linux系统/网络管理员准备的Nmap命令的29个实用范例

    我将用两个不同的部分来涵盖大部分NMAP的使用方法,这是nmap关键的第一部分.在下面的设置中,我使用两台已关闭防火墙的服务器来测试Nmap命令的工作情况. 192.168.0.100 – serve ...

  5. nmap命令总结

    一.nmap是什么 nmap是一款网络扫描和主机检测的非常有用的工具,不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统. ...

  6. Nmap 命令操作详解

    首先在安装nmap 稳定版 https://nmap.org/download.html 选择安装目录 通过cmd  去使用也可以在 安装目录中找到 进行可视化操作 以下是nmap 命令 -sT TC ...

  7. 给Linux系统管理员准备的Nmap命令的29个实用范例

    map即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口.它会扫描远程在线主机,该主机的操作系统,包过滤器和 ...

  8. Nmap命令的常用实例

    一.Nmap简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting).它是网络管 ...

  9. kail linux nmap命令

    可用于: 检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本) ---- ...

  10. nmap命令详解

    基础命令学习目录 原文链接:http://www.cnblogs.com/hongfei/p/3801357.html Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具. ...

随机推荐

  1. Django: request.GET.get()

    释义 query = request.GET.get('name', '') 寻找名为name的GET参数,而且如果参数没有提交,返回一个空的字符串. 对比request.GET() 如果使用requ ...

  2. 使用logrotate定期切割nginx日志

    前言 默认情况下,nginx的日志都会写到access.log文件中,访问流量大的话,日志文件很快就会膨胀到几十G,不方便分析处理,也占用硬盘空间.借助linux自带的logrotate工具可以很方便 ...

  3. Nessus 10.5.3 漏洞扫描器的下载安装与卸载

    测试环境 Kali 2023.2 本教程使用脚本进行自动化安装.破解 文章地址:https://www.iculture.cc/software/pig=25546#wznav_7 偶然发现,特别好用 ...

  4. KIOPTRIX: LEVEL 1.1 (#2) 常规命令注入+内核提权

    0×02 Vulnhub靶机渗透总结之 KIOPTRIX: LEVEL 1.1 (#2) 系列专栏:Vulnhub靶机渗透系列 欢迎大佬:点赞️收藏关注 首发时间: 2023年8月20日 如有错误 还 ...

  5. 问题排查:nginx的反向代理感觉失效了一样

    背景 最近,负责基础设施的同事,要对一批测试环境机器进行回收,回收就涉及到应用迁移,问题是整个过程一团乱.比如服务器A上一堆应用要调用服务器B上一堆服务,结果服务器B被回收了,然后服务器A上一堆应用报 ...

  6. 通过商品API接口获取到数据后的分析和应用

    一.如果你想要分析商品API接口获取到的数据,可以按照如下的步骤进行: 了解API接口返回值的格式,如JSON格式.XML格式.CSV格式等,选择适合你的数据分析方式. 使用API请求工具(如Post ...

  7. 命令行安装ipa包

    我们可以通过ssh连接我们的iphone,来使用命令行安装ipa包 itunnel_mux.exe --lport 9993 --iport 22 itunnel_mux.exe --lport 99 ...

  8. pygame 入门实例教程 1 - 复古方块赛车游戏

    作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 . 本教程步骤明确,过程清晰简明,最终代码量250行上下,适合学习pygame的新手. 项目代码已上传到我的gi ...

  9. Maven安装与配置教程

    一.安装前检查 检查电脑上是否安装JDK,如果没有安装,请查看JDK安装教程:点我查看 如果电脑上已经安装JDK,按Win 和R键,输入cmd,然后点击确定 输入java -version,点击回车, ...

  10. C# MySqlHelp类 "DbModel.MySql"数据库操作类

    以前做易语言/PHP的. 最近刚入门C#, 就简单的封装了一个类库, 边学边玩才容易学到东西嘛, 比起sqlserver, 我还是觉得mysql更加有亲切感; 于是模仿ThinkPHP编写了一个&qu ...