Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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
SSH-Terrapin-Prefix-Truncation-Weakness-CVE-2023-48795-Checker — Escáner ligero en Python para CVE-2023-48795 (vulnerabilidad de truncamiento de prefijo SSH Terrapin). Realiza captura pasiva de banner y análisis de KEXINIT para detectar combinaciones vulnerables de cifrado/MAC y ausencia de mitigación strict-KEX. | Kitploit
Herramientas/GitHubGitHub/mr-whiskerss/ssh-terrapin-prefix-truncation-weakness-cve-2023-48795-checker
ReconocimientoEscáneres de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad de RedesPruebas de Penetración
GitHubmr-whiskerss/ssh-terrapin-prefix-truncation-weakness-cve-2023-48795-checker

SSH-Terrapin-Prefix-Truncation-Weakness-CVE-2023-48795-Checker

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 →

Escáner ligero en Python para CVE-2023-48795 (vulnerabilidad de truncamiento de prefijo SSH Terrapin). Realiza captura pasiva de banner y análisis de KEXINIT para detectar combinaciones vulnerables de cifrado/MAC y ausencia de mitigación strict-KEX.

Ver Repositorio
116hace 3 mesesAún no revisado
Compartir

terrapin_check.py

Un escáner ligero en Python para CVE-2023-48795 — la vulnerabilidad de truncamiento de prefijo Terrapin en SSH.

Terrapin es una vulnerabilidad a nivel de protocolo en SSH que permite a un atacante realizando un MitM activo truncar la información de extensión negociada, degradando la seguridad de la conexión — lo más crítico es deshabilitar ext-info (usado para algoritmos de firma del servidor) y ping (usado por la extensión no-auth de OpenSSH).


📋 Tabla de Contenidos

  • Acerca de la Vulnerabilidad
  • Cómo Funciona
  • Requisitos
  • Instalación
  • Uso
  • Salida
  • Condiciones Vulnerables
  • Remediación
  • Aviso Legal

Acerca de la Vulnerabilidad

CampoDetalle
CVECVE-2023-48795
CVSS5.9 (Medio)
TipoProtocolo SSH — Truncamiento de Prefijo / Bypass de Integridad
DivulgaciónDiciembre 2023
AfectadosOpenSSH < 9.6, PuTTY < 0.80, libssh < 0.10.6, y muchos otros
Referenciasterrapin-attack.com

La vulnerabilidad existe porque ciertas combinaciones de cifrado/MAC en SSH — específicamente chacha20-poly1305 y cifrados en modo CBC con Encrypt-then-MAC — permiten a un atacante MitM activo inyectar y eliminar números de secuencia SSH durante el handshake, truncando los datos de extensión negociados sin ser detectado.

La solución introdujo una extensión KEX estricta (kex-strict-*[email protected]) que tanto el cliente como el servidor deben anunciar para ser inmunes.


Cómo Funciona

El script realiza solo una captura pasiva de banners y análisis de KEXINIT — sin handshake SSH completo, sin autenticación, sin explotación:

  1. Abre una conexión TCP al puerto SSH objetivo
  2. Intercambia los banners de identificación SSH
  3. Recibe y analiza el paquete SSH_MSG_KEXINIT del servidor
  4. Inspecciona las listas de nombres de algoritmos anunciadas en busca de combinaciones vulnerables
  5. Comprueba la extensión de mitigación KEX estricta
  6. Cierra la conexión

Debido a que la verificación ocurre completamente dentro de la fase de intercambio de claves, es no intrusiva y no deja rastro significativo más allá de un intento de conexión TCP normal.


Requisitos

  • Python 3.8+
  • Sin dependencias de terceros — solo stdlib (socket, struct, argparse, concurrent.futures)

Instalación

git clone https://github.com/Mr-Whiskerss/terrapin_check
cd terrapin_check
chmod +x terrapin_check.py

Uso

Host único

python3 terrapin_check.py <host> [puerto]
python3 terrapin_check.py 192.168.1.10
python3 terrapin_check.py 192.168.1.10 2222

Escaneo masivo desde archivo

Un objetivo por línea — acepta formato host o host:puerto.

