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
mongobleed-detector — Script de Detecção para Exploração do MongoBleed | Kitploit
Ferramentas/GitHubGitHub/neo23x0/mongobleed-detector
Análise de VulnerabilidadesScripting e AutomaçãoAnálise ForenseForensia DigitalInteligência de AmeaçasResposta a IncidentesSegurança de Banco de DadosAnálise de Logs
GitHubneo23x0/mongobleed-detector

mongobleed-detector

Script de Detecção para Exploração do MongoBleed

Ver Repositório
81133há 8 mesesRevisado 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

MongoBleed Detector

Ferramenta offline de análise do MongoDB para CVE-2025-14847 (MongoBleed)

Uma ferramenta autônoma de linha de comando para Linux que analisa dados do MongoDB para identificar provável exploração de CVE-2025-14847 usando múltiplos módulos de detecção.

Table of Contents

  • Visão Geral
  • Módulos de Detecção
  • Requisitos
  • Instalação
  • Dois Modos de Operação
  • Modo 1: Análise Local
  • Modo 2: Coleta Remota
  • Opções de Linha de Comando
  • Níveis de Confiança
  • Exemplo de Saída
  • Testes
  • Ressalvas e Limitações
  • Referências e Créditos
  • Licença

Visão Geral

MongoBleed (CVE-2025-14847) é uma vulnerabilidade de divulgação de memória na descompactação zlib do MongoDB que permite a atacantes extrair dados sensíveis — credenciais, tokens de sessão, PII — diretamente da memória do servidor sem autenticação.

