Diccionarios personalizados

En un post anterior dije que, en la vida real, los ataques de diccionario rara vez funcionan cuando usamos las herramientas que tenemos por defecto. No es fácil encontrar diccionarios que sirvan en idiomas diferentes al inglés. Para que un ataque así funcione, debemos crear diccionarios personalizados a la medida de la cuenta que vamos a atacar.


El archivo rockyou.txt que tenemos en Kali Linux contiene un poco más de 14 millones de contraseñas filtradas. Es una herramienta útil cuando trabajamos en entornos de pruebas. Casi todas las plataformas creadas para practicar pentesting están protegidas con contraseñas que se encuentran en rockyou y otros diccionarios de su estilo.

Sin embargo, cuando auditamos cuentas reales, en nuestras regiones y en nuestro idioma, estos diccionarios nos dan poco chance de conseguir acceso. Para aumentar las probabilidades de éxito, debemos tener información de la/s persona/s detrás de la cuenta que vamos a atacar y, conforme a esa información, crear diccionarios personalizados. Hagámoslo.


CUPP.

La herramienta que vamos a usar se llama CUPP o Common User Passwords Profiler. Está vieja herramienta interactiva está escrita en Python y nos ayuda a crear diccionarios personalizados. La herramienta nos preguntará datos de la cuenta o persona que vamos a atacar y, con esos datos, creará un diccionario de posibles contraseñas.

Instalar CUPP es muy fácil. Vamos a su repositorio en Github y seguimos los siguientes pasos en nuestra máquina:

git clone https://github.com/Mebus/cupp.git
cd cupp/
python3 cupp.py -i

El único requerimiento de CUPP es tener python3 instalado. Si usted no me está leyendo en 1956 no debería tener que preocuparse por eso. Con la orden -i le hemos pedido a CUPP que comience a preguntarnos los datos de la cuenta o la persona que vamos a atacar.

Para este ejercicio he inventado los datos de una persona cualquiera. Son los datos que obtendríamos en cualquier investigación Osint.


Diccionarios personalizados


Son datos que debemos tener si hemos investigado al objetivo: nombre, apellido, apodo, fecha de nacimiento, pareja (o socios), datos de los hijos, información de sus mascotas, etc. En la última línea de la imagen anterior vemos que CUPP nos pregunta si queremos adicionar palabras claves relacionadas con el objetivo. Esto es muy útil pues aquí podemos toda la información que hayamos recolectado en nuestra investigación: pasatiempos, exparejas, autos, libros, películas, ciudades visitadas, comidas favoritas, etc.


Diccionarios personalizados


Después de poner las palabras claves relacionadas con el objetivo, CUPP nos preguntará si queremos poner caracteres especiales al final de las palabras. Le decimos que sí para tener palabras tipo: abuelita__. Después nos pregunta si queremos adicionar números aleatorios al final de las palabras. También le decimos que sí.

Para finalizar, la herramienta nos pregunta si queremos añadir palabras Leet. Esto es, palabras en las cuales algunas letras son reemplazadas por numeros. P0r ej3mp10. También le decimos que sí. Damos enter y CUPP se encargará del resto. Cuando termine, encontraremos en el mismo directorio de la herramienta un archivo txt llamado con el primer dato que le dimos. En este caso: juan.txt.


Diccionarios personalizados


Con los pocos datos que le suministramos, la herramienta nos creó un archivo con 164.332 posibles contraseñas. Entre más información tengamos del objetivo, mayor será la cantidad de líneas que nos arroje CUPP y, así mismo, mayor será la posibilidad de hacer un ataque exitoso.

Cada una de esas líneas generadas está realmente relacionada con el objetivo que queremos auditar. Ya no estamos usando millones de contraseñas al azar y eso, por supuesto, juega a nuestro favor.

Y así, de esta forma tan sencilla, es como se hacen los diccionarios personalizados para las pruebas de penetración. Espero les sirva. Hasta la próxima.

Categorías: G33ks, GNU / Linux, Hacking Ético, OSINT / SOCMINT
J. Inversor

Escrito por:J. Inversor Otros posts del autor

Hackear es un acto noble y altruista porque trae a la existencia la multiplicidad inagotable de todos los códigos, sean naturales, sociales, computacionales o poéticos.