Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
botnet-hackpack — Construye un botnet básico de Comando y Control en C | Kitploit
Herramientas/GitHubGitHub/treehacks/botnet-hackpack
Mecanismos de PersistenciaAnálisis de MalwareComando y ControlAprendizaje y EducaciónRed TeamingDesarrollo de Payloads
GitHubtreehacks/botnet-hackpack

botnet-hackpack

Construye un botnet básico de Comando y Control en C

Ver Repositorio
4039517hace 7 añosRevisado 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

BOTNET C&C SIMPLE

Este hackpack te guiará a través de la implementación de un marco básico que caracteriza fundamentalmente a una botnet. Puede ayudarte si has trabajado con C antes. Si te gustó este tutorial, ¡asegúrate de darle una estrella a este repositorio!

Nota: No uses nada de lo que aprendas aquí con fines malintencionados. Este hackpack es únicamente un caso de estudio de botnets con fines educativos. Los conceptos aprendidos en este hackpack tienen casos de uso de gran alcance (básicamente cualquier cosa relacionada con las redes). Lo más importante, este hackpack está pensado para ser probado e implementado localmente (así que por favor no compartas nada de lo que construyas relacionado con este hackpack con otros hackers). La privacidad es importante, así que respétala.

¿Qué es una botnet?

Antes de construir una botnet, es importante entender qué es una botnet. Una botnet es una red de computadoras capaces de recibir comandos de forma remota y desplegarlos localmente. Opcionalmente, pueden elegir retransmitir información a otros nodos de la red. Se han utilizado para todo, desde ataques de Denegación de Servicio Distribuida hasta el despliegue generalizado de software espía. Puede que hayas oído hablar de muchas botnets en el pasado. Las más destacadas son quizás Mirai y Gameover Zeus, que controlaban 3.8 mil y 3.6 millones de dispositivos IoT, respectivamente. Hay mucha variación en cómo las botnets implementan ciertas tareas. Pero para construir nuestra botnet con éxito, necesitamos asegurar las siguientes características en nuestra red funcional.

Nuestra botnet debería:

  1. Incluir un nodo maestro que controle todos los demás nodos de la red
  2. Desplegar malware disfrazado/nodos esclavos en computadoras anfitrionas
  3. Transmitir comandos desde el nodo maestro al nodo esclavo, ejecutarlos y devolver una salida al maestro

Esta estructura es característica de lo que se conoce como botnets de Comando y Control (C&C). Estas botnets tienen un servidor maestro y muchos servidores esclavos. Sin embargo, este estilo de botnets es anticuado y puede ser derribado fácilmente cortando el acceso al dominio maestro. Las botnets más recientes y sofisticadas siguen una arquitectura peer-to-peer, donde los derechos de administrador se distribuyen entre todos los nodos o un subconjunto de ellos en la red. Estas botnets suponen un gran dolor de cabeza para los expertos en seguridad porque no hay un punto central de control y pueden crecer hasta millones de nodos. Derribar tales botnets es una lectura interesante por sí misma. Sin embargo, para los propósitos de este hackpack, mantengamos las cosas simples. Implementaremos un nodo esclavo simple para una botnet C&C.

alt tag

Implementación

Maestro

Este hackpack se ocupará principalmente de implementar el malware del cliente. Para el servidor maestro, podemos usar un servidor TCP de código abierto llamado Netcat. Netcat no tiene nada que ver con las botnets. Es solo una herramienta conveniente y establecida que podemos reutilizar para enviar paquetes de texto a los clientes y desde ellos (que es todo lo que un maestro realmente es). He ajustado ligeramente el servidor netcat y lo he compilado en un binario llamado "master". ¡No se necesita más trabajo aquí! Nuestro maestro está listo para usar.

Esclavo

Pasemos a la parte más interesante: recibir y ejecutar comandos remotos (nos preocuparemos por disfrazar nuestro malware más tarde). El objetivo aquí es hacer nuestro nodo esclavo lo más simple posible y cumplir con los requisitos detallados anteriormente. Ten en cuenta que muchas constantes han sido definidas en lib/macros.h, así que siéntete libre de usarlas. Todas las firmas de funciones implementadas se pueden encontrar en lib/connect.h o lib/utils.h.

1. Iniciación

Abre el archivo bot.c. Al iniciar un nuevo nodo en nuestro servidor, probablemente deberíamos nombrarlo para que el maestro sepa a qué clientes enviar comandos. Hay muchas convenciones de nomenclatura que se pueden usar. Usar una dirección IP es probablemente lo mejor porque es un identificador único para cada cliente. Sin embargo, para hacer las cosas más legibles para los humanos comunes, usemos el nombre de usuario de la computadora. Usando la función de C getenv() con el argumento "USER" se obtiene lo que la computadora tenga almacenado en la variable de entorno USER. Este es uno de los lugares donde se almacena el nombre de usuario, así que usémoslo. Además, ahora que tu esclavo está ejecutándose, busquemos al maestro. Para ello, debemos conocer la dirección IP de nuestro maestro. Cada dispositivo de red tiene una dirección IP. Es responsable de identificar otros nodos y el direccionamiento de ubicación. Además, el maestro puede tener muchos servidores ejecutándose en diferentes puertos. Así que no solo tenemos que conectarnos al maestro, sino que también debemos especificar el puerto correcto. Este puerto es elegido por el maestro, pero puede cambiarse. En este hackpack, queremos probar localmente. Así que usaremos tu computadora como nuestra red. La dirección IP local de cada computadora (a la que "localhost" también resuelve) es "127.0.0.1". En master, especifiqué que se ejecute en el puerto 9999. Con estas tres cosas (dirección IP del maestro, puerto del maestro y nombre del esclavo), podemos iniciar una tubería de comunicaciones entre el servidor y el cliente llamada socket. Pasa estos tres argumentos a la función init_socket() para crear un socket. init_function() no es un comando integrado de C. Más bien, necesitamos implementarlo. Luego, necesitamos asignar algo de espacio en la pila para contener los mensajes entrantes. Seamos bastante generosos aquí y usemos alrededor de 10KB de espacio de pila. Llama a este puntero de pila msg. Por último, hay una declaración printf para indicar que todo va bien.

char* name = //Get the client's username and store it in name
int channel = //initiate a channel given SERVER, PORT, and name;
//Allocate stack space of size CMD_LENGTH to hold data of type char. Call the stack pointer msg
printf("%s joining the botnet\n", name);
Descargar herramienta