XUT_ / COURSES / CYBER SECURITY 101

Custom Rules

¿Qué son las Reglas Personalizadas?

Puedes definir tus propias reglas de mangling por las que John se guiará para crear contraseñas que probar. Son útiles cuando tienes información sobre tu objetivo.


Reglas Personalizadas Comunes

Muchas organizaciones requieren un cierto nivel de complejidad de contraseñas para tratar de combatir ataques de diccionario. Es por esto que si intentas algo como polopassword no funcionará y te dará un mensaje pidiéndote, probablemente:

  • Una minúscula.
  • Una mayúscula.
  • Un número.
  • Un símbolo.

La complejidad de contraseñas es buena, sin embargo, podemos aprovecharnos de que la mayoría de usuarios será predecible en la colocación de estos caracteres. Para la contraseña de antes, la mayoría de los usuarios elegirá algo del siguiente estilo: Polopassword1!.

Esto cumple los requisitos de complejidad de contraseñas, pero como atacantes conocedores de estadísticas podemos usar estos conocimientos a nuestro favor para crear reglas y diccionarios.


¿Cómo crear Reglas Personalizadas?

Las reglas personalizadas se definen en el archivo john.conf. Este puede ser encontrado en /opt/john/john.conf.

Miremos la sintaxis de estas reglas. Ten en cuenta que puedes definir una cantidad masiva de niveles de control en estas. Para ver todas las posibilidades puedes consultar la documentación.

La primera línea:

[List.Rules:THMRules]: Se usa para definir el nombre de la regla. Esto es lo que usarás para llamar a tu regla en el argumento de John.

Usamos regex para decir dónde cambian las palabras:

  • Az: Coge la palabra y la pone al final de caracteres que definamos.
  • A0: Coge la palabra y la pone al principio de caracteres que definamos.
  • c: Capitaliza el carácter en función de la posición.

Estos pueden ser combinados para especificar lo que queremos modificar.

Por último, debemos definir qué caracteres deberían ser añadidos. Hacemos esto añadiendo sets de caracteres entre corchetes [ ] donde deberían ser puestos seguido por comillas " " como modificadores. Algunos ejemplos:

  • [0-9]: Incluirá números del 0 al 9.
  • [0]: Incluirá sólo el número 0.
  • [A-z]: Incluirá mayúsculas y minúsculas.
  • [A-Z]: Incluirá sólo mayúsculas.
  • [a-z]: Incluirá sólo minúsculas.

Ten en cuenta que:

  • [a]: Sólo incluirá la "a".
  • [!@#$%&]: Incluirá los símbolos !, @, #, $, % y &.

Para poner todo esto en práctica y crear contraseñas del estilo de Polopassword1!, haríamos algo así:

[List.Rules:PoloPassword] `cAz"[0-9] [!@#$%&]"

  • c: Capitaliza la primera letra.
  • Az: Añade al final de la palabra:
    • [0-9]: Un número del 0 al 9.
    • [!@#$%&]: Uno de estos caracteres.

Usar Reglas Personalizadas

Podríamos llamar a esta regla usando el argumento --rule=PoloPassword.

Como comando completo: john --wordlist=[ruta al diccionario] --rule=PoloPassword [ruta al archivo]