python3 terrapin_check.py -f targets.txt
python3 terrapin_check.py -f targets.txt --threads 20 --timeout 3

Salida solo resumen (útil para escaneos grandes)

python3 terrapin_check.py -f targets.txt --summary

Opciones completas

usage: terrapin_check.py [-h] [-f FILE] [-p PORT] [--threads THREADS] [--timeout TIMEOUT] [--summary] [host] [port]

positional arguments:
  host                  Host objetivo
  port                  Puerto SSH (por defecto: 22)

options:
  -h, --help            Muestra este mensaje de ayuda y sale
  -f, --file FILE       Archivo que contiene hosts (host o host:puerto por línea)
  -p, --port-flag PORT  Puerto predeterminado al usar -f (por defecto: 22)
  --threads THREADS     Hilos concurrentes para escaneo masivo (por defecto: 10)
  --timeout TIMEOUT     Tiempo de espera del socket en segundos (por defecto: 5.0)
  --summary             Imprime solo una línea de resumen por host

Códigos de salida

CódigoSignificado
0No se encontraron hosts vulnerables
1Uno o más hosts vulnerables detectados

Esto permite usar el script limpiamente en pipelines y flujos de trabajo automatizados.


Salida

Host único (detallado)

────────────────────────────────────────────────────────────
  Objetivo : 192.168.1.10:22
  Banner   : SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
  Estado   : VULNERABLE

  KEX Estricto : No
  ✗ ChaCha20-Poly1305 anunciado → posible truncamiento de prefijo
  ✗ Combinación CBC+ETM anunciada
      Cifrados CBC : aes128-cbc, aes256-cbc
      MACs ETM    : [email protected], [email protected]

  Algoritmos KEX:
    curve25519-sha256
    ecdh-sha2-nistp256
    diffie-hellman-group14-sha256
────────────────────────────────────────────────────────────

Escaneo masivo (resumen)

  [VULN]  192.168.1.10:22                  VULNERABLE (CVE-2023-48795)
  [SAFE]  192.168.1.20:22                  No vulnerable
  [MIT]   192.168.1.30:22                  Algoritmos presentes pero KEX estricto mitiga
  [?]     192.168.1.99:22                  ERROR: Conexión rechazada

Condiciones Vulnerables

El script marca un host como VULNERABLE si cualquiera de las siguientes condiciones es verdadera, y la extensión KEX estricta no está anunciada:

1. ChaCha20-Poly1305

El servidor anuncia [email protected] en cualquier dirección de cifrado.

2. Combinación de cifrado CBC + MAC ETM

El servidor anuncia cualquier cifrado en modo CBC y cualquier MAC ETM juntos:

Cifrados CBC verificados: aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, idea-cbc, arcfour, arcfour128, arcfour256, [email protected]

MACs ETM verificadas: [email protected], [email protected], [email protected], [email protected], y variantes

Mitigación — KEX Estricto

Si el servidor anuncia [email protected] en su lista de algoritmos KEX, la conexión está protegida independientemente de los cifrados y MACs ofrecidos. En ese caso, el script reportará MITIGADO en lugar de VULNERABLE.


Remediación

AcciónDetalle
Actualizar OpenSSHActualizar a ≥ 9.6 tanto en cliente como en servidor. KEX estricto está habilitado por defecto.
Parchear otras implementacionesPuTTY ≥ 0.80, libssh ≥ 0.10.6, Paramiko ≥ 3.4.0, AsyncSSH ≥ 2.14.2
Eliminar algoritmos vulnerablesSi no es posible actualizar de inmediato, eliminar chacha20-poly1305 y cifrados CBC + MACs ETM de sshd_config:
# /etc/ssh/sshd_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
MACs hmac-sha2-256,hmac-sha2-512

La eliminación de algoritmos reduce la agilidad de cifrado. Actualizar es siempre la remediación preferida.


Aviso Legal

Esta herramienta está destinada únicamente para evaluaciones de seguridad autorizadas. Úsala solo contra sistemas que poseas o para los que tengas permiso explícito por escrito para realizar pruebas. El autor no acepta responsabilidad por mal uso.


Parte del kit de herramientas de pentesting de Mr-Whiskerss.

Descargar herramienta