这篇文章给大家介绍nmap的参数是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联网站建设公司,提供成都网站设计、成都网站制作,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
Nmap——networkmapper,网络探测工具和安全/端口扫描器
nmap[扫描类型…] [选项] [扫描目标说明]
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
-iL
-iR
--exclude
--excludefile
HOST DISCOVERY:
-sL: List Scan - simply list targets to scan
-sP: Ping Scan - go no further than determining if host is online
-P0: Treat all hosts as online -- skip host discovery
-PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sN/sF/sX: TCP Null, FIN, and Xmas scans
--scanflags
-sI
-sO: IP protocol scan
-b
PORT SPECIFICATION AND SCAN ORDER:
-p
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: Fast - Scan only the ports listed in the nmap-services file)
-r: Scan ports consecutively - don't randomize
SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info
--version-light: Limit to most likely probes for faster identification
--version-all: Try every single probe for version detection
--version-trace: Show detailed version scan activity (for debugging)
OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
-T[0-6]: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup
--min-parallelism/max-parallelism
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout
probe round trip time.
--host-timeout
--scan-delay/--max-scan-delay
FIREWALL/IDS EVASION AND SPOOFING:
-f; --mtu
-D
-S
-e
-g/--source-port
--data-length
--ttl
--spoof-mac
OUTPUT:
-oN/-oX/-oS/-oG
-oA
-v: Increase verbosity level (use twice for more effect)
-d[level]: Set or increase debugging level (Up to 9 is meaningful)
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
--append-output: Append to rather than clobber specified output files
--resume
--stylesheet
--no-stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output
MISC:
-6: Enable IPv6 scanning
-A: Enables OS detection and Version detection
--datadir
--send-eth/--send-ip: Send packets using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
-V: Print version number
-h: Print this help summary page.
EXAMPLES:
nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -P0 -p 80
目标说明:
1) CIDR风格地址,附加一个/
2) 可以对IP的各个段使用范围列表来指定扫描对象,即0-255.0-255.0-255.0-255;或使用逗号隔开,即192.168.1.1,3,5
3) IPv6地址只能用规范的IPv6地址或主机名指定,上面两种方式对IPv6都不支持
4) 接受多个主机说明,不必是相同类型
5) -iL
6) -iR
7) --exclude
8) --excludefile
主机发现
发送探测包到目标追究,若收到回复,则说明目标主机是开启的。Nmap支持十多种不同的主机探测方式;默认发送四种
a) ICMP echo request
b) a TCP SYN packet to port 443
c) a TCP ACK packet to port 80
d) an ICMP timestamp request
参数形式
l -sL:List Scan 列表扫描,仅将指定的目标IP列举出来,不进行主机发现
l -sP:Ping Scan 只利用ping扫描进行主机发现,不进行端口扫描
n 默认情况下发送ICMP回声请求和一个TCP报文到80端口,非特权用户发送一个SYN报文到80端口
n 可以和除-P0之外的任何发现探测类型-P*选项结合使用以达到更高的灵活性
l -Pn/-P0:将所有指定的主机视作开启的,跳过主机发现的过程
l -PS [portlist]:TCP SYN Ping,发送一个设置了SYN标志位的空TCP报文
n 默认端口为80(可设置),也可指定端口
n 目标主机端口关闭,回复RST,端口开放,则回复SYN/ACK,但都表明目标主机在线
n UNIX机器上,只有特权用户才能发送和接收原始的TCP报文,因此非特权用户进行系统调用connect(),也发送一个SYN报文来尝试建立连接
l -PA [portlist]:TCP ACK ping,发送一个设置了ACK标志位的TCP报文
n 默认端口为80(可设置),也可指定端口
n 目标主机在线,回复RST,不在线则超时
n UNIX机器上,只有特权用户才能发送和接收原始的TCP报文,因此非特权用户进行系统调用connect(),也发送一个SYN报文来尝试建立连接
l -PU [portlist]: UDP Ping,发送一个空的UDP报文到指定的端口,
n 默认短裤为31338(可设置)
n 优势是可以穿越只过滤TCP的防火墙或过滤器
n 若端口关闭,则回复ICMP端口无法到达,说明主机在线;其他类型的ICMP错误如主机/网络无法到达或者TTL超时则表示主机不在线;没有回应也被这样解释,但不一定正确(因为大多数开放该端口的服务会忽略该UDP报文)
l -PE; -PP; -PM:ICMP Ping Types,发送ICMP Type 8 (回声请求)报文,期待从运行的主机得到一个type 0 (回声相应)报文
l -PR:ARP Ping
l -n:不用域名解析,加快扫描速度
l -R:为所有目标IP地址作反向域名解析
l --system-dns:使用系统域名解析器,一般不使用该选项,因为比较慢
端口扫描
1) Nmap将端口分成六个状态
a) open(开放的): 该端口正在接收TCP连接或者UDP报文
b) closed(关闭的): 关闭的端口接收nmap的探测报文并做出响应
c) filtered(被过滤的): 探测报文被包过滤阻止无法到达端口,nmap无法确定端口的开放情况
d) unfiltered(未被过滤的):端口可访问,但nmap仍无法确定端口的开放情况
e) open|filtered(开放或者被过滤的):无法确定端口是开放的还是被过滤的
f) closed|filtered(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的
2) Nmap产生结果是基于目标机器的响应报文的,而这些主机可能是不可信任的,会产生迷惑或者误导nmap的报文,更普遍的是非RFC兼容的主机以不正确的方式响应nmap探测,FIN/NULL和Xmas扫描特容易遇到这些问题
3) Nmap支持十几种扫描技术,默认情况下执行一个SYN扫描(没有权限或者扫描IPv6不可用时TCP Connect());一般一次只用一种方法,除了UDP扫描(-sU)可能和任何一种TCP扫描结合使用;一般格式是-s
a) –sS:TCP SYN扫描,半开放扫描,扫描速度快,不易被注意到(不完成TCP连接);且能明确区分open|closed|filtered
i. Open SYN/ACK
ii. Closed RST复位
iii. Filtered 数次重发没响应,或者收到ICMP不可达
b) –sT:TCPConnect(),建立连接,容易被记录;对原始报文控制少,效率低
c) –sU:激活UDP扫描,对UDP服务进行扫描,如DNS/SNMP/DHCP等,可以和TCP扫描结合使用;但是效率低下,开放的和被过滤的端口很少响应,加速UDP扫描的方法包括并发扫描更多的主机,先只对主要端口进行快速扫描,从防火墙后面扫描,使用--host-timeout跳过慢速的主机
d) –sN; -sF; -sX:TCP Null,Fin, Xmas扫描,从RFC挖掘的微妙方法来区分开放关闭端口;除了探测报文的标志位不同,三种扫描在行为上一致
i. 优势:能躲过一些无状态防火墙和报文过滤路由器,比SYN还要隐秘
ii. 劣势:现代的IDS产品可以发现,并非所有的系统严格遵循RFC 793
e) –sA:TCP ACK扫描,只设置ACK标志位,区分被过滤与未被过滤的
f) –sW:TCP窗口扫描,依赖于互联网上少数系统的实现细节,因此可信度不高;根据窗口大小来判断端口是开放的(正数)还是关闭的(0)
g) –sM:TCP Maimon扫描,探测报文是FIN/ACK,端口开放或关闭,都对这样的报文响应RST报文,但如果端口开放,许多基于BSD的系统只是丢弃该探测报文
h) –scanflags:通过指定任意的TCP标志位来设计扫描,可以是数字标记值,也可以使用字符名如URG/ACK/PSH/RST/SYN/FIN
i) –sI
j) –sO:IP协议扫描,可以确定目标机支持哪些IP协议(TCP, ICMP, IGMP)
k) –b
4) 端口说明和扫描顺序:默认情况下,对1-1024以及nmap-services文件中列出的更高的端口在扫描
a) –p
b) –p
c) –p U:[UDP ports],T:[TCP ports]:对指定的端口进行指定协议的扫描
d) –F:快速扫描(仅扫描100个最常用的端口),nmap-services文件指定想要扫描的端口;可以用—datadir选项指定自己的小小nmap-services文件
e) –top-ports
f) –r:不要按随机顺序扫描端口,默认情况下按随机(常用的端口前移)
服务与版本探测
1) nmap-services是一个包含大约2200个著名的服务的数据库,Nmap通过查询该数据库可以报告那些端口可能对应于什么服务器,但不一定正确
2) 在用某种扫描方法发现TCP/UDP端口后,版本探测会询问这些端口,确定到底什么服务正在运行;nmap-service-probes数据库包含查询不同服务的探测报文和解析识别响应的匹配表达式;当Nmap从某个服务收到响应,但不能在数据库中找到匹配时,就打印出一个fingerprint和一个URL给您提交
3) 用下列选项打开和控制版本探测
a) –sV:打开版本探测
b) –allports:不为版本探测排除任何端口,默认情况下跳过9100端口
c) –version-intensity
d) –version-light:是—version-intensity2的别名
e) –version-all:是—version-intensity9的别名
f) –version-trace:跟踪版本扫描活动,打印出详细的关于正在进行的扫描的调试信息
g) –sR:RPC扫描,对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号
操作系统探测
1) 用TCP/IP协议栈fingerprinting进行远程操作系统探测,Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特。 在进行一打测试如TCPISN采样,TCP选项支持和排序,IPID采样,和初始窗口大小检查之后, Nmap把结果和数据库nmap-os-fingerprints中超过 1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。每个fingerprint包括一个自由格式的关于OS的描述文本,和一个分类信息,它提供供应商名称(如Sun),下面的操作系统(如Solaris),OS版本(如10),和设备类型(通用设备,路由器,switch,游戏控制台等)
2) Nmap猜不出操作系统,则会提供一个URL让知道操作系统的用户来提交,从而扩大Nmap的操作系统知识库
3) 采用下列选项启用和控制操作系统检测
a) –O:启用操作系统检测;-A可以同时启用操作系统检测和版本检测
b) –osscan-limit:针对指定的目标进行操作系统检测
c) –osscan-guess|--fuzzy:当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配
时间和性能
1) Nmap开发的最高优先级是性能,但很多因素会增加扫描时间如特定的扫描选项,防火墙配置以及版本扫描灯
2) 优化时间参数
a) –min-hostgroup
b) –min-parallelism
c) --min-rtt-timeout
d) –host-timeout
e) --scan-delay
f) –T
防火墙/IDS躲避和哄骗
1) 相关的选项
a) –f(报文分段); --mtu(使用指定的MTU):将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难
b) –D
c) –S
d) –e
e) –source-port
f) –data-length
g) –ttl
h) –randomize-hosts:对目标主机的顺序随机排列
i) –spoof-mac
j) –badsum:发送错误的校验和
输出
1) 提供了方便直接查看的交互式方式和方便软件处理的XML格式;另外还提供了选项来控制输出的细节以及调试信息
2) 五种不同的输出格式,默认interactiveoutput,其他的还有
a) normal output:显示较少的运行时间信息和告警信息
b) XML输出:可转换成HTML,方便程序处理
c) grepable格式:在一行中包含目标主机最多的信息
d) sCRiPt KiDDi3 0utPut 格式:用于考虑自己的用户
多种格式能同时使用,但一种格式只能使用一次
3) 与其它Nmap参数不同,日志文件选项的空格(如-oX)和文件名或连字符是必需的。如果省略了标记,例如-oG-或 -oXscan.xml,Nmap的向后兼容特点将建立 标准格式的输出文件,相应的文件名为G-和 Xscan.xml
4) 相关的选项
a) –oN
b) –oX
c) –oS
d) –oG
e) –oA
f) –v:提高输出信息的详细度
g) –d [level]:提高或设置调试级别,9最高
h) –packet-trace:跟踪发送和接收的报文
i) –iflist:输出检测到的接口列表和系统路由
j) –append-output:表示在输出文件中添加,而不是覆盖原文件
k) –resume
l) –stylesheet
m) –no-stylesheet:忽略XML生命的XSL样式表
其他选项
1) -6:开启IPv6扫描
2) -A:激烈扫描模式选项,这个选项启用额外的高级和高强度选项,目前还未确定代表的内容。目前,这个选项启用了操作系统检测(-O) 和版本扫描(-sV),以后会增加更多的功能
3) --datadir
Nmap在运行时从文件中获得特殊的数据,这些文件有 nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes和 nmap-os-fingerprints。Nmap首先 在--datadir选项说明的目录中查找这些文件。 未找到的文件,将在BMAPDIR环境变量说明的目录中查找。 接下来是用于真正和有效UID的~/.nmap 或Nmap可执行代码的位置(仅Win32);然后是是编译位置, 如/usr/local/share/nmap 或/usr/share/nmap。
Nmap查找的最后一个位置是当前目录
4) --send-eth:使用原以太网帧发送
5) --send-ip:在原IP层发送
6) --privileged:假定用户具有全部权限
7) --interactive:在交互模式下启动
8) -V; --version:打印版本信息
9) -h; --help:打印一个短的帮助屏幕
运行时的交互
1) v/V:增加/减少细节
2) d/D:提高/降低调试级别
3) p/P:打开/关闭报文跟踪
NSE脚本引擎(NmapScripting Engine)
1) 允许用户自己编写脚本来执行自动化的操作或者扩展Nmap的功能;使用Lua脚本语言
2) 创建方法
a) description 字段:描述脚本功能的字符串,使用双层方括号表示
b) comment 字段:以--开头的行,描述脚本输出格式
c) author 字段:描述脚本作者
d) license 字段:描述脚本使用许可证,通常配置为Nmap 相同的license
e) categories 字段:描述脚本所属的类别,以对脚本的调用进行管理。描述脚本执行的规则,也就是确定触发脚本执行的条件。在 Nmap 中有四种类型的规则,prerule 用于在Nmap 没有执行扫描之前触发脚本执行,这类脚本并不需用到任何Nmap 扫描的结果;hostrule 用在Nmap 执行完毕主机发现后触发的脚本,根据主机发现的结果来触发该类脚本;portrule 用于Nmap 执行端口扫描或版本侦测时触发的脚本,例如检测到某个端口时触发某个脚本执行以完成更详细的侦查。postrule
用于Nmap 执行完毕所有的扫描后,通常用于扫描结果的数据提取和整理。在上述实例中,只有一个portrule,说明该脚本在执行端口扫描后,若检测到TCP 13 号端口开放,那么触发该脚本的执行。
f) action 字段:脚本执行的具体内容。当脚本通过 rule 字段的检查被触发执行时,就会调用action 字段定义的函数。
3) 用法
a) –sC:使用默认类别的脚本进行扫描
b) –script=
c) –script-args=
d) –script-args-file=filename:使用文件夹为脚本提供参数
e) –script-trace:显示脚本执行过程中发送与接收的数据
f) –script-updatedb:更新脚本数据库
g) –script-help=
后话
1) Namp的图形化用户界面程序:Zenmap
2) Nmap扫描的挑战
a) 选取要扫描的IP:网络上有大量的IP地址,需要targeted scans而不是giant scan
b) 防火墙:防火墙内部网络与外部网络的不同,绕过防火墙有一定难度
c) 效率和准确性
3) TCP主机发现,十个最常用的端口:80/http,25/smtp,22/ssh,443/https,21/ftp,113/auth,23/telnet,53/domain,554/rtsp,3389/ms-term-server
4) TCP端口扫描,十个最常用的端口:80/http,23/telnet,22/ssh,443/https,3389/ms-term-serv,445/microsoft-ds,139/netbios-ssn,21/ftp,135/msrpc,25/smtp
5) UDP端口扫描,十个最常用的端口:137/netbios-ns,161/snmp,1434/ms-sql-m,123/ntp,138/netbios-dgm,445/microfost-ds,135/msrpc,67/dhcps,139/netbios-ssn,53/domain
6) 阻止nmap扫描的几种过滤机制,从而nmap扫不到tcp端口和操作系统的版本号,但80端口仍然可以提供好的http服务
a) iptables –F
b) iptables -AINPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j Drop
c) iptables -AINPUT -p tcp –tcp-flags SYN,RST SYN,RST -j Drop
d) iptables -A INPUT-p tcp –tcp-flags SYN,FIN SYN,FIN -j Drop
e) iptables -AINPUT -p tcp –tcp-flags SyN SYN –dport 80 -j Drop
针对其他的扫描如UDP扫描,也应该可以设置相应的过滤机制
关于nmap的参数是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。