一、目标说明
代码语言:javascript复制-iL
从已有的ip列表文件中读取并扫描
代码语言:javascript复制-iR
扫描数量 随机选择目标进行扫描
代码语言:javascript复制--exclude ip
不扫描此ip
二、主机发现
代码语言:javascript复制-sL 列出要扫描的ip
-sn 不进行端口扫描
-Pn 将所有主机都默认为在线,跳过主机发现
-PS/PA/PU/PY 使用TCP、SYN/ACK、UDP或SCTP协议去发现端口
-PE/PP/PM: 使用ICMP响应(echo)、时间戳或子网掩码请求来发现探测
-PO 使用IP协议的ping
-n 不做DNS解析
-R 总是做DNS反向解析
--dns-servers 指定自定义的DNS服务器
--system-dns 使用操作系统的DNSs
--traceroute 追踪每台主机的跳转路径
三、扫描技术
代码语言:javascript复制-sS/sT/sA/sW/sM 使用SYN、TCP、全连接Connect()、ACK、Window、Maimon来进行扫描
-sU UDP扫描
-sN/sF/sX 使用TCP Null(无flag)、FIN、Xmas(FIN Push Urgent)扫描
--scanflags flags 自定义TCP扫描的flags
-sI 僵尸机扫描
-sY/sZ 使用SCTP协议的INIT/COOKIE-ECHO扫描
-sO 进行IP协议扫描
-b <FTP relay host> 指定FTP中继主机进行FTP反弹扫描
端口说明和扫描规则
-p 只扫描指定的端口
--exclude-ports 不对此端口进行扫描
-F 快速模式,扫描比默认端口数量更少的端口
-r 有序地扫描端口而不是随机地扫描
--top-ports <number> 扫描排名指定的数字前几位的最常用的端口
--port-ratio <ratio> 扫描比输入的比例更常用的端口
四、服务、版本探测
代码语言:javascript复制-sV 探测开启的端口来获取服务、版本信息
--version-intensity <level>设置探测服务、版本信息的强度
--version-light 强度为2的探测强度
--version-all 强度为9的探测强度
--version-trace 将扫描的具体过程显示出来
五、脚本扫描
代码语言:javascript复制-sC :等同于–script=default
--script=<Lua scripts> :指定使用Lua脚本进行扫描
--script-args=<n1=v1,[n2=v2,...]>:指定脚本的参数
--script-args-file=filename :指定提供脚本参数的文件
--script-trace :显示全部发送和收到的数据
--script-updatedb :更新脚本的数据库
--script-help=<Lua scripts> :显示脚本的相关信息
六、系统探测
代码语言:javascript复制-O :进行系统探测
--osscan-limit :限制系统探测的目标,如只探测Linux系统
--osscan-guess :更侵略性地猜测系统
七、定时和性能
代码语言:javascript复制-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绕过和欺骗
代码语言:javascript复制-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 :发送伪造TCP/UDP/SCTP校验和Checksum的数据包
九、输出
代码语言:javascript复制-oN/-oX/-oS/-oG <file> :分别输出正常、XML、s|
十、杂项
代码语言:javascript复制-6 :扫描IPv6的地址
-A :一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描
--datadir <dirname>:指定自定义的nmap数据文件位置
--send-eth/--send-ip:使用原始以太网帧或IP数据包发送
--privileged :假设用户有全部权限
--unprivileged :假设用户缺少原始套接字权限
-V :输出版本号
-h :输出帮助信息
十一、一些用法
代码语言:javascript复制nmap --iflist(查看本地路由与接口)
nmap -e 08:00:27:47:63:E6 103.10.87.148(指定mac和ip地址)
nmap -T4 -F -n -Pn -D 192.168.1.100,192.168.1.101,192.168.1.102,ME192.168.1.103(地址诱骗)
nmap -sV --spoof-mac 08:00:27:47:63:E6 103.10.87.148(虚假mac地址)
nmap -sV --source-port 900 103.10.87.148 --source-port(指定源端口)
nmap -p1-25,80,512-515,2001,4001,6001,9001 10.20.0.1/16(扫描思科路由器)
nmap -sU -p69 -nvv 192.168.1.253(扫描路由器的ftp协议)
nmap -O -F -n 102.10.87.148(-F快速扫描)
nmap -iR 100000 -sS -PS80 -p 445 -oG nmap.txt(随机产生10万个ip地址,对其445端口进行扫描,扫描结果以greppable(可用grep命令提取)格式输出到nmap.txt)
nmap --script=brute 102.10.87.148(暴力破解)