nmap使用教程
- 一、nmap简介
- 二、nmap常用命令
-
- 2.1、target specification(目标规范)
- 2.2、HOST DISCOVERY(主机发现)
- 2.3、SCAN TECHNIQUES(扫描技术)
- 2.4、PORT SPECIFICATION AND SCAN ORDER(端口规格和扫描顺序)
- 2.5、SERVICE/VERSION DETECTION(服务/版本检测)
- 2.6、SCRIPT SCAN(脚本扫描)
- 2.7、OS DETECTION(OS 识别)
- 2.8、TIMING AND PERFORMANCE(时间与性能)
- 2.9、FIREWALL/IDS EVASION AND SPOOFING(防火墙/ IDS逃避和欺骗)
- 2.10、(OUTPUT(Nmap 输出)
- 2.11、MISC(其他 nmap选项)
一、nmap简介
- nmap是一款非常强大的主机发现和端口扫描工具,而且nmap运用自带的脚本,还能完成漏洞检测,同时支持多平台。
- 官方文档:https://nmap.org/man/zh/
- 查看用法:
nmap -h
二、nmap常用命令
- 用法:
nmap [Scan Type(s)] [Options] {target specification}
2.1、target specification(目标规范)
- 可以使用主机名、IP地址、网络等
- 例如:
scanme.nmap.org
、microsoft.com/24
、192.168.0.1
、10.0.0-255.1-254
2.1.1、用法
-iL <inputfilename> # Input from list of hosts/networks 输入主机/网络列表
-iR <num hosts> # Choose random targets 随机选择目标
# 选项 0 意味着永无休止的扫描
# nmap -sS -PS80 -iR 0 -p 80 随机地找一些网站浏览
--exclude <host1[,host2][,host3],...> # Exclude hosts/networks 排除主机/网络
--excludefile <exclude_file> # Exclude list from file 排除文件中的列表
2.1.2、详情
-iL <inputfilename>
Input from list of hosts/networks 输入主机/网络列表
-iR <num hosts>
Choose random targets 随机选择目标- 选项 0 意味着永无休止的扫描
nmap -sS -PS80 -iR 0 -p 80
随机地找一些网站浏览
--exclude <host1[,host2][,host3],...>
Exclude hosts/networks 排除主机/网络
--excludefile <exclude_file>
Exclude list from file 排除文件中的列表- 举例:略
2.2、HOST DISCOVERY(主机发现)
2.2.1、用法
-sL # List Scan - simply list targets to scan 简单的扫描目标
-sn # Ping Scan - disable port scan Ping扫描 - 禁用端口扫描
-Pn # Treat all hosts as online -- skip host discovery 将所有主机视为在在线,跳过主机发现
-PS[portlist] # (TCP SYN ping) 需要root权限
-PA[portlist] # (TCP ACK ping)
-PU[portlist] # (UDP ping)
-PY[portlist] # (SCTP ping)
-PE/PP/PM # ICMP echo, timestamp, and netmask request discovery probes ICMP回显,时间戳和网络掩码请求探测
-PO[protocol list] # IP Protocol Ping IP协议Ping
-n/-R # Never do DNS resolution/Always resolve [default: sometimes] 从不执行DNS解析/始终解析[默认:有时]
--dns-servers <serv1[,serv2],...> # Specify custom DNS servers 指定自定义DNS服务器
--system-dns # Use OS's DNS resolver 使用OS的dns服务器
--traceroute # Trace hop path to each host 跟踪到每个主机的跃点路径
2.2.2、详情
-sL
List Scan - simply list targets to scan 简单的扫描目标- 仅仅只是列出ip区域内的主机,不进行主机发现
nmap -sL 192.168.9.140-150
这个参数会列举出140-150内全部ip,但并不会进行主机发现
-sn
Ping Scan - disable port scan Ping扫描 - 禁用端口扫描- 这个参数可以和
-sP
归为一类,使用ping进行主机发现,不进行端口扫描
- 这个参数可以和
-Pn
Treat all hosts as online – skip host discovery 将所有主机视为在在线,跳过主机发现- 过主机发现阶段,直接进行端口扫描,该参数会认为主机为存活状态,端口为全部开放状态,扫描时间较长,在目标有防火墙的情况下,使用该参数,效果较好,等同于
-PO
- 过主机发现阶段,直接进行端口扫描,该参数会认为主机为存活状态,端口为全部开放状态,扫描时间较长,在目标有防火墙的情况下,使用该参数,效果较好,等同于
-PS[portlist]
(TCP SYN ping) 需要root权限-PA[portlist]
(TCP ACK ping)-PU[portlist]
(UDP ping)-PY[portlist]
(SCTP ping)
PE/PP/PM
ICMP echo, timestamp, and netmask request discovery probes ICMP回显,时间戳和网络掩码请求探测- 根据ICMP协议判断端口开放状态,相较于
-sP
更有成效
- 根据ICMP协议判断端口开放状态,相较于
-PO[protocol list]
IP Protocol Ping IP协议Ping-n/-R
Never do DNS resolution/Always resolve [default: sometimes] 从不执行DNS解析/始终解析[默认:有时]-n
代表不需要反向解析域名,-R
代表需要反向解析域名
--dns-servers <serv1[,serv2],...>
Specify custom DNS servers 指定自定义DNS服务器--system-dns
Use OS’s DNS resolver 使用OS的dns服务器--traceroute
Trace hop path to each host 跟踪到每个主机的跃点路径
2.3、SCAN TECHNIQUES(扫描技术)
-sS # 使用TCP的SYN进行扫描
-sT # 使用TCP进行扫描
-sA # 使用TCP的ACK进行扫描
-sW # Window
-sM # Maimon scans
-sU # UDP扫描
-sN/sF/sX # TCP Null, FIN, and Xmas scans
--scanflags <flags> # Customize TCP scan flags 自定义 TCP 包中的 flags
-sI # Idle扫描 空闲扫描
-sY/sZ # SCTP INIT/COOKIE-ECHO scans
-sO # IP protocol scan 使用 IP protocol 扫描确定目标机支持 的协议类型
-b<FTP中继主机> # FTP反弹扫描
2.4、PORT SPECIFICATION AND SCAN ORDER(端口规格和扫描顺序)
-p <port ranges> # Only scan specified ports 扫描指定端口 -p : 只扫描指定的端口,-p-代表全端口扫描
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges> # Exclude the specified ports from scanning 从扫描中排除指定端口
-F # Fast mode - Scan fewer ports than the default scan 快速模式-扫描比默认扫描更少的端口
-r # Scan ports sequentially - don't randomize 连续扫描端口-不随机化
--top-ports <number> # Scan <number> most common ports 扫描开放概率最高的 number 个端口
--port-ratio <ratio> # Scan ports more common than <ratio> 扫描指定频率以上的端口
2.5、SERVICE/VERSION DETECTION(服务/版本检测)
-sV # Probe open ports to determine service/version info 开放版本探测,可以直接使用 -A 同时打开 操作系统探测和版本探测
--version-intensity <level> # Set from 0 (light) to 9 (try all probes) 设置版本扫描强度,强度水平说明了应该使 用哪些探测报文。数值越高,服务越有可能被正确识别 。默认是 7
--version-light # Limit to most likely probes (intensity 2) # 打开轻量级模式,为 --version-intensity 2 的别名
--version-all # Try every single probe (intensity 9) # 尝试所有探测,为 --version-intensity 9 的别名
--version-trace # Show detailed version scan activity (for debugging) # 显示出详细的版本侦测过程信息
2.6、SCRIPT SCAN(脚本扫描)
-sC # 根据端口识别的服务,调用默认脚本 等效于 --script=defult
--script=<Lua scripts> # 调用的脚本名
--script-args=<n1=v1,[n2=v2,...]> # 调用的脚本传递的参数
--script-args-file=filename # 使用文本传递参数
--script-trace # 显示所有发送和接收到的数据
--script-updatedb # 更新脚本的数据库
--script-help=<Lua scripts> # 显示指定脚本的帮助
2.7、OS DETECTION(OS 识别)
-O # 启用操作系统检测,-A 来同时启用操作系统检测和版本检测
--osscan-limit # 针对指定的目标进行操作系统检测 (至少需确知该主机分别有 一个 open 和 closed 的端口)
--osscan-guess # 推测操作系统检测结果,当 Nmap 无法确定所检测的操作系统 时,会尽可能地提供最相近的匹配,Nmap 默认进行这种匹配
2.8、TIMING AND PERFORMANCE(时间与性能)
- 选择“<时间>”的选项以秒为单位,或追加“毫秒”(毫秒),s(秒)、M(分钟),或 “ H ” (小时)的值(如30m)
-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 > # 扫描探针重发的端口盖数
--scan-delay / --max-scan-delay < time > # 调整探针间的延迟
--min-rate < number > # 每秒发送的数据包不比 < 数字 > 慢
--max-rate < number > # 发送包的速度不比 < 每秒 > 数字快
2.9、FIREWALL/IDS EVASION AND SPOOFING(防火墙/ IDS逃避和欺骗)
-f; --mtu < val > # 指定使用分片、指定数据包的 MTU
-D < decoy1 , decoy2 [,ME ],... > # 使用诱饵隐蔽扫描
-S < IP_Address > # 源地址欺骗
-e < interface > # 使用指定的接口
-g / --source-port < portnum > # 使用指定源端口
--proxies < url1,[ url2 ],... > # 使用 HTTP 或者 SOCKS4 的代理
--data < hex string > # 向发送的数据包追加自定义有效载荷
--data-string < string > # 添加一个自定义的ASCII字符串发送的数据包
--data-length < num > # 填充随机数据让数据包长度达到 NUM
--ip-options < options > # 使用指定的 IP 选项来发送数据包
--ttl < val > # 设置 IP time-to-live 域
--spoof-mac < mac address / prefix / vendor name > # MAC 地址伪装
--badsum # 使用错误的 checksum 来发送数据包
2.10、(OUTPUT(Nmap 输出)
-oN # 将标准输出直接写入指定的文件
-oX # 输出 xml 文件
-oS # 将所有的输出都改为大写
-oG # 输出便于通过 bash 或者 perl 处理的格式,非 xml
-oA < basename > # 可将扫描结果以标准格式、XML 格式和 Grep 格式一 次性输出
-v # 提高输出信息的详细度
-d level # 设置 debug 级别,最高是 9
--reason # 显示端口处于带确认状态的原因
--open # 只输出端口状态为 open 的端口
--packet-trace # 显示所有发送或者接收到的数据包
--iflist # 显示路由信息和接口,便于调试
--append-output # 追加到指定的文件
--resume < filename > # 恢复已停止的扫描
--stylesheet < path / URL > # 设置 XSL 样式表,转换 XML 输出
--webxml # 从 http://namp.org 得到 XML 的样式
--no-sytlesheet # 忽略 XML 声明的 XSL 样式表
2.11、MISC(其他 nmap选项)
-6 # 开启 IPv6
-A # OS 识别,版本探测,脚本扫描和 traceroute
--datadir < dirname > # 说明用户 Nmap 数据文件位置
--send-eth / --send-ip # 使用原以太网帧发送/在原 IP 层发送
--privileged # 假定用户具有全部权限
--unprovoleged # 假定用户不具有全部权限,创建原始套接字需要 root 权限
-V # 打印版本信息
-h # 输出帮助