
Um framework modular de descoberta de ativos escrito em python para automatizar o trabalho manual repetitivo
Cygor é um framework modular de descoberta de ativos que reúne varredura, análise e enumeração de serviços em um único fluxo de trabalho. Ele substitui a colcha de retalhos de ferramentas separadas por um processo automatizado que lida com descoberta, enriquecimento e enumeração direcionada de forma integrada — reduzindo a sobrecarga manual e permitindo que você se concentre nos resultados em vez do gerenciamento de ferramentas.
A Interface Web do Cygor transforma o caos dos dados brutos de varredura em um centro de comando visual único. Em vez de vasculhar intermináveis XML, JSON ou texto simples, os resultados são automaticamente analisados, enriquecidos e exibidos em um espaço projetado para triagem rápida e tomada de decisões.
Alimentado por FastAPI e Bootstrap 5, o painel facilita:
A Interface Web não é apenas para apresentação — é sobre eficiência e clareza. Ao reunir todos os dados coletados em um único espaço de trabalho interativo, reduz o tempo gasto analisando arquivos ou reconciliando saídas e permite que os testadores se concentrem no que importa: entender o ambiente e agir sobre ele.
Muitas ferramentas, técnicas e práticas que crio são inspiradas no Universo Spawn. Se você nunca leu uma HQ do Spawn, tudo bem, pois compartilharei algumas informações sobre por que selecionei o personagem para ser o nome desta ferramenta.
O nome Cygor deriva de Cy-Gor, um anti-herói trágico no universo Spawn. Outrora Michael Konieczny — um agente governamental e amigo próximo de Al Simmons — ele tentou expor a corrupção após o assassinato de Simmons. No entanto, foi capturado e forçado a participar do Projeto Sim, os experimentos símios do Dr. Frederick Willheim, onde o corpo de um gorila foi fundido com a mente de Konieczny por meio de cibernética invasiva. O resultado foi a besta conhecida como Cy-Gor — abreviação de Gorila Cibernético.
Após escapar do cativeiro, Cy-Gor realizou ataques violentos, chegando a destruir centros de dados governamentais em acessos de confusão e fúria. Embora caçado e recapturado várias vezes, ele eventualmente lutou contra os sistemas que tentavam controlá-lo — removendo implantes de rastreamento e se libertando para forjar seu próprio caminho, dividido entre máquina, besta e homem.
webenum (apenas as ferramentas instaladas são executadas).Existem alguns métodos suportados para instalar o Cygor: pip, pipx, uv e docker.
Algumas dependências (ex.: gssapi para Kerberos/WinRM) constroem extensões C, então instale as ferramentas de build e os cabeçalhos Kerberos primeiro:
# Debian/Ubuntu/Kali:
sudo apt install -y build-essential python3-dev libkrb5-dev
# Versão estável:
pipx install cygor
# Instalar a partir do código fonte:
git clone https://github.com/tjnull/cygor
cd cygor
pipx install .
A configuração Docker do Cygor inclui tanto a aplicação quanto um serviço de banco de dados PostgreSQL. O sistema utiliza SQLite como fallback automaticamente se o PostgreSQL não estiver disponível.
Produção (recomendado):
# Opção 1: Usar o script wrapper (resolve automaticamente conflitos de porta)
./docker-compose-up.sh up --build
# Opção 2: Docker compose direto (usa portas padrão)
docker compose up --build
Desenvolvimento (com código fonte montado):
# Opção 1: Usar o script wrapper (resolve automaticamente conflitos de porta)
./docker-compose-up.sh dev up --build
# Opção 2: Docker compose direto (usa portas padrão)
docker compose -f docker-compose-dev.yaml up --build
A configuração do Docker Compose inclui:
results/: Saídas de varredura, resultados de credrecon e arquivos de banco de dadoscygor-config/: Volume de configuração local (criado automaticamente)Por padrão:
5432 do host (se disponível)5434 do host (se disponível)5432 internamente (rede Docker)Se as portas estiverem em uso, você pode:
Usar o script wrapper (recomendado - detecta portas disponíveis automaticamente):
./docker-compose-up.sh up --build
Definir a porta manualmente:
export POSTGRES_HOST_PORT=5435
docker compose up --build
Remover o mapeamento de porta (se não precisar de acesso externo ao PostgreSQL):
Comente a seção ports: no docker-compose.yaml
Para construir a imagem Docker manualmente:
docker build -t cygor .
Executar um único contêiner (sem o serviço 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