Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
mongobleed-detector — Script de detección para la explotación de MongoBleed | Kitploit
Herramientas/GitHubGitHub/neo23x0/mongobleed-detector
Análisis de VulnerabilidadesScripting y AutomatizaciónAnálisis ForenseForensia DigitalInteligencia de AmenazasRespuesta a IncidentesSeguridad de Bases de DatosAnálisis de Registros
GitHubneo23x0/mongobleed-detector

mongobleed-detector

Script de detección para la explotación de MongoBleed

Ver Repositorio
8113hace 7 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Detector MongoBleed

Herramienta de análisis offline de MongoDB para CVE-2025-14847 (MongoBleed)

Una herramienta independiente de línea de comandos para Linux que analiza datos de MongoDB para identificar una posible explotación de CVE-2025-14847 mediante múltiples módulos de detección.

Tabla de contenidos

  • Resumen
  • Módulos de detección
  • Requisitos
  • Instalación
  • Dos modos de operación
  • Modo 1: Análisis local
  • Modo 2: Recopilación remota
  • Opciones de línea de comandos
  • Niveles de confianza
  • Ejemplo de salida
  • Pruebas
  • Advertencias y limitaciones
  • Referencias y créditos
  • Licencia

Resumen

MongoBleed (CVE-2025-14847) es una vulnerabilidad de divulgación de memoria en la descompresión zlib de MongoDB que permite a los atacantes extraer datos sensibles (credenciales, tokens de sesión, PII) directamente de la memoria del servidor sin autenticación.

Esta herramienta ayuda a los respondedores de incidentes a detectar intentos de explotación mediante múltiples fuentes de evidencia:

  • Módulo A: Correlación de registros (eventos de conexión, ausencia de metadatos)
  • Módulo B1: Análisis de contadores de aserciones (instantáneas de serverStatus.asserts)
  • Módulo B2: Detección de picos en FTDC (series temporales de diagnostic.data)

Características principales

  • Detección multimódulo: correlaciona múltiples fuentes de datos para mayor confianza
  • Offline y sin agente: no requiere conectividad de red durante el análisis
  • Autodescubrimiento: detecta automáticamente las fuentes de datos disponibles
  • Recopilación remota: recopila datos de múltiples hosts mediante SSH
  • Puntuación combinada: veredictos de confianza ALTA/MEDIA/BAJA
  • Procesamiento en streaming: maneja archivos de registro grandes de forma eficiente

Módulos de detección

Módulo A: Correlación de registros

Analiza los registros JSON de MongoDB para detectar patrones de explotación:

ID de eventoTipoDescripción
22943Conexión aceptadaSe registra cuando un cliente se conecta
51800Metadatos del clienteSe registra cuando un cliente envía información de driver/aplicación

Información clave: los drivers legítimos de MongoDB siempre envían metadatos del cliente. El exploit MongoBleed se conecta, extrae memoria y se desconecta, pero nunca envía metadatos.

Módulo B1: Contadores de aserciones

Analiza instantáneas de db.serverStatus().asserts para detectar patrones inusuales en los contadores de asserts.user:

  • Múltiples instantáneas: compara instantáneas a lo largo del tiempo para detectar picos repentinos en aserciones de usuario
  • Heurística de instantánea única: cuando solo hay una instantánea disponible, detecta patrones sospechosos comparando asserts.user con otros tipos de aserciones. Si las aserciones de usuario son desproporcionadamente altas (proporción ≥250x) o todos los demás tipos son cero, lo marca como sospechoso (confianza MEDIA)

Nota: los contadores acumulativos pueden producir falsos positivos. Úselo en combinación con FTDC (módulo B2) para obtener los mejores resultados.

Módulo B2: Detección de picos en FTDC

Analiza los archivos de captura de datos de diagnóstico de tiempo completo (FTDC) de MongoDB para detectar picos localizados en el tiempo en los contadores de aserciones. FTDC muestrea serverStatus periódicamente, lo que permite una sincronización precisa de posibles ataques.

Requisitos

Script de shell (mongobleed-detector.sh)

  • Linux o macOS (bash 4+)
  • jq: procesador JSON
  • awk (se recomienda gawk)
  • gzip: para soporte de registros comprimidos

Componentes de Python (opcionales, para decodificación FTDC)

  • Python 3.8+
  • pymongo: para decodificación de archivos FTDC

Escáner remoto (mongobleed-remote.py)

  • Python 3.8+
  • Cliente SSH nativo (comandos ssh, scp)
  • No se requieren paquetes adicionales de Python para el funcionamiento básico

