Amador Aparicio (@amadapa), escritor de libro «Hacking Web Technologies» y CSE en ElevenPaths
Una etapa fundamental en cualquier test de intrusión es la recolección de información sobre el objetivo o sobre cualquier cosa interesante que esté relacionada con el objetivo final. Cuanta más información se tenga, la probabilidad de éxito en el Ethical Hacking será mayor, sobre todo en procesos de ataque de fuerza bruta basados en diccionario, ingeniería social, pruebas de autenticación de usuarios en servicios, etcétera.
Figura 1. Extracción y enumeración de nombres de empleados mediante técnicas de scraping sobre LinkedIn.
Una herramienta interesante durante el proceso de recolección de información es CrossLinked, ya que simplifica los procesos de búsqueda de LinkedIn para recopilar nombres de empleados válidos de una organización que cuenten con perfil en la red social Linkedin donde anuncien en qué organización trabajan o han trabajado.
CrossLinked utiliza técnicas OSINT apoyándose en motores de búsqueda como Google y Bing. Encontrará nombres de empleados válidos y ayudará a formatear los datos, por ejemplo, de acuerdo con la convención de nomenclatura en las cuentas de correo electrónico de la organización. Los nombres de usuario o las cuentas de correo electrónico generadas por la herramineta se almacenaran por defecto en el archivo ‘names.txt‘ en el directorio actual.
Instalación de Crosslinked
La instalación de la herramienta es sencilla, basta obtener una copia desde su repositorio de GitHub ejecutando el comando “git clone https://github.com/m8r0wn/crosslinked” desde nuestro Kali Linux.
Figura 2. Instalación de CrossLinked.
El siguiente paso es instalar las dependencias de los paquetes necesarios para el funcionamiento de la herramienta ejecutando del comando “pip install -r requirements.txt”.
Figura 3. Instalación de las dependencias necesarias para CrossLinked.
Funcionalidad de CrossLinked
Para consultar las opciones de la herramienta ésta dispone del parámetro “-h”:
Figura 4. Parámetros de funcionamiento de CrossLiked.
Las opciones de las que la herramienta dispone son las siguientes:
-h, –help muestra información sobre los argumentos que acepta la herramienta, cuáles son obligatorios y cuáles son opcionales.
-t TIMEOUT Timeout utilizado en el proceso de búsqueda multihilo (Default: 25). Si al cabo de ese tiempo no obtiene respuesta la herramienta finaliza la búsqueda.
-j JITTER parámetro utilizado para introducer información espuria en caso de ser detectados durante el proceso de scraping (Default: 0)
-o OUTFILE Cambiar el nombre del fichero de salida con la información encontrada (defecto: names.txt).
-f NFORMAT Formato de nombres, ej: ‘domain\{f}{last}’, ‘{first}.{last}@domain.com’
-s, –safe Solo analiza los nombres que aparezcan en el título de la web (reduce los falsos positivos)
-v Muestra nombres y títulos recuperados después de la enumeración.
Búsqueda del patrón en la formación de los nombres de usuario
Una manera sencilla de conocer el posible patrón en la formación de los nombres de usuario de los servicios utilizados por una organización es estudiar la formación de los nombres de usuario en sus cuentas de correo electrónico. El uso de la herramienta hunter.io es una buena opción, ya que permite encontrar direcciones de correo electrónico de una organización utilizando técnicas OSINT y determinar el patrón de generación de los usuarios de las cuentas de correo electrónico encontradas.
Figura 5. Cuentas de correo electrónico sde una organización junto con el posible patrón de generación.
Para este ejemplo, proporcionando un nombre de dominio público Hunter.io encuentra un total de 55 direcciones de correo electrónico y determina que el posible patrón de formación de los usuarios de las cuenta de correo electrónico descubiertas es “{f}{last}@aytoXXX.es”.
Generación de nombres de usuarios utilizando la información pública de Linkedin
Conociendo el parametro de generación de los usuarios del correo electrónico, “{f}{last}@aytoXXX.es”, lo siguiente es utilizar la herramienta CrossLinked de la forma “python3 crosslinked.py -f ‘{first}.{last}@aytoXXX.es’ Ayuntamiento de XXX”
Figura 6. Uso de la herramienta CrossLinked en busca de información en Linkedin.
La herramienta por defecto genera el fichero “namex.txt” con los correos formados gracias a la información pública descubierta en Linkedin y siguiendo el patrón de generación indicado.
Figura 7. Posibles cuentas de correo electrónico generadas por CrossLinked utilizando OSINT.
Se observa cómo CrossLinked utiliza los motores de búsqueda de Google y Bing utilizando el dorking “site:linkedin.com/in+»Ayuntamiento de XXX”:
https://www.google.com/search?q=site:linkedin.com/in+»Ayuntamiento de XXX»&num=100&start=0
https://www.google.com/search?q=site:linkedin.com/in+»Ayuntamiento de XXX»&num=100&start=117
…
https://www.bing.com/search?q=site:linkedin.com/in+» Ayuntamiento de XXX «&first=0
[*] 10 : https://www.bing.com/search?q=site:linkedin.com/in+» Ayuntamiento de XXX «&first=29
…
Utilizando directamente el dorking anterior en Google, se obtienen los siguientes resultados:
Figura 8. Resultado de las búsquedas utilizando el dorking de CrossLinked.
Si en lugar de necesitar cuentas de correo electrónico en el proceso de Ethical Hacking lo que se necesitan son los nombres de usuario, para por ejemplo, hacer pruebas sobre el servicio SSH que usan sus usuarios, una forma de generar estos nombres con CrossLinked es la siguiente:
“python3 crosslinked.py -f ‘{first}.{last}’ Ayuntamiento de XXX”
Únicamente especificando el patrón de generación ‘{first}.{last}’ la herramienta es capaz de aplicar técnicas OSINT sobre los perfiles en Linkedin que tienen los miembros de la organización y formar nombres de usuarios en base al patrón indicado.
Figura 9. Posibles nombres de usuarios para poder realizar ataques de fuerza bruta en diversos servicios.
A partir de este punto dentro de un Ethicar Hacking, ya tendremos en nuestra mano información más que interesante para utilizar en aquellos servicios que lo permitan. No os olvidéis de probar todos estos nombres de usuario sin contraseña, probar únicamente el mismo login con ese mismo password o, nunca olvidar la propiedad de suprayectividad intrínseca al uso de contraseñas en prácticamente la totalidad de todos los servicios.
Siguenos en Twitter: @fernandez_jcar @tecnogados #PruebaTecnologica