Nmap
简介:
Nmap (网络映射器)是Gordon Lyon最初编写的一种安全扫描器,用于发现计算机网络上的主机和服务,从而创建网络的“映射”。为了实现其目标,Nmap将特定数据包发送到目标主机,然后分析响应.NMAP强大的网络工具,用于枚举和测试网络。
Nmap是一款网络扫描和主机检测的非常有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用winodws,linux,mac等操作系统,是一款非常强大的渗透测试工具。
常用功能介绍:
- 主机发现(Host Detection):识别网络上的主机,例如,列出响应TCP和/或ICMP请求或打开特定端口的主机。
- 端口扫描(Port Scanning): 枚举目标主机上的开放端口。
- 版本侦测(version Detection):检测远程设备上的网络服务以确定应用程序名称和版本号。
- 操作系统侦测(Operating System Detection):检测网络设备的操作系统和硬件特性。
语法:
nmap [选项/多选项/协议] [目标地址]
指令
Nmap 7.94SVN ( https://nmap.org )
用法:nmap [扫描类型] [选项] {目标规范}
目标规范:
可以传递主机名、IP地址、网络等。
例如:scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <输入文件名>:从主机/网络列表输入
-iR <主机数>:随机选择目标
--exclude <主机1[,主机2][,主机3],...>:排除主机/网络,例: nmap 192.168.1.0/24 --exclude 192.168.1.1 不会对192.168.1.1进行扫描
--excludefile <排除文件>:从文件排除列表,例: nmap 192.168.1.0/24 --excludefile list.txt 不会对list.txt 里面的地址进行扫描
主机发现:
-sL:列表扫描 - 仅列出要扫描的目标,例: nmap -iL list.txt
-sn:Ping扫描 - 禁用端口扫描,在 5.21 之前为 -sP ,例: nmap -sn 192.168.1.110
-Pn:将所有主机视为在线,跳过主机发现,在 5.20 之前为 -P0 ,可以躲避防火墙防护,可以在目标主机禁止ping的情况下使用
-PS/ -PA / -PU / -PY [端口列表]:给定端口的TCP SYN/ACK, UDP或SCTP发现
-PE/ -PP / -PM :ICMP回声、时间戳和子网掩码请求发现探测
-PO[协议列表]:IP协议Ping
-n/ -R:从不进行DNS解析/总是解析 [默认:有时]
--dns-servers <服务1[,服务2],...>:指定自定义DNS服务器
--system-dns:使用操作系统的DNS解析器
--traceroute:追踪到每个主机的跳数路径
扫描技术:
-sS/ -sT / -sA / -sW / -sM :TCP SYN/TCP 全连接/TCP ACK/ TCP 窗口/Maimon扫描,通常会选择 -sS(SYN 扫描)或 -sT(全连接扫描)获得可靠的结果
-sU:UDP扫描
-sN/ -sF / -sX :TCP Null, FIN和Xmas扫描
--scanflags <标志>:自定义TCP扫描标志
-sI <僵尸主机[:探针端口]>:空闲扫描,允许端口完全欺骗,可以允许不使用自身ip的情况下发起扫描,非常隐蔽的扫描.但得先寻找空闲主机,指令为: nmap -p80 -open -script ipidseq 192.168...,第二种是随机寻找: nmap -p80 -open -script ipidseq -iR 2000 ( iR 选项指随机选择目标.2000指选择的数量, -open 指只选择端口开放的空闲主机)
-sY/ -sZ :SCTP INIT/COOKIE-ECHO扫描
-sO:IP协议扫描
-b <FTP中继主机>:FTP弹跳扫描
端口规范和扫描顺序:
-p <端口范围>:仅扫描指定端口,例:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
-p- : 扫描所有端口 1-65535
--exclude-ports <端口范围>:从扫描中排除指定端口
-F:快速模式 - 扫描的端口比默认扫描少
-r:端口按顺序扫描 - 不随机化
--top-ports <数量>:扫描最常见的<数量>个端口
--port-ratio <比例>:扫描比<比例>更常见的端口
服务/版本探测:
-sV:探测开放端口以确定服务/版本信息
-sV --allports : 只有使用 --allports 才能扫描所有的端口,Nmap 会使用默认的端口范围或者你指定的端口,通常是 1000 个最常见的端口,除非使用 -p 参数来指定一个不同的端口范围
--version-intensity <级别>:从0(轻量)到9(尝试所有探测)
--version-light:限制最可能的探测(强度2)
--version-all:尝试每一个探测(强度9)
--version-trace:显示详细的版本扫描活动(用于调试)
脚本扫描:
-sC:等同于 --script=default ,执行默认的脚本扫描
--script=<Lua脚本>:<Lua脚本>是一个逗号分隔的目录、脚本文件或脚本类别列表,常用的 default 默认运行的脚本,通常用于基本的信息收集和漏洞探测, vuln 扫描已知漏洞的脚本, exploit 利用已知漏洞的脚本
--script-args=<n1=v1,[n2=v2,...]>:提供脚本参数
--script-args-file=文件名:在文件中提供NSE脚本参数
--script-trace:显示发送和接收的所有数据
--script-updatedb:更新脚本数据库。
--script-help=<Lua脚本>:显示关于脚本的帮助。
<Lua脚本>是脚本文件或脚本类别的逗号分隔列表。
操作系统探测:
-O:启用操作系统探测
--osscan-limit:将操作系统探测限制在有希望的目标上
--osscan-guess:更积极地猜测操作系统
时序和性能:
选项中的<时间>是以秒为单位,或者在值后面添加'ms'(毫秒)、
's'(秒)、'm'(分钟)或'h'(小时)(例如:30m)。
-T<0-5>:设置时序模板(数字越高越快), 用于IDS逃逸
--min-hostgroup/max-hostgroup <大小>:并行主机扫描组大小
--min-parallelism/max-parallelism <探针数>:探针并行化
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>:指定
探针往返时间。
--max-retries <尝试次数>:限制端口扫描探针重传次数。
--host-timeout <时间>:在这么长时间后放弃目标
--scan-delay/--max-scan-delay <时间>:调整探针之间的延迟
--min-rate <数字>:发送包的速度不低于<数字>每秒,指定最低速率
--max-rate <数字>:发送包的速度不高于<数字>每秒,指定最高速率
防火墙/IDS逃避和欺骗:
-f; --mtu <值>:分片数据包(可选给定MTU)
-D <诱饵1,诱饵2[,ME],...>:用诱饵掩盖扫描
-S <IP地址>:伪造源地址
-e <接口>:使用指定接口
-g/--source-port <端口号>:使用给定端口号
--proxies <url1,[url2],...>:通过HTTP/SOCKS4代理中继连接
--data <十六进制字符串>:向发送的数据包追加自定义有效载荷
--data-string <字符串>:向发送的数据包追加自定义ASCII字符串
--data-length <数字>:向发送的数据包追加随机数据
--ip-options <选项>:发送具有指定IP选项的数据包
--ttl <值>:设置IP生存时间字段
--spoof-mac <MAC地址/前缀/厂商名>:伪造您的MAC地址
--badsum:发送具有错误的TCP/UDP/SCTP校验和的数据包
输出:
-oN / -oX / -oS / -oG <文件>:分别以正常(.nmap)、XML(.xml)、s|<rIpt kIddi3("Script Kiddie"脚本小子,不利于阅读和数据分析)和可被grep处理的格式(.gnmap)输出扫描结果到给定文件名。
-oA <基本名>:一次性以三种主要格式(.nmap,.xml,.gnmap)输出
-v:提高详细程度(使用 -vv 或更多以获得更大效果)
-d:提高调试级别(使用 -dd 或更多以获得更大效果)
--reason:显示端口处于特定状态的原因
--open:仅显示开放(或可能开放)的端口
--packet-trace:显示发送和接收的所有数据包
--iflist:打印主机接口和路由(用于调试)
--append-output:向指定的输出文件追加,而不是覆盖
--resume <文件名>:恢复中断的扫描
--noninteractive:禁用通过键盘的运行时交互
--stylesheet <路径/URL>:XSL样式表将XML输出转换为HTML
--webxml:引用Nmap.Org的样式表以获得更便携的XML
--no-stylesheet:防止将XSL样式表与XML输出关联
杂项:
-6:启用IPv6扫描
-A:启用操作系统探测、版本探测、脚本扫描和跟踪路由,全面综合扫描
--datadir <目录名>:指定自定义Nmap数据文件位置
--send-eth/--send-ip:使用原始以太网帧或IP数据包发送
--privileged:假设用户具有完全权限
--unprivileged:假设用户缺乏原始套接字权限
-PR : ARP Ping扫描
-sR : 判断开放端口是否为RPC端口, 如果是返回程序和版本号
--resaon : 显示主机存活原因
-V:打印版本号
-h:打印此帮助摘要页面。
示例:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
更多选项和示例请查看手册页 (https://nmap.org/book/man.html)