Instalar dependencias

root@kitploit:~
# Dependencias del script de shell
# Debian/Ubuntu
apt-get install jq gawk gzip

# RHEL/CentOS/Fedora
dnf install jq gawk gzip

# macOS
brew install jq gawk

# Dependencias de Python (para decodificación FTDC)
pip install -r requirements.txt

Instalación

root@kitploit:~
# Clonar el repositorio
git clone https://github.com/your-org/mongobleed-detector.git
cd mongobleed-detector

# Hacer ejecutables los scripts
chmod +x mongobleed-detector.sh
chmod +x mongobleed-remote.py
chmod +x ftdc-decode.py

# Instalar dependencias de Python (opcional, para soporte FTDC)
pip install -r requirements.txt

Dos modos de operación

Modo 1: Análisis local

Analice datos que se hayan recopilado manualmente de los hosts de MongoDB.

Modo 2: Recopilación remota

Recopile automáticamente datos de múltiples hosts mediante SSH y luego analícelos localmente.

Modo 1: Análisis local

Paso 1: Recopilar datos

Recopile datos de sus hosts de MongoDB y organícelos en esta estructura:

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

Recopilar registros

root@kitploit:~
# Copiar desde el host remoto
scp user@mongohost:/var/log/mongodb/mongod.log* ./collected-data/logs/

Recopilar contadores de aserciones

