Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe – John the Ripper: The Basics

TryHackMe – John the Ripper: The Basics

Hola hacketones! Bienvenidos a un nuevo CTF para la Certificación SEC1 de la ruta Cyber Security 101 de TryHackMe –  John the Ripper: The Basics

John the Ripper es una herramienta de descifrado de hashes muy conocida, apreciada y versátil. Combina una alta velocidad de descifrado con una extraordinaria gama de tipos de hashes compatibles.

Requisitos previos de aprendizaje

Para obtener el máximo beneficio, le recomendamos que intente esta sala después de las primeras tres salas introductorias sobre criptografía.

No hay otros requisitos de aprendizaje excepto habilidades básicas de línea de comandos.

Objetivos de aprendizaje

Al completar esta sala, aprenderá a utilizar a John para:

  • Descifrado de hashes de autenticación de Windows
  • /etc/shadowHashes de crack
  • Descifrado de archivos Zip protegidos con contraseña
  • Descifrado de archivos RAR protegidos con contraseña
  • Descifrando claves SSH

A partir de la Tarea 4, debe aplicarla en la máquina virtual conectada , en AttackBox o en su propio sistema. Para su comodidad, puede descargar los archivos de la tarea como un único archivo ZIP desde esta tarea haciendo clic en el botón «Descargar archivos de tarea» a continuación.

Tarea 2 Términos básicos

Esta sala requiere conocimientos básicos de diversos términos criptográficos. Para su comodidad, repasamos los términos y conceptos más relevantes antes de pasar al descifrado práctico de hashes.

¿Qué son los hashes?

Un hash es una forma de tomar un dato de cualquier longitud y representarlo en otra forma de longitud fija. Este proceso enmascara el valor original de los datos. El valor hash se obtiene al ejecutar los datos originales mediante un algoritmo hash. Existen muchos algoritmos hash populares, como MD4, MD5 , SHA1 y NTLM . Intentemos demostrarlo con un ejemplo:

Si tomamos “polo”, una cadena de cuatro caracteres, y la ejecutamos a través de un algoritmo hash MD5 , terminamos con una salida de , un hash MD5b53759f3ce692de7aff1b5779d3964da estándar de 32 caracteres .

Del mismo modo, si tomamos “polomints”, una cadena de 9 caracteres, y la ejecutamos a través del mismo algoritmo hash MD5 , terminamos con una salida de , otro hash MD5584b6e4f4586e136bc280f27f9c64f3b estándar de 32 caracteres .

¿Qué hace que los hashes sean seguros?

Las funciones hash están diseñadas como funciones unidireccionales. En otras palabras, es fácil calcular el valor hash de una entrada dada; sin embargo, encontrar la entrada original dado dicho valor es un problema complejo. En resumen, un problema complejo se vuelve rápidamente inviable computacionalmente en informática. Este problema computacional tiene sus raíces en las matemáticas, como P vs. NP.

En informática, P y NP son dos clases de problemas que nos ayudan a comprender la eficiencia de los algoritmos:

  • P (Tiempo Polinomial) : La clase P abarca los problemas cuya solución se puede encontrar en tiempo polinomial. Considere ordenar una lista en orden creciente. Cuanto más larga sea la lista, más tiempo tardará en ordenarse; sin embargo, el incremento en el tiempo no es exponencial.
  • NP (Tiempo Polinomial No Determinista) : Los problemas de la clase NP son aquellos cuya solución se puede comprobar rápidamente, aunque encontrarla en sí misma pueda ser difícil. De hecho, desconocemos si existe un algoritmo rápido para encontrar la solución.

Si bien este es un concepto matemático fascinante, fundamental para la informática y la criptografía, queda completamente fuera del alcance de esta sala. En abstracto, el algoritmo para aplicar el hash al valor será «P» y, por lo tanto, puede calcularse razonablemente. Sin embargo, un algoritmo de «deshacer el hash» sería «NP» e insoluble, lo que significa que no puede calcularse en un tiempo razonable con computadoras estándar.

Donde entra John

Aunque el algoritmo no sea reversible, no significa que sea imposible descifrar los hashes. Si, por ejemplo, tienes la versión hasheada de una contraseña y conoces el algoritmo, puedes usarlo para descifrar un gran número de palabras, lo que se conoce como diccionario. Luego, puedes comparar estos hashes con el que intentas descifrar para ver si coinciden. Si es así, sabrás qué palabra corresponde a ese hash: ¡lo has descifrado!

