jueves, julio 18, 2019

CrossLinked: Extracción y enumeración de nombres de empleados con técnicas de Web Scraping sobre LinkedIn

Una etapa fundamental en cualquier autditoría de seguridad 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: CrossLinked: Extracción y enumeración de nombres de
empleados con técnicas de Web Scraping sobre LinkedIn

Una herramienta interesante durante el proceso de recolección de información es CrossLinked que está escriba en Python, 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.

Figura 2: CrossLinked en GitHub

CrossLinked utiliza técnicas OSINT apoyándose en motores de búsqueda como Google y Bing  donde hace un poco de Hacking con Buscadores. Encontrará nombres de empleados válidos y ayudará a formatear la salida de los datos, por ejemplo, de acuerdo con la convención de nomenclatura en las cuentas de correo electrónico que esté utilizando dicha organización.

Figura 4: Libro de Hacking con Buscadores: Google, Bing & Shodan + Robtex [3ª Edición]
[Lo puedes adquirir en 0xWord estos días con el cupón 10% descuento]

Los nombres de usuario o las cuentas de correo electrónico generadas por la herramienta se almacenaran por defecto en el archivo 'names.txt' en el directorio actual de trabajo para que puedas llevártelo a cualquier otro script.

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 5: Instalación de CrossLinked desde Kali Linux

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 6: Instalación de las dependencias necesarias para CrossLinked

Tras estos sencillos pasos ya  podemos comenzar a trabajar con nuestra herramienta y hacer las pruebas de sus funcionalidades.

Funcionalidad de CrossLinked

Para consultar las opciones de la herramienta ésta dispone del parámetro “-h” con lo que obtendremos la lista de parámetros que podemos utilizar en cada ejecución para sacar el máximo de sus capacidades.

Figura 7: Parámetros de funcionamiento de CrossLinked

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: Limitado temporal antes de fallar 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 (Default: names.txt).
-f NFORMAT: Formato de nombres. Pro ejemplo: '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 pero se deja datos sin obtener)
-v: Modo "Verbose" que 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 estructura de los nombres de cada uno de los usuarios 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 8: Cuentas de correo electrónico de 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 parámetro 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 9: 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 10: Posibles cuentas de correo electrónico generadas por CrossLinked.

Se observa cómo CrossLinked utiliza los motores de búsqueda de Google y Bing utilizando el dorksite: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 dork anterior en Google, para hacer el Hacking con Buscadores manualmente, se obtienen los siguientes resultados:

Figura 11: 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 12: Posibles nombres de usuarios para poder realizar ataques de fuerza bruta en diversos servicios.

A partir de este punto dentro de un Ethical 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.

Autor: Amador Aparicio (@amadapa), escritor de libro "Hacking Web Technologies" y CSE en ElevenPaths

2 comentarios:

jordi dijo...

Ojo,
habéis dejado los nombres y apellidos en los links de Linkedin en la captura 11.

Julio Espinosa dijo...

Tienes razón, cuidado con esa información.

Entrada destacada

Cibercriminales con Inteligencia Artificial: Una charla para estudiantes en la Zaragoza

Hoy domingo toca ir a participar en un evento, con una charla y una pequeña demo. Ahora mismo sí, así que el tiempo apremia, os dejo una cha...

Entradas populares