Esta ferramenta ajuda respondedores a incidentes a detectar tentativas de exploração usando múltiplas fontes de evidência:

  • Módulo A: Correlação de logs (eventos de conexão, ausência de metadados)
  • Módulo B1: Análise de contadores de assert (snapshots de serverStatus.asserts)
  • Módulo B2: Detecção de picos de FTDC (séries temporais diagnostic.data)
  • Principais Recursos

    • Detecção Multi-Módulo - Correlaciona múltiplas fontes de dados para maior confiança
    • Offline e Sem Agente - Nenhuma conectividade de rede necessária durante a análise
    • Descoberta Automática - Detecta automaticamente fontes de dados disponíveis
    • Coleta Remota - Coleta dados de múltiplos hosts via SSH
    • Pontuação Combinada - Vereditos de confiança ALTO/MÉDIO/BAIXO
    • Processamento em Fluxo - Lida com arquivos de log grandes com eficiência

    Módulos de Detecção

    Módulo A: Correlação de Logs

    Analisa logs JSON do MongoDB para detectar padrões de exploração:

    ID do EventoTipoDescrição
    22943Conexão AceitaRegistrado quando um cliente conecta
    51800Metadados do ClienteRegistrado quando um cliente envia informações de driver/aplicativo
    22944Conexão FechadaRegistrado quando um cliente desconecta

    Insight-chave: Drivers legítimos do MongoDB sempre enviam metadados do cliente. O exploit MongoBleed conecta, extrai memória e desconecta — mas nunca envia metadados.

    Módulo B1: Contadores de Assert

    Analisa snapshots de db.serverStatus().asserts para detectar padrões incomuns nos contadores asserts.user:

    • Múltiplos Snapshots: Compara snapshots ao longo do tempo para detectar picos repentinos em asserts de usuário
    • Heurística de Snapshot Único: Quando apenas um snapshot está disponível, detecta padrões suspeitos comparando asserts.user a outros tipos de assert. Se os asserts de usuário forem desproporcionalmente altos (proporção ≥250x) ou todos os outros tipos forem zero, sinaliza como suspeito (confiança MÉDIA)

    Nota: Contadores cumulativos podem produzir falsos positivos. Use em combinação com FTDC (Módulo B2) para melhores resultados.

    Módulo B2: Detecção de Picos de FTDC

    Analisa arquivos de Captura de Dados de Diagnóstico em Tempo Integral (FTDC) do MongoDB para detectar picos localizados no tempo nos contadores de assert. O FTDC amostra o serverStatus periodicamente, permitindo a cronometragem precisa de possíveis ataques.

    Requisitos

    Script Shell (mongobleed-detector.sh)

    • Linux ou macOS (bash 4+)
    • jq - processador de JSON
    • awk (gawk recomendado)
    • gzip - Para suporte a logs compactados

    Componentes Python (opcional, para decodificação de FTDC)

    • Python 3.8+
    • pymongo - Para decodificação de arquivos FTDC

    Scanner Remoto (mongobleed-remote.py)

    • Python 3.8+
    • Cliente SSH nativo (comandos ssh, scp)
    • Nenhum pacote Python adicional necessário para operação básica

    Instalar Dependências

    root@kitploit:~
    # Shell script dependencies
    # Debian/Ubuntu
    apt-get install jq gawk gzip
    
    # RHEL/CentOS/Fedora
    dnf install jq gawk gzip
    
    # macOS
    brew install jq gawk
    
    # Python dependencies (for FTDC decoding)
    pip install -r requirements.txt
    

    Instalação

    root@kitploit:~
    # Clone the repository
    git clone https://github.com/your-org/mongobleed-detector.git
    cd mongobleed-detector
    
    # Make scripts executable
    chmod +x mongobleed-detector.sh
    chmod +x mongobleed-remote.py
    chmod +x ftdc-decode.py
    
    # Install Python dependencies (optional, for FTDC support)
    pip install -r requirements.txt
    

    Dois Modos de Operação

    Modo 1: Análise Local

    Analise dados que foram coletados manualmente de hosts MongoDB.

    Modo 2: Coleta Remota

    Colete automaticamente dados de múltiplos hosts via SSH e depois analise localmente.

    Modo 1: Análise Local

    Passo 1: Coletar Dados

    Colete dados de seus hosts MongoDB e organize-os nesta estrutura:

    root@kitploit:~
    ./collected-data/
    ├── logs/                    # MongoDB JSON logs
    │   ├── mongod.log
    │   ├── mongod.log.1
    │   └── mongod.log.2.gz
    ├── assert-counts/           # serverStatus().asserts snapshots
    │   ├── asserts-2025-01-01.json
    │   └── asserts-2025-01-02.json
    └── ftdc-files/              # FTDC diagnostic.data contents
        ├── metrics.2025-01-02T10-00-00Z-00000
        └── metrics.interim
    

    Coletando Logs

    root@kitploit:~
    # Copy from remote host
    scp user@mongohost:/var/log/mongodb/mongod.log* ./collected-data/logs/
    

    Coletando Contadores de Assert

    Execute este comando no host MongoDB (requer acesso ao mongosh):

    root@kitploit:~
    mongosh --quiet --eval 'JSON.stringify({
      timestamp: new Date().toISOString(),
      hostname: db.hostInfo().system.hostname,
      asserts: db.serverStatus().asserts,
      uptime: db.serverStatus().uptime
    })' > asserts-$(date +%Y%m%d-%H%M%S).json
    

    Copie o arquivo JSON resultante para ./collected-data/assert-counts/.

    Dica: Execute este comando várias vezes (ex.: a cada hora) para estabelecer uma linha de base e detectar picos.

    Coletando Arquivos FTDC

    Os arquivos FTDC estão localizados em:

    • mongod: <storage.dbPath>/diagnostic.data/ (comumente /var/lib/mongodb/diagnostic.data/)
    • mongos: Derivado de systemLog.path (ex.: /var/log/mongodb/mongos.diagnostic.data/)
    root@kitploit:~
    # Copy FTDC files (may require sudo)
    sudo cp /var/lib/mongodb/diagnostic.data/metrics.* ./collected-data/ftdc-files/
    

    Passo 2: Executar Análise

    root@kitploit:~
    # Auto-discovery mode - analyzes all available data
    ./mongobleed-detector.sh --data-dir ./collected-data/
    
    # With custom thresholds
    ./mongobleed-detector.sh --data-dir ./collected-data/ \
        -t 1440 \              # 24-hour lookback
        -c 50 \                # Lower connection threshold
        --spike-threshold 50   # Lower spike threshold
    

    Modo Legado (Somente Logs)

    Para compatibilidade reversa, você ainda pode analisar logs diretamente:

    root@kitploit:~
    # Scan default paths
    ./mongobleed-detector.sh
    
    # Scan specific log files
    ./mongobleed-detector.sh -p /path/to/logs/*.json
    
    # Forensic mode (analyze multiple hosts)
    ./mongobleed-detector.sh --forensic-dir /evidence/
    

    Modo 2: Coleta Remota

    Colete automaticamente dados de múltiplos hosts e analise:

    root@kitploit:~
    # Create hosts file
    cat > hosts.txt << EOF
    mongo-prod-01.example.com
    mongo-prod-02.example.com
    mongo-staging.example.com
    EOF
    
    # Collect and analyze
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --output-dir ./collected-data/
    

    Opções do Scanner Remoto

    root@kitploit:~
    # Use specific SSH key
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --key ~/.ssh/mongodb_key
    
    # Parallel execution
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --parallel 10
    
    # Skip FTDC collection (faster)
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --skip-ftdc
    
    # Collect only, analyze later
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --collect-only
    
    # Pass SSH options (e.g., jump host)
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin \
        -o "ProxyJump=bastion.example.com"
    
    # Use sudo for privileged file access (FTDC files are often restricted)
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --sudo
    
    # Debug mode to troubleshoot connection issues
    ./mongobleed-remote.py --hosts-file hosts.txt --user admin --debug
    

    Nota sobre Permissões de FTDC: Os arquivos FTDC em /var/lib/mongodb/diagnostic.data/ normalmente pertencem ao usuário mongodb e não podem ser lidos por usuários comuns. Se você vir avisos de "FTDC Permission Issues", use a flag --sudo. Isso exige que o usuário remoto tenha acesso sudo sem senha (NOPASSWD no sudoers).

    O Que É Coletado

    Tipo de DadoOrigemDestino
    Logs/var/log/mongodb/mongod.log*<output-dir>/<hostname>/logs/
    Contadores de Assertcomando mongosh<output-dir>/<hostname>/assert-counts/
    Arquivos FTDC/var/lib/mongodb/diagnostic.data/metrics.*<output-dir>/<hostname>/ftdc-files/

    Opções de Linha de Comando

    mongobleed-detector.sh

    OpçãoDescriçãoPadrão
    -d, --data-dir <path>Diretório com dados coletados (modo de descoberta automática)-
    -p, --path <glob>Caminho/glob de log adicional (repetível)-
    -t, --time <minutes>Janela de retrospectiva em minutos4320 (3 dias)
    -c, --conn-thresholdLimite de contagem de conexões100
    -b, --burst-thresholdLimite de taxa de rajada por minuto400
    -m, --metadata-rateLimite de taxa de metadados (0.0-1.0)0.10
    --spike-thresholdLimite de pico de assert100
    --user-ratio-thresholdProporção de assert usuário/outros para detecção de snapshot único250
    --no-default-pathsIgnorar caminhos de log padrãofalse
    --forensic-dir <path>Analisar subdiretórios como hosts separados-

    mongobleed-remote.py

    OpçãoDescriçãoPadrão
    -H, --host <hostname>Host remoto para escanear (repetível)-
    -f, --hosts-file <file>Arquivo contendo hostnames (um por linha)-
    -u, --user <user>Nome de usuário SSHUsuário atual
    -k, --key <file>Arquivo de chave privada SSHssh-agent
    -P, --port <port>Porta SSH22
    -o, --ssh-options <opt>Opções SSH adicionais (repetível)-
    --sudoUsar sudo para acesso privilegiado a arquivos (FTDC)false
    -O, --output-dir <path>Diretório para armazenar dados coletados./collected-data
    --log-path <path>Caminho de log remoto para coletar (repetível)Caminhos padrão
    --ftdc-path <path>Caminho do diretório FTDC remoto (repetível)Caminhos padrão
    --skip-logsIgnorar coleta de logsfalse
    --skip-assertsIgnorar coleta de serverStatus().assertsfalse
    --skip-ftdcIgnorar coleta de arquivos FTDCfalse
    --collect-onlyApenas coletar dados, não executar análisefalse
    -j, --parallel <n>Número de conexões paralelas5
    --timeout <seconds>Tempo limite do comando SSH300
    -d, --debugHabilitar saída de depuração (mostrar comandos SSH)false
    -q, --quietSuprimir mensagens de progressofalse

    Códigos de Saída

    CódigoSignificado
    0Nenhum achado ALTO ou MÉDIO
    1Achados ALTO ou MÉDIO detectados
    2Erro (dependências ausentes, sem dados, etc.)

    Níveis de Confiança

    A ferramenta fornece um veredito de confiança combinado com base em todas as evidências disponíveis:

    ConfiançaCritériosInterpretação
    ALTOPicos de FTDC detectados E logs suspeitos na mesma janela de tempoForte indicador de exploração
    MÉDIOPicos de FTDC OU logs suspeitos (não correlacionados)Investigação recomendada
    BAIXOApenas contadores cumulativos de assert sem picosAnomalia detectada, evidência fraca
    INFONenhum achado significativoAtividade normal

    Níveis de Risco Específicos do Módulo

    Para correlação de logs (Módulo A), IPs individuais são classificados:

    RiscoCritérios
    ALTOConexões ≥ limite, taxa de metadados < 10%, taxa de rajada ≥ 400/min
    MÉDIOConexões ≥ limite, taxa de metadados < 10%, taxa de rajada < 400/min
    BAIXOConexões ≥ limite, taxa de metadados ≥ 10%
    INFOConexões < limite

    Exemplo de Saída

    root@kitploit:~
    INFO: Auto-discovery mode: analyzing ./collected-data/
    INFO: Module A: Analyzing 3 log file(s)...
    INFO: Module B1: Analyzing assert-counts...
    
    ╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
    ║                              MongoBleed (CVE-2025-14847) Detection Results                                       ║
    ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
    
    Module Status:
      [✓] Module A (Log Correlation): 3 log file(s) found
      [✓] Module B1 (Assert Counts): 4 snapshot(s) found
      [−] Module B2 (FTDC Spikes): No FTDC files or decoder unavailable
    
    Analysis Parameters:
      Time Window:        4320 minutes
      Connection Thresh:  100
      Burst Rate Thresh:  400/min
      Metadata Rate:      0.10
      Spike Threshold:    100
      User Ratio Thresh:  250x
    
    Module A - Log Correlation Findings:
    
    Risk     SourceIP                                  ConnCount  MetaCount  DiscCount    MetaRate%    BurstRate/m FirstSeen (UTC)        LastSeen (UTC)        
    -------- ---------------------------------------- ---------- ---------- ---------- ------------ -------------- ---------------------- ----------------------
    HIGH     137.137.137.137                                8172          0       8172        0.00%         490.32 2025-12-27T12:55:52Z   2025-12-27T13:12:32Z  
    
    Module B1 - Assert Counts Analysis:
      Analyzed 4 snapshots from 2025-01-01T10:00:00Z to 2025-01-01T11:30:00Z
        asserts.user: 100 -> 860 (delta: 760)
      SPIKE DETECTED: 2025-01-01T10:30:00Z to 2025-01-01T11:00:00Z
        Delta: +740 user asserts (110 -> 850)
    
    ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════
    Combined Verdict:
      MEDIUM CONFIDENCE - Investigation recommended
        - Suspicious connection patterns but FTDC data unavailable for correlation
    
    ⚠ IMPORTANT: If exploitation is confirmed, patching alone is insufficient.
      - Rotate all credentials that may have been exposed
      - Review accessed data for sensitive information disclosure
      - Check for lateral movement from affected systems
      - Preserve logs for forensic analysis
    
    Caveats:
      - Connection metadata absence is PoC-specific and can be evaded
      - Assertion counters are cumulative - false positives possible without baseline
      - FTDC provides timing but not perfect attribution
      - Patch + rotate secrets remains mandatory regardless of detection results
    

    Testes

    O repositório inclui um conjunto de testes para validar o detector.

    Dados de Exemplo do Mundo Real

    O diretório example-data/ contém dados reais de uma instância MongoDB 8.0.16 que foi atacada usando o PoC do MongoBleed:

    root@kitploit:~
    example-data/
    ├── logs/                    # Real MongoDB logs with attack patterns
    │   ├── mongod.log
    │   └── mongod.log.1.gz
    ├── assert-counts/           # Post-attack serverStatus().asserts snapshot
    │   └── asserts-post-attack.json
    └── ftdc-files/              # Real FTDC diagnostic data files
        └── metrics.*
    

    Estes dados mostram:

    • 16.344 conexões do IP do atacante 137.137.137.137 com 0% de metadados
    • 37.384 asserts de usuário acumulados durante o ataque
    • Arquivos FTDC abrangendo a janela do ataque

    Gerar Dados de Teste Sintéticos

    root@kitploit:~
    ./test/generate-test-logs.sh
    

    Isso cria dados de teste sintéticos adicionais com vários padrões:

    • Arquivos de log com padrões de risco ALTO/MÉDIO/BAIXO/INFO
    • Snapshots JSON de contadores de assert (com e sem picos)
    • Casos extremos (IPv6, entrada malformada, etc.)

    Executar Testes

    root@kitploit:~
    ./test/test-detector.sh
    

    Saída esperada:

    root@kitploit:~
    ╔════════════════════════════════════════════════════════╗
    ║       MongoBleed Detector Test Suite                   ║
    ╚════════════════════════════════════════════════════════╝
    
    Module A Tests (Log Correlation):
    ✓ PASS: Exit code is 1 (findings detected)
    ✓ PASS: Detected source IP 137.137.137.137
    ...
    
    Module B1 Tests (Assert Counts):
    ✓ PASS: Shows Module B1 status
    ✓ PASS: Detected assert spike
    ...
    
    Auto-Discovery Mode Tests:
    ✓ PASS: Shows Module A status
    ✓ PASS: Shows combined verdict
    ...
    
    Results:
      Passed: 24
      Failed: 0
    
    All tests passed!
    

    Ressalvas e Limitações

    ⚠️ Limitações Importantes

    Limitações de Detecção

    1. Detecção Específica de PoC: A detecção de ausência de metadados é baseada no comportamento conhecido do PoC do MongoBleed. Um atacante sofisticado poderia modificar o exploit para enviar metadados falsos, embora isso reduzisse a velocidade de exploração.

    2. Contadores Cumulativos: asserts.user é cumulativo desde a reinicialização do mongod. Sem snapshots de linha de base, valores altos podem ser normais para instâncias de longa duração. Múltiplos snapshots ao longo do tempo melhoram significativamente a precisão.

    3. Temporização do FTDC: O FTDC fornece informações de temporização, mas não atribuição perfeita. Use em conjunto com a correlação de logs para melhores resultados.

    4. Retenção de Logs: Só é possível analisar logs que existem. Rotação agressiva ou limpeza de logs pelo atacante destruirá as evidências.

    Requisitos Técnicos

    1. Registro em JSON Obrigatório: MongoDB 4.4+ usa logs JSON por padrão. Logs de texto legados não são suportados.

    2. Decodificador FTDC: A decodificação de FTDC requer Python 3 com pymongo. Sem isso, o Módulo B2 fica indisponível.

    3. Acesso ao mongosh: Coletar contadores de assert requer mongosh com permissões apropriadas.

    Ações Pós-Detecção

    Se achados ALTO ou MÉDIO forem confirmados:

    1. Preservar Evidências - Copie os logs antes que sejam rotacionados
    2. Rotação de Credenciais - Rotacione todas as credenciais do MongoDB e quaisquer segredos que possam ter estado na memória
    3. Revisão de Dados - Avalie quais dados sensíveis podem ter sido expostos
    4. Movimento Lateral - Verifique se o atacante se moveu para outros sistemas
    5. Aplicar Patch Imediatamente - Aplique atualizações de segurança do MongoDB
    6. Relatar - Siga seus procedimentos de resposta a incidentes

    Referências e Créditos

    Pesquisa de Detecção

    A lógica de detecção desta ferramenta é baseada em pesquisa de Eric Capuano e Tamir Zimerman:

    • Caçando MongoBleed (CVE-2025-14847) - Artigo de Eric Capuano sobre a vulnerabilidade e a metodologia de detecção
    • Uma Perspectiva Diferente sobre MongoBleed - Análise de Tamir Zimerman sobre a detecção baseada em asserts

    Documentação do MongoDB

    • Comando serverStatus - documentação do campo asserts
    • Captura de Dados de Diagnóstico em Tempo Integral - locais de armazenamento do FTDC
    • O que é MongoDB FTDC - contexto sobre o formato FTDC

    Versões Afetadas

    VersãoVulnerávelCorrigida Em
    8.2.x8.2.0 - 8.2.28.2.3
    8.0.x8.0.0 - 8.0.168.0.17
    7.0.x7.0.0 - 7.0.277.0.28
    6.0.x6.0.0 - 6.0.266.0.27
    5.0.x5.0.0 - 5.0.315.0.32
    4.4.x4.4.0 - 4.4.294.4.30
    4.2.x4.2.0+Sem correção
    4.0.x4.0.0+Sem correção
    3.6.x3.6.0+Sem correção

    Licença

    Consulte o arquivo LICENSE.

    Contribuição

    Contribuições são bem-vindas! Envie issues e pull requests.

    Se você testar esta ferramenta com dados de produção, apreciaríamos especialmente feedback sobre:

    • Taxas de falsos positivos
    • Padrões de tráfego legítimos
    • Casos extremos ou falhas de parsing
    • Problemas de decodificação de FTDC
    Baixar ferramenta