• nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。


常用参数:

参 数 说 明
-sT TCP connect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误
-sS 半开扫描,很少有系统能够把它记入系统日志,不够,需要root权限
-sF / -sN 秘密FIN数据包扫描,Xmas Tree、Null扫描模式
-sP ping扫描,Nmap在扫描端口时,默认都会使用ping扫描,只要主机存活,Nmap才继续扫描
-sU UDP扫描,但UDP扫描是不可靠的
-sA 这项高级的扫描方法通常用来穿过防火墙的规则集
-sV 探测端口服务版本
-P0 扫描之前不需要用ping命令,有些防火墙禁止用ping命令。可以使用此选项进行扫描
-v 显示扫描过程,推荐使用
-h 帮助选项,是最清楚的帮助文档
-p 指定端口,如“1~65536、1433、135、22、80”等
-O 启用远程操作系统检测,存在误报
-A 全面系统检测、启用脚本检测、扫描等
-oN/-oX/-oG 将报告写入文件,分别是正常、XML、grepable三种格式
-T4 针对TCP端口进制动态扫描延迟超过10ms
-iL 读取主机列表比如。“-iL C:\ip.txt”

  • Nmap默认扫描主机1000个高危端口,若需要全面检测端口,则需要加入“-p 1~65535”或者“-p-”

案例:

  • 案例一:扫描指定IP所开发的端口

    nmap -sS -p 1-65535 -v 192.168.0.100

  • 案例二:扫描192.168.0.100 C段存活主机

    nmap -sP 192.168.0.100/24

  • 案例三:指定端口扫描

    nmap -p 80,1433,22,1521 192.168.0.100

  • 案例四:探测主机操作系统

    nmap -O 192.168.0.100

  • 案例五:全面系统探测

    nmap -v -A 192.168.0.100

  • 案例六:穿透防火墙进行扫描

    nmap -Pn -A 192.168.0.100



如下为所有参数及说明:

目标规格:

  • 可以传递主机名,IP地址,网络等。
    例如:scanme.nmap.org,microsoft.com / 24、192.168.0.1; 10.0.0-255.1-254
参数 说明
-iL <输入文件名> 从主机/网络列表输入
-iR <主机数目> 选择随机目标
–exclude <host1 [,host2] [,host3],…> 排除主机/网络
–excludefile 从文件中排除列表

主机发现:

参数 说明
-iL <输入文件名> 从主机/网络列表输入
-iR <主机数目> 选择随机目标
–exclude <host1 [,host2] [,host3],…> 排除主机/网络
–excludefile 从文件中排除列表
主机发现
-sL 列出扫描-仅列出要扫描的目标
-sn Ping扫描-禁用端口扫描
-Pn 将所有主机视为联机-跳过主机发现
-PS / PA / PU / PY [端口列表] 对给定端口的TCP SYN / ACK,UDP或SCTP发现
-PE / PP / PM ICMP回显,时间戳和网络掩码请求发现探针
-PO [协议列表] IP协议Ping
-n / -R 从不解析DNS /始终解析[默认值:有时]
–dns-servers <serv1 [,serv2],…> 指定自定义DNS服务器
–system-dns 使用操作系统的DNS解析器
–traceroute 跟踪到每个主机的跃点路径

扫描技术:

参数 说明
-sS / sT / sA / sW / sM TCP SYN / Connect()/ ACK / Window / Maimon扫描
-sU UDP扫描
-sN / sF / sX TCP空,FIN和Xmas扫描
–scanflags <标志> 自定义TCP扫描标志
-sI <僵尸主机[:probeport]> 空闲扫描
-sY / sZ SCTP INIT / COOKIE-ECHO扫描
-sO IP协议扫描
-b <FTP中继主机> FTP退回扫描

端口规格和扫描顺序:

