John the Ripper para Escenarios de Pruebas de Penetración

Kali LinuxBeginner
Practicar Ahora

Introducción

Bienvenido a este laboratorio sobre el uso de John the Ripper (JtR) en escenarios de pruebas de penetración. John the Ripper es una herramienta potente y popular de código abierto para descifrar contraseñas. Para un probador de penetración, es una utilidad esencial para identificar y explotar contraseñas débiles, que siguen siendo una de las vulnerabilidades de seguridad más comunes.

En este laboratorio, aprenderá a integrar JtR en un flujo de trabajo típico de pentesting. Comenzará descifrando la contraseña de un usuario a partir de un archivo shadow capturado, utilizará esa información en un contexto de escalada de privilegios y luego aplicará JtR para descifrar la contraseña de un archivo protegido. Finalmente, aprenderá los pasos cruciales para documentar e informar sus hallazgos a las partes interesadas.

Integrar John the Ripper en un Flujo de Trabajo de Pentesting

En este paso, realizará la primera fase de un ataque de contraseñas: descifrar hashes obtenidos durante la fase de reconocimiento. Un objetivo común para la escalada de privilegios local es el archivo /etc/shadow, que almacena los hashes de contraseñas de los usuarios en sistemas Linux. Ya hemos simulado esto proporcionando un archivo shadow.txt en su directorio ~/project.

Primero, ejecutemos John the Ripper contra el archivo shadow.txt utilizando una lista de palabras personalizada. Una lista de palabras es simplemente un archivo de texto que contiene posibles contraseñas.

Ejecute el siguiente comando para iniciar el proceso de descifrado:

john --wordlist=wordlist.txt shadow.txt

John cargará los hashes y probará cada contraseña de wordlist.txt contra ellos. Dado que la contraseña de weakuser está en nuestra lista de palabras, se descifrará rápidamente.

Using default input encoding: UTF-8
Loaded 1 password hash (sha512, 512/512 AVX512BW 16x)
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (weakuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Una vez que se descifra una contraseña, John la almacena en un archivo llamado john.pot ubicado en el directorio ~/.john/. Para ver las contraseñas descifradas para un archivo de hash específico, puede usar la opción --show.

Ejecute este comando para mostrar la contraseña descifrada:

john --show shadow.txt

Verá el nombre de usuario y la contraseña descifrada.

weakuser:password123:19657:0:99999:7:::

1 password hash cracked, 0 left

Ha descifrado con éxito la contraseña del usuario, un primer paso crítico en muchas pruebas de penetración.

Usar John the Ripper para Escalada de Privilegios Local

En este paso, aprenderá cómo se puede usar una contraseña descifrada para escalar privilegios. Después de descifrar la contraseña de weakuser, el siguiente paso lógico es ver qué acceso proporciona esta cuenta. Si weakuser tiene privilegios de sudo o acceso a archivos sensibles, puede obtener más control sobre el sistema.

Simulemos esto intentando cambiar a la cuenta weakuser utilizando la contraseña que acaba de descifrar (password123).

Use el comando su (substitute user) para cambiar a weakuser:

su weakuser

El sistema le pedirá una contraseña. Ingrese password123 y presione Enter.

Password:

Si la contraseña es correcta, su indicador de comandos cambiará, indicando que ahora está operando como weakuser.

weakuser@...:/home/labex/project$

En una prueba de penetración real, ahora exploraría el sistema desde la perspectiva de este usuario, por ejemplo, ejecutando sudo -l para verificar los derechos de sudo. Para este laboratorio, basta con demostrar que puede acceder a la cuenta.

Ahora, escriba exit para volver a su shell de usuario labex original.

exit

Este ejercicio demuestra el impacto directo de una contraseña débil: puede conducir a un acceso no autorizado a la cuenta, lo que es un trampolín para un mayor compromiso del sistema.

Aplicar John the Ripper en Pruebas de Penetración de Red

En este paso, verá cómo la versatilidad de John the Ripper se extiende más allá de los hashes de contraseñas del sistema. Los pentesters a menudo encuentran archivos protegidos por contraseña, como archivos ZIP, en recursos compartidos de archivos o durante la post-explotación. JtR también puede descifrarlos.

Hemos proporcionado un archivo protegido por contraseña llamado protected.zip en su directorio ~/project. El proceso consta de dos etapas: primero, extraer un hash descifrable del archivo y, segundo, usar John para descifrar ese hash.

Muchas herramientas relacionadas con JtR ayudan a extraer hashes de diferentes tipos de archivos. Para archivos ZIP, usamos zip2john. Ejecute el siguiente comando para extraer el hash de protected.zip y guardarlo en un archivo llamado zip_hash.txt:

zip2john protected.zip > zip_hash.txt

Puede ver el contenido de zip_hash.txt para ver cómo se ve el hash.

cat zip_hash.txt

Ahora, ejecute John the Ripper en este nuevo archivo de hash. Esta vez, no especificaremos una lista de palabras y dejaremos que John use sus modos predeterminados, que incluyen un modo de descifrado único que prueba variaciones comunes de contraseñas.

john zip_hash.txt

John debería descifrar la contraseña muy rápidamente.

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP, 32/64)
Cost 1 (iteration count) is 1000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
supersecret      (protected.zip)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12345p/s 12345c/s 12345C/s supersecret
Session completed

