- Reference:
- 写在前面:
- 简介:
- 实验环境
- 构建流程
- 总结
- Author:Werneror----------Title:使用dns2tcp搭建DNS隧道
- Author:mumufeng06----------Title:利用DNS隧道构建隐蔽C&C信道
- Author:邓大帅----------Title:使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网
- 通过机器学习算法检测DNS隐蔽隧道时需要使用大量的数据作为训练集、测试集作为支撑,用以训练出一个不错的检测模型。而在此过程中数据的收集成了必不可少的关键一环,当前存在着许多优秀且开源的dns隧道构建工具可供使用,比如dns2tcp、iodine、dnscat2、ozymandns等,而dns2tcp是其中最基本最简单的一个工具。
- 在真实的攻防环境下dns2tcp一般通过部署域名+服务器的方式来实现DNS隧道的构建,而本文的主要目的是为了理解dns隧道原理和加深对隧道工具的使用,故而将集中介绍的是局域网内使用直连模式的dns隧道的构建,此方式不需要域名和服务器便可实现。
DNS隧道
在当今数据爆炸的背景下,每时每刻都有成千上万条的dns查询数据,DNS是现今必不可少的一个重要协议,通过该协议,我们可以畅游整个网络,而正由于DNS协议的重要性和频繁性,为避免降低DNS解析效率,导致设计时埋下了一些漏洞,当DNS查询遇到防火墙,不会对其做任何检查便可轻松通过。此漏洞现被一些黑客利用,用于偷取主机中重要数据,构建C&C信道,控制主机。
- DNS隧道分为直连方式和中继方式。其中直连方式是通过IP地址直接和服务端构建连接,其特点是速度快、隐蔽性差,另一种中继方式是需要dns解析,不断地查询域名服务器,它的特点是速度慢、隐蔽性好。
- DNS主要的过程是客户端将要发送的数据封装在DNS请求中,之后发起DNS查询,通过dns解析获取域名的IP后(即被控服务器),访问被攻击者控制的服务器,服务端再向客户端发送响应。
dns2tcp介绍
- dns2tcp是由c语言开发的一个简单的隧道工具,该工具是通过传输层的TCP协议进行传输数据,也称TCP over DNS,已经集成在kali系统中。支持直连模式的DNS隧道,只实现了简单的隧道,如需进行命令控制等服务需另行搭建。
- dns2tcp包含了客户端和服务端,通过命令对其进行区分。
dns2tcp工具在GitHub上的链接
- dns2tcp包含了客户端和服务端,通过命令对其进行区分。
服务端:kali Linux
客户端:Ubuntu Linux
抓包工具:wireshark
- 工具安装: 可以在GitHub上下载或者通过命令行的形式安装
在terminal中键入:apt-get install dns2cp实现工具安装(在服务端和客户端都需要安装此工具) - 对服务端进行变量配置
输入:vim /etc/dns2tcpd.conf 后出现
字段基本介绍:
- 启动服务端
dns2tcpd -d 2 -F -f /etc/dns2tcpd.conf
- 结果如下图所示
- 指令介绍:
- 启动客户端:
dns2tcpc -r http -l 53 -d 2 -z your_domain_name.com 192.168.213.131
- 结果如下图
- 指令介绍
- dns隧道结果
- 孤身行舟,摇曳巨浪,残帆破空。这是我的第一篇花费精力去撰写的博文,从大学以来,到如今的研究生生涯一直希望能够完成自己的目标,但始终留有遗憾,可现在写到这心里些许激动在激荡,希望以后能够继续坚持写bolg的好习惯,记录学习路程也同时作为学习笔记以待之后翻阅查看。
- 在本次学习复现dns隧道的过程中,不免坎坷相伴,花费了很多的时间和精力去处理纷繁复杂的种种问题,翻看了很多bloger的文章,获益良多,到现在依然还有很多不懂得地方有待解决,这篇文章依然还存在很多错误的地方,希望看过此篇博文的大佬能够指出存在的错误,必当不吝赐教。



