隐藏通信隧道技术——防御DNS隧道攻击

隐藏通信隧道技术——防御DNS隧道攻击

DNS协议

​ DNS协议是一种请求/应答协议,也是一种可用于应用层的隧道技术。虽然激增的DNS流量可能会被发现,但是基于传统Socket隧道已经濒临淘汰及TCP、UDP通信大量被防御系统拦截的状况,DNS、ICMP、HTTP/HTTPS等难以被禁用的协议已成为攻击者控制隧道的主流渠道。

​ 一方面,在网络世界中,DNS是一个必不可少的服务;另一方面,DNS报文本身具有穿透防火墙的能力。由于防火墙和入侵检测设备大都不会过滤DNS流量,也为DNS成为隐蔽信道创造了条件。越来越多的研究证明,DNS隧道在僵尸网络和APT攻击中扮演着重要的角色。

​ 用于管理僵尸网络和进行APT攻击的服务器叫做C&C服务器(Command and Control Server,命令及控制服务器)。C&C节点分为两种,分别是C&C服务端(攻击者)和C&C客户端(被控制的计算机)。C&C通信是指植入C&C客户端的木马或者后门程序与C&C服务端上的远程控制程序之间的通信。

​ 正常网络之间的通信,都是在两台机器之间建立TCP连接后进行的。在进行数据通信时:如果目标是IP地址,可以直接发送报文;如果目标是域名,会先将域名解析成IP地址,再进行通信。两台机器建立连接之后,C&C服务端就可以将指令传递给C&C客户端上的木马(后门)程序,让其受到控制。

​ 内网中安装了各种软/硬件防护设施来检查主机与外部网络的连接情况 。很多厂商会收集C&C服务端的域名、IP地址、URL等数据,帮助防火墙进行阻断操作。这样一来,C&C通信就会被切断。于是,通过各种隧道技术

实现C&C通信的技术(特别是DNS隧道技术)出现了。

​ DNS隧道的工作原理很简单:在进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠DNS协议即可进行数据包的交换。从DNS协议的角度看,这样的操作只是在一次次地查询某个特定的域名并得到解析结果,但其本质问题是,预期的返回结果应该是一个IP地址,而事实是不是——返回的可以是任意字符串,包括加密的C&C指令。

域名型DNS隧道木马的通信架构,如果所示。

DNS域名通信架构

​ 在使用DNS隧道与外部进行通信时,从表面上看是没有接连外网的(内网网关没有转发IP数据包),但实际上,内网的DNS服务器进行了中转操作。这就是DNS隧道的工作原理,简单地说,就是将其他协议封装在DNS协议中进行传输。

使用DNS隧道

DNS隧道的使用方法比较简单。由于客户端和服务端在同一个局域网中,只要直接访问服务端即可。例如,登录目标主机的3389端口,就可以直接执行“mstsc 192.168.1.27:3389"命令。同样,目标主机也可以通过SSH进程远程登录服务端。如图所示。

DNS域名通信架构1

DNS域名通信架构2

防御DNS隧道攻击的方法

​ 防御隧道攻击并非易事,特别是防御DNS隧道攻击。通过如下操作,能够防御常见的隧道攻击行为。

  • 禁止网络中任何人向外部服务器发送DNS请求,只允许与受信任的DNS服务器通信。
  • 虽然没有人会将TXT解析请求发送给DNS服务器,但是dnscat2和邮件服务器/网关会这样做。因此,可以将邮件服务器/网关列入白名单并阻止传入和传出流量中的TXT请求。
  • 跟踪用户的DNS查询次数。如果达到阙值,就生成相应的报告。
  • 阻止ICMP。

用户的DNS查询次数。如果达到阙值,就生成相应的报告。

  • 阻止ICMP。

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

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

相关文章

单例模式的七种写法

