软考-信息安全工程师学习笔记03——网络攻击技术(端口扫描)
nanshan 2024-12-16 15:03 12 浏览 0 评论
端口扫描
端口扫描的目的是打出目标系统上提供的服务列表。端口扫描程序挨个尝试
与TCP/UDP 端口连接,然后根据端口与服务的对应关系,结合服务器端的反应
推断目标系统上是否运行了某项服务。
端口扫描知识储备:TCP分段中6个编码位的含义
当值设为1时,表示分段中包含相应的控制信息 | |
编码位(从左到右)的标识 | 该位置“为1”的含义 |
URG | 表示启用了紧急指针字段 |
ACK | 表示确认字段是有效的 |
PSH | 请求急迫操作,即分段一到马上送应用程序而不等到接收缓冲区满时才送应用程序 |
RST | 连接复位。复位因主机崩溃或其他原因而出现错误的连接,也可用于拒绝非法的分段或拒绝连接请求 |
SYN | 与ACK合用以建立TCP连接。如SYN=1, ACK=0表示连接请求;而SYN=1,ACK=1表示同意建立连接 |
FIN | 表示发送方已无数据要发送从而释放连接,但接收方仍可继续接收发送方此前发送的数据 |
端口扫描知识储备:TCP连接的建立
- TCP连接通过三次握手方法建立;
- 第一次握手可以由任何一方发起,通常由客户进程发起;
- 只有在完成三次相应的分段交互之后,主机A和主机B的传输层才会分别通知各自的应用层传输连接成功建立
端口扫描知识储备:TCP连接的拒绝建立
- 若主机B拒绝建立连接,则在收到主机A的连接请求后,发送一个置RST= "1" 的应答分段
- 在第三次握手阶段,发送第一次握手的主机A还有机会拒绝建立连接:发送一个置RST= "1" 的应答分段
1.全连接扫描
完全连接扫描利用TCP/IP协议的三次握手机制,使源主机和目标主机的某个端口建立一次完整的连接。如果建立成功,则表明该端口开放。否则,表明该端口关闭。
TCP的全连接扫描 (会在被扫描机器留下记录)
全连接扫描实例
如上图绿框中,有TCP连接的完全过程
- 扫描器发送SYN=1 请求连接
- 目标主机回复 SYN=1,ACK=1应答同意连接
- 扫描器发送ACK =1 确认连接
- 扫描器发送ACK=1 RST=1 断开连接
如上图:如果扫描器连续发送SYN=1信号,未收到目标主机回复,则说明扫描的端口未开启。
2.半连接扫描
半连接扫描是指在源主机和目的主机的三次握手连接过程中,只完成前两次握手,不建立一次完整的连接。
半连接扫描 (不会留下记录)
半连接扫描实例
端口存在:
- 扫描器发送SYN=1 请求连接
- 目标主机回复 SYN=1,ACK=1应答同意连接
- 扫描器发送ACK=1 RST=1 断开(拒绝)连接
端口不存在:
- 扫描器发送SYN=1 请求连接
- 目标主机回复 RST=1 断开(重置)连接
3.SYN扫描
首先向目标主机发送连接请求,当目标主机返回响应后,立即切断连接过程,并查看响应情况。如果目标主机返回ACK 信息,表示目标主机的该端口开放。如果目标主机返回RESET信息,表示该端口没有开放。
4.ID头信息扫描
这种扫描方法需要用一台第三方机器配合扫描,并且这台机器的网络通信量要非常少,即dumb主机。
首先由源主机A向dumb主机B发出连续的PING数据包,并且查看主机B返回的数据包的ID头信息。一般而言,每个顺序数据包的ID头的值会增加1。然后由源主机A假冒主机B的地址向目的主机C的任意端口(1~65535 )发送SYN数据包。这时,主机C向主机B发送的数据包有两种可能的结果:
●SYN|ACK表示该端口处于监听状态。
●RST|ACK表示该端口处于非监听状态。
那么,由后续PING数据包的响应信息的ID头信息可以看出,如果主机C的某个端口是开放的,则主机B返回A的数据包中,ID 头的值不是递增1,而是大于1。如果主机C的某个端口是非开放的,则主机B返回A的数据包中,ID头的值递增1,非常规律。
5.隐蔽扫描
隐蔽扫描是指能够成功地绕过IDS、防火墙和监视系统等安全机制,取得目标主机端口信息的一种扫描方式。
6.SYNIACK扫描
由源主机向目标主机的某个端口直接发送SYN|ACK数据包,而不是先发送SYN数据包。由于这种方法不发送SYN数据包,目标主机会认为这是一次错误的链接,从而会报错。
如果目标主机的该端口没有开放,则会返回RST信息。如果目标主机的该端口处于开放状态(LISTENIN), 则不会返回任何信息,而是直接将这个数据包抛弃掉。
7.FIN扫描
源主机A向目标主机B发送FIN数据包,然后查看反馈信息。如果端口返回RESET信息,则说明该端口开放。
FIN扫描(可以判断对方操作系统的类型)
- 发送FIN到Linux,如果端口存在,Linux会丢弃这个包。
- FIN连接Windows一个存在的端口,与Linux不同的是,Windows会返回RST包,从而可以探测目的主机的操作系统
- FIN连接Linux不存在的端口,Linux会返回一个RST包
- FIN连接Windows关闭的端口,与Linux相同,会返回一个RST包
FIN扫描 | 操作系统 | 端口存在 | 端口关闭 |
直接向目标主机发送FIN=1信号 | Linux | 丢弃数据包 | 返回RST=1 数据包 |
Windows | 返回RST=1 数据包 | 返回RST=1 数据包 |
8.ACK扫描
首先由主机A向主机B发送FIN数据包,然后查看反馈数据包的TTL值和WIN值。开放端口所返回的数据包的TTL值一般小于64,而关闭端口的返回值,一般大于64。开放端口所返回的数据包的WIN值一般大于0,而关闭端口的返回一般等于0。
9.NULL扫描
将源主机发送的数据包中的ACK,FIN、RST、SYN、URG、PSH等标志位全部置空。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回RST信息,则表明该端关闭的。
TCP NULL扫描和TCP SYN扫描原理差不多,是利用协议(详见RFC 793)规定,当申请方主机向目标主机一个端口发送的TCP数据包所有标志位都为空,如果目标主机该端口是"关”状态,则返回一个TCP RST数据包;否则不回复。根据这0无识别结果一原理可以判断对方端口是处于 “开”还是"关”状态。
10.XMAS扫描
XMAS扫描的原理和NULL扫描相同,只是将要发送的数据包中的ACK、FIN、RST、SYN、 URG、PSH等头标志位全部置成1。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回RST信息,则表明该端口是关闭的。
学习参考资料:信息安全工程师教程(第二版)
建群网培信息安全工程师系列视频教程
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)