工具学习-Nmap

目录

 

一、端口扫描原理

1、TCP连接过程

2、端口扫描类型

TCP connect()扫描:

SYN扫描:

NULL扫描:

FIN扫描:

Xmas-Tree扫描:

ACK扫描:

3、端口返回类型

Open:

Closed:

Filtered:

Unfiltered:

Open|Filtered:

Closed|Filtered:

二、Nmap使用

1、主机发现

Ping扫描:-sP

无ping扫描:-P0(数字0)

2、端口扫描方式

时序选项:-T

指定端口扫描范围:-p

3、端口服务识别与探测

版本探测:-sV

全端口探测:--allport

操作系统识别:-O

4、防火墙/IDS逃逸

5、保存和输出


一、端口扫描原理

1、TCP连接过程

工具学习-Nmap_第1张图片

1、主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接请求数据报文;序号seq=x,表明传输数据时的第一个数据字节的序号是x);
2、主机B收到请求后,会发回连接确认数据包。(其中确认报文段中,标识位SYN=1,ACK=1,表示这是一个TCP连接响应数据报文,并含主机B的初始序列号seq(B)=y,以及主机B对主机A初始序列号的确认号ack(B)=seq(A)+1=x+1)
3、主机A收到主机B的确认报文后,还需作出确认,即发送一个序列号seq(A)=x+1;确认号为ack(A)=y+1的报文;

注意:TCP建立连接要进行三次握手,而断开连接要进行四次握手。

2、端口扫描类型

端口扫描类似Nmap有十几种,但最核心的为以下几种,其它的都是类似或基于以下扫描方式的。

TCP connect()扫描:

工具学习-Nmap_第2张图片

TCP connect()扫描是建立一个完整的TCP连接(已完成三次握手),这种扫描最为精确,但也最容易被防火墙和IDS检测出来,也会在主机留下日志记录。就和telnet某个端口一样。

SYN扫描:

工具学习-Nmap_第3张图片

SYN扫描(半开放扫描)是稍微隐蔽一些的扫描方式,TCP三次握手包含了SYN,SYN-ACK和ACK三个数据包,SYN扫描仅仅发送初始的SYN数据包给目标主机,如果端口处于开放状态,那么目标主机将返回SYN-ACK数据包,如果端口处于关闭状态,那么目标主机将返回RST数据包,如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误 (类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。也就是说SYN扫描,不管目标主机端口是否开放,第三次握手都将会发送RST数据包进行连接断开,此时并没有真正建立连接(三次握手)。

这也是Nmap默认首选的扫描方式,执行速度快,在没有防火墙的网络中,每秒可以扫描数千个端口,且完全兼容任何平台的TCP/IP协议。

NULL扫描:

工具学习-Nmap_第4张图片

也是反向扫描,要更隐蔽一些,但精度低。原理是将一个没有设置标志位的数据发送给TCP端口,在正常的TCP通信中,至少标志位要被设置,但在NULL扫描中,所有的标志位都未设置。根据RFC793协议要求,如果收到了一个没有设置标志位的数据分段,那么接受主机应该丢弃这个分段,并返回一个RST数据包。当向端口发送没有设置标志位的数据包时,如果目标主机端口处于关闭状态,将会返回一个RST数据包,如果目标主机端口处于开放状态,则主机会忽略该数据包,不会返回任何数据包。

Windows系统不遵守RFC793协议(当Windows系统接收到没有设置标志位的数据包时,不管端口是否开放,都将返回RST数据包),因此不能使用NULL扫描来扫描Windows系统。

FIN扫描:

工具学习-Nmap_第5张图片

也是反向扫描,与NULL扫描类似。原理是将一个设置了FIN位的数据包发送给目标主机端口,FIN位指示TCP会话的结束,响应RST数据包则表示端口关闭,没有响应则表示端口开放,与NULL扫描一样,Windwos不遵守此协议规则,因此不能使用此扫描来扫描Windows系统。

Xmas-Tree扫描:

也是反向扫描,通过设置FIN,PSH,和URG标志位,就像点亮圣诞树上所有的灯一样。也叫做圣诞树扫描,发送这带有三个标志的数据包,如果收到一个RST报文,该端口被认为是 closed(关闭的),而没有响应则意味着 端口是open|filtered(开放或者被过滤的)。 如果收到ICMP不可到达错误(类型 3,代号 1,2,3,9,10,或者13),该端口就被标记为 被过滤的。Windwos不遵守此协议规则,因此不能使用此扫描来扫描Windows系统。

ACK扫描:

用于发现防火墙规则,不能判断主机端口是否开放,原理是在正常的TCP操作中,在指定接收主机宣告窗口长度的数据包之后,发送响应数据包(ACK)。在ACK扫描中,使用响应包来发现防火墙的配置信息,如果某个端口被防火墙过滤,那么就没有回来的数据包,如果某个端口没有被防火墙过滤,那么将返回RST数据包,可以通过此扫描了解哪些端口被防火墙过滤和没过滤。

ACK扫描探测报文只设置ACK标志位(除非您使用 --scanflags)。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。不响应的端口 或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10, 或者13)的端口,标记为 filtered(被过滤的)。

3、端口返回类型

Nmap提供了6个端口状态,来帮助我们了解目标:

Open:

表示此端口对外开放,是我们希望的结果。

Closed:

表示此端口已关闭。

Filtered:

表示此端口被防火墙等设备过滤了,不清除端口是否开放。

Unfiltered:

表示此端口未被过滤,端口可以被访问,但是不能判断端口是否处于开放还是关闭状态。(端口可被访问和端口开放是两个概念,关闭的端口也可以被访问),此状态是采用ACK扫描方式将会返回的结果。

Open|Filtered:

表示此端口是开放或者是被过滤的,出现这种情况建议换种扫描方式。

Closed|Filtered:

表示此端口是关闭或者是被过滤的,这种状态只出现在IPID Idle扫描中。

二、Nmap使用

1、主机发现

Nmap主机发现命令
选项 解释
-sP Ping扫描
-P0 无Ping扫描
-PS TCP SYN Ping扫描
-PA TCP ACK Ping扫描
-PU UDP Ping扫描
-PE;-PP;-PM ICMP Ping Types扫描
-PR ARP Ping扫描
-n 禁止DNS反向解析
-R 反向解析域名
--system-dns 使用系统域名解析器
-sL 列表扫描
-6 扫描IPV6地址
--traceroute 路由跟踪
-PY SCTP INIT Ping扫描

Ping扫描:-sP

Ping扫描只进行Ping,然后显示出在线的主机。Ping扫描通过发送一个ICMP回声请求和一个TCP报文到目标端口,如果防火墙设置了禁止Ping则此方式就不能判断主机存活了。

工具学习-Nmap_第6张图片

无ping扫描:-P0(数字0)

此扫描用于防火墙禁止ping的情况下,可以穿透防火墙。

工具学习-Nmap_第7张图片

2、端口扫描方式

Nmap端口扫描方式
选项 解释
-T 时序选项
-p 端口扫描顺序
-sS TCP SYN扫描
-sT TCP 连接扫描
-sU UDP扫描
-sN;-sF;-sX 隐蔽扫描:不适合windows
-sA TCP ACK扫描
-sW TCP 窗口扫描
-sM TCP Maimon扫描
--scanflags 自定义TCP扫描
-sI 空闲扫描
-sO IP协议扫描
-b FTP Bounce扫描

时序选项:-T

在Nmap中使用-T(0-5)可以启用时序选项:

-T0(偏执的):非常慢的扫描,用于IDS逃避

-T1(鬼鬼祟祟的):缓慢的扫描,用于IDS逃避

-T2(文雅的):降低速度以降低对带库的消耗,不常用

-T3(普通的):默认,根据目标的反应自动调节时间

-T4(野蛮的):快速扫描,常用扫描方式,需要在很好的网络下进行扫描

-T5(疯狂的):极速扫描,以牺牲精确度来提升扫描速度

指定端口扫描范围:-p

指定单个端口:nmap -p 445    

指定端口范围:nmap -p 1-65535

-F选项可以通过nmap默认配置的1000个常用端口进行扫描。

3、端口服务识别与探测

Nmap服务识别
选项 解释
-sV 版本探测
--allports 全端口版本探测
--version-intensity 设置扫描强度
--version-light 轻量级扫描
--version-all 重量级扫描
--version-trace 获取详细版本信息
-sR RPC扫描
-O 探测操作系统类型
--osscan-limit 对指定目标进行操作系统检测
--osscan-guess;--fuzzy 推测系统识别

 

版本探测:-sV

工具学习-Nmap_第8张图片

全端口探测:--allport

全端口和-p1-65535类似。

操作系统识别:-O

-O选项会进行操作系统识别

4、防火墙/IDS逃逸

nmap逃逸命令
选项 解释
-f 报文分段
--mtu 指定偏移大小
-D IP欺骗
-sI 源地址欺骗
--soure-port 源端口欺骗
--data-length 指定发包长度
--randomize-hosts 目标主机随机排序
--spoof-mac

MAC地址欺骗

 

 

5、保存和输出

nmap保存输出
选项 解释
-oN 标志保存
-oX XML保存
-oS 133t保存
-oG Grep保存
-oA 保存所有格式

 

你可能感兴趣的:(WEB安全学习笔记)