Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Krawl — Krawl é um servidor de decepção web personalizável, leve e nativo da nuvem, e um anti-crawler que cria aplicações web falsas com vulnerabilidades de baixa complexidade, utilizando dados fictícios realistas gerados aleatoriamente e modelos HTML gerados por IA. | Kitploit
Ferramentas/GitHubGitHub/blessedrebus/krawl
Segurança de ContêineresColeta de InformaçõesSegurança WebSegurança de RedeSegurança na NuvemInteligência de AmeaçasResposta a IncidentesAnti-BotSegurança de IA
GitHubblessedrebus/krawl

Krawl

Krawl é um servidor de decepção web personalizável, leve e nativo da nuvem, e um anti-crawler que cria aplicações web falsas com vulnerabilidades de baixa complexidade, utilizando dados fictícios realistas gerados aleatoriamente e modelos HTML gerados por IA.

55845há 5h 38mRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver RepositórioSite

Krawl

Um servidor de honeypot web moderno e personalizável, projetado para detectar e rastrear atividades maliciosas de atacantes e rastreadores web por meio de páginas web enganosas, credenciais falsas e canary tokens.

License Release
GitHub Container Registry Kubernetes Helm Chart

Tabela de Conteúdos

  • Demo
  • O que é o Krawl?
  • Painel do Krawl
  • Modos de Implantação
  • Lista de Bloqueio do Krawl
  • Início Rápido
    • Execução via Docker
    • Docker Compose
    • Kubernetes
    • Uvicorn (Python)
  • Configuração
    • config.yaml
    • Variáveis de Ambiente
  • Banir IPs Maliciosos
  • Reputação de IP
  • Execução Atrás de um Reverse Proxy ou CDN
  • Métricas e Monitoramento
  • Documentação Adicional
  • Engano usando IA
  • Contribuindo

Demo

Dica: rastreie os caminhos do robots.txt para diversão adicional

URL do Krawl: http://demo.krawlme.com

Veja o painel em http://demo.krawlme.com/das_dashboard

O que é o Krawl?

Krawl é um servidor de engano (deception) nativo da nuvem, projetado para detectar, atrasar e analisar atacantes maliciosos, rastreadores web e scanners automatizados.

Ele cria aplicações web falsas e realistas, repletas de alvos fáceis, como painéis administrativos, arquivos de configuração e credenciais falsas expostas, para atrair e identificar atividades suspeitas.

dashboard

Ao desperdiçar recursos dos atacantes, o Krawl ajuda a distinguir claramente o comportamento malicioso de rastreadores legítimos.

Ele apresenta:

  • Páginas de Engano Geradas por IA: Deixe os atacantes ajudarem a gerar sua superfície de ataque falsa e vulnerável
  • Páginas Armadilha para Rastreadores: Links infinitos e aleatórios para desperdiçar recursos dos rastreadores, com base no projeto spidertrap
  • Páginas de Login Falsas: WordPress, phpMyAdmin, painéis administrativos
  • Caminhos Honeypot: Divulgados no robots.txt para capturar scanners
  • Credenciais Falsas: Nomes de usuário, senhas e chaves de API com aparência realista
  • Integração com Canary Token: Acionamento de alertas externos
  • Cabeçalhos de servidor aleatórios: Confundir ataques com base no cabeçalho e na versão do servidor
  • Painel em Tempo Real: Monitorar atividades suspeitas
  • Listas de Palavras Personalizáveis: Configuração fácil baseada em JSON
  • Injeção Aleatória de Erros: Imitar o comportamento real do servidor

Você pode facilmente expor o Krawl junto com seus outros serviços para protegê-los de rastreadores web e usuários maliciosos usando um reverse proxy. Para mais detalhes, consulte a documentação do Reverse Proxy.

use case

Painel do Krawl

O Krawl fornece um painel abrangente, acessível em um caminho secreto aleatório gerado na inicialização ou em um caminho personalizado configurado via KRAWL_DASHBOARD_SECRET_PATH. Isso mantém o painel oculto de atacantes que escaneiam seu honeypot.