Este proceso se llama ataque de diccionario y John the Ripper , o John como se lo abrevia comúnmente, es una herramienta para realizar ataques rápidos de fuerza bruta en varios tipos de hash.

Aprendiendo más

Para obtener material más detallado sobre cifrado y descifrado, recomendamos las salas Conceptos básicos de criptografía y Conceptos básicos de criptografía de clave pública ; además, para hash, recomendamos la sala Conceptos básicos de hash .

Esta sala se centrará en la versión extendida más popular de John el Destripador , Jumbo John .

Responda las preguntas a continuación

¿Cuál es la versión extendida más popular de Juan el Destripador?

Jumbo John

Tarea 3 Configuración de su sistema

A lo largo de las tareas de esta sala, utilizaremos lo siguiente:

  • La versión “Jumbo John” de Juan el Destripador
  • La lista de contraseñas de RockYou

Si usa la máquina virtual adjunta o AttackBox, no necesita instalar John the Ripper en su sistema. Por lo tanto, puede omitir la sección de instalación. Si prefiere usar su sistema para continuar, siga leyendo para aprender cómo proceder con la instalación. Cabe destacar que si usa una versión de John the Ripper distinta a Jumbo John, es posible que no disponga de algunas de las herramientas necesarias, como zip2johny rar2john.

Instalación

John the Ripper es compatible con muchos sistemas operativos, no solo con distribuciones de Linux . Antes de continuar, existen varias versiones de John, la distribución principal estándar, y varias ediciones comunitarias que amplían las funciones de la distribución original. La más popular de estas distribuciones es Jumbo John , cuyas funciones específicas utilizaremos más adelante.

AttackBox y Kali

Jumbo John ya está instalado en la máquina virtual conectada y en AttackBox, así que si planea usar cualquiera de los dos, no necesita hacer nada más. Además, las distribuciones de Linux ofensivas como Kali ya vienen con Jumbo John instalado.

Puedes comprobarlo escribiendo johnen la terminal. Debería aparecer una guía de uso para John, cuya primera línea diga » John the Ripper 1.9.0-jumbo-1″ o algo similar con un número de versión diferente.

Otras distribuciones de Linux

Muchas distribuciones de Linux ofrecen John the Ripper para su instalación desde sus repositorios oficiales. Por ejemplo, en Fedora Linux , se puede instalar John the Ripper con sudo dnf install john[nombre del archivo], mientras que en Ubuntu, con [nombre del archivo] sudo apt install john. Lamentablemente, al momento de escribir este artículo, estas versiones ofrecían funciones básicas y carecían de algunas de las herramientas disponibles a través de Jumbo John.

Por lo tanto, debe considerar compilar desde el código fuente para acceder a todas las herramientas disponibles a través de Jumbo John. La guía de instalación oficial proporciona instrucciones detalladas de instalación y configuración de compilación.

Instalación en Windows

Para instalar Jumbo John the Ripper en Windows, debe descargar e instalar el binario comprimido para sistemas de 64 bits aquí o para sistemas de 32 bits aquí .

Listas de palabras

Ahora que ya lo tenemos johnlisto, debemos considerar otro componente indispensable: las listas de palabras.

Como mencionamos antes, para usar un ataque de diccionario contra hashes, se necesita una lista de palabras para analizar y comparar; como era de esperar, esto se llama lista de palabras. Existen muchas listas de palabras diferentes, y se puede encontrar una buena colección en el repositorio SecLists . Hay varios lugares donde se pueden buscar listas de palabras para atacar el sistema elegido; repasaremos rápidamente dónde encontrarlas.

En las distribuciones AttackBox y Kali Linux/usr/share/wordlists , el directorio contiene una serie de excelentes listas de palabras.

RockYou

Para todas las tareas de esta sala, usaremos la infame rockyou.txtlista de palabras, una extensa lista de palabras comunes para contraseñas, obtenida tras una filtración de datos en el sitio web rockyou.com en 2009. Si no utiliza ninguna de las distribuciones mencionadas, puede obtenerla rockyou.txtdel repositorio SecLists , en la /Passwords/Leaked-Databasessubsección. Quizás deba extraerla del .tar.gzformato usando tar xvzf rockyou.txt.tar.gz.