Al igual que antes, use la opción --show para ver la contraseña descifrada para el archivo ZIP.

john --show zip_hash.txt
protected.zip:supersecret

1 password hash cracked, 0 left

Ha recuperado con éxito la contraseña del archivo ZIP, lo que demuestra cómo JtR se puede aplicar a diferentes tipos de datos encontrados durante una prueba de penetración.

Documentar Hallazgos de Ataques con John the Ripper

En este paso, se centrará en un aspecto crítico y no técnico de las pruebas de penetración: la documentación. Simplemente encontrar vulnerabilidades no es suficiente; debe documentarlas claramente para que puedan ser corregidas. Un buen informe detalla la vulnerabilidad, su impacto y una recomendación para su remediación.

Ahora creará un informe de hallazgos simple en un archivo markdown. Use el editor de texto nano para crear un archivo llamado findings.md.

nano findings.md

Dentro del editor nano, copie y pegue el siguiente texto. Esta plantilla documenta las dos vulnerabilidades que ha descubierto hasta ahora.

## Hallazgos de Prueba de Penetración - Contraseñas Débiles

### Hallazgo 1: Contraseña Débil de Cuenta de Usuario

- **Vulnerabilidad:** Contraseña débil para el usuario `weakuser`.
- **Contraseña:** `password123`
- **Impacto:** Potencial de escalada de privilegios local y acceso no autorizado al sistema.
- **Recomendación:** Implementar una política de contraseñas robusta que exija complejidad y longitud. Restablecer la contraseña de `weakuser`.

### Hallazgo 2: Contraseña Débil en Archivo Protegido

- **Vulnerabilidad:** Contraseña débil para el archivo `protected.zip`.
- **Contraseña:** `supersecret`
- **Impacto:** Los datos sensibles dentro del archivo quedan expuestos a cualquiera que encuentre el archivo.
- **Recomendación:** Utilizar contraseñas fuertes y complejas para todos los archivos y archivos cifrados.

Después de pegar el texto, guarde el archivo y salga de nano presionando Ctrl+X, luego Y, y finalmente Enter.

Ahora ha creado un registro claro y conciso de sus hallazgos, que es una parte esencial de cualquier prueba de penetración profesional.

Informar Contraseñas Débiles a las Partes Interesadas

En este paso final, practicará la creación de un resumen de alto nivel adecuado para las partes interesadas, como administradores de sistemas o la gerencia. Si bien el documento de hallazgos detallado es para equipos técnicos, un informe resumen comunica el riesgo y la necesidad de acción de una manera más directa.

Creará un archivo de texto simple llamado report_summary.txt que simula un correo electrónico o un resumen de informe.

Use el editor nano para crear el archivo:

nano report_summary.txt

Dentro del editor nano, copie y pegue el siguiente resumen. Este texto comunica de manera clara y concisa el problema y la acción requerida.

To: Administrador del Sistema
From: Probador de Penetración
Subject: Vulnerabilidad Crítica: Se Detectaron Contraseñas Débiles

Este informe resume las vulnerabilidades críticas de contraseñas descubiertas durante la reciente prueba de penetración.

1. El usuario 'weakuser' tiene una contraseña descifrable ('password123'), lo que representa un riesgo de escalada de privilegios.
2. Un archivo protegido 'protected.zip' utiliza una contraseña débil ('supersecret'), exponiendo su contenido.

Se requiere acción inmediata para hacer cumplir una política de contraseñas más sólida y restablecer las contraseñas débiles identificadas.

Guarde el archivo y salga de nano presionando Ctrl+X, luego Y, y Enter.

Esto finaliza el flujo de trabajo de prueba de penetración para este escenario. No solo ha identificado y explotado vulnerabilidades, sino que también ha documentado y preparado un informe para garantizar que se aborden. Esto completa el ciclo desde el descubrimiento hasta la remediación.

Resumen

¡Felicitaciones por completar este laboratorio! Ha recorrido con éxito un flujo de trabajo realista de pruebas de penetración utilizando John the Ripper.

En este laboratorio, aprendió a:

  • Integrar John the Ripper en un proceso de pentesting descifrando hashes de un archivo shadow.
  • Utilizar una contraseña descifrada para simular un intento de escalada de privilegios local.
  • Aplicar JtR a diferentes tipos de datos descifrando la contraseña de un archivo ZIP protegido.
  • Comprender la importancia crítica de documentar sus hallazgos de manera clara y estructurada.
  • Crear un informe resumen para comunicar eficazmente las vulnerabilidades a las partes interesadas.

Estas habilidades son fundamentales para cualquier profesional de la ciberseguridad involucrado en hacking ético y auditoría de seguridad.