平时看到别人的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. Ubuntu 用户的切换

    1.普通用户转成root su root 输入密码 确认密码(此时root账户已经建立) 2. root 转回 普通用户 su  用户名

  2. SpringBoot3基础用法

    目录 一.背景 二.环境搭建 1.工程结构 2.框架依赖 3.环境配置 三.入门案例 1.测试接口 2.全局异常 3.日志打印 3.1 日志配置 3.2 日志打印 四.打包运行 五.参考源码 技术和工 ...

  3. UI自动化执行过程中,隐藏浏览器页面

    在执行UI自动化的过程中,浏览器总是会弹出,如果自动化环境是在个人办公笔记本,在工作过程中会影响正常办公.故需要将UI自动化执行时的浏览器隐藏. 代码实现如下: from selenium impor ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (76)-- 算法导论7.3 1题

    一.如果用go语言,为什么我们分析随机化算法的期望运行时间,而不是其最坏运行时间呢? 文心一言: 在分析算法的性能时,期望运行时间是一个重要的指标,它描述了算法在平均情况下的表现.期望运行时间考虑了所 ...

  5. 我是如何使用Spring Retry减少1000 行代码

    本文翻译自国外论坛 medium,原文地址:https://levelup.gitconnected.com/how-i-deleted-more-than-1000-lines-of-code-us ...

  6. [Love] VSCODE 调试 LOVE 引擎游戏

    VSCODE调试LOVE引擎游戏 安装插件 配置插件 按 CTRL + SHIFT + P,打开Preferences: Open User Settings (JSON),为settings.jso ...

  7. 【日常踩坑】从 SSLEOFError 到正确配置 Proxy

    目录 踩坑 代理服务器 普通的代理服务器 因国家法律规定,部分内容已删除,完整内容请查看文章末尾链接 代理配置 追根溯源 urllib3 pip 万恶之源 urllib 参考资料 本文主要参考 Pyt ...

  8. Ionic 整合 pixi.js

    最近做了个app,上线google play不大顺利,说是有假冒行为,然后改了下icon和名字以及描述,但是没啥信息去上,于是暂时放下搞点别的. 因为近期看到个比较有趣的绘图创意, 于是想通过ioni ...

  9. Solution -「CF 1477A」Nezzar and Board

    Description Link. $ n $ distinct integers $ x_1,x_2,\ldots,x_n $ are written on the board. Nezzar ca ...

  10. Ubuntu 14.04解决登录界面无限循环的方法

    在Ubuntu下配置Android的环境时,想像在Windows中那样在终端中直接启动adb,以为Linux和Windows一样,将adb的路径添加到环境变量中,于是将adb的路径也export到/e ...