简介
Nmap
(Network Mapper
)是一款开放源代码的网络探测和安全审核的工具。Nmap
以新颖的方式使用原始IP
报文来发现网络上有一些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其他功能。
参数
指定目标
参数 | 输入 | 作用 |
---|
-iL | <inputfilename> | 从文件列表中读取目 |
-iR | <num hosts> | 选择随机目标 |
--exclude | <host1[,host2,host3],...> | 排除指定主机 |
--excludefile | <exclude_file> | 排除文件列表中目标 |
主机发现
参数 | 输入 | 作用 |
---|
-sL | NULL | 列出要扫描的目标 |
-sn | NULL | 不进行端口扫描 |
-Pn | NULL | 跳过主机发现 |
-PS/PA/PU/PY | NULL | 使用TCP SYN/ACK 、UDP 或SCTP 协议发现端口 |
-PO | NULL | 使用IP 协议的Ping 探测 |
-n/-R | NULL | (不)做DNS 解析 |
--dns-servers | <serv1[,serv2],...> | 指定DNS 服务器 |
--system-dns | NULL | 使用操作系统的DNS 解析 |
--traceroute | NULL | 跟踪到主机的每一跳 |
扫描技术
参数 | 输入 | 作用 |
---|
-sS/sT/sA/sW/sM | NULL | 使用TCP 的SYN 、Connect() 、ACK 、Window 、Maimon 进行扫描 |
-sU | NULL | 使用UDP 扫描 |
-sN/sF/sX | NULL | 使用TCP Null 、FIN 、Xmas 扫描 |
--scanflags | <flags> | 自定义TCP 扫描的flags |
-sI | <zombie host[:probeport]> | 扫描僵尸机 |
-sY/sZ | NULL | 使用SCTP 协议的INIT/COOKIE-ECHO 扫描 |
-s0 | NULL | 进行IP 协议扫描 |
-b | <FTP relay host> | 指定FTP 中继主机进行FTP 反弹扫描 |
端口说明和扫描规则
参数 | 输入 | 作用 |
---|
--exclude-ports | NULL | 不对此端口进行扫描 |
-F | NULL | 快速模式,扫描比默认端口数量更少的端口 |
-r | NULL | 有序地扫描端口而不是随机地扫描 |
--top-ports | <number> | 扫描排名指定的数字前几位的最常用的端口 |
--port-ratio | <ratio> | 扫描比输入的比例更常用的端口 |
服务/版本探测
参数 | 输入 | 作用 |
---|
-sV | NULL | 探测开启的端口来获取服务、版本信息 |
--version-intensity | <level> | 设置探测服务、版本信息的强度 |
--version-light | NULL | 强度为2 的探测强度 |
--version-all | NULL | 强度为9 的探测强度 |
--version-trace | NULL | 将扫描的具体过程显示出来 |
脚本扫描
参数 | 输入 | 作用 |
---|
-sC | NULL | 等同于–script=default |
--script= | <Lua scripts> | 指定使用Lua 脚本进行扫描 |
--script-args= | <n1=v1,[n2=v2,...]> | 指定脚本的参数 |
--script-args-file= | filename | 指定提供脚本参数的文件 |
--script-trace | NULL | 显示全部发送和收到的数据 |
--script-updatedb | NULL | 更新脚本的数据库 |
--script-help= | <Lua scripts> | 显示脚本的相关信息 |
系统探测
参数 | 输入 | 作用 |
---|
-O | NULL | 进行系统探测 |
--osscan-limit | NULL | 限制系统探测的目标,如只探测Linux 系统 |
--osscan-guess | NULL | 更侵略性地猜测系统 |
定时和性能
参数 | 输入 | 作用 |
---|
-T | <0-5> | 设置时序模块,越高越快 |
--min-hostgroup/max-hostgroup | <size> | 指定最小、最大的并行主机扫描组大小 |
--min-parallelism/max-parallelism | <numprobes> | 指定最小、最大并行探测数量 |
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout | <time> | 指定最小、最大的扫描往返时间 |
--max-retries | <tries> | 指定最大的重发扫描包的次数 |
--host-timeout | <time> | 指定超时时间 |
--scan-delay/--max-scan-delay | <time> | 指定每次探测延迟多长时间,即两次探测之间间隔多少时间 |
--min-rate | <number> | 最小的发包速率 |
--max-rate | <number> | 最大的发包速率 |
防火墙、IDS绕过和欺骗
参数 | 输入 | 作用 |
---|
-f; --mtu | <val> | 设置MTU 最大传输单元 |
-D | <decoy1,decoy2[,ME],...> | 伪造多个IP 地址和源地址一同发送包,从而隐藏在众多的IP 地址中而不易被发现 |
-S | <IP_Address> | 伪造源地址 |
-e | <iface> | 使用指定的接口 |
-g/--source-port | <portnum> | 使用指定的源端口 |
--proxies | <url1,[url2],...> | 指定代理服务器进行扫描 |
--data | <hex string> | 在发送包的数据字段中追加自定义的十六进制字符串 |
--data-string | <string> | 在发送包的数据字段中追加自定义的ASCII 字符串 |
--data-length | <num> | 在发送包的数据字段中追加随机的数据 |
--ip-options | <options> | 使用指定的IP 选项发送包 |
--ttl | <val> | 设置TTL 值 |
--spoof-mac | <mac address/prefix/vendor name> | 伪造源Mac 地址 |
--badsum | NULL | 发送伪造TCP/UDP/SCTP 校验和Checksum 的数据包 |
杂项
参数 | 输入 | 作用 |
---|
-6 | NULL | 扫描IPv6 的地址 |
-A | NULL | 一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描 |
--datadir | <dirname> | 指定自定义的nmap 数据文件位置 |
--send-eth/--send-ip | NULL | 使用原始以太网帧或IP 数据包发送 |
--privileged | NULL | 假设用户有全部权限 |
--unprivileged | NULL | 假设用户缺少原始套接字权限 |
-V | NULL | 输出版本号 |
-h | NULL | 输出帮助信息 |
应用
全面扫描
nmap -A <target>
获取系统类型和开放端口
nmap -sS -P0 -sV -O <target>
-sS
使用TCP SYN
扫描,即半开放扫描。-P0
不使用Ping
。-sV
进行版本检测。-O
识别操作系统。
扫描UDP端口
nmap -sS -sU -T4 -top-ports <num> <target>
-sU
指定扫描UDP
端口。-T4
设置时间级别为4
。--top-ports
筛选最有可能开放的num
个端口。