0x00 基本介绍
整合了官网和网上的一些资料,本来是有配图的,但是一想到可能会暴露一些敏感信息,就不摆在这了,不足之处,欢迎交流。
Nmap现在最新的版本是Nmap 7。主要是增加了IPV6和ssl方面的支持。
Nmap,全称Network Mapper,开源网络探测与审计框架。使用构造异常IP包的方式来探测主机服务。
完整的Namp套件包括界面图形化的Zenmap,数据传输、重定向与调试工具Ncat,扫描结果比较器Ndiff以及数据包生成与响应工具Nping。
最常规的Nmap组成指令为
nmap [扫描类型] [选项] [目标]
0x02 参数-【目标】
目标参数可以输入域名、IP、网络等
例如:
www.baidu.com
microsoft.com/24
192.168.0.1
10.0.0-255.1-254
另外还有如下参数可选:
- -iL <文件名>,从表单中读取扫描目标。
- -iR <主机数量>,选取随机扫描目标,私有段ip、多播ip、未分配使用的ip会被自动跳过,<0>可以指定一个无休止的扫描,如果在一个雨天的午后,你十分无聊的时候,可以运行。
nmap -Pn -sS -p 80 -iR 0 --open
0>
- –exclude <主机1>,<主机2>,跳过部分目标。
- –exclude <文件名>,从表单中读取跳过目标。
0x03 参数-【主机发现】
- -sL,列表扫描,通过访问DNS的方式得到目标主机的ip。
- -sn,不进行端口扫描,ping scan。
- -Pn,不进行ping,强行扫描。
- -PS <端口列表>,TCP SYN Ping扫描端口
- -PA <端口列表>,TCP ACK Ping扫描端口
- -PU <端口列表>,UDP Ping
- -PY <端口列表>,SCTP INIT Ping
- -PE;-PP;-PM,ICMP Ping Types
- -PO <协议号>,IP Protocol Ping
- -PR,ARP Ping
- –disable-arp-pin 不使用ARP ping
- –traceroute 探测到达主机的Trace路径
- -n 不使用DNS结果
- -R 始终使用DNS结果
- –system-dns 使用系统的DNS解析,不请求域名服务器
- –dns-servers <服务1>,<服务2> 查询的DNS服务器队列
https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
0x04 参数-【端口扫描】
使用六种状态描述端口状态:
- open,端口积极接收数据
- closed,无应用程序监听此端口
- filtered,端口难以抵达,无法准确判断
- unfiltered,端口可以抵达,无法准确判断
- open|filtered,两种状态不确定
- closed|filtered,两种状态不确定
- -sS,TCP SYN scan,默认状态下的扫描模式,半开扫描,扫描快速,动静小。
- -sT,TCP connect scan,当没有原始数据包特权时使用,容易被发现。
- -sU,UDP scans,扫描UDP服务端口,DNS/SNMP/DHCP
- -sY,SCTP INIT scan,SCTP是一种较新的用来替代TCP和UDP的协议,类似于1
- -sN;-sF;-sX,TCP NULL, FIN, and Xmas scans,利用RFC 793的一些漏洞来判断端口状态。改变一些特殊标志的比特值。更加隐蔽,可以逃过一些防火墙,但是系统协议必须严格遵守RFC 793。
- -sA,TCP ACK scan,不用来判断端口是否打开,用来探测防火墙过滤规则
- -sW,TCP Window scan,类似ACK scan,增加不同系统的细节,但是结果不一定可信,甚至有可能正好相反。
- -sM,TCP Maimon scan,Uriel Maimon发现的一些BSD的系统在端口打开时会简单的终止包
- –scanflags,Custom TCP scan,自己通过TCP标志的设置构造自己的扫描,可以使用:
*URG,紧急指针有效*
*ACK,确认序号有效*
*PSH,接收方应该尽快将这个报文段交给应用层*
*RST,重建连接*
*SYN,同步序号用来发起一个连接*
*FIN,发送端完成发送任务*
- -sZ,SCTP COOKIE ECHO scan
- -sI :,idle scan,实现真正的盲扫,不会从你的真实IP发送包。使用边信道攻击实现僵尸机攻击。隐蔽性很好。
- -sO,IP protocol scan,ip协议扫描。
- -b,<主机>,FTP bounce scan,使用FTP代理扫描。因为使用FTP更容易绕过防火墙。
SCTP(Stream Control Transmission Protocol,流控制传输协议)
BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统
0x05 参数-【端口号】
- -p <端口范围>
- –exclude-ports <端口范围>
- -F,快速扫描常用端口,比默认的端口更少
- -r,按顺序扫描,默认情况下Nmap是随机扫描所指定的端口号的
- –port-ratio <比例>0-1之间,大于给的比例扫描servuces文件中的端口。
- –top-ports <数量>扫描指定数量的熟知端口
0x06 参数-【服务和版本检测】
- -sV,服务版本检测
- –allports,版本检测不跳过任何端口,默认情况下会跳过TCP端口9100,因为一些打印机会打印传送到该端口的任何信息。
- –version-intensity <强度> 0-9,修改版本扫描检测强度。
- –version-light,强度2
- –version-all,强度9
- –version-trace,显示Nmap的版本识别过程
0x07 参数-【系统检测】
- -O 开启系统检测
- –osscan-limit,只检查一定条件的系统,有一个检测到的端口
- –osscan-guess,百分比显示可能的系统选项
- –max-os-tries,在未能匹配系统时,Nmap会重复检测5次,这个次数可以设置
0x08 参数-【NSE】
NSE,Nmap脚本引擎,Nmap里最强大最灵活的特性,允许用户编写LUA语言脚本实现各种测试任务。
目前的脚本类别目录有:
auth,认证-目标系统身份验证
broadcast,广播-广播发现目标
brute,爆破-爆破身份验证
default,缺省-默认调用
discovery,发现-积极发现更多公共注册服务
dos,拒绝服务-DOS攻击
exploit,利用-利用一些漏洞
external,外部-会将数据发送给第三方
fuzzer,模糊测试-随机字段发送包,可以发现一些未被发现的漏洞
intrusive,侵入-风险过高的脚本
malware,恶意程序-测试目标是否被恶意程序感染
safe,安全-风险很低的脚本
version,版本-扩展版本检测功能,不能显式调用
vuln,漏洞-检测特定的已知漏洞
- -sC,缺省脚本执行
–script <文件名>|<类别>|<目录>|<表达式>…,可以使用+来强制脚本运行,也可以用 all 来遍历所有脚本,这两个选项要慎重使用
nmap –script “http-*” 加载所有http前缀的脚本
nmap –script “not intrusive”
nmap –script “default or safe”
nmap –script “default and safe”
–script-args <脚本>=<参数>,给脚本提供参数
- –script-args-file <文件名>,从文件提供参数
- –script-help <脚本名>,帮助
- –script-trace 打印脚本执行过程
–script-updatedb,升级脚本库
0x09 参数-【时间与性能】
时间单位:ms s m h
–min(max)-hostgroup <主机数>,调整并行扫描组主机数。
- –min(max)-parallelism <探针数>,调整并行探针数。
- –min(max,initial)-rtt-timeout <时间>,调整探针超时时间
- –max-retries <数量>,指定端口扫描探针最大值,最大重试次数
- –host-timeout <时间>,放弃超时主机目标
- –scan-delay <时间>,调整探针之间的延迟时间
- –min(max)-rate <数字>,调整扫描速率,每秒发送的包数
- -T <0-5>时间模板,越大越快
0x10 参数-【防火墙IDS逃逸】
0-5>
- -f,分隔包碎片
- -mtu,指定偏移量分隔包碎片
- -D <诱饵><,ME>,使用诱饵掩盖IP
- -S < IP >,伪造源地址IP
- -e < interface >,使用特定接口发送接收包
- –source-port < portnum >,伪造源端口号
- –data < hex string >,添加自定义二进制数据到发送包
- –data < string >,添加自定义字符串到发送包
- –data-length < num >,添加随机数据到发送包
- –ip-option < hex string >,用指定的IP选项发送数据包
- –ttl < value >,设置存活时间
- –randomize-hosts,随机主机目标顺序
- –spoof-mac < MAC,prefix,… >伪造MAC地址
- –proxies < URL >,通过代理链中继TCP连接
- –badsum,发送虚假校验和
- –adler32,使用另一种校验和代替CRC32C
0x11 参数-【输出】
- -oN < file >,正常输出
- -oX,XML输出
- -oS,脚本输出
- -oG,已弃用
- -oA,全格式
- -v < level >,增加Nmap输出普通信息水平
- -d < level >,增加调试信息输出水平
- –reason,给出原因
- –stats-every < time >,每过固定时间打印一次数据
- –packet-trace,数据包路径
- –open,显示打开的端口
- –iflist,列表接口和路径
- –append-output,结果添加到输出
- –resume ,恢复终止的扫描
0x12 参数-【混合选项】
- -6,开启IPv6扫描
- -A,积极扫描策略(-O,-sV,-sC,–traceroute)
- –datadir < directoryname > 指定Nmap数据文件
- –servicedb < services file >,指定Nmap服务库
- –versiondb < service probes file >,指定版本库
- –release-memory,推出前释放内存
- -V,显示版本号
参考:
http://nmap.org
实战高级用法
绕过防火墙与脚本使用
原创文章,转载请注明: 转载自零の杂货铺