nmap的基本功能
nmap有4个基本功能,分别是
-
端口扫描
-
主机探测
-
服务识别
-
系统识别
端口扫描
nmap 183.2.172.185
从图中可以看出开放了80和443端口
指定端口扫描
指定端口扫描使用-p参数,可以一次性扫描一个或多个或某个范围内的端口
nmap 183.2.172.185 -p 80 nmap 183.2.172.185 -p 1-80 nmap 183.2.172.185 -p 80,3389,22,21 nmap 183.2.172.185 -p 1-65535
指定方式扫描
TCP扫描
使用-sT参数进行TCP扫描
nmap 183.2.172.185 -p 80 -sT
SYN扫描
使用-sS参数进行SYN扫描
nmap 183.2.172.185 -p 80 -sS
UDP扫描
使用-sU参数进行UDP扫描
nmap 183.2.172.185 -p 80 -sU
FIN扫描
使用-sF参数进行FIN扫描
nmap 183.2.172.185 -p 80 -sF
主机探测
扫描网段上有哪些主机在线,使用-sP/-sn参数,不扫描端口,只扫描存活主机
nmap -sP 3.147.119.0/24 nmap -sP 3.147.119.0-255 nmap -sn 3.147.119.0/24 nmap -sn 3.147.119.0-255
服务识别
扫描端口时,默认显示端口对应的服务,但不显示服务版本
如果想查具体的服务版本可以用-sV参数
nmap -sV 3.147.119.111
系统识别
想获得操作系统版本,可以用-O参数
nmap -O 3.147.119.111
详细命令可参考nmap文档https://nmap.org/book/man-briefoptions.html
什么?文档全是英文,看不懂?
nmap使用文档
参数 | 说明 |
---|---|
目标 | |
-iL <inputfilename> | 从主机/网络列表输入 |
-iR <num hosts> | 选择随机目标 |
--exclude <host1[,host2][,host3],...> | 排除主机/网络 |
--excludefile <exclude_file> | 从文件中排除列表 |
主机发现 | |
-sL | 列表扫描 - 只列出要扫描的目标 |
-sn | Ping扫描 - 禁用端口扫描 |
-Pn | 将所有主机视为在线 - 跳过主机发现 |
-PS/PA/PU/PY[portlist] | TCP SYN / ACK,UDP或SCTP发现到给定端口 |
-PE/PP/PM | ICMP回送,时间戳和网络掩码请求发现探测 |
-PO[protocol list] | IP协议Ping |
-n/-R | 从不进行DNS解析/始终解析[默认:有时] |
--dns-servers <serv1[,serv2],...> | 指定自定义DNS服务器 |
--system-dns | 使用OS的DNS解析器 |
--traceroute | 每个主机的跟踪跳转路径 |
扫描技术 | |
-sS/sT/sA/sW/sM | TCP SYN / Connect()/ ACK / Window / Maimon扫描 |
-sU | UDP扫描 |
-sN/sF/sX | TCP Null,FIN和Xmas扫描 |
--scanflags <flags> | 自定义TCP扫描标志 |
-sI <zombie host[:probeport]> | 空闲扫描 |
-sY/sZ | SCTP INIT / COOKIE-ECHO扫描 |
-sO | IP协议扫描 |
-b <FTP relay host> | FTP反弹扫描 |
端口规格和扫描顺序 | |
-p <port ranges> | 仅扫描指定的端口 |
--exclude-ports <port ranges> | 从扫描中排除指定的端口 |
-F | 快速模式 - 扫描比默认扫描更少的端口 |
-r | 连续扫描端口 - 不要随机化 |
--top-ports <number> | 扫描最常见的端口 |
--port-ratio <ratio> | 扫描端口比更常见 |
服务/版本检测 | |
-sV | 探测开放端口以确定服务/版本信息 |
--version-intensity <level> | 从0到9(尝试所有探针)设置 |
--version-light | 限制最可能的探针(强度2) |
--version-all | 尝试每一个探针(强度9) |
--version-trace | 显示详细的版本扫描活动(用于调试) |
脚本扫描 | |
-sC | 相当于--script = default |
--script=<Lua scripts> | <Lua scripts>是逗号分隔的列表目录,脚本文件或脚本类别 |
--script-args=<n1=v1,[n2=v2,...]> | 为脚本提供参数 |
--script-args-file=filename | 在文件中提供NSE脚本args |
--script-trace | 显示发送和接收的所有数据 |
--script-updatedb | 更新脚本数据库 |
--script-help=<Lua scripts> | 显示有关脚本的帮助。<Lua scripts>是以逗号分隔的脚本文件列表或脚本的类别 |
操作系统检测 | |
-O | 启用OS检测 |
--osscan-limit | 将OS检测限制为有希望的目标 |
--osscan-guess | 更积极地猜测操作系统 |
时间和性能 | |
-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],...> | 用诱饵披露扫描 |
-S <IP_Address> | 欺骗源地址 |
-e <iface> | 使用指定的接口 |
-g/--source-port <portnum> | 使用给定的端口号 |
--proxies <url1,[url2],...> | 通过HTTP / SOCKS4代理中继连接 |
--data <hex string> | 为发送的数据包附加自定义有效负载 |
--data-string <string> | 为发送的数据包附加自定义ASCII字符串 |
--data-length <num> | 将随机数据附加到已发送的数据包 |
--ip-options <options> | 发送带有指定ip选项的数据包 |
--ttl <val> | 设置IP生存时间字段 |
--spoof-mac <mac address/prefix/vendor name> | 欺骗你的MAC地址 |
--badsum | 使用伪TCP / UDP / SCTP校验和发送数据包 |
输出 | |
-oN/-oX/-oS/-oG <file> | 正常输出扫描,XML,s | <rIpt kIddi3 和Grepable格式,分别为给定的文件名 |
-oA <basename> | 一次输出三种主要格式 |
-v | 增加详细级别(使用-vv或更高级别以获得更好的效果) |
-d | 提高调试级别(使用-dd或更多以获得更好的效果) |
--reason | 显示端口处于特定状态的原因 |
--open | 仅显示打开(或可能打开)的端口 |
--packet-trace | 显示发送和接收的所有数据包 |
--iflist | 打印主机接口和路由(用于调试) |
--append-output | 追加而不是clobber指定的输出文件 |
--resume <filename> | 恢复中止扫描 |
--noninteractive | 禁用通过键盘在运行时进行的交互 |
--stylesheet <path/URL> | 用于将XML输出转换为HTML的XSL样式表 |
--webxml | 来自Nmap.Org的参考样式表,用于更多可移植的XML |
--no-stylesheet | 防止与XML输出相关联的XSL样式表 |
其他杂项 | |
-6 | 启用IPv6扫描 |
-A | 启用操作系统检测,版本检测,脚本扫描和跟踪路由 |
--datadir <dirname> | 指定自定义Nmap数据文件位置 |
--send-eth/--send-ip | 使用原始以太网帧或IP数据包发送 |
--privileged | 假设用户具有完全特权 |
--unprivileged | 假设用户缺少原始套接字权限 |
-V | 打印版本号 |
-h | 打印此帮助摘要页面 |