DC-9靶机-简单谈一下端口敲门技术 (Port Knocking)

news2025/4/17 9:11:04

前言

在打靶机DC-9时,爆破SSH时一直显示失败,经过查阅才知道原来是对端口做了“隐藏”,需要通过 Port Knocking 来主动开启,由于平时接触到的机会不多,所以这里简单记录一下,加强一下印象,也希望能帮助到大家。

场景

我们可以试着想象一下这种场景:攻击者在攻击第一阶段进行资产漏洞扫描时,如果防守方突然通过某种方式给信息资产穿上了一层隐身衣,会是怎样一种情形?攻击者会发现无论是fping、nmap、zmap又或者是openvas、nessus、wvs等各种扫描工具均无功而返,根本不能和想攻击的服务器或应用建立任何的网络层连接,之前预先准备好的各种攻击工具、POC和0Day漏洞等招数全部落空,一脸郁闷吧。尽管现实中的实际情况不会这么绝对,但如果防守方可以把关键信息资产(如对外开放的公网服务、内部办公应用系统等)进行统一隐身管理,必然可以大大降低公司整体信息资产风险,显著提升公司安全防范能力。

这种隐身方法,除物理断网外,现有的一些安全技术也可以达到类似的攻击面隐藏效果,如Port-knocking、SPA及SDP解决方案。

一.什么是 Port Knocking | 端口敲门 ?

端口敲门是一种通过在一组预先指定的关闭端口上产生连接请求,从外部打开防火墙上的端口的方法。一旦收到正确地连接请求序列,防火墙规则就会被动态修改,以允许发送连接请求的主机通过特定端口进行连接。

端口敲门的主要目的是防止攻击者通过进行端口扫描来扫描系统中潜在的可利用服务,因为除非攻击者发送正确的碰撞序列,否则受保护的端口将显示为关闭。

二.配置 knockd 服务

cat /etc/knockd.conf
[options]
    UseSyslog
[openSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 5
    command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn
[closeSSH]
    sequence    = 9000,8000,7000
    seq_timeout = 5
    command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn

配置文件里有两个参数:

  • sequence 按照顺序依次访问端口,command执行的条件。比如这里是依次访问7000, 8000, 9000端口,默认使用TCP访问。
  • command 当knockd监测到sequence端口访问完成,然后执行此处command,这里为通过iptables开启关闭ssh外部访问。

三.端口敲门技术(Port-Knocking)实现原理

端口敲门是一种通过服务器上关闭的端口来传输约定信息的方法,从而在用户访问受保护服务之前对用户进行身份验证,主要用于对公网开放的服务如sshd进行安全防护。

Port-Knocking实现原理介绍

在这里插入图片描述

  • 主机防火墙默认规则是DROP所有请求包,从外网来说,没有任何方法可以确认服务器是否存活(备注:因为DROP规则不会发送响应包,从而避免扫描器根据响应包确认端口的开放情况。REJECT/DENY规则会发送ICMP_PORT_UNREACHABLE返回给客户端,扫描器如nmap可据此判断出端口状态是filter,从而暴露服务器本身是存活的,端口是开放的,但禁止扫描器IP访问);
    在这里插入图片描述

  • Port-Knocking守护进程运行在服务端,并在主机防火墙DROP数据包时进行分析,如果某个源IP发送的一系列TCP或UDP数据包是按照服务端预先设定的特定顺序访问了对应的一组TCP或UDP端口(表示敲门暗语正确),则knockd进程自动调用iptables命令执行配置文件中预设的对应规则,如增加一条允许该IP地址访问服务器SSH端口的规则。如果数据包不满足服务端预设的端口访问顺序,则守护进程不会执行任何操作。

Port-Knocking带来的安全性提升

  • 服务器是否在线对攻击者来说不可感知

服务器主机防火墙默认DROP所有请求的数据包,因此攻击者不能通过扫描器确认服务器是否存活,以及服务器上开放的任何端口。

  • 漏洞服务不会对外暴露

访问服务器上对外开放端口所对应的服务需要预先知晓敲门顺序,所以即使对外开放的服务如SSH等存在哪怕是0day漏洞,攻击者也无法利用。不存在暴力破解、字典攻击、协议漏洞等安全问题。

  • 建立多层防御体系

端口敲门顺序是受信用户才应知晓的秘密口令,因此某种程度来说,敲门顺序和密码一样,也是一种用户身份验证机制。只有输入了正确地敲门顺序后,才会允许访问对应的服务,即在所访问服务之前增加了一层用户身份认证防护。

四.如何进行端口碰撞?

前提是需要我们知道端口碰撞的序列,否则暴力碰撞开启的机会太小~

1. 直接手工构造

  • 打开 SSH iptables
telnet  <target IP> 7000
telnet  <target IP> 8000
telnet  <target IP> 9000
  • 关闭 SSH iptables
telnet  <target IP> 9000
telnet  <target IP> 8000
telnet  <target IP> 7000

2. 使用knock程序

开启
knock  <target IP>  7000 8000 9000
关闭
knock  <target IP>  9000 8000 7000

3. NC 或者 Nmap

Open:
nc -z <target IP> 7000 8000 9000
Close:
nc -z <target IP> 9000 8000 7000
for x in  7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x  <target IP> ; done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/560746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Systrace系列7 —— Vsync 解读

本文主要是是介绍 Android 中的 Vsync 机制。文章会从 Systrace 的角度来看 Android 系统如何基于 Vsync 每一帧的展示。Vsync 是 Systrace 中一个非常关键的机制,虽然我们在操作手机的时候看不见,摸不着,但是在 Systrace 中我们可以看到,Android 系统在 Vsync 信号的指引下…

Tomcat系统架构浅析

大家好&#xff0c;我是易安&#xff01; 今天咱们就来一步一步分析Tomcat的设计思路&#xff0c;看看Tomcat的设计者们是如何设计一个复杂系统&#xff0c;怎么设计顶层模块&#xff0c;以及模块之间的关系。 Tomcat总体架构 我们知道如果要设计一个系统&#xff0c;首先是要…

特征缩放(Scale Features)、特征缩放预测​CO2 值、df列索引扩展

目录 1、特征缩放 2、预测CO2 值 3、df列索引扩展 1、特征缩放 特征缩放可以用于不同的度量单位。度量单位不同的情况下&#xff0c;特征的数值大小也会有所不同&#xff0c;这可能会影响到某些机器学习算法的表现。例如&#xff0c;如果一个特征的单位是英寸&#xff0c;而另…

DAB-DETR代码学习笔记

先上一张整体架构图 &#xff1a; 代码地址&#xff1a;GitHub - IDEA-Research/DAB-DETR: [ICLR 2022] DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR 论文地址&#xff1a; https://arxiv.org/pdf/2201.12329.pdf 文章全名《DYNAMIC ANCHOR BOXES ARE BETTER …

建模杂谈系列223 Q-Learning示例的代码拆解分析

说明 找到了一个合适的例子&#xff0c;然后我对其中的内容进行了拆解分析。我觉得代码表达的内容比伪代码清晰多了。 这次算是补砖了(监督无监督强化)&#xff0c;过去实际上接触过很多强化体系内的基本工具&#xff0c;但一直没有开始做&#xff0c;部分原因是没时间&#…

Java 与排序算法(5):归并排序

一、归并排序 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治思想的排序算法。它将待排序的数组分成两个长度相等的子数组&#xff0c;然后对这两个子数组分别进行归并排序&#xff0c;最后将两个排好序的子数组合并成一个有序的数组。 具体实现过程如下&#xf…

【国内chatgpt使用方法合集】(5月22日已更新)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

Elasticsearch文档操作:初学者指南(2023年最新版包含DSL语句的使用和RestHighLevelClient在Java中的使用)

2023年还没有学习Elasticsearch?&#xff0c;那么您将错过最强大、最通用的编程语言之一。 本文将介绍在Elasticsearch对文档分别使用DSL语句和Java High Level REST ClientAPI来对文档进行操作。获取更多信息查看官网帮助文档 运行环境&#xff1a; Linux&#xff0c;docke…

驱动开发DAY6

非阻塞IO 在应用程序中读取硬件数据时&#xff0c;无论硬件数据是否准备完毕&#xff0c;read&#xff08;&#xff09;函数不会阻塞&#xff0c;继续向下执行 阻塞IO 当应用程序中读取硬件数据时&#xff0c;在硬件数据没有准备好时&#xff0c;进程会阻塞在read&#xff08;&…

C语言——如何写出好的代码?

哈喽&#xff0c;大家好&#xff0c;今天我们来学习如何才能写出优秀的代码&#xff0c;主要讲的是assert和const的用法。 首先&#xff0c;什么样的代码才算的上是优秀的代码呢&#xff1f;应该符合下面的要求&#xff1a; 1. 代码运行正常 2. bug很少 3. 效率高 4. 可读性高 …

自抗扰PID(梯形图源代码)

有关ADRC的详细算法和源代码,请参看专栏的系列文章,这里不再赘述,常用链接如下: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所…

x210---根文件系统制作

一、busybox的移植 1.1、busybox源码下载 (1)busybox是一个开源项目&#xff0c;所以源代码可以直接从网上下载。 (2)busybox的版本差异不大&#xff0c;版本新旧无所谓。 (3)下载busybox可以去linuxidc等镜像网站&#xff0c;也可以去www.busybox.net官方网站下载。 1.2、修…

技术人如何写简历?(文末有福利)

前言 笔者在滴滴、阿里和字节时候也面试了不少人&#xff0c;看过形形色色的简历没有上百也有大几十份了。校招季也快到了&#xff0c;这里总结自身经验聊一下 技术人的简历如何去写面试官是怎么样从一份简历去开展后续的面试 简历的作用 简历是你向一家公司求职的“敲门砖…

数据结构学习之路-集合

集合Set 集合的特点集合的内部实现&#xff08;使用链表&#xff09;集合的内部实现&#xff08;使用红黑树&#xff09;复杂度分析使用红黑树实现集合的限制 集合的特点 不存放重复的元素常用于去重 例如&#xff1a;存放新增的IP地址&#xff0c;统计新增IP量&#xff1b;存…

torch中的model.eval()、model.train()详解

&#x1f468;‍&#x1f4bb;个人简介&#xff1a; 深度学习图像领域工作者 &#x1f389;工作总结链接&#xff1a;https://blog.csdn.net/qq_28949847/article/details/128552785 链接中主要是个人工作的总结&#xff0c;每个链接都是一些常用demo&#xff0c…

Laravel框架05:模型和自动验证

Laravel框架05&#xff1a;模型和自动验证 一、模型&#xff08;AR模式&#xff09;概述二、定义模型三、调用模型四、基本操作1. 添加数据① AR模式② Request 2. 查询数据3. 修改操作① AR模式② update 4. 删除操作 五、控制器验证1. 基本语法2. 输出错误信息 一、模型&…

今麦郎跻身“我最喜欢中国品牌”榜,致力领航中国品牌发展新范式

在中国经济探寻高质量发展的当下&#xff0c;中国民营企业肩负着推动经济发展的重任。在当前中国经济向上向前的大背景下&#xff0c;展示中国特色、传播中国文化、践行社会责任多位一体的高质量品牌越来越受到重视。但冰冻三尺非一日之功&#xff0c;唯有经历时间考验&#xf…

Spring:Spring 整合 MyBatis 的具体过程

文章目录 Spring&#xff1a;Day 04整合 MyBatis一、配置环境1. 导入依赖2. 准备一个数据库 二、用 Spring 整合 MyBatis1. 编写通用配置文件2. 编写实现类3. 编写 Spring 配置文件4. 测试5. 分析总结 三、拓展1. 实现2. 总结 四、事务1. 概述2. 没有事务时3. 声明式事务4. 总结…

“Shell“SNAT,DNAT

文章目录 一.SNAT1.1 SNAT原理1.2 SNAT的应用环境1.3 SNAT工作原理1.4 进行SNAT转换后1.5 配置SNAT策略1.6SNAT实验 二.DNAT2.1 DNAT工作原理2.2 配置DNAT策略2.3 DNAT实验 一.SNAT 1.1 SNAT原理 SNAT原理&#xff1a;修改数据包的源地址。SNAT 应用环境&#xff1a;局域网主…

基础学习——关于卷积层的记录

文章目录 前言一、功能层1、池化层2、nn.BatchNorm2d()3、全连接层4、softmax层 二、卷积层1、普通卷积2、空洞卷积3、多尺度卷积4、分组卷积5、深度可分离卷积6、形变卷积 前言 老是忘有些模块的具体作用&#xff0c;记录一下。 一、功能层 1、池化层 池化层夹在连续的卷积…