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
8113há 7 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
22944

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

Opções de Linha de Comando

mongobleed-detector.sh

mongobleed-remote.py

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:

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ÉDIO

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

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
Conexão Fechada
Registrado quando um cliente desconecta
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çã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-
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
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
Conexões ≥ limite, taxa de metadados < 10%, taxa de rajada < 400/min
BAIXOConexões ≥ limite, taxa de metadados ≥ 10%
INFOConexões < limite
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