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。

namp 端口扫描技术相关推荐

  1. 诸神之眼-nmap详细使用介绍2!端口扫描技术和操作系统与服务检测篇! (*╹▽╹*) 信息收集 ~ 其三

    文章目录 端口扫描技术相关知识 端口介绍 端口分类 Nmap对端口的定义 Nmap中的端口扫描技术 指定端口扫描(`-p`.`-F`) TCP建立连接(SYN:synchronous)扫描(`-sS` ...

  2. 基于TCP端口扫描技术

    基于TCP全开的端口扫描技术 TCP扫描基本概念 TCP端口扫描工具的编写 TCP扫描基本概念 首先介绍第一种扫描技术--TCP全开扫描.这种扫描的思想很简单,如果目标端口是开放的,那么在接到主机端口 ...

  3. 网络安全与渗透:kali系统,namp端口扫描(一)此生无悔入华夏,男儿何不带吴钩

    中华人民共和国网络安全法 阅读本文前,请熟读并遵守中华人民共和国网络安全法: http://gkhy.jiujiang.gov.cn/zwgk_228/jc/zcwj/202006/P02020061 ...

  4. 信息安全工程师笔记-10种端口扫描技术概念

    端口扫描技术分类: 这里都不考虑防火墙的情况. 1. 完全连接扫描 完全连接,利用TCP/IP协议的三次握手连接机制,使源主机和目的主机的某个端口建立一次完整的连接,如果建立成功,则表明该端口开放.否 ...

  5. python自动化测试 namp端口扫描

    一.介绍 namp是一款很好的渗透测试工具,特别是做网关设备的渗透测试比较好用 二.安装 安装python-namp 安装nmap https://nmap.org/dist/nmap-7.80-se ...

  6. 【网络安全工程师面试合集】—常见端口扫描技术

    目录 3.3.2.1. 全扫描 3.3.2.2. 半扫描 3.3.2.3. FIN扫描 3.3.3. Web服务 3.3.4. 批量搜索

  7. 基于原理分析Nmap——活跃主机发现、端口扫描、服务探测、伪装技术、NSE脚本

    参考书籍<诸神之眼--Nmap网络安全审计技术揭秘> 李华峰 著 清华大学出版社 基于原理分析Nmap 1. 活跃主机发现技术 1.1 基于ARP协议 1.2 基于ICMP协议 1.2.1 ...

  8. 信息收集之基础端口扫描《诸神之眼——Nmap网络安全审计技术揭秘》总结一

    端口扫描 <诸神之眼--Nmap网络安全审计技术揭秘>总结 手动端口扫描 Nmap Nmap的基本操作 活跃主机发现技术 基于ARP协议的活跃主机发现技术 基于ICMP协议的活跃主机发现技 ...

  9. Kali linux 2016.2(Rolling)中metasploit的端口扫描

    目前常见的端口扫描技术一般有如下几类: TCP  Connect.TCP SYN.TCP ACK.TCP FIN. Metasploit中的端口扫描器 Metasploit的辅助模块中提供了几款实用的 ...

  10. 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描

    端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相 ...

最新文章

  1. DLM:微信大规模分布式n-gram语言模型系统
  2. JavaWEB开发04——JQuery
  3. No.6 建立swap分区、进程、安装软件包的方法(rpm,yum,编译)
  4. 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
  5. Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
  6. java抽象类及其派生类_java抽象类
  7. VB 中定义FileSystemObject对象,要先添加对象
  8. CATIA_CAA_RADER26+VS2012安装教程
  9. 使用WinMTR对网络进行测试,找出网络异常
  10. X-Frame-Options简介
  11. pycharm安装redis
  12. 电脑快速复制粘贴大文件
  13. 设计思维应用:与商业模式结合,让创新落地
  14. 简单的Python五子棋
  15. 高清无线投影服务器,投影+高清+无线 教你轻松玩转家庭影院
  16. [Codevs] 一塔湖图
  17. laravel Carbon函数
  18. 消除疑虑:一切假大空都是纸老虎
  19. java - 解决idea导入项目,中文出现乱码的问题
  20. java pdf转txt【完整代码包含jar包】

热门文章

  1. C语言bit位取反,c语言位操作bit位置0置1
  2. matlab画填充直方图,matlab使用imhist、plot、fill画可填充颜色连续直方图
  3. ch341a烧录器zip_CH341A编程器
  4. python数据分析师网易云课堂_网易云课堂 数据分析(一)
  5. 信息论Matlab仿真——信源熵
  6. 量子化学计算机程序,量子化学
  7. STM32——红外遥控器实验
  8. 数据库与excel数据对比
  9. cocos2dx 显示html,cocos2dx - 在游戏中显示HTML页面
  10. 利用opencv与python3 JPEG压缩与解压实现