O painel está organizado em seis abas:

  • Visão Geral: visão de alto nível da atividade de ataques: um mapa interativo das origens dos IPs, requisições suspeitas recentes e principais IPs, User-Agents e caminhos.

geoip

  • Ataques: detalhamento das credenciais capturadas, gatilhos de honeypot e tipos de ataque detectados (SQLi, XSS, path traversal, etc.) com gráficos e tabelas.

attack_types

  • Inspeção de IP: visão forense aprofundada de um IP selecionado: geolocalização, informações de ISP/ASN, sinalizações de reputação, linha do tempo comportamental, distribuição de tipos de ataque e histórico completo de acesso.

ipinsight

Além disso, após autenticar com a senha do painel, duas abas protegidas ficam disponíveis:

  • IPs Rastreados: mantenha uma lista de vigilância de endereços IP que você deseja monitorar ao longo do tempo.
  • Lista de Bloqueio de IP: gerencie bloqueios de IP, visualize atacantes detectados e exporte a lista de bloqueio no formato bruto ou IPTables.
  • Engano: gerencie páginas geradas por IA, exporte-as ou importe novas.

Para mais detalhes, consulte a documentação do Painel.

Modos de Implantação

O Krawl suporta dois modos de implantação, controlados pela configuração mode no config.yaml ou pela variável de ambiente KRAWL_MODE.

Standalone: ideal para ambientes de desenvolvimento ou homelabs com baixo volume de requisições. Nenhuma configuração adicional é necessária; basta executar o Krawl e ele funciona.

  • Implantação em contêiner único, sem dependências externas
  • Menor uso de RAM e de recursos

Escalável: projetado para ambientes de produção ou honeypots de alto tráfego. O Helm chart usa esse modo por padrão.

  • Painel mais rápido e mais responsivo graças ao cache em várias camadas do Redis
  • Menor I/O de disco com o Redis atuando como cache de caminho rápido na frente do PostgreSQL
  • O escalonamento horizontal aumenta o número de réplicas do Krawl atrás de um balanceador de carga

Para configuração detalhada, exemplos de Docker Compose, configuração Kubernetes/Helm e instruções passo a passo de migração, consulte a documentação de Modos de Implantação.

Lista de Bloqueio do Krawl

O Krawl mantém uma banlist.txt atualizada regularmente com endereços IP de atacantes que acionaram suas armadilhas de honeypot. A lista de bloqueio é publicada semanalmente e disponibilizada para download, ajudando a comunidade a bloquear preventivamente atores maliciosos conhecidos, mesmo sem usar o Krawl.

A lista de bloqueio também pode ser obtida diretamente de: https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw.

Compartilhando listas de bloqueio entre instâncias

Instâncias do Krawl podem federar suas listas de bloqueio: cada uma pode publicar sua própria lista em um caminho sem autenticação e importar listas de outras instâncias (ou qualquer lista de IPs em texto simples). Os IPs obtidos são mesclados às decisões locais de bloqueio e exibidos no painel.```yaml banlist:

Public, unauthenticated download path for this instance's banlist.

Supports the same ?categories= and ?fwtype= parameters as the main API.

Empty = disabled.

export_path: "/public_banlist.txt"

Upstream banlists to fetch and merge. Plain ".txt" lists work too.

sources: - "https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw" - "https://krawl.example.com/public_banlist.txt"

refresh_interval: 3600 # seconds between fetches

root@kitploit:~
## Início rápido

### Execução com Docker

Execute o Krawl em modo autônomo com a imagem mais recente:```bash
docker run -d \
  -p 5000:5000 \
  -e KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard" \
  -e KRAWL_DASHBOARD_PASSWORD="my-secret-password" \
  -v krawl-data:/app/data \
  --name krawl \
  ghcr.io/blessedrebus/krawl:latest

Acesse o servidor em http://localhost:5000

Docker Compose

Crie um docker-compose.yaml com um dos dois modos de implantação.