为什么使用单例? 避免重复创建对象,节省内存,方便管理;一般我们在工具类中频繁使用单例模式; 1.饿汉式(静态常量)-[可用] /*** 饿汉式(静态常量)*/ public class Singleton1 {private static final Singleton1 INSTANCE new Singleton1();private Singleton1(){}…

法线贴图实现地形模型皱褶、凹凸不平的纹理效果

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 法线贴图在3D建模中扮演着重要的角色,它通过模拟表面的微…

开发知识点-HTML/JavaScript

HTML/JavaScript xlinksvgviewBoxuse基础预热与语法基础知识js 如何运行页面适用js 及输出 面向对象抽奖功能 json 支持 字符串转数组数组转字符串数组元素删除长度0位添加一个元素// 表示在下标为1处添加一项tttarray.splice(1,0,ttt)//[123,ttt,456]// 数组是否包含某个元素a…

html/css实现简易圣诞贺卡

一、前言 HTML,全称HyperText Markup Language,即超文本标记语言,是用于创建网页的标准标记语言。HTML是一种标记语言,由一系列的元素标签组成,用于描述网页的结构和内容。 CSS,全称是“层叠样式表”&#…

selenium 报错

selenium 报错 开始学自动化测试,,环境配了一天TAT 安装好selenium之后 运行python脚本 # codingutf-8 from selenium import webdriver import timedriver webdriver.Chrome() driver.get("https://www.baidu.com") time.sleep(3) driver.…

打破Tomcat中的双亲委派机制:探讨与实践

目录 引言 1. 双亲委派机制概述 2. 打破双亲委派机制的场景 3. Tomcat中的类加载器体系 4. 打破双亲委派机制的方法 4.1 在catalina.properties中配置common.loader 4.2 在META-INF/context.xml中配置Loader元素 4.3 编写自定义的类加载器 5. 潜在的问题与解决方案 5…

苏州耕耘无忧物联网:降本增效,设备维护管理数字化转型的引领者

随着科技的快速发展和工业4.0的推动,设备维护管理已经从传统的被动式、经验式维护,转向了更加积极主动、数据驱动的维护模式。在这个过程中,苏州耕耘无忧物联科技有限公司以其深厚的技术积累和丰富的管理经验,引领着设备维护管理数…

如何本地搭建Splunk Enterprise平台并公网访问管理界面

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 Splunk Enterprise是一个强大的机器数据管理平台,可帮助客户分析和搜索数据,以及可视化数据…

案例136:基于微信小程序的公交信息在线查询系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

使用Docker运行镜像文件与设置端口

1&#xff0c;创建镜像文件前准备 # 使用基础镜像FROM alpine:latest# 设置工作目录WORKDIR /app# 复制应用程序文件到镜像中COPY . .# 暴露容器的端口 不会自动将容器的端口映射到宿主机上 docker run -d -p <宿主机端口>:7080 <镜像名称>EXPOSE 7080# 定义容器启…

vscode debug c++代码

需要提前写好CMakeLists.txt 在tasks.json中写好编译的步骤&#xff0c;即tasks&#xff0c;如cmake … 和make -j 在lauch.json中配置可执行文件的路径和需要执行tasks中的哪一个任务 具体步骤&#xff1a; 1.写好c代码和CMakeLists.txt 2.配置tasks.json 终端–>配置任务…

vant的图片上传组件预览问题

先记录问题&#xff1a;主要是我直接吧图片的base64字符串存入了数据库&#xff0c;再次打开页面加载图片时&#xff0c;要么就是页面显示图片错误&#xff0c;要么就是点击图片预览时查看失败。vant版本是4.8.0 <van-cell-group ><van-field label"图片" …

【PyTorch】代码学习

文章目录 直接定义nn.Sequential(), 然后append(),最后直接net(),少写很多forward&#xff0c;适合直连式网络 直接定义nn.Sequential(), 然后append(),最后直接net(),少写很多forward&#xff0c;适合直连式网络 代码来源&#xff1a;https://github.com/zshhans/MSD-Mixer/b…

Zookeeper 集群搭建过程中常见错误

文章目录 Mode: standalone启动失败 Mode: standalone 这通常表示 Zookeeper 配置为单节点模式&#xff0c;而不是集群模式。需要检查 zoo.cfg 文件中的配置&#xff0c;确保包含了所有集群节点的信息。 启动失败 /usr/bin/java ZooKeeper JMX enabled by default Using con…

HTML5的完整学习笔记

HTML 什么是HTML&#xff1a; 作为前端三件套之一&#xff0c;HTML的全称是超文本标记语言&#xff08;Hypertext Markup Language&#xff09;。HTML是一种标记语言&#xff0c;用于创建网页。它由一系列标签组成&#xff0c;这些标签用于定义网页的结构和内容。HTML标签告诉…

【已解决】Java中,判断:集合中是否包含指定元素(模糊匹配)比如权限中的user:list或者是user:*这种判断

背景描述 在工作中&#xff0c;有时候&#xff0c;我们需要对list中是否包含了指定元素进行判断&#xff0c;但是&#xff0c;有时候又需要支持模糊匹配&#xff0c;这个时候怎么办呢&#xff1f; 比如权限&#xff0c;我们知道&#xff0c;权限不仅可以配置完整的路径&#…

如何直接使用别人的Python项目的虚拟环境

Cannot set up a python SDK at Python 3.10 (flaskTest) (2) (H:\WorkPlace\PyWorkPlace\flaskTest\flaskTest\venv\Scripts\python.exe). The SDK seems invalid 如何复制别人的虚拟环境 修改步骤 1. 修改pyvenv.cfg文件里的home和version 2. Scripts\activate以及Scripts\a…

【华为OD机试真题2023CD卷 JAVAJS】机器人仓库搬砖

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 机器人仓库搬砖 知识点二分查找字符串编程基础数组 题目描述:机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一…

【数字图像处理】实验一 图像基本运算

图像基本运算 一、实验内容&#xff1a; 1&#xff0e; 熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。 2&#xff0e; 熟练掌握各种图像点运算的基本原理及方法。 3&#xff0e; 能够从深刻理解点运算&#xff0c;并能够思考拓展到一定的应用领…