
Un framework modulare per la scoperta di asset scritto in Python per automatizzare il lavoro manuale ripetitivo
Cygor è un framework modulare di scoperta degli asset che riunisce scansione, parsing ed enumerazione dei servizi in un unico flusso di lavoro. Sostituisce l'insieme eterogeneo di strumenti separati con un processo automatizzato che gestisce senza soluzione di continuità scoperta, arricchimento ed enumerazione mirata — riducendo il lavoro manuale e permettendoti di concentrarti sui risultati invece che sulla gestione degli strumenti.
La Web UI di Cygor prende il caos dei dati di scansione grezzi e lo organizza in un unico centro di comando visivo. Invece di setacciare infiniti file XML, JSON o testo semplice, i risultati vengono automaticamente analizzati, arricchiti e visualizzati in un unico spazio progettato per un triage rapido e decisioni immediate.
Basata su FastAPI e Bootstrap 5, la dashboard consente di:
La Web UI non serve solo alla presentazione — riguarda efficienza e chiarezza. Riunendo tutti i dati raccolti in un unico spazio di lavoro interattivo, riduce il tempo dedicato all'analisi dei file o alla riconciliazione delle uscite e consente ai tester di concentrarsi su ciò che conta: comprendere l'ambiente e agire di conseguenza.
Molti degli strumenti, delle tecniche e delle metodologie che creo traggono ispirazione dall'Universo di Spawn. Se non hai mai letto un fumetto di Spawn, va bene lo stesso: condividerò alcune informazioni sul motivo per cui ho scelto questo personaggio come nome dello strumento.
Il nome Cygor deriva da Cy-Gor, un tragico antieroe dell'universo di Spawn. Un tempo Michael Konieczny — operativo governativo e caro amico di Al Simmons — cercò di smascherare la corruzione dopo l'omicidio di Simmons. Tuttavia, fu catturato e costretto al Progetto Sim, gli esperimenti scimmieschi del Dr. Frederick Willheim, in cui il corpo di un gorilla fu fuso con la mente di Konieczny tramite cibernetica invasiva. Il risultato fu la bestia nota come Cy-Gor — abbreviazione di Gorilla Cibernetico.
Dopo essere fuggito dalla prigionia, Cy-Gor compì violente scorribande, arrivando persino a devastare i data center governativi in preda a confusione e rabbia. Sebbene cacciato e ricatturato più volte, alla fine combatté contro i sistemi che cercavano di controllarlo — rimuovendo gli impianti di localizzazione e liberandosi per forgiare il proprio cammino, lacerato tra macchina, bestia e uomo.
webenum (vengono eseguiti solo gli strumenti installati).Esistono diversi metodi supportati per installare Cygor: pip, pipx, uv e docker.
Alcune dipendenze (ad es. gssapi per Kerberos/WinRM) compilano estensioni C, quindi installa prima la toolchain di compilazione e le intestazioni 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 configurazione Docker di Cygor include sia l'applicazione sia un servizio di database PostgreSQL. Il sistema passa automaticamente a SQLite se PostgreSQL non è disponibile.
Produzione (consigliata):
# 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
Sviluppo (con codice sorgente montato):
# 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 configurazione Docker Compose include:
results/: Output di scansione, risultati credrecon e file del databasecygor-config/: Volume di configurazione locale (creato automaticamente)Per impostazione predefinita:
5432 (se disponibile)5434 (se disponibile)5432 internamente (rete Docker)Se le porte sono in uso, puoi:
Usare lo script wrapper (consigliato - rileva automaticamente le porte disponibili):
./docker-compose-up.sh up --build
Impostare la porta manualmente:
export POSTGRES_HOST_PORT=5435
docker compose up --build
Rimuovere il mapping delle porte (se non hai bisogno dell'accesso PostgreSQL esterno):
Commenta la sezione ports: in docker-compose.yaml
Per creare l'immagine Docker manualmente:
docker build -t cygor .
Esegui un singolo contenitore (senza servizio PostgreSQL):
docker run --rm -v ./results:/opt/cygor/results \
-e CYGOR_RESULTS_DIR=/opt/cygor/results \
cygor web --host 0.0.0.0 --port 8080 --load-dir /opt/cygor/results