参数 说明
-p <端口范围> 仅扫描指定的端口
例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
–exclude-ports <端口范围> 从扫描中排除指定端口
-F 快速模式-扫描的端口少于默认扫描
-r 连续扫描端口-不要随机化
–top-ports <编号> 扫描<编号>最常见的端口
–port-ratio <比率> 扫描端口比<比率>更常见

服务/版本检测:

参数 说明
-sV 探测打开的端口以确定服务/版本信息
–version-intensity <级别> 设置为0(浅)至9(尝试所有探针)
–version-light 限制为最可能的探针(强度2)
–version-all 尝试每个探针(强度9)
–version-trace 显示详细的版本扫描活动(用于调试)

脚本扫描:

参数 说明
-sC 相当于–script = default
–script = <Lua脚本> <Lua脚本>是逗号分隔的列表目录,脚本文件或脚本类别
–script-args = <n1 = v1,[n2 = v2,…]> 提供脚本参数
–script-args-file =文件名 在文件中提供NSE脚本args
–script-trace 显示所有发送和接收的数据
–script-updatedb 更新脚本数据库。
–script-help = <Lua脚本> 显示有关脚本的帮助
<Lua脚本>是脚本文件或脚本类别的逗号分隔列表

操作系统检测:

参数 说明
-O 启用操作系统检测
–osscan-limit 将操作系统检测限制为有希望的目标
–osscan-guess 更积极地猜测操作系统

时间和性能:

  • 花费<时间>的选项以秒为单位,或附加“ ms”(毫秒), “ s”(秒),“ m”(分钟)或“ h”(小时)到值(例如30m)。
参数 说明
-T <0-5> 设置时间模板(越高越快)
–min-hostgroup / max-hostgroup <大小> 并行主机扫描组大小
–min-parallelism / max-parallelism <numprobes> 探针并行化
–min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <时间> 指定探针往返时间
–max-retries <tries> 限制端口扫描探针重传的次数
–host-timeout <时间> 在很长一段时间后放弃目标
–scan-delay /-max-scan-delay <时间> 调整探头之间的延迟
–min-rate <number> 发送数据包的速度不低于每秒<number>
–max-rate <number> 发送数据包的速度不超过每秒<number>

防火墙/标识闪避和疏散:

参数 说明
-F; –mtu 分段数据包(可选,带有给定的MTU)
-D <decoy1,decoy2 [,ME],…> 用诱饵掩盖扫描
-S <IP地址> 欺骗源地址
-e <iface> 使用指定的接口
-g /-source-port <端口号> 使用给定的端口号
–proxies <url1,[url2],…> 通过HTTP / SOCKS4代理中继连接
–data <十六进制字符串> 将自定义有效负载附加到发送的数据包
–data-string <字符串> 将自定义ASCII字符串附加到发送的数据包
–data-length <num> 将随机数据附加到发送的数据包
–ip-options <选项> 发送具有指定ip选项的数据包
–ttl <val> 设置IP生存时间字段
–spoof-mac <mac地址/前缀/供应商名称> 欺骗您的MAC地址
–badsum 发送带有虚假TCP / UDP / SCTP校验和的数据包

输出:

参数 说明
-oN / -oX / -oS / -oG <文件 以普通,XML,s l <rIpt kIddi3和Grepable格式分别输出扫描到给定的文件名。
-oA <basename> 一次以三种主要格式输出
-v 提高详细程度(使用-vv或更高的效果更好)
-d 提高调试级别(使用-dd或更多以获得更大的效果)
–reason 显示端口处于特定状态的原因
–open 仅显示打开(或可能打开)的端口
–packet-trace 显示所有发送和接收的数据包
–iflist 打印主机接口和路由(用于调试)
–append-output 追加而不是破坏指定的输出文件
–resume <文件名> 恢复中止的扫描
–stylesheet <路径/ URL> XSL样式表,可将XML输出转换为HTML
–webxml Nmap.Org的参考样式表,用于更便携式的XML
–no-stylesheet 防止关联带有XML输出的XSL样式表

杂项:

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