Ahora que tenemos nuestro descifrador de hash y nuestras listas de palabras configurados, ¡pasemos a descifrar un poco de hash!

Para continuar, primero, iniciemos la máquina virtual presionando el botón Iniciar máquina a continuación.

La máquina se iniciará en vista de pantalla dividida . Si la máquina virtual no está visible, utilice el botón azul » Mostrar vista dividida» en la parte superior de la página.

También puede acceder a la máquina virtual mediante SSH en la dirección IP MACHINE_IPusando las siguientes credenciales:

  • Nombre de usuario:user
  • Contraseña:Tryhackme123!

Responda las preguntas a continuación

¿De qué violación de sitio web se rockyou.txtcreó la lista de palabras?

rockyou.com

Tarea 4 Descifrando hashes básicos

Hay varias maneras de usar a John the Ripper para descifrar hashes simples. Repasaremos algunas antes de descifrar algunos nosotros mismos.

Sintaxis básica de John

La sintaxis básica de los comandos de John the Ripper es la siguiente. Explicaremos las opciones y modificadores específicos que se utilizan a medida que los usemos.

john [options] [file path]

  • john:Invoca el programa John the Ripper
  • [options]:Especifica las opciones que desea utilizar
  • [file path]:El archivo que contiene el hash que estás intentando descifrar; si está en el mismo directorio, no necesitarás nombrar una ruta, solo el archivo.

Cracking automático

John cuenta con funciones integradas para detectar el tipo de hash que se proporciona y seleccionar las reglas y formatos adecuados para descifrarlo. Esto no siempre es la mejor idea, ya que puede ser poco fiable, pero si no puedes identificar el tipo de hash con el que trabajas y quieres intentar descifrarlo, ¡puede ser una buena opción! Para ello, usamos la siguiente sintaxis:

john –wordlist=[path to wordlist] [path to file]

  • –wordlist=: Especifica el uso del modo de lista de palabras, leyendo desde el archivo que usted proporciona en la ruta proporcionada
  • [path to wordlist]:La ruta a la lista de palabras que estás usando, como se describe en la tarea anterior

Ejemplo de uso:

john –wordlist=/usr/share/wordlists/rockyou.txt hash_to_crack.txt

Identificación de hashes

A veces, John no reconoce y carga hashes automáticamente, ¡pero no importa! Podemos usar otras herramientas para identificar el hash y luego configurar John con un formato específico. Hay varias maneras de hacerlo, como usar un identificador de hash en línea como este sitio . Me gusta usar una herramienta llamada hash-identifier , una herramienta de Python muy fácil de usar que te indicará qué tipos de hashes probablemente contiene el que ingresas, dándote más opciones si la primera falla.

Para usar hash-identifier, puedes usar wgeto curldescargar el archivo de Python hash-id.pydesde su página de GitLab . Luego, ejecútalo con python3 hash-id.pye introduce el hash que intentas identificar. Obtendrás una lista de los formatos más probables. Estos dos pasos se muestran en la terminal a continuación.

Cracking específico del formato

Una vez que hayas identificado el hash con el que estás tratando, puedes indicarle a John que lo use mientras descifra el hash proporcionado usando la siguiente sintaxis:

john –format=[format] –wordlist=[path to wordlist] [path to file]

  • –format=:Esta es la bandera para decirle a John que le estás dando un hash de un formato específico y que use el siguiente formato para descifrarlo.
  • [format]:El formato en el que se encuentra el hash

Ejemplo de uso:

john –format=raw-md5 –wordlist=/usr/share/wordlists/rockyou.txt hash_to_crack.txt

Una nota sobre los formatos:

Al indicarle a John que use formatos, si se trata de un tipo de hash estándar, por ejemplo,  md5, como en el ejemplo anterior, debe prefijarlo con raw-para indicarle que solo se trata de un tipo de hash estándar, aunque esto no siempre aplica. Para comprobar si necesita agregar el prefijo, puede listar todos los formatos de John que usan john –list=formatsy comprobar manualmente o buscar su tipo de hash con algo como john –list=formats | grep -iF «md5».

Práctico