Standalone: apenas o servidor Krawl com armazenamento Sqlite:```yaml services: krawl: image: ghcr.io/blessedrebus/krawl:latest container_name: krawl-server ports: - "5000:5000" environment: - CONFIG_LOCATION=config.yaml # - KRAWL_DASHBOARD_PASSWORD=my-secret-password volumes: - ./config.yaml:/app/config.yaml:ro - krawl-data:/app/data restart: unless-stopped

volumes: krawl-data:

root@kitploit:~
**Escalável**: com PostgreSQL e Redis:

> [!CAUTION]
> O exemplo abaixo usa **senhas padrão** (`krawl`/`krawl`). **Altere-as antes de implantar em produção.**```yaml
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: krawl
      POSTGRES_USER: krawl
      POSTGRES_PASSWORD: krawl
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U krawl -d krawl"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  krawl:
    image: ghcr.io/blessedrebus/krawl:latest
    container_name: krawl-server
    ports:
      - "5000:5000"
    environment:
      - CONFIG_LOCATION=config.yaml
      - KRAWL_MODE=scalable
      - KRAWL_POSTGRES_HOST=postgres
      - KRAWL_POSTGRES_PORT=5432
      - KRAWL_POSTGRES_USER=krawl
      - KRAWL_POSTGRES_PASSWORD=krawl
      - KRAWL_POSTGRES_DATABASE=krawl
      - KRAWL_REDIS_HOST=redis
      - KRAWL_REDIS_PORT=6379
      # - KRAWL_DASHBOARD_PASSWORD=my-secret-password
    volumes:
      - ./config.yaml:/app/config.yaml:ro
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy

volumes:
  postgres_data:
  redis_data:

