En este artículo se hablará sobre los diccionarios populares para pruebas de penetración. Los lectores aprenderán qué listas de palabras son las mejores para usar en pentesting.
Desde que comenzó la evolución de las pruebas de penetración, una de las actividades más comunes ha sido obtener la contraseña de un objetivo y usar su cuenta. En la mayoría de los casos, los ataques en películas y series se muestran como una acción simple y rápida que toma solo unos minutos. Independientemente de lo sencillo que sea realizar un ataque de fuerza bruta, siempre se convierte en una amenaza para las aplicaciones web. Hoy en día, existe algún tipo de control sobre la seguridad de los proyectos web mediante CAPTCHA o limitación de velocidad de datos, pero aún así, muchos ataques siguen siendo posibles. Uno de los más populares es el ataque basado en listas de palabras.
¿Qué es una Wordlist (Lista de Palabras)?
Una lista de palabras o wordlist es un archivo (en la mayoría de los casos de texto, pero no siempre) que contiene un conjunto de valores que un atacante utiliza para verificar la validez de las credenciales. Cada vez que un hacker se enfrenta a un proceso de autenticación, intenta eludirlo, pero si no es posible, necesita probar y adivinar los datos del usuario. El hacker tiene una lista de credenciales comúnmente utilizadas, lo que constituye una lista de palabras. En lugar de ingresar valores manualmente uno por uno, el atacante utiliza una herramienta o script para automatizar este proceso.
De manera similar, en el caso de romper valores hash, un programa especial aplica las listas de palabras y codifica sus entradas en el mismo hash, luego usa la función de comparación de cadenas para emparejar los hashes obtenidos. Si se encuentra una coincidencia, el hash se considera comprometido. Es importante mencionar que una lista de palabras bien seleccionada representa una gran amenaza para la seguridad de una aplicación web.
Diccionarios en Kali Linux
Dado que Kali Linux fue creado específicamente para realizar pruebas de penetración, el sistema contiene diversos diccionarios. Esto se debe a que diferentes herramientas ya están instaladas en el SO para realizar ataques de fuerza bruta para obtener inicios de sesión, directorios y más. A continuación, se presentan algunos de los diccionarios del vasto arsenal de listas de palabras disponibles en Kali Linux.
Las listas de palabras se encuentran en el directorio /usr/share
. Aquí se puede encontrar otro directorio llamado dirb
con listas de palabras que se utilizarán al aplicar la herramienta dirb
para enumerar directorios. Además, está dirbuster, una herramienta similar que puede realizar el mismo ataque de fuerza bruta, pero con algunas opciones adicionales.
El directorio fern-wifi
ayuda a romper la autenticación Wi-Fi. Metasploit utiliza diccionarios para realizar varios ataques. Luego está la lista de palabras de nmap
, que contiene palabras que se pueden aplicar al escanear el nivel de seguridad de servicios específicos. También se debe mencionar el diccionario rockyou
. Por defecto, la información en él está comprimida, es necesario extraerla antes de usar esta lista de palabras. Es muy grande, contiene alrededor de 1,44,42,062 variantes de contraseñas relevantes para muchas cuentas de usuario en Internet. Finalmente, está el directorio wfuzz
, cuyos diccionarios se pueden usar junto con la herramienta wfuzz
.
Ubicación: /usr/share/wordlists
Diccionarios Dirb
Para observar más de cerca uno de los directorios, se introduce el comando tree
para enumerar todas las listas de palabras dentro del directorio dirb
. Hay diferentes diccionarios que varían en tamaño y en idiomas. También existe una lista de extensiones, por lo que el atacante puede utilizar este directorio para realizar un ataque de fuerza bruta en directorios. Hay diccionarios para aplicaciones específicas, como apache.txt
o sharepoint.txt
.
Ubicación: /usr/share/wordlists/dirb
Diccionario Rockyou
Rockyou.txt
es un conjunto de contraseñas comprometidas de redes sociales de un desarrollador de aplicaciones conocido como RockYou. Este desarrollador creó widgets para la aplicación Myspace. En diciembre de 2009, la empresa sufrió una fuga de datos que reveló más de 32 millones de cuentas de usuario. Esto ocurrió principalmente debido a la política de la empresa de almacenar contraseñas en texto sin formato.
Ubicación: /usr/share/wordlists
Al cargar Kali Linux por primera vez, la lista de palabras estará comprimida en un archivo de formato gz
. Para descomprimir el contenido del archivo, se debe ejecutar el siguiente comando. La lista de palabras se descomprimirá y estará lista para usarse en cualquier ataque que el hacker desee realizar.
gzip -d /usr/share/wordlists/rockyou.txt.gz
Diccionarios Wfuzz
La herramienta Wfuzz fue desarrollada para realizar ataques de fuerza bruta en aplicaciones web. También puede usarse para enumerar aplicaciones web. La herramienta puede enumerar directorios, archivos, scripts y cambiar la solicitud de GET a POST. Esto es útil en varios escenarios, como probar la existencia de inyecciones SQL. Wfuzz tiene un conjunto de diccionarios predefinidos. Estos están diseñados para usarse con la herramienta, pero pueden aplicarse con otros programas. Las listas de palabras se dividen en categorías como general, inyecciones, estrés, vulnerabilidades, servicios web.
Ubicación: /usr/share/wordlists/wfuzz
Al mirar el directorio de inyecciones, se puede ver que existe un diccionario All_attack.txt
. Es una lista general de palabras para probar inyecciones. Luego hay una lista específica para SQL, bypass de directorios, XML, inyecciones XSS. También se encuentran big.txt
y common.txt
, que son listas de palabras por defecto en muchas herramientas debido a su pequeño tamaño.
Además, está extensions_common.txt
, que contiene diccionarios de palabras comunes para extensiones para enumerar archivos específicos. También está el diccionario http_methods.txt
, que contiene métodos HTTP como POST, GET, PUT. Esto puede usarse durante las pruebas si en la aplicación objetivo hay métodos mal configurados o los desarrolladores olvidaron desactivarlos a nivel de aplicación y servidor. El diccionario mutations_common.txt
contiene muchas extensiones inusuales que ayudarán a enumerar artefactos raros.
El usuario también tiene una lista de palabras spanish.tx
para enumerar palabras/nombres/contraseñas en español. Otro directorio contiene diccionarios generales que se pueden utilizar para recuperar nombres de usuario o contraseñas cuando alguien ha olvidado sus credenciales. Luego está el directorio stress
, que contiene diccionarios destinados a pruebas de estrés del mecanismo de autenticación. Hay listas de palabras que contienen letras, números, símbolos especiales y códigos hexadecimales para realizar un ataque.
En el directorio vulns
, el usuario encuentra diccionarios creados específicamente para probar una vulnerabilidad en particular. Hay listas de palabras como apache wordlist
, CGI wordlist
, directory wordlist
, iis wordlist
, oracle9 wordlist
, SharePoint wordlist
, tomcat wordlist
. El usuario utilizará estas listas de palabras en un escenario específico cuando tenga información sobre el framework y su versión. Aplicará el diccionario para apuntar a un punto de entrada específico.
Diccionarios en Línea
Diccionarios de GitHub
En Kali Linux hay una gran colección de diccionarios. Pero a veces incluso esto no es suficiente. Esto puede ocurrir en un escenario en el que se aplica un ataque de día cero. Los diccionarios disponibles no tendrán entradas útiles. Aquí es donde se deben buscar listas de palabras en Internet, aunque esto lleva mucho tiempo. Se recomienda buscar en GitHub, donde otras personas pueden haber creado el diccionario que el usuario necesita. Buscar en GitHub ayuda a encontrar nuevas o específicas listas de palabras necesarias para hacer fuzzing a un framework particular.
Enlace: GitHub Wordlists
Seclists
Seclists es una colección de varios tipos de diccionarios que se pueden usar durante las pruebas de penetración o evaluación de vulnerabilidades. Estos diccionarios contienen nombres de usuarios, contraseñas, URLs, patrones de datos sensibles, cargas útiles de fuzzing, web shells. Para instalarlo en Kali Linux, se debe usar el comando apt
, seguido de seclists
, como se muestra a continuación.
GitHub:
https://github.com/danielmiessler/SecLists
apt install seclists
Después de la instalación, se creará un directorio llamado Seclists
dentro del directorio /usr/share
. Al examinar el contenido, el usuario puede ver varias categorías de diccionarios, como Discovery, Fuzzing, IOCs, Misc, Passwords, Pattern Matching, Payloads, Usernames y Web-Shells.
Assetnode Wordlists
Assetnode Wordlists son diccionarios para diversas áreas, como la detección de subdominios y artefactos específicos. Lo mejor de todo es que se actualizan el día 28 de cada mes según la política del sitio. Esta es la mejor opción de diccionarios en línea publicados desde la aparición de Seclists. Para descargar todas las listas de palabras a la vez, cualquier persona puede usar el siguiente comando wget
.
Enlace: Assetnote Wordlists
wget -r --no-parent -R "index.html*" https://wordlists-cdn.assetnote.io/data/manual/
Al observar el contenido del directorio /raft
, se puede ver que hay muchas listas de palabras, como raft-large-directories.txt
, raft-large-files.txt
, raft-large-words.txt
, raft-small-directories.txt
, raft-small-files.txt
, raft-small-words.txt
.
Listas de palabras de PacketStrom
Packet Storm Security es un sitio web sobre seguridad de la información que presenta herramientas, exploits y recomendaciones para la seguridad en la red. Está dirigido por un grupo de entusiastas que publican noticias sobre el desarrollo seguro de aplicaciones web y ofrecen herramientas para probar en diversos propósitos. Además de esto, en este recurso puedes encontrar diferentes diccionarios. Cualquier usuario que haya creado una lista de palabras específica puede publicarla en este sitio.
Enlace: Pack Strom Security Wordlists
Limpiando Listas de Palabras
Hasta ahora, el usuario se había familiarizado con diccionarios que contienen miles de entradas en su interior. Para probar la penetración (véase TOP Sitios Web Vulnerables para Pruebas de Penetración) en un servidor vulnerable o cualquier CTF, esto puede ser normal, ya que las palabras están diseñadas para manejar este tipo de ataque de fuerza bruta. Sin embargo, cuando se trata de un escenario real, todo se complica un poco. Como en la vida real, ningún equipo de desarrollo o propietario de un sitio web permitirá que un hacker realice miles de ataques de fuerza bruta con palabras.
Esto empeoraría la calidad del servicio a otros clientes. Por lo tanto, es necesario reducir la cantidad de entradas en el diccionario. Esto suena contraproducente, pero en realidad es la solución correcta. Las listas de palabras pueden contener algunas cargas útiles que son un poco más grandes que 100 caracteres. Si el usuario tiene cargas útiles que son similares entre sí y las reemplaza por otras, el resultado será el mismo. Jon Barber creó un script que puede eliminar caracteres innecesarios, como “¡ ( ,
https://github.com/BonJarber/SecUtils/tree/master/clean_wordlist
./clean_wordlists.sh HTML5sec-Injections-Jhaddix.txt
El usuario puede comprobar las líneas que se eliminaron de la lista de palabras de inyección HTML5 usando el comando “diff”.
diff HTML5sec-Injections-Jhaddix.txt_cleaned < (sort HTML5sec-Injections-Jhaddix.txt) | more
Creación de Diccionarios
En este artículo, se han cubierto las listas de palabras que están disponibles en Kali Linux y las listas de palabras o diccionarios hacking que se pueden descargar desde Internet. Es crucial para cualquier probador de penetración saber que las listas de palabras se actualizan constantemente, ya que las aplicaciones web y los frameworks cambian.
Además, es importante tener en cuenta que ninguna lista de palabras será perfecta para cada situación, por lo que siempre es necesario adaptar y actualizar las listas según sea necesario para cada prueba de penetración. O incluso, crear tu propio diccionario de fuerza bruta.