简介
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个端口。