
Un framework modular de descubrimiento de activos escrito en python para automatizar el trabajo manual repetitivo
Cygor es un framework modular de descubrimiento de activos que reúne escaneo, análisis y enumeración de servicios en un solo flujo de trabajo. Reemplaza el mosaico de herramientas separadas por un proceso automatizado que gestiona el descubrimiento, el enriquecimiento y la enumeración dirigida sin fricciones, reduciendo la carga manual y permitiéndote centrarte en los resultados en lugar de en la gestión de herramientas.
La interfaz web de Cygor toma el caos de los datos de escaneo sin procesar y lo organiza en un único centro de mando visual. En lugar de revisar interminables XML, JSON o texto plano, los resultados se analizan, enriquecen y muestran automáticamente en un espacio diseñado para una clasificación rápida y la toma de decisiones.
Impulsado por FastAPI y Bootstrap 5, el panel facilita:
La interfaz web no es solo para la presentación: se trata de eficiencia y claridad. Al reunir todos los datos recopilados en un único espacio de trabajo interactivo, reduce el tiempo dedicado a analizar archivos o conciliar salidas y permite a los evaluadores centrarse en lo que importa: comprender el entorno y actuar en consecuencia.
Muchas de las herramientas, técnicas y procedimientos que creo están inspirados en el Universo Spawn. Si nunca has leído un cómic de Spawn, no pasa nada, porque compartiré algo de información sobre por qué elegí a este personaje como nombre de esta herramienta.
El nombre Cygor proviene de Cy-Gor, un trágico antihéroe del universo Spawn. Antaño Michael Konieczny —un operativo gubernamental y amigo cercano de Al Simmons— intentó exponer la corrupción tras el asesinato de Simmons. Sin embargo, fue capturado y obligado a participar en el Proyecto Sim, los experimentos simiescos del Dr. Frederick Willheim, donde el cuerpo de un gorila se fusionó con la mente de Konieczny mediante cibernética invasiva. El resultado fue la bestia conocida como Cy-Gor, abreviatura de Gorila Cibernético.
Tras escapar del cautiverio, Cy-Gor protagonizó violentos desmanes, llegando incluso a arrasar centros de datos gubernamentales en ataques de confusión y furia. Aunque fue cazado y recapturado en múltiples ocasiones, finalmente se rebeló contra los sistemas que buscaban controlarlo: eliminó los implantes de seguimiento y se liberó para forjar su propio camino, dividido entre la máquina, la bestia y el hombre.
webenum (solo se ejecutan las herramientas instaladas).Hay varios métodos compatibles para instalar Cygor: pip, pipx, uv y docker.
Algunas dependencias (por ejemplo, gssapi para Kerberos/WinRM) compilan extensiones de C, así que instala primero el conjunto de herramientas de compilación y los encabezados de Kerberos:
# Debian/Ubuntu/Kali:
sudo apt install -y build-essential python3-dev libkrb5-dev
# Stable version:
pipx install cygor
# Install from source:
git clone https://github.com/tjnull/cygor
cd cygor
pipx install .
La configuración de Docker de Cygor incluye tanto la aplicación como un servicio de base de datos PostgreSQL. El sistema recurre automáticamente a SQLite si PostgreSQL no está disponible.
Producción (recomendado):
# Option 1: Use the wrapper script (automatically handles port conflicts)
./docker-compose-up.sh up --build
# Option 2: Direct docker compose (uses default ports)
docker compose up --build
Desarrollo (con el código fuente montado):
# Option 1: Use the wrapper script (automatically handles port conflicts)
./docker-compose-up.sh dev up --build
# Option 2: Direct docker compose (uses default ports)
docker compose -f docker-compose-dev.yaml up --build
La configuración de Docker Compose incluye:
results/: salidas de escaneo, resultados de credrecon y archivos de base de datoscygor-config/: volumen de configuración local (creado automáticamente)Por defecto:
5432 del host (si está disponible)5434 del host (si está disponible)5432 internamente (red de Docker)Si los puertos están en uso, puedes:
Usar el script contenedor (recomendado: detecta automáticamente los puertos disponibles):
./docker-compose-up.sh up --build
Establecer el puerto manualmente:
export POSTGRES_HOST_PORT=5435
docker compose up --build
Eliminar la asignación de puertos (si no necesitas acceso externo a PostgreSQL): comenta la sección ports: en docker-compose.yaml
Para compilar la imagen de Docker manualmente:
docker build -t cygor .
Ejecutar un solo contenedor (sin el servicio PostgreSQL):