Para fazer o deploy, basta executar```bash docker compose up -d

root@kitploit:~
Arquivos compose prontos para produção também estão disponíveis no diretório [`docker/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/). Para **desenvolvimento** (builds a partir do código-fonte com hot-reload), use os arquivos compose em [`docker/dev/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/dev/).

Para mais detalhes sobre ambos os modos, consulte [Modos de Implantação](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md).

### Kubernetes
**Krawl também está disponível nativamente no Kubernetes**. A instalação pode ser feita tanto [via manifesto](https://github.com/blessedrebus/krawl/blob/HEAD/kubernetes/README.md) quanto [usando o Helm chart](https://github.com/blessedrebus/krawl/blob/HEAD/helm/README.md).

O Helm chart **usa o modo escalável por padrão** com PostgreSQL e Redis integrados:```bash
helm install krawl oci://ghcr.io/blessedrebus/krawl-chart --version 2.3.0 \
  -n krawl-system --create-namespace \
  --set postgres.password=your-password \
  --set redis.password=your-redis-password \
  --set dashboardPassword=your-dashboard-password \
  --set config.dashboard.secret_path=/my-secret-dashboard

Arquivos de valores de exemplo mínimos são fornecidos para ambos os modos:

  • values-minimal.yaml ---> Scalable (default)
  • values-standalone.yaml ---> Standalone

Consulte Modos de Implantação e documentação do Chart para instruções completas de configuração e migração.

Uvicorn (Python)

Execute o Krawl diretamente com Python 3.13+ e uvicorn para desenvolvimento ou testes locais:```bash pip install -r requirements.txt uvicorn app:app --host 0.0.0.0 --port 5000 --app-dir src --no-server-header

root@kitploit:~
Access the server at `http://localhost:5000`


## Configuração
O Krawl usa uma **hierarquia de configuração** na qual **as variáveis de ambiente têm precedência sobre o arquivo de configuração**. Essa abordagem é recomendada para implantações Docker e personalização rápida pronta para uso.

### Configuração via config.yaml
Você pode usar o arquivo [config.yaml](https://github.com/blessedrebus/krawl/blob/HEAD/config.yaml) para configurações avançadas, como implantações com Docker Compose ou Helm chart.

### Configuração via Variáveis de Ambiente

Todas as configurações podem ser fornecidas como variáveis de ambiente, que substituem o `config.yaml`.
O nome da variável é `KRAWL_` mais o caminho da configuração em maiúsculas, então `dashboard.password` vira `KRAWL_DASHBOARD_PASSWORD`.

<details>
<summary><b>Servidor e geração de links</b> (12 variáveis)</summary>

Como o Krawl se apresenta e modela o labirinto de páginas geradas.

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `CONFIG_LOCATION` | Caminho para o arquivo de configuração yaml | `config.yaml` |
| `KRAWL_PORT` | Porta de escuta do servidor | `5000` |
| `KRAWL_DELAY` | Atraso de resposta em milissegundos | `100` |
| `KRAWL_SERVER_HEADER` | Cabeçalho HTTP Server para enganação | `""` |
| `KRAWL_LINKS_LENGTH_RANGE` | Intervalo de comprimento dos links como `min,max` | `5,15` |
| `KRAWL_LINKS_PER_PAGE_RANGE` | Links por página como `min,max` | `10,15` |
| `KRAWL_CHAR_SPACE` | Caracteres usados para geração de links | `abcdefgh...` |
| `KRAWL_MAX_COUNTER` | Valor inicial do contador | `10` |
| `KRAWL_PROBABILITY_ERROR_CODES` | Probabilidade de respostas de erro (0-100%) | `0` |
| `KRAWL_INFINITE_PAGES_FOR_MALICIOUS` | Servir páginas infinitas para IPs maliciosos | `true` |
| `KRAWL_MAX_PAGES_LIMIT` | Limite máximo de páginas para rastreadores | `250` |
| `KRAWL_BAN_DURATION_SECONDS` | Duração do banimento em segundos para IPs com limite de taxa | `600` |

</details>

<details>
<summary><b>Dashboard, métricas e logging</b> (8 variáveis)</summary>

Acesso ao dashboard, pré-aquecimento de cache, Prometheus e nível de log.

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_DASHBOARD_SECRET_PATH` | Caminho personalizado do dashboard | Gerado automaticamente |
| `KRAWL_DASHBOARD_PASSWORD` | Senha para painéis protegidos do dashboard | Gerada automaticamente |
| `KRAWL_DASHBOARD_CACHE_WARMUP` | Pré-calcular dados do dashboard a cada 5 minutos para carregamento instantâneo de páginas | `true` |
| `KRAWL_DASHBOARD_WARMUP_PAGES` | Número de páginas para pré-aquecer por painel de tabela | `10` |
| `KRAWL_DASHBOARD_WARMUP_AGGREGATION` | Pré-calcular agregações completas de top_paths/top_ua para servir sem consultas | `false` |
| `KRAWL_DASHBOARD_TOP_N_MIN_COUNT` | Contagem mínima de acessos para os painéis de principais caminhos/user agents (defina como 1 para desativar) | `5` |
| `KRAWL_METRICS_ENABLED` | Expor métricas Prometheus em `/<dashboard_path>/metrics` | `true` |
| `KRAWL_LOG_LEVEL` | Nível de log da aplicação (`DEBUG`, `INFO`, `WARNING`, `ERROR`) | `INFO` |

</details>

<details>
<summary><b>Banco de dados, retenção e backups</b> (6 variáveis)</summary>

Local de armazenamento, por quanto tempo os dados são mantidos e o job de dump.

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_DATABASE_PATH` | Local do arquivo do banco de dados | `data/krawl.db` |
| `KRAWL_DATABASE_PERSIST_SUSPICIOUS_ONLY` | Persistir apenas requisições suspeitas no log de acesso | `false` |
| `KRAWL_DATABASE_RETENTION_DAYS` | Dias para reter dados no banco de dados | `30` |
| `KRAWL_BACKUPS_PATH` | Caminho onde os dumps do banco de dados são salvos | `backups` |
| `KRAWL_BACKUPS_CRON` | Expressão cron para controlar o agendamento do job de backup | `*/30 * * * *` |
| `KRAWL_BACKUPS_ENABLED` | Booleano para habilitar o job de dump do banco de dados | `true` |

</details>

<details>
<summary><b>Armadilhas: tarpit, páginas de decepção e canary</b> (6 variáveis)</summary>

Armadilhas opcionais e as páginas servidas a atacantes.

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_TARPIT_ENABLED` | Prender agentes de IA com respostas lentas e texto aleatório | `false` |
| `KRAWL_TARPIT_DELAY_SECONDS` | Atraso extra em segundos adicionado por resposta quando o tarpit está ativo | `5` |
| `KRAWL_DECEPTION_IMPORT_PAGES` | Importar automaticamente páginas de decepção de `src/templates/deception/` na inicialização | `true` |
| `KRAWL_CUSTOM_TEMPLATE_PATH` | Caminho dentro do contêiner para um modelo HTML personalizado. O modelo deve incluir os placeholders `{counter}` e `{content}`. | `/templates/custom_page.html` |
| `KRAWL_CANARY_TOKEN_URL` | URL externa do token canary | None |
| `KRAWL_CANARY_TOKEN_TRIES` | Requisições antes de exibir o token canary | `10` |

</details>

<details>
<summary><b>Analisador de reputação de IP</b> (6 variáveis)</summary>

Limiares que decidem como um IP é classificado.

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_HTTP_RISKY_METHODS_THRESHOLD` | Limiar para detecção de métodos HTTP arriscados | `0.1` |
| `KRAWL_VIOLATED_ROBOTS_THRESHOLD` | Limiar para violações de robots.txt | `0.1` |
| `KRAWL_UNEVEN_REQUEST_TIMING_THRESHOLD` | Limiar do coeficiente de variação para temporização | `0.5` |
| `KRAWL_UNEVEN_REQUEST_TIMING_TIME_WINDOW_SECONDS` | Janela de tempo para análise de temporização de requisições em segundos | `300` |
| `KRAWL_USER_AGENTS_USED_THRESHOLD` | Limiar para detecção de múltiplos user agents | `2` |
| `KRAWL_ATTACK_URLS_THRESHOLD` | Limiar para detecção de URLs de ataque | `1` |

</details>

<details>
<summary><b>Lista de banimento e IPs ignorados</b> (4 variáveis)</summary>

Compartilhamento de listas de banimento com outras instâncias e tráfego que nunca deve ser rastreado.

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_IGNORED_IPS` | IPs/CIDRs separados por vírgula que nunca são rastreados, banidos ou exportados | Loopback, RFC1918, link-local, CGNAT |
| `KRAWL_BANLIST_EXPORT_PATH` | Caminho público de download da lista de banimento, ex.: `/public_banlist.txt` (vazio = desativado) | `""` |
| `KRAWL_BANLIST_SOURCES` | URLs de listas de banimento upstream separadas por vírgula para buscar e mesclar | Lista de banimento da comunidade Krawl |
| `KRAWL_BANLIST_REFRESH_INTERVAL` | Segundos entre buscas de listas de banimento upstream | `3600` |

</details>

<details>
<summary><b>Páginas de decepção geradas por IA</b> (10 variáveis)</summary>

Consulte a [documentação de Geração por IA](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md).

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_AI_ENABLED` | Habilitar páginas de decepção geradas por IA | `false` |
| `KRAWL_AI_PROVIDER` | Provedor de IA (`"openrouter"` ou `"openai"`) | `"openrouter"` |
| `KRAWL_AI_OPENAI_BASE_URL` | URL Base OpenAI opcional para endpoints de API personalizados | `"https://api.openai.com/v1"` |
| `KRAWL_AI_API_KEY` | Chave da API para o provedor de IA | `None` |
| `KRAWL_AI_MODEL` | Modelo de IA a ser usado para geração de páginas | `"nvidia/nemotron-3-super-120b-a12b:free"` |
| `KRAWL_AI_TIMEOUT` | Tempo limite de requisição em segundos para chamadas de API de IA | `60` |
| `KRAWL_AI_MAX_DAILY_REQUESTS` | Número máximo de páginas geradas por IA por dia (0 = ilimitado) | `0` |
| `KRAWL_AI_PROMPT` | Modelo de prompt personalizado para geração de páginas por IA | Prompt padrão |
| `KRAWL_AI_REASONING_ENABLED` | Habilitar tokens de raciocínio (somente modelos de raciocínio do OpenRouter) | `false` |
| `KRAWL_AI_REASONING_EFFORT` | Esforço de raciocínio (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`) | `"medium"` |

</details>

<details>
<summary><b>Modo escalável: PostgreSQL e Redis</b> (13 variáveis)</summary>

Usado apenas quando `KRAWL_MODE=scalable`. Consulte [Modos de Implantação](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md).

| Variável de Ambiente | Descrição | Padrão |
|----------------------|-------------|---------|
| `KRAWL_MODE` | Modo de implantação (`standalone` ou `scalable`) | `standalone` |
| `KRAWL_POSTGRES_HOST` | Hostname do PostgreSQL | `localhost` |
| `KRAWL_POSTGRES_PORT` | Porta do PostgreSQL | `5432` |
| `KRAWL_POSTGRES_USER` | Usuário do PostgreSQL | `krawl` |
| `KRAWL_POSTGRES_PASSWORD` | Senha do PostgreSQL | `krawl` |
| `KRAWL_POSTGRES_DATABASE` | Nome do banco de dados PostgreSQL | `krawl` |
| `KRAWL_REDIS_HOST` | Hostname do Redis | `localhost` |
| `KRAWL_REDIS_PORT` | Porta do Redis | `6379` |
| `KRAWL_REDIS_DB` | Número do banco de dados Redis | `0` |
| `KRAWL_REDIS_PASSWORD` | Senha do Redis | None |
| `KRAWL_REDIS_CACHE_TTL` | TTL em segundos para dados de pré-aquecimento do dashboard | `600` |
| `KRAWL_REDIS_HOT_TTL` | TTL em segundos para dados de caminho quente (informações de banimento, categorias de IP) | `30` |
| `KRAWL_REDIS_TABLE_TTL` | TTL em segundos para tabelas paginadas do dashboard | `120` |

</details>


Por exemplo```bash
# Set canary token
export CONFIG_LOCATION="config.yaml"
export KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"

# Set number of pages range (min,max format)
export KRAWL_LINKS_PER_PAGE_RANGE="5,25"

# Set analyzer thresholds
export KRAWL_HTTP_RISKY_METHODS_THRESHOLD="0.2"
export KRAWL_VIOLATED_ROBOTS_THRESHOLD="0.15"

# Set custom dashboard path and password
export KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard"
export KRAWL_DASHBOARD_PASSWORD="my-secret-password"

Exemplo de um Docker run com variáveis de ambiente (modo standalone):```bash docker run -d
-p 5000:5000
-e KRAWL_MODE=standalone
-e KRAWL_PORT=5000
-e KRAWL_DELAY=100
-e KRAWL_DASHBOARD_PASSWORD="my-secret-password"
-e KRAWL_CUSTOM_TEMPLATE_PATH="/templates/custom_page.html"
-e KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"
--name krawl
ghcr.io/blessedrebus/krawl:latest

root@kitploit:~
## Use o Krawl para Banir IPs Maliciosos
O Krawl usa um sistema baseado em reputação para classificar endereços IP de atacantes e oferece duas formas de exportar listas de IP para integração com firewall.

O endpoint `/api/export-ips` consulta o banco de dados diretamente e suporta filtragem por categoria de IP (`attacker`, `bad_crawler`, `regular_user`, `good_crawler`) e formato de saída (`raw`, `iptables`, `nftables`):```bash
curl "https://your-krawl-instance/<DASHBOARD-PATH>/api/export-ips?categories=attacker&fwtype=raw"

Isso permite o bloqueio automático de tráfego malicioso em várias plataformas:

  • OPNsense e pfSense
  • RouterOS
  • IPtables e Nftables
  • Fail2Ban

Para ver todos os parâmetros da API, exemplos e como adicionar formatos de firewall personalizados, consulte a documentação do Firewall Exporters.

O Krawl também pode enviar IPs banidos diretamente para uma Cloudflare Account IP List para uso em regras de WAF. A sincronização é executada como uma tarefa em segundo plano e atualiza a lista por substituição completa em um intervalo configurável. Consulte a documentação de Cloudflare Banlist Sync.

Reputação de IP

O Krawl usa tarefas que analisam o tráfego recente para construir e atualizar continuamente uma pontuação de reputação de IP. Ele é executado periodicamente e avalia cada endereço IP ativo com base em múltiplos indicadores comportamentais para classificá-lo como atacante, crawler ou usuário comum. Os limites são totalmente personalizáveis.

reputação de IP

A análise inclui:

  • Uso de métodos HTTP arriscados (por exemplo, proporções de POST, PUT, DELETE)
  • Violações do Robots.txt
  • Anomalias de temporização de requisições (padrões em rajadas ou irregulares)
  • Consistência do User-Agent
  • Detecção de URLs de ataque (por exemplo, padrões de injeção SQL, XSS)

Cada sinal contribui para um modelo de pontuação ponderada que atribui uma categoria de reputação:

  • attacker
  • bad_crawler
  • good_crawler
  • regular_user
  • unknown (para dados insuficientes)

As pontuações e métricas resultantes são armazenadas no banco de dados e usadas pelo Krawl para alimentar dashboards, rastreamento de reputação e ações automatizadas de mitigação, como banimento de IP ou integração com firewall.

Páginas de Decepção Geradas por IA

O Krawl pode gerar automaticamente páginas de decepção realistas usando modelos de IA das APIs OpenRouter ou OpenAI. Esse recurso cria páginas honeypot únicas e plausíveis em tempo real para enganar atacantes, sem necessidade de criação manual de páginas.

Principais Recursos:

  • Geração Dinâmica: Cria páginas HTML exclusivas para qualquer caminho de requisição
  • Cache Inteligente: Armazena em cache as páginas geradas para evitar chamadas redundantes à API
  • Limite Diário de Taxa: Controle os custos da API com limites de requisição configuráveis
  • Múltiplos Provedores: Suporte para OpenRouter (opções gratuitas) e OpenAI
  • Fallback Gracioso: Volta para o honeypot padrão quando desativado ou quando o limite é atingido
  • Serviço em Cache: Páginas geradas anteriormente são servidas mesmo quando a IA está desativada

Configuração Rápida:```yaml ai: enabled: true provider: "openrouter" openai_base_url: "your-custom-base-url" api_key: "your-api-key" model: "nvidia/nemotron-3-super-120b-a12b:free" timeout: 60 max_daily_requests: 10

root@kitploit:~
Para configuração e uso detalhados, consulte a [documentação de AI Generation](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md).

Você também pode **contribuir com modelos de decepção** abrindo um PR; veja [Contribuindo com Modelos de Decepção](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deception_pages.md#contributing-deception-templates-via-pr).

## Executando Atrás de um Proxy Reverso ou CDN

**NGINX, Traefik e outros proxies como CloudFlare** precisam de encaminhamento de cabeçalhos para que o Krawl possa ver o IP real. Consulte a [documentação de Proxy Reverso](https://github.com/blessedrebus/krawl/blob/HEAD/docs/reverse-proxy.md) para exemplos de configuração e a lista completa de cabeçalhos.

## Métricas e Monitoramento

O Krawl expõe métricas do [Prometheus](https://prometheus.io/) em `/<dashboard_secret_path>/metrics` (habilitado por padrão) e acompanha um painel do [Grafana](https://grafana.com/) pronto para importação em [`grafana-dashboard.json`](https://github.com/blessedrebus/krawl/blob/HEAD/grafana-dashboard.json).

Consulte a [documentação de Monitoramento](https://github.com/blessedrebus/krawl/blob/HEAD/docs/monitoring.md) para a lista completa de métricas, etapas de importação do Grafana e configuração de coleta (scraping) do Prometheus / Kubernetes (`ServiceMonitor`).

## Documentação Adicional

| Tópico | Descrição |
|-------|-------------|
| [AI Generation](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md) | Configure páginas de decepção geradas por IA usando OpenRouter ou OpenAI |
| [Deception Pages](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deception_pages.md) | Gerencie, importe e exporte páginas de decepção; operações em massa e filtragem por data |
| [Deployment Modes](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md) | Modo standalone (SQLite) vs escalável (PostgreSQL + Redis), configuração e migração de dados |
| [Honeypot](https://github.com/blessedrebus/krawl/blob/HEAD/docs/honeypot.md) | Visão geral completa das páginas de honeypot: logins falsos, listagens de diretório, arquivos de credenciais, armadilhas de SQLi/XSS/XXE/injeção de comando e muito mais |
| [Dashboard](https://github.com/blessedrebus/krawl/blob/HEAD/docs/dashboard.md) | Acesse e explore o painel de monitoramento em tempo real |
| [Dashboard API](https://github.com/blessedrebus/krawl/blob/HEAD/docs/dashboard-api.md) | A própria API JSON do Krawl: referência de endpoints, autenticação, documentação OpenAPI interativa e download de anexos |
| [External APIs](https://github.com/blessedrebus/krawl/blob/HEAD/docs/api.md) | APIs de terceiros que o Krawl consulta para dados de IP, reputação e geolocalização |
| [Reverse Proxy](https://github.com/blessedrebus/krawl/blob/HEAD/docs/reverse-proxy.md) | Como implantar o Krawl atrás do NGINX ou usar subdomínios de isca |
| [Database Backups](https://github.com/blessedrebus/krawl/blob/HEAD/docs/backups.md) | Habilite e configure o trabalho automático de dump do banco de dados |
| [Canary Token](https://github.com/blessedrebus/krawl/blob/HEAD/docs/canary-token.md) | Configure gatilhos de alerta externos por meio do canarytokens.org |
| [Wordlist](https://github.com/blessedrebus/krawl/blob/HEAD/docs/wordlist.md) | Personalize nomes de usuário, senhas e listagens de diretório falsos |
| [Architecture](https://github.com/blessedrebus/krawl/blob/HEAD/docs/architecture.md) | Visão geral técnica do código-fonte, pipeline de requisições, esquema do banco de dados e tarefas em segundo plano |
| [Cloudflare Banlist Sync](https://github.com/blessedrebus/krawl/blob/HEAD/docs/cloudflare_banlist.md) | Envia os IPs banidos do Krawl para uma lista de IPs da conta Cloudflare para uso em regras de WAF. A sincronização é executada como uma tarefa em segundo plano e atualiza a lista por substituição completa. |
| [Firewall Exporters](https://github.com/blessedrebus/krawl/blob/HEAD/docs/firewall-exporters.md) | Exporte listas de banimento de IP nos formatos raw, iptables ou nftables via API REST |
| [Tarpit](https://github.com/blessedrebus/krawl/blob/HEAD/docs/tarpit.md) | Desacelere e envenene rastreadores de IA com respostas atrasadas e com ruído adicionado |
| [Metrics & Monitoring](https://github.com/blessedrebus/krawl/blob/HEAD/docs/monitoring.md) | Endpoint de métricas do Prometheus, referência de métricas expostas, painel do Grafana e coleta via ServiceMonitor |

## Contribuindo

Contribuições são bem-vindas! Por favor:
1. Faça um fork do repositório
2. Crie uma branch de funcionalidade
3. Faça suas alterações
4. Envie um pull request (explique as alterações!)


## Aviso Legal
> [!CAUTION]
> Este é um sistema de decepção/honeypot. Implante em ambientes isolados e monitore cuidadosamente os eventos de segurança. Use com responsabilidade e em conformidade com as leis e regulamentos aplicáveis.

## Histórico de Estrelas
<img src="https://star-history.dera.page/svg?repos=BlessedRebuS/Krawl&amp;type=Date" width="600" alt="Star History Chart" />
Baixar ferramenta
StandaloneEscalável
Banco de dadosSQLite (modo WAL)PostgreSQL
CacheDict Python em memóriaRedis (TTL em várias camadas)
Réplicas1 (instância única)1+ (escalonamento horizontal)
Dependências externasNenhumaPostgreSQL + Redis
Melhor paraDev, homelabs, <500k requisiçõesProdução, HA, >500k requisições