nmap命令说明
平时看到别人的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命令说明的更多相关文章
- Nmap命令的29个实用范例
Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口.它会扫描远程在线主机,该主机的操作系统,包过滤器 ...
- 十条常用nmap命令行格式
十条常用nmap命令行格式 ) 获取远程主机的系统类型及开放端口 nmap -sS -P0 -sV -O <target> 这里的 < target > 可以是单一 IP, 或 ...
- [转]给Linux系统管理员准备的Nmap命令的29个实用范例+ tsysv 系统服务器管理器
原文链接:http://os.51cto.com/art/201401/428152.htm Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探 ...
- 给Linux系统/网络管理员准备的Nmap命令的29个实用范例
我将用两个不同的部分来涵盖大部分NMAP的使用方法,这是nmap关键的第一部分.在下面的设置中,我使用两台已关闭防火墙的服务器来测试Nmap命令的工作情况. 192.168.0.100 – serve ...
- nmap命令总结
一.nmap是什么 nmap是一款网络扫描和主机检测的非常有用的工具,不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统. ...
- Nmap 命令操作详解
首先在安装nmap 稳定版 https://nmap.org/download.html 选择安装目录 通过cmd 去使用也可以在 安装目录中找到 进行可视化操作 以下是nmap 命令 -sT TC ...
- 给Linux系统管理员准备的Nmap命令的29个实用范例
map即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口.它会扫描远程在线主机,该主机的操作系统,包过滤器和 ...
- Nmap命令的常用实例
一.Nmap简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting).它是网络管 ...
- kail linux nmap命令
可用于: 检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本) ---- ...
- nmap命令详解
基础命令学习目录 原文链接:http://www.cnblogs.com/hongfei/p/3801357.html Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具. ...
随机推荐
- GoRedisLock:Golang保障数据一致性的分布式锁解决方案
在现代分布式系统中,多个节点之间共享资源是常见的需求.然而,并发访问共享资源可能导致数据不一致性和竞争条件.为了解决这些问题,我们需要引入分布式锁.GoRedisLock是一个出色的分布式锁库,它结合 ...
- 查看UUID
查看硬盘UUID: 1. ls -l /dev/disk/by-uuid 2. blkid /dev/sda5 修改硬盘UUID: 1.新建和改变分区的UUID sudo uuidgen | xarg ...
- Gin+Xterm.js实现远程Kubernetes Pod(一)
Xterm.js简介 xterm.js (https://xtermjs.org/)是一个开源的 JavaScript 库,它模拟了一个终端接口,可以在网页中嵌入一个完全功能的终端.这个库非常灵活,并 ...
- webpack dev server 与 hot module replace 提高开发效率
通过 webpack 命令编译源代码时,如果我们对源代码进行了修改,需要重新执行命令才能看到编译后的效果. 这样在开发中非常的影响效率,如果存在一种方式,当文件被修改时,webpack 自动监听重新编 ...
- RedHat8静默安装was
前言 was(websphere application server),类似weblogic.tomcat,由IBM开发的一种企业级Java容器. 系统版本:redhat 8.2 was版本:was ...
- Cilium系列-16-CiliumNetworkPolicy 实战演练
系列文章 Cilium 系列文章 前言 今天我们进入 Cilium 安全相关主题, 基于 Cilium 官方的<星球大战> Demo 做详细的 CiliumNetworkPolicy 实战 ...
- No manual entry for ls终极解决办法
No manual entry for ls解决办法,最后一种方法一定能解决你的问题 步骤一:确认man是否已经安装 #which man /usr/bin/man---返回此行,证明已经安装 步骤二 ...
- 领域驱动模型DDD(四)——Eventuate Tram Saga源码讲解
前言 虽然本人一直抱怨<微服务架构设计模式>中DDD模式下采用的Eventuate Tram Saga不算简单易用,但是为了更加深入了解原文作者的设计思路,还是花了点时间去阅读源码,并且为 ...
- 实现自动扫描工作区npm包并同步cnpm
省流版: npx cnnc 为避免包名重复,取了2个单词的首尾,cnpm sync 前言 在开发一个多npm包的项目时,时常会一次更新多个包的代码,再批量发布到 npm 镜像源后. 由于国内网络环境的 ...
- 「codeforces - 1486F」Pairs of Paths
link. 还算萌,但是代码有些难写-- 你首先会想要 int n, m, fa[20][300100], pa[300100], dep[300100], cnt[900100]; int ldf[ ...