Ejecute este comando en el host de MongoDB (requiere acceso a 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 el archivo JSON resultante a ./collected-data/assert-counts/.

Consejo: ejecute este comando varias veces (por ejemplo, cada hora) para establecer una línea base y detectar picos.

Recopilar archivos FTDC

Los archivos FTDC se encuentran en:

  • mongod: <storage.dbPath>/diagnostic.data/ (comúnmente /var/lib/mongodb/diagnostic.data/)
  • mongos: derivado de systemLog.path (p. ej., /var/log/mongodb/mongos.diagnostic.data/)
root@kitploit:~
# Copiar archivos FTDC (puede requerir sudo)
sudo cp /var/lib/mongodb/diagnostic.data/metrics.* ./collected-data/ftdc-files/

Paso 2: Ejecutar el análisis

root@kitploit:~
# Modo de autodescubrimiento: analiza todos los datos disponibles
./mongobleed-detector.sh --data-dir ./collected-data/

# Con umbrales personalizados
./mongobleed-detector.sh --data-dir ./collected-data/ \
    -t 1440 \              # Ventana de retroceso de 24 horas
    -c 50 \                # Umbral de conexión más bajo
    --spike-threshold 50   # Umbral de pico más bajo

Modo heredado (solo registros)

Para compatibilidad con versiones anteriores, aún puede analizar registros directamente:

root@kitploit:~
# Escanear rutas predeterminadas
./mongobleed-detector.sh

# Escanear archivos de registro específicos
./mongobleed-detector.sh -p /path/to/logs/*.json

# Modo forense (analizar múltiples hosts)
./mongobleed-detector.sh --forensic-dir /evidence/

Modo 2: Recopilación remota

Recopile automáticamente datos de múltiples hosts y analícelos:

root@kitploit:~
# Crear archivo de hosts
cat > hosts.txt << EOF
mongo-prod-01.example.com
mongo-prod-02.example.com
mongo-staging.example.com
EOF

# Recopilar y analizar
./mongobleed-remote.py --hosts-file hosts.txt --user admin --output-dir ./collected-data/

Opciones del escáner remoto

root@kitploit:~
# Usar una clave SSH específica
./mongobleed-remote.py --hosts-file hosts.txt --user admin --key ~/.ssh/mongodb_key

# Ejecución en paralelo
./mongobleed-remote.py --hosts-file hosts.txt --user admin --parallel 10

# Omitir recopilación de FTDC (más rápido)
./mongobleed-remote.py --hosts-file hosts.txt --user admin --skip-ftdc

# Solo recopilar, analizar más tarde
./mongobleed-remote.py --hosts-file hosts.txt --user admin --collect-only

# Pasar opciones SSH (p. ej., host de salto)
./mongobleed-remote.py --hosts-file hosts.txt --user admin \
    -o "ProxyJump=bastion.example.com"

# Usar sudo para acceso a archivos privilegiados (los archivos FTDC suelen estar restringidos)
./mongobleed-remote.py --hosts-file hosts.txt --user admin --sudo

# Modo de depuración para solucionar problemas de conexión
./mongobleed-remote.py --hosts-file hosts.txt --user admin --debug

Nota sobre permisos de FTDC: los archivos FTDC en /var/lib/mongodb/diagnostic.data/ generalmente pertenecen al usuario mongodb y no son legibles por usuarios normales. Si ve advertencias de "Problemas de permisos de FTDC", use la opción --sudo. Esto requiere que el usuario remoto tenga acceso sudo sin contraseña (NOPASSWD en sudoers).

Qué se recopila

Opciones de línea de comandos

mongobleed-detector.sh

mongobleed-remote.py

Códigos de salida

CódigoSignificado
0No se encontraron hallazgos ALTOS o MEDIOS
1Se detectaron hallazgos ALTOS o MEDIOS
2Error (dependencias faltantes, sin datos, etc.)

Niveles de confianza

La herramienta proporciona un veredicto de confianza combinado basado en toda la evidencia disponible:

Niveles de riesgo específicos por módulo

Para la correlación de registros (módulo A), las IP individuales se clasifican:

RiesgoCriterios
ALTOConexiones ≥ umbral, tasa de metadatos < 10 %, tasa de ráfaga ≥ 400/min

Ejemplo de salida

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

Pruebas

El repositorio incluye un conjunto de pruebas para validar el detector.

Datos de ejemplo del mundo real

El directorio example-data/ contiene datos reales de una instancia de MongoDB 8.0.16 que fue atacada usando el PoC de MongoBleed:

root@kitploit:~
example-data/
├── logs/                    # Registros reales de MongoDB con patrones de ataque
│   ├── mongod.log
│   └── mongod.log.1.gz
├── assert-counts/           # Instantánea de serverStatus().asserts posterior al ataque
│   └── asserts-post-attack.json
└── ftdc-files/              # Archivos reales de datos de diagnóstico FTDC
    └── metrics.*

Estos datos muestran:

  • 16 344 conexiones desde la IP del atacante 137.137.137.137 con 0 % de metadatos
  • 37 384 aserciones de usuario acumuladas durante el ataque
  • Archivos FTDC que abarcan la ventana del ataque

Generar datos de prueba sintéticos

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

Esto crea datos de prueba sintéticos adicionales con varios patrones:

  • Archivos de registro con patrones de riesgo ALTO/MEDIO/BAJO/INFO
  • Instantáneas JSON de contadores de aserciones (con y sin picos)
  • Casos límite (IPv6, entrada malformada, etc.)

Ejecutar pruebas

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

Salida 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!

Advertencias y limitaciones

⚠️ Limitaciones importantes

Limitaciones de detección

  1. Detección específica del PoC: la detección de ausencia de metadatos se basa en el comportamiento conocido del PoC de MongoBleed. Un atacante sofisticado podría modificar el exploit para enviar metadatos falsos, aunque esto reduciría la velocidad de explotación.

  2. Contadores acumulativos: asserts.user es acumulativo desde el reinicio de mongod. Sin instantáneas de línea base, los valores altos pueden ser normales en instancias de larga duración. Múltiples instantáneas a lo largo del tiempo mejoran significativamente la precisión.

  3. Tiempo de FTDC: FTDC proporciona información de tiempo, pero no una atribución perfecta. Úselo junto con la correlación de registros para obtener los mejores resultados.

  4. Retención de registros: solo se pueden analizar los registros que existen. Una rotación agresiva o la eliminación de registros por parte del atacante destruirá la evidencia.

Requisitos técnicos

  1. Registro JSON requerido: MongoDB 4.4+ usa registros JSON de forma predeterminada. Los registros de texto heredados no son compatibles.

  2. Decodificador FTDC: la decodificación de FTDC requiere Python 3 con pymongo. Sin esto, el módulo B2 no está disponible.

  3. Acceso a mongosh: recopilar contadores de aserciones requiere mongosh con los permisos adecuados.

Acciones posteriores a la detección

Si se confirman hallazgos ALTOS o MEDIOS:

  1. Preserve la evidencia: copie los registros antes de que roten
  2. Rotación de credenciales: rote todas las credenciales de MongoDB y cualquier secreto que pueda haber estado en memoria
  3. Revisión de datos: evalúe qué datos sensibles pueden haber quedado expuestos
  4. Movimiento lateral: verifique si el atacante se movió a otros sistemas
  5. Aplique el parche de inmediato: aplique las actualizaciones de seguridad de MongoDB
  6. Informe: siga sus procedimientos de respuesta a incidentes

Referencias y créditos

Investigación sobre detección

La lógica de detección de esta herramienta se basa en la investigación de Eric Capuano y Tamir Zimerman:

  • Hunting MongoBleed (CVE-2025-14847): artículo de Eric Capuano sobre la vulnerabilidad y la metodología de detección
  • A Different MongoBleed Perspective: análisis de Tamir Zimerman sobre la detección basada en aserciones

Documentación de MongoDB

  • serverStatus Command: documentación del campo asserts
  • Full Time Diagnostic Data Capture: ubicaciones de almacenamiento de FTDC
  • What is MongoDB FTDC: antecedentes del formato FTDC

Versiones afectadas

Licencia

Consulte el archivo LICENSE.

Contribuciones

¡Las contribuciones son bienvenidas! Envíe problemas (issues) y solicitudes de extracción (pull requests).

Si prueba esta herramienta con datos de producción, agradeceremos especialmente comentarios sobre:

  • Tasas de falsos positivos
  • Patrones de tráfico legítimo
  • Casos límite o fallos de análisis
  • Problemas de decodificación de FTDC
Descargar herramienta
22944Conexión cerradaSe registra cuando un cliente se desconecta
Tipo de datosOrigenDestino
Registros/var/log/mongodb/mongod.log*<output-dir>/<hostname>/logs/
Contadores de asercionescomando mongosh<output-dir>/<hostname>/assert-counts/
Archivos FTDC/var/lib/mongodb/diagnostic.data/metrics.*<output-dir>/<hostname>/ftdc-files/
OpciónDescripciónPredeterminado
-d, --data-dir <ruta>Directorio con datos recopilados (modo de autodescubrimiento)-
-p, --path <glob>Ruta/glob de registro adicional (repetible)-
-t, --time <minutos>Ventana de retroceso en minutos4320 (3 días)
-c, --conn-thresholdUmbral de cantidad de conexiones100
-b, --burst-thresholdUmbral de tasa de ráfaga por minuto400
-m, --metadata-rateUmbral de tasa de metadatos (0.0-1.0)0.10
--spike-thresholdUmbral de pico de aserciones100
--user-ratio-thresholdProporción de aserciones de usuario/otras para detección de instantánea única250
--no-default-pathsOmitir rutas de registro predeterminadasfalse
--forensic-dir <ruta>Analizar subdirectorios como hosts separados-
OpciónDescripciónPredeterminado
-H, --host <hostname>Host remoto a escanear (repetible)-
-f, --hosts-file <archivo>Archivo que contiene nombres de host (uno por línea)-
-u, --user <usuario>Nombre de usuario SSHUsuario actual
-k, --key <archivo>Archivo de clave privada SSHssh-agent
-P, --port <puerto>Puerto SSH22
-o, --ssh-options <opción>Opciones SSH adicionales (repetible)-
--sudoUsar sudo para acceso a archivos privilegiados (FTDC)false
-O, --output-dir <ruta>Directorio para almacenar los datos recopilados./collected-data
--log-path <ruta>Ruta de registro remoto a recopilar (repetible)Rutas estándar
--ftdc-path <ruta>Ruta del directorio FTDC remoto (repetible)Rutas estándar
--skip-logsOmitir recopilación de registrosfalse
--skip-assertsOmitir recopilación de serverStatus().assertsfalse
--skip-ftdcOmitir recopilación de archivos FTDCfalse
--collect-onlySolo recopilar datos, no ejecutar análisisfalse
-j, --parallel <n>Número de conexiones paralelas5
--timeout <segundos>Tiempo de espera de comandos SSH300
-d, --debugHabilitar salida de depuración (mostrar comandos SSH)false
-q, --quietSuprimir mensajes de progresofalse
ConfianzaCriteriosInterpretación
ALTAPicos de FTDC detectados Y registros sospechosos en la misma ventana de tiempoFuerte indicador de explotación
MEDIAPicos de FTDC O registros sospechosos (no correlacionados)Se recomienda investigación
BAJASolo contadores de aserciones acumulativos sin picosAnomalía detectada, evidencia débil
INFOSin hallazgos significativosActividad normal
MEDIO
Conexiones ≥ umbral, tasa de metadatos < 10 %, tasa de ráfaga < 400/min
BAJOConexiones ≥ umbral, tasa de metadatos ≥ 10 %
INFOConexiones < umbral
VersiónVulnerableCorregida en
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+Sin corrección
4.0.x4.0.0+Sin corrección
3.6.x3.6.0+Sin corrección