Ahora que conoces la sintaxis, los modificadores y los métodos para descifrar hashes básicos, ¡inténtalo tú mismo! Los archivos se encuentran en ~/John-the-Ripper-The-Basics/Task04/el ordenador del laboratorio adjunto.

Responda las siguientes preguntas

¿Qué tipo de hash es hash1.txt?

md5

¿Cuál es el valor descifrado de hash1.txt?

biscuit

¿Qué tipo de hash es hash2.txt?

sha1

¿Cuál es el valor descifrado de hash2.txt?

kangeroo

¿Qué tipo de hash es hash3.txt?

sha256

¿Cuál es el valor descifrado de hash3.txt?

microphone

¿Qué tipo de hash es hash4.txt?

whirlpool

¿Cuál es el valor descifrado de hash4.txt?

Colossal

Descifrado de hashes de autenticación de Windows

Ahora que comprendemos la sintaxis básica y el uso de John the Ripper , pasemos a descifrar algo un poco más complejo, algo que incluso podrías intentar si participas en una prueba de penetración o en una misión del Equipo Rojo. Los hashes de autenticación son las versiones en hashes de las contraseñas almacenadas por los sistemas operativos; a veces es posible descifrarlos mediante nuestros métodos de fuerza bruta. Para obtener estos hashes, a menudo ya debes ser un usuario con privilegios, por lo que explicaremos algunos de los hashes que planeamos descifrar a medida que los intentamos.

NTHash / NTLM

NThash es el formato hash que utilizan los sistemas operativos Windows modernos para almacenar contraseñas de usuarios y servicios. También se conoce comúnmente como NTLM , que hace referencia a la versión anterior del formato de Windows para el hash de contraseñas, conocido como LM, de ahí su nombre: NT/LM. Un poco de historia: la designación NT para los productos Windows originalmente significaba Nueva Tecnología. Se usó a partir de Windows NT para referirse a productos que no se basaban en el sistema operativo MS- DOS. Con el tiempo, la línea «NT» se convirtió en el tipo de sistema operativo estándar lanzado por Microsoft, y el nombre se eliminó, pero aún se mantiene en los nombres de algunas tecnologías de Microsoft.

En Windows, SAM (Administrador de Cuentas de Seguridad) se utiliza para almacenar información de cuentas de usuario, incluyendo nombres de usuario y contraseñas con hash. Puede obtener hashes NTHash/ NTLM volcando la base de datos SAM en un equipo Windows, usando una herramienta como Mimikatz o la base de datos de Active Directory. NTDS.ditEs posible que no sea necesario descifrar el hash para continuar con la escalada de privilegios, ya que a menudo se puede realizar un ataque de «paso del hash», pero a veces, descifrar el hash es una opción viable si la política de contraseñas es débil.

Práctico

Ahora que conoces la teoría, ¡intenta usar las técnicas que practicamos en la última tarea y el conocimiento del tipo de hash para descifrar el ntlm.txtarchivo! El archivo se encuentra en ~/John-the-Ripper-The-Basics/Task05/.

Responda las siguientes preguntas

¿Qué valor debemos asignar –formata la bandera para descifrar este hash?

nt

¿Cuál es el valor descifrado de esta contraseña?

mushroom

Descifrando hashes de /etc/shadow

Este /etc/shadowarchivo es el archivo en las máquinas Linux donde se almacenan los hashes de contraseñas. También almacena otra información, como la fecha del último cambio de contraseña y su fecha de caducidad. Contiene una entrada por línea para cada usuario o cuenta de usuario del sistema. Normalmente, solo el usuario root puede acceder a este archivo, por lo que debe tener privilegios suficientes para acceder a los hashes. Sin embargo, si los tiene, es posible que pueda descifrar algunos de ellos.

Sin sombras

John puede ser muy específico con los formatos en los que necesita los datos para poder trabajar con ellos; por eso, para descifrar /etc/shadowcontraseñas, debes combinarlos con el /etc/passwdarchivo para que John comprenda los datos que se le proporcionan. Para ello, utilizamos una herramienta integrada en el conjunto de herramientas de John llamada unshadow. La sintaxis básica de unshadowes la siguiente:

unshadow [path to passwd] [path to shadow]

unshadow:Invoca la herramienta de desombreado

[path to passwd]:El archivo que contiene la copia del /etc/passwdarchivo que has tomado de la máquina de destino

[path to shadow]:El archivo que contiene la copia del /etc/shadowarchivo que has tomado de la máquina de destino

Ejemplo de uso:

unshadow local_passwd local_shadow > unshadowed.txt

Nota sobre los archivos

Al utilizar unshadow, puede utilizar los archivos /etc/passwdy completos /etc/shadow, suponiendo que los tenga disponibles, o puede utilizar la línea relevante de cada uno, por ejemplo:

ARCHIVO 1 – local_passwd

Contiene la /etc/passwdlínea para el usuario root:

root:x:0:0::/root:/bin/bash

ARCHIVO 2 – local_shadow

Contiene la /etc/shadowlínea para el usuario root:root:$6$2nwjN454g.dv4HN/$m9Z/r2xVfweYVkrr.v5Ft8Ws3/YYksfNwq96UL1FX0OJjY1L6l.DS3KEVsZ9rOVLB/ldTeEL/OIhJZ4GMFMGA0:18576::::::

Cracking

Podemos entonces enviar la salida de unshadow, en nuestro caso de ejemplo llamado unshadowed.txt, directamente a John. No deberíamos necesitar especificar un modo aquí, ya que hemos creado la entrada específicamente para John; sin embargo, en algunos casos, necesitará especificar el formato, como hicimos anteriormente con:–format=sha512crypt

john –wordlist=/usr/share/wordlists/rockyou.txt –format=sha512crypt unshadowed.txt

Práctico

Ahora, vea si puede seguir el proceso para descifrar el hash de la contraseña del usuario root proporcionado en el etchashes.txtarchivo. ¡Buena suerte! Los archivos se encuentran en ~/John-the-Ripper-The-Basics/Task06/.

Responda las siguientes preguntas

¿Cuál es la contraseña de root?

1234

Single Crack Mode

Hasta ahora, hemos usado el modo de lista de palabras de John para forzar hashes simples y no tan simples. Pero John también tiene otro modo, llamado modo de Crack Único . En este modo, John usa solo la información del nombre de usuario para intentar descifrar posibles contraseñas heurísticamente modificando ligeramente las letras y números que contiene.

Destrozo de palabras – Word Mangling

La mejor manera de explicar el modo Single Crack y la alteración de palabras es mediante un ejemplo:

Considere el nombre de usuario “Markus”.

Algunas posibles contraseñas podrían ser:

  • Markus1, Markus2, Markus3 (etc.)
  • MARKUS, MARKUS, MARKUS (etc.)
  • Markus!, Markus$, Markus* (etc.)

Esta técnica se llama «mangling» (mutación de palabras). John construye su diccionario basándose en la información que recibe y utiliza un conjunto de reglas llamadas «reglas de mutación», que definen cómo puede mutar la palabra inicial para generar una lista de palabras basada en factores relevantes para el objetivo que se intenta descifrar. Esto aprovecha la vulnerabilidad de las contraseñas, que puede basarse en información sobre el nombre de usuario o el servicio al que se accede.

GECOS

La implementación de John para la manipulación de palabras también es compatible con el campo GECOS del sistema operativo UNIX, así como con otros sistemas operativos similares a UNIX, como Linux . GECOS significa General Electric Comprehensive Operating System (Sistema Operativo Integral de General Electric). En la última tarea, analizamos las entradas de y /etc/shadow. /etc/passwdSi observa con atención, notará que los campos están separados por dos puntos :. El quinto campo del registro de la cuenta de usuario es el campo GECOS. Almacena información general sobre el usuario, como su nombre completo, número de oficina y número de teléfono, entre otros. John puede tomar la información almacenada en esos registros, como el nombre completo y el nombre del directorio personal, para agregarla a la lista de palabras que genera al descifrar /etc/shadowhashes con el modo de descifrado único.

Uso del modo de crack único

Para usar el modo de descifrado único, utilizamos aproximadamente la misma sintaxis que hemos usado hasta ahora; por ejemplo, si quisiéramos descifrar la contraseña del usuario llamado «Mike», usando el modo único, usaríamos:

john –single –format=[format] [path to file]

  • –single:Esta bandera le permite a John saber que desea utilizar el modo de descifrado de hash único
  • –format=[format]Como siempre, es vital identificar el formato adecuado.

Ejemplo de uso:

john –single –format=raw-sha256 hashes.txt

Una nota sobre los formatos de archivo en el modo de crack único:

Si estás descifrando hashes en modo de descifrado único, necesitas cambiar el formato del archivo que le estás dando a John para que este comprenda qué datos usar para crear una lista de palabras. Para ello, antepones el nombre de usuario al hash. Así, según el ejemplo anterior, cambiaríamos el archivo.hashes.txt

De 1efee03cdcb96d90ad48ccc7b8666033

A mike:1efee03cdcb96d90ad48ccc7b8666033

Práctico

Ahora que ya conoces la sintaxis del modo de descifrado único de John, accede al hash y descifralo, suponiendo que el usuario al que pertenece se llama “Joker”. El archivo se encuentra en ~/John-the-Ripper-The-Basics/Task07/.

Responda las siguientes preguntas

¿Cuál es la contraseña del Joker?

Jok3r

Reglas personalizadas

Al explorar lo que John puede hacer en el Modo de Descifrado Único, es posible que tengas algunas ideas sobre buenos patrones de descifrado o sobre qué patrones suelen usar tus contraseñas y que podrían replicarse con un patrón de descifrado específico. La buena noticia es que puedes definir tus reglas, que John usará para crear contraseñas dinámicamente. Definir estas reglas es beneficioso cuando conoces mejor la estructura de la contraseña de tu objetivo.

Reglas personalizadas comunes

Muchas organizaciones requieren cierta complejidad de contraseña para combatir los ataques de diccionario. En otras palabras, al crear una cuenta nueva o cambiar su contraseña, si intenta usar una como [nombre de usuario] polopassword, lo más probable es que no funcione. Esto se debe a la complejidad impuesta. Por lo tanto, es posible que reciba un aviso indicando que las contraseñas deben contener al menos un carácter de cada uno de los siguientes:

  • Letra minúscula
  • Letra mayúscula
  • Número
  • Símbolo

¡La complejidad de las contraseñas es buena! Sin embargo, podemos aprovechar el hecho de que la mayoría de los usuarios predecirán la ubicación de estos símbolos. Para los criterios anteriores, muchos usuarios usarán algo como lo siguiente:

Polopassword1!

Considere la contraseña con una letra mayúscula primero y un número seguido de un símbolo al final. Este patrón familiar de la contraseña, con modificadores (como mayúsculas o símbolos) añadidos y precedidos, es un patrón fácil de recordar que la gente usa y reutiliza al crear contraseñas. Este patrón nos permite aprovechar la previsibilidad de la complejidad de las contraseñas.

Ahora bien, esto cumple con los requisitos de complejidad de la contraseña; sin embargo, como atacantes, podemos aprovechar el hecho de que conocemos la posición probable de estos elementos agregados para crear contraseñas dinámicas a partir de nuestras listas de palabras.

Cómo crear reglas personalizadas

Las reglas personalizadas se definen en el john.confarchivo. Este archivo se encuentra en /opt/john/john.confTryHackMe Attackbox. Suele estar en [nombre del archivo] /etc/john/john.confsi instaló John con un gestor de paquetes o lo compiló desde el código fuente con [nombre del archivo] make.

Repasemos la sintaxis de estas reglas personalizadas, usando el ejemplo anterior como patrón objetivo. Tenga en cuenta que puede definir un gran nivel de control granular en estas reglas. Le sugiero consultar la wiki aquí para obtener una visión completa de los modificadores que puede usar y más ejemplos de implementación de reglas.

La primera línea:

[List.Rules:THMRules]se utiliza para definir el nombre de su regla; esto es lo que usará para llamar a su regla personalizada un argumento John.

Luego usamos un patrón de coincidencia de estilo regex para definir dónde se modificará la palabra; nuevamente, aquí solo cubriremos los modificadores principales y más comunes:

Az:Toma la palabra y le agrega los caracteres que usted define

A0:Toma la palabra y la antepone con los caracteres que usted define

c: Capitaliza el carácter posicionalmente

Estos se pueden usar en combinación para definir dónde y qué en la palabra desea modificar.

Por último, debemos definir qué caracteres deben añadirse, anteponerse o incluirse. Para ello, añadimos conjuntos de caracteres entre corchetes [ ]donde corresponda su uso. Estos siguen los patrones de modificadores entre comillas dobles » «. A continuación, se muestran algunos ejemplos comunes:

  • [0-9]:Incluirá números del 0 al 9
  • [0]:Incluirá solo el número 0
  • [A-z]:Incluirá tanto mayúsculas como minúsculas
  • [A-Z]:Incluirá solo letras mayúsculas
  • [a-z]:Incluirá solo letras minúsculas
  • Tenga en cuenta que:
  • [a]:Solo incluiráa
  • [!£$%@]:Incluirá los símbolos !, £, $, %, y@

Juntando todo esto, para generar una lista de palabras a partir de las reglas que coincidirían con la contraseña de ejemplo Polopassword1!(asumiendo que la palabra polopasswordestuviera en nuestra lista de palabras), crearíamos una entrada de regla que se vería así:

  • [List.Rules:PoloPassword]
  • cAz»[0-9] [!£$%@]»
  • Utiliza lo siguiente:
  • c:Pone en mayúscula la primera letra
  • Az:Se añade al final de la palabra.
  • [0-9]:Un número en el rango 0-9
  • [!£$%@]:La contraseña va seguida de uno de estos símbolos

Uso de reglas personalizadas

Entonces podríamos llamar a esta regla personalizada un argumento John usando la  –rule=PoloPasswordbandera.

Como comando completo:john –wordlist=[path to wordlist] –rule=PoloPassword [path to file]

Como nota, me parece útil explicar los patrones si estás escribiendo una regla; como se muestra arriba, lo mismo se aplica al escribir patrones RegEx.

Jumbo John ya cuenta con una extensa lista de reglas personalizadas que contienen modificadores para usar en casi todos los casos. Si te quedas atascado, intenta revisar esas reglas [alrededor de la línea 678] si tu sintaxis no funciona correctamente.

¡Ahora es el momento de intentarlo!

Responda las siguientes preguntas

¿Qué nos permiten aprovechar las reglas personalizadas?

Password complexity predictability

¿Qué regla usaríamos para agregar todas las letras mayúsculas al final de la palabra?

Az»[A-Z]»

¿Qué bandera usaríamos para llamar a una regla personalizada llamada THMRules?

–rule=THMRules

Cómo descifrar archivos zip protegidos con contraseña

¡Sí! Leíste bien. Podemos usar a John para descifrar la contraseña de archivos Zip protegidos con contraseña. De nuevo, usaremos una parte independiente del paquete de herramientas de John para convertir el archivo Zip a un formato que John entienda, pero usaremos la sintaxis que ya conoces a todos los efectos.

Zip2John

De forma similar a la unshadowherramienta que usamos anteriormente, la usaremos zip2johnpara convertir el archivo Zip a un formato hash que John pueda entender y, con suerte, descifrar. El uso principal es el siguiente:

zip2john [options] [zip file] > [output file]

  • [options]: Le permite pasar opciones de suma de comprobación específicas a zip2john; esto no debería ser necesario con frecuencia
  • [zip file]:La ruta al archivo Zip del que desea obtener el hash
  • >:Esto redirige la salida de este comando a otro archivo
  • [output file]:Este es el archivo que almacenará la salida.

Ejemplo de uso

zip2john zipfile.zip > zip_hash.txt

Agrietamiento

Luego podemos tomar el archivo del que generamos la salida zip2johnen nuestro caso de uso de ejemplo, zip_hash.txty, como hicimos con unshadow, introducirlo directamente en John ya que hemos creado la entrada específicamente para él.

john –wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt

Práctico

Ahora, ¡intenta descifrar un archivo Zip “seguro”! El archivo se encuentra en ~/John-the-Ripper-The-Basics/Task09/.

Responda las siguientes preguntas

¿Cuál es la contraseña del archivo secure.zip?

pass123

¿Cuál es el contenido de la bandera dentro del archivo zip?

THM{w3ll_d0n3_h4sh_r0y4l}

Cómo descifrar un archivo RAR protegido con contraseña

Podemos usar un proceso similar al de la tarea anterior para obtener la contraseña de los archivos RAR. Si no lo conoce, los archivos RAR son archivos comprimidos creados por el administrador de archivos WinRAR. Al igual que los archivos Zip, comprimen carpetas y archivos.

Rar2John

Casi idéntica a la zip2johnherramienta, la usaremos rar2johnpara convertir el archivo RAR a un formato hash que John pueda entender. La sintaxis básica es la siguiente:

rar2john [rar file] > [output file]

  • rar2john:Invoca la rar2johnherramienta
  • [rar file]:La ruta al archivo RAR del que desea obtener el hash
  • >:Esto redirige la salida de este comando a otro archivo
  • [output file]:Este es el archivo que almacenará la salida del comando

Ejemplo de uso

/opt/john/rar2john rarfile.rar > rar_hash.txt

Crack

Una vez más, podemos tomar el archivo que generamos rar2johnen nuestro caso de uso de ejemplo, rar_hash.txt, y alimentarlo directamente a John como lo hicimos con zip2john.

john –wordlist=/usr/share/wordlists/rockyou.txt rar_hash.txt

Práctico

Ahora, ¡intenta descifrar un archivo RAR “seguro”! El archivo se encuentra en ~/John-the-Ripper-The-Basics/Task10/.

Responda las siguientes preguntas

¿Cuál es la contraseña del archivo secure.rar?

password

¿Cuál es el contenido de la bandera dentro del archivo rar?

THM{r4r_4rch1ve5_th15_t1m3}

Tarea 11 Descifrando claves SSH con John

Crack SSH

¡Ya no hay más archivos comprimidos! ¡Bien! Exploremos otro uso de John que aparece con cierta frecuencia en los desafíos CTF: usar John para descifrar la contraseña SSH de clave privada de id_rsa archivos. A menos que se configure de otra manera, autentica su inicio de sesión SSH mediante una contraseña. Sin embargo, puede configurar la autenticación basada en claves, que le permite usar su clave privada, id_rsa, como clave de autenticación para iniciar sesión en una máquina remota a través deSSHSin embargo, para ello a menudo se requerirá una contraseña para acceder a la clave privada; aquí, utilizaremos a John para descifrar esta contraseña y permitir la autenticación. SSH usando la llave.

SSH2John

¿Quién lo hubiera imaginado? ¿Otra herramienta de conversión? Bueno, de eso se trata trabajar con John. Como su nombre indica, ssh2johnconvierte la id_rsaclave privada, que se usa para iniciar sesión en la sesión SSH, a un formato hash con el que John puede trabajar. Bromas aparte, es otro hermoso ejemplo de la versatilidad de John. La sintaxis es la que cabría esperar. Tenga en cuenta que si no tiene ssh2johninstalado, puede usar ssh2john.py, ubicado en /opt/john/ssh2john.py. Si está haciendo esto en AttackBox, reemplace el ssh2johncomando con python3 /opt/john/ssh2john.pyo en Kali, python /usr/share/john/ssh2john.py.

ssh2john [id_rsa private key file] > [output file]

  • ssh2john: Invoca la ssh2johnherramienta
  • [id_rsa private key file]: La ruta al archivo id_rsa del que desea obtener el hash.
  • >: Este es el directorio de salida. Lo estamos usando para redirigir la salida de este comando a otro archivo.
  • [output file]: Este es el archivo que almacenará la salida de

Ejemplo de uso

/opt/john/ssh2john.py id_rsa > id_rsa_hash.txt

Crack

Por última vez, estamos alimentando el archivo que generamos desde ssh2john, que en nuestro ejemplo de uso se llama id_rsa_hash.txty, como hicimos con rar2john, podemos usarlo sin problemas con John:

john –wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash.txt

Práctico

Ahora, ¡quiero que descifres el hash del id_rsaarchivo relevante para esta tarea! El archivo se encuentra en ~/John-the-Ripper-The-Basics/Task11/.

Responda las siguientes preguntas

¿Cuál es la contraseña de la clave privada SSH?

Mango

Tarea 12 Lecturas adicionales

Gracias por completar esta habitación enJuan el Destripador¡Espero que hayas aprendido mucho durante el proceso! Estoy seguro de que ya entiendes los principios básicos y el patrón de uso de John, incluso con los hashes compatibles más desconocidos. Te recomiendo que consultes la Wiki de Openwall aquí.(Se abre en una pestaña nueva)Para obtener más información sobre cómo usar John y consejos, actualizaciones o noticias sobre la herramienta.

Responda las siguientes preguntas

¡Es hora de un nuevo desafío!

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *