IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> namp 端口扫描技术 -> 正文阅读

[网络协议]namp 端口扫描技术

1. 概述

这里讨论 nmap 支持的扫描技术,虽然 nmap 支持多种的扫描技术但是一般情况下一次只用一种方法,就是一般不将多种扫描技术混合使用,不过这里有个例外就是 UDP 扫描,它可能需要和任意一种 TCP 扫描技术结合使用。好了作了这个简单说明,下面开始详细的讲解每一种扫描技术 (也叫扫描类型)。

2. 扫描技术

2.1. TCP SYN 扫描

-sS (TCP SYN 扫描) SYN 扫描是 namp 的默认扫描选项,SYN 扫描的特点是扫描速度快,快是有多快呢,在一个没有入侵防火墙的快速网络上,一秒钟可以扫描几千个端口,这速度够快吧。

属于半开放扫描,因为它不打开一个完全的 TCP 连接换句话说就是从来不完成 TCP 三次握手。所以 SYN 扫描连接信息被目标服务器记录到日志的概率更低。

它发送一个 SYN 报文,告诉目标服务器要打开一个连接,然后等待目标服务器响应,如果得到响应 SYN/ACK表示端口在监听 (开放),得到 RST(复位) 表示没有监听者。

2.2. TCP connect() 扫描

-sT (TCP connect() 扫描) 如果我们在扫描时 SYN 扫描不可用时 connect() 扫描就是 TCP 扫描。SYN 扫描一般在用户没有权限发送原始报文或者在扫描 IPv6 网络而不可用。此时 nmap 通过创建 connect() 系统调用要求操作系统和目标机以及端口建立连接,这时也就无法直接发送原始报文。

缺点是 nmap 对高层的 connect() 调用比对原始报文控制更少,所以扫描效率较低。这种扫描需要完全连接到开放的目标端口而不是像 SYN 扫描那样进行半开放的扫描。所以需要发送更多的报文,由于是使用完全连接所以被目标服务器记录到日志的概率更高。

2.3. UDP 扫描

-sU (UDP 扫描) UDP 扫描发送没有数据的 UDP 报头到需要扫描的目标端口。
如果目标返回 ICMP 端口不可到达错误 (类型 3,代码 3),该端口是 closed(关闭的)
其它 ICMP 不可到达错误 (类型 3,代码 1,2,9,10,或者 13) 表明该端口是 filtered(被过滤的)
偶尔地,某服务会响应一个 UDP 报文,证明该端口是 open(开放的)
如果几次重试后还没有响应,该端口就被认为是 open|filtered (开放|被过滤的),说明端口可能是开放的,或过滤的。

UDP 扫描扫描速度缓慢,这时因为开放的和被过滤的端口很少响应,让 nmap 超时然后再探测,以防探测帧或者响应丢失。关闭的端口一般会返回给 nmap 一个 ICMP 端口无法到达错误。

2.4. TCP Null | FIN | Xmas 扫描

这里包含是三种扫描,NullFINXmas 扫描,而不是一种扫描。这三种扫描类型在 TCP RFC 中发现了一个巧妙的办法来区分 open(开放的)closed(关闭的) 端口。这些扫描的优点是可以越过一些无状态防火墙和报文过滤路由器。另一个优点是这些扫描类型甚至比 SYN 扫描还要隐秘,更不容易被目标服务器记录到连接日志中。

-sN (Null 扫描) 不设置任何标志位(即 TCP 标志头是 0)。

-sF (FIN 扫描) 只设置 TCP FIN 标志位 ( FIN 是 Finish 的缩写表示关闭连接)。

-sX (Xmas 扫描) 设置 FINPSH(表示有数据传输),和 URG(是 Urgent 的缩写表示本报文段中发送的数据是否包含紧急数据) 标志位。

这里还有一个问题需要注意的是,有些目标服务器(比如 windows系统的目标服务器)管端口开放还是关闭都响应 RST,这导致所有端口都被认为是 closed(关闭的)

2.5. TCP ACK 扫描

ACK 扫描探测报文只设置 ACK 标志位。当扫描未被过滤的目标主机时, open(开放的)closed(关闭的) 端口都会返回 RST 报文,这是因为机器接受一个未经请求的 ACK 包会返回 RST,Nmap 把它们标记为 unfiltered(未被过滤的),意思是 ACK 报文不能到达,至于它们是 open(开放的) 或者 closed(关闭的) 无法确定。

不响应或者发送特定的 ICMP 错误消息(类型 3,代号1,2,3,9,10,或者 13)的端口,nmap 将其标记为 filtered(被过滤的)

2.6. TCP 窗口扫描

-sW (TCP 窗口扫描) 这个控制选项告诉 namp 使用窗口扫描。当 nmap 探测收到 RST 报文时不是都认为端口是 unfiltered

窗口扫描通过检查目标主机端口返回的 RST 报文的 TCP 窗口来区分不同的端口状态。在一些系统上开放端口用正数表示窗口大小,而关闭端口的窗口大小为 0。当收到 RST 报文时,窗口扫描根据 TCP 窗口值是正数还是 0,来分别端口状态并将端口状态标记为 open 或者 closed

2.7. TCP Maimon 扫描

-sM (TCP Maimon 扫描) Maimon 扫描是什么扫描这个名称好像和网络没有任何关系,其实这个名称是用此项扫描提出者 Uriel Maimon 的名字命名的。这项技术和 NullFIN,以及 Xmas 扫描是一样的,但是要注意它的探测报文使用的是 FIN/ACK。本来按照网络 RFC 标准约定无论端口 开放或者关闭,都应该对这样的探测响应 RST 报文。但是 Uriel 注意到如果端口开放,许多基于 BSD 的系统只是默默的丢弃该探测报文。

2.8. TCP 定制扫描

--scanflags (定制的 TCP 扫描) 通过这个选项我们可以定制我们需要的扫描,所谓定制就是指定我们需要的 TCP 标志位。

--scanflags 指定选项可以是由一个数字标记值比如 9 (9指的是 PSHFIN),也可以使用标志位的字符名。TCP 标志位的字符名称有: URGACKPSHRSTSYNFIN 指定的时候可以使用字符名称进行任意的组合使用。比如设置所有的标志位 --scanflagsURGACKPSHRSTSYNFIN

除了设置我们需要使用的标志位之外同时还可以设置 TCP 的扫描类型比如同时指定扫描类型 -sA。如果你不指定扫描类型 nmap 默认使用 SYN 扫描。详细内容可以查看 https://nmap.org/book/idlescan.html。

2.9. TCP Idlescan 扫描

-sI <zombie host[:probeport]> (Idlescan) 空闲扫描,允许完全盲端口扫描。 攻击者实际上可以扫描目标而无需向目标发送单个数据包 目标来自他们自己的IP地址,一个聪明的侧信道 攻击允许扫描被一个哑巴反弹 “僵尸宿主” 。 入侵检测系统 (IDS) 报告将指无辜的僵尸作为攻击者,这种扫描类型允许发现基于 IP 的信任 关系机器之间。空闲扫描是终极隐形扫描。

在了解 Idlescan 扫描工作原理之前需要知道前面 2.1 讲解的 SYN 扫描,还需要知道机器接受一个未经请求的 SYN/ACK 包会返回 RST,一个未经请求的 RST 会被忽略。还有一点很重要需要知道,那就是任何数据包在互联网上都有一个片段标识号 IP ID,当数据包发送的时候,大部分操作系统只是简单的增加了数字,未做其他处理。所以攻击者只需要探究 IP ID 就可以知道最终发送了多少个报文。

空闲扫描由三个步骤组成: 对每个端口重复

  • 探测僵尸的 IP ID 并记录下来。
  • 伪造一个 SYN 包从僵尸并将其发送到所需的目标端口。 根据端口状态,目标的反应可能会或可能不会导致僵尸的 IP ID 增加。
  • 再次探的 IP ID。 然后目标端口状态是 通过将此新 IP ID 与步骤中记录的 IP ID 进行比较确定。

经过上面的三个步骤 Zombie (僵尸) 主机的 IPID 应该会增加 1~2。如果只是增加了1,那么就可以说明Zombie 主机还没有发出任何包,当然响应攻击者的探查请求除外。没有发送包也就意味着目标端口没有开放(也可能是目标主机向 Zombie 主机发送了一个 RST 包导致请求被忽略,或者是根本就是什么都没有做)。增加的如果是 2,那就表明 Zombie 主机成功在两个探测器之间发送了包。这种情况一般情况都意味着目标端口是开放的(目标大概会向 Zombie 主机发送一个 SYN/ACK 包去响应攻击者伪造的 SYN,从Zombie 主机诱导 RST 包)。如果是增加了一个比 2 还大的数字,那么就说明 Zombie 主机不可用可能不能胜任预测 IP ID 数值,也可能是正在忙于其他与 Idle Scan 无关的事情。

closed(关闭的) 的端口与 filtered(被过滤的) 端口会发生不同的情况,攻击者在两种情况下使用相同的处理结果,即 IP ID 增加 1,因此空闲扫描无法区分closed(关闭的) 端口与 filtered(被过滤的) 端口。 当 nmap 记录一个 IP ID 增加 1 表示端口状态是closed|filtered

2.10. IP 协议扫描

-sO (IP 协议扫描) 这里 -sO 是字母 O 而不是数字 0,IP 协议扫描可以让您确定目标机支持哪些 IP 协议 TCPICMPIGMP,或其他。从技术本质上来说这不属于端口扫描,扫描遍历的是 IP 协议号而不是 TCP 或者 UDP 的端口号。

2.11. FTP 弹跳扫描

-b <ftp relay host> (FTP 弹跳扫描) FTP 协议的一个有一个特点是支持代理 ftp 连接。代理连接指的是它允许用户连接到一台 FTP 服务器,然后要求此 FTP 服务器将文件送到一台第三方服务器。所以导致 FTP 服务器可以利用于对其它主机端口扫描。

使用该选项支持 ftp 弹跳扫描。参数格式是 username:password@server:port。 server 是某个脆弱的 FTP 服务器的名字或者 IP 地址。您也许可以省略 username:password,如果服务器上开放了匿名用户
(user:anonymous password:-wwwuser@)。端口号(以及前面的冒号) 也可以省略这个前提是 server 使用默认的 FTP 端口 21。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:37:35  更:2021-10-09 16:39:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:37:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码