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 扫描
这里包含是三种扫描,
Null
,FIN
,Xmas
扫描,而不是一种扫描。这三种扫描类型在 TCP RFC 中发现了一个巧妙的办法来区分open(开放的)
和closed(关闭的)
端口。这些扫描的优点是可以越过一些无状态防火墙和报文过滤路由器。另一个优点是这些扫描类型甚至比 SYN 扫描还要隐秘,更不容易被目标服务器记录到连接日志中。
-sN
(Null 扫描) 不设置任何标志位(即 TCP 标志头是 0)。
-sF
(FIN 扫描) 只设置 TCPFIN
标志位 ( FIN 是 Finish 的缩写表示关闭连接)。
-sX
(Xmas 扫描) 设置FIN
,PSH
(表示有数据传输),和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 的名字命名的。这项技术和Null
,FIN
,以及Xmas
扫描是一样的,但是要注意它的探测报文使用的是FIN/ACK
。本来按照网络 RFC 标准约定无论端口 开放或者关闭,都应该对这样的探测响应RST
报文。但是 Uriel 注意到如果端口开放,许多基于 BSD 的系统只是默默的丢弃该探测报文。
2.8. TCP 定制扫描
--scanflags
(定制的 TCP 扫描) 通过这个选项我们可以定制我们需要的扫描,所谓定制就是指定我们需要的 TCP 标志位。
--scanflags
指定选项可以是由一个数字标记值比如 9 (9指的是PSH
和FIN
),也可以使用标志位的字符名。TCP 标志位的字符名称有:URG
,ACK
,PSH
,RST
,SYN
,FIN
指定的时候可以使用字符名称进行任意的组合使用。比如设置所有的标志位--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 协议TCP
,ICMP
,IGMP
,或其他。从技术本质上来说这不属于端口扫描,扫描遍历的是 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 端口扫描技术相关推荐
- 诸神之眼-nmap详细使用介绍2!端口扫描技术和操作系统与服务检测篇! (*╹▽╹*) 信息收集 ~ 其三
文章目录 端口扫描技术相关知识 端口介绍 端口分类 Nmap对端口的定义 Nmap中的端口扫描技术 指定端口扫描(`-p`.`-F`) TCP建立连接(SYN:synchronous)扫描(`-sS` ...
- 基于TCP端口扫描技术
基于TCP全开的端口扫描技术 TCP扫描基本概念 TCP端口扫描工具的编写 TCP扫描基本概念 首先介绍第一种扫描技术--TCP全开扫描.这种扫描的思想很简单,如果目标端口是开放的,那么在接到主机端口 ...
- 网络安全与渗透:kali系统,namp端口扫描(一)此生无悔入华夏,男儿何不带吴钩
中华人民共和国网络安全法 阅读本文前,请熟读并遵守中华人民共和国网络安全法: http://gkhy.jiujiang.gov.cn/zwgk_228/jc/zcwj/202006/P02020061 ...
- 信息安全工程师笔记-10种端口扫描技术概念
端口扫描技术分类: 这里都不考虑防火墙的情况. 1. 完全连接扫描 完全连接,利用TCP/IP协议的三次握手连接机制,使源主机和目的主机的某个端口建立一次完整的连接,如果建立成功,则表明该端口开放.否 ...
- python自动化测试 namp端口扫描
一.介绍 namp是一款很好的渗透测试工具,特别是做网关设备的渗透测试比较好用 二.安装 安装python-namp 安装nmap https://nmap.org/dist/nmap-7.80-se ...
- 【网络安全工程师面试合集】—常见端口扫描技术
目录 3.3.2.1. 全扫描 3.3.2.2. 半扫描 3.3.2.3. FIN扫描 3.3.3. Web服务 3.3.4. 批量搜索
- 基于原理分析Nmap——活跃主机发现、端口扫描、服务探测、伪装技术、NSE脚本
参考书籍<诸神之眼--Nmap网络安全审计技术揭秘> 李华峰 著 清华大学出版社 基于原理分析Nmap 1. 活跃主机发现技术 1.1 基于ARP协议 1.2 基于ICMP协议 1.2.1 ...
- 信息收集之基础端口扫描《诸神之眼——Nmap网络安全审计技术揭秘》总结一
端口扫描 <诸神之眼--Nmap网络安全审计技术揭秘>总结 手动端口扫描 Nmap Nmap的基本操作 活跃主机发现技术 基于ARP协议的活跃主机发现技术 基于ICMP协议的活跃主机发现技 ...
- Kali linux 2016.2(Rolling)中metasploit的端口扫描
目前常见的端口扫描技术一般有如下几类: TCP Connect.TCP SYN.TCP ACK.TCP FIN. Metasploit中的端口扫描器 Metasploit的辅助模块中提供了几款实用的 ...
- 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相 ...
最新文章
- DLM:微信大规模分布式n-gram语言模型系统
- JavaWEB开发04——JQuery
- No.6 建立swap分区、进程、安装软件包的方法(rpm,yum,编译)
- 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
- Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
- java抽象类及其派生类_java抽象类
- VB 中定义FileSystemObject对象,要先添加对象
- CATIA_CAA_RADER26+VS2012安装教程
- 使用WinMTR对网络进行测试,找出网络异常
- X-Frame-Options简介
- pycharm安装redis
- 电脑快速复制粘贴大文件
- 设计思维应用:与商业模式结合,让创新落地
- 简单的Python五子棋
- 高清无线投影服务器,投影+高清+无线 教你轻松玩转家庭影院
- [Codevs] 一塔湖图
- laravel Carbon函数
- 消除疑虑:一切假大空都是纸老虎
- java - 解决idea导入项目,中文出现乱码的问题
- java pdf转txt【完整代码包含jar包】