18 mar 2024

CrossLinked – Herramienta OSINT para el descubrimiento de emails


Una de las partes de la metodología OSINT consiste en encontrar información acerca de personas relacionadas con la organización objetivo. CrossLinked es una herramienta de código abierto que permite la enumeración de nombres válidos de usuarios y de cuentas de correo de una organización.

Esta herramienta utiliza el scraping de los distintos motores de búsqueda de Internet contra la aplicación LinkedIn. Esta técnica proporciona resultados precisos sin necesidad de usar claves de API y sin acceder directamente a LinkedIn.

¿Cómo funciona?

Para poder utilizar esta herramienta en concreto, es necesario tener Python instalado en el sistema, más concretamente en su versión Pyhton3.

Para instalarla solo es necesario clonar el repositorio de la herramienta con la versión más actualizada del código:


De esta manera se creará una carpeta que contendrá los scripts que usa la herramienta y donde se guardarán por defecto los ficheros que se generan con cada uso.

Para poder usar CrossLinked hace falta tener claro que nomenclatura de cuentas usa la organización objetivo. Por ejemplo, para una organización que utiliza para sus correos corporativos la forma “{f}{apellido}@dominio.com” (la primera letra del nombre y el primer o segundo apellido), se introducirá así en la herramienta.

El formato que utiliza CrossLinked puede ser de tres tipos:


Un ejemplo básico de uso podría ser:


Para especificar la nomenclatura se utiliza la opción -f, mientras que para especificar el nombre de los archivos que se generarán se utiliza la opción -o.

Adicionalmente, se recomienda que para obtener mejores resultados se añada inmediatamente seguido de la nomenclatura el nombre de la compañía tal y como aparece en LinkedIn, no el nombre de dominio. De la manera:


Resultados

El resultado de la ejecución sería algo como:


Una vez ejecutado, se generan dos tipos de ficheros:
  • Archivo .txt que almacena solo los nombres recopilados.
  • Archivo .csv que almacena toda la información obtenida (nombre, puesto de trabajo y Url del usuario en LinkedIn).

Conclusión

Existen varias herramientas OSINT muy conocidas para el reconocimiento de cuentas de correo, como puede ser Hunter.io, Snov.io o Harvester entre otras. Pero esta herramienta se puede utilizar sobre todo al comienzo de la fase de reconocimiento, ya que permite obtener información fiable sin necesidad de API keys o credenciales para su funcionamiento. 

Además, al conectarse a LinkedIn para obtener la información, la convierte en una herramienta muy fiable que obtiene datos actualizados, con un 88 % en tiempo real y un 12 % restante en los últimos 29 días.

Por lo tanto, podemos considerar a CrossLinked como una herramienta muy recomendable para realizar esta parte del reconocimiento.

Javier Muñoz, Analista de Ciberseguridad en Zerolynx.

11 mar 2024

Burpsuit: Intruder


¡Buenas a todos!

Hoy hablaremos de una de las herramientas más utilizadas y potentes dentro del propio Burp Suite para realizar auditorías Webs.

Burp Suite es una herramienta para probar la seguridad de aplicaciones web. Intercepta, examina y modifica solicitudes. Permite visualizar como se forma una petición, además de detectar vulnerabilidades comunes como inyecciones SQL y Cross-Site Scripting. Proporciona funcionalidades que permiten automatizar tareas comunes y personalizar flujos de trabajo. Es una herramienta versátil y poderosa.

El Intruder es un módulo interno de Burp Suite, este nos permite automatizar solicitudes, lo cual es muy útil a la hora de realizar fuzzing o tareas de fuerza bruta.

Nos permite tomar una solicitud (generalmente capturada en el Proxy antes de pasarla a Intruder) y usarla como plantilla para enviar muchas más solicitudes con valores ligeramente alterados de forma automática. Por ejemplo, al capturar una solicitud que contiene un intento de inicio de sesión, podríamos configurar Intruder para intercambiar los campos de nombre de usuario y contraseña por valores de una lista de palabras, lo que efectivamente nos permite forzar el formulario de inicio de sesión. De manera similar, podríamos pasar una lista de palabras para hacer fuzzing sobre subdirectorios, endpoints o hosts virtuales. Esta funcionalidad es muy similar a la que ofrecen herramientas como Wfuzz o Ffuf.

Los usos más comunes que se le dan al intruder son:

  • Fuzzing directorios o parámetros: Buscando Identificar vulnerabilidades basadas en entradas.
  • Enumerar subdominios: Descubrir o aumentar una superficie de ataque adicional.
  • Brute-forcing logins: Automatizar combinaciones de nombre de usuario y contraseña.

Conociendo ahora sus principales funciones veremos cómo funciona con un ejemplo.

El primer paso será interceptar una petición a través del proxy que ofrece Burp Suite, para ello abriremos el browser que nos ofrece Burp Suite y activaremos la intercepción.



Para la prueba usaremos un laboratorio de portswigger que nos permitiría practicar ataques con el Intruder. En este caso nos iremos a la página de login donde podemos realizar ataque de fuerza bruta sobre el login.



Con el proxy activado, pincharemos sobre log in para interceptar la petición de la página prueba que hemos utilizado.



Una vez capturada la petición la mandamos al Intruder donde realizaremos el ataque.




Desde el Intruder podemos elegir qué tipo de ataque queremos, pudiendo diferenciar 4 distintos:

1. Sniper:

Intruder tomará cada payload que le pasemos (de una lista de payloads) y la colocará en cada posición definida por turno. Es decir, pasará cada payload de la lista en cada parámetro por turno.

Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos una lista de palabras que serían: burp, suite e intruder. Las solicitudes serian así:



2. Battering Ram:

Toma un conjunto de payloads (por ejemplo, una lista de palabras). Donde se coloca la misma carga útil en cada posición (parámetro).

Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos una lista de palabras que serían: burp, suite e intruder. Las solicitudes serian así:


3. Pitchfork:

Pitchfork usa un conjunto de payloads por posición y los recorre todos a la vez. Idealmente, nuestros conjuntos de payloads deberían tener la misma longitud cuando se trabaja en Pitchfork, ya que Intruder dejará de probar tan pronto como se complete una de las listas. Por ejemplo, si tenemos dos listas, una con 100 líneas y otra con 90 líneas, Intruder solo hará 90 solicitudes y los diez elementos finales de la primera lista no se probarán.

Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos dos listas de palabras que sería la primera lista de nombres: 
  • admin
  • root
  • Administrator

Y la segunda lista de contraseñas:
  • P@ssw0rd
  • toor
  • 123456
Las solicitudes serian así:


4. Cluster Bomb:

Cluster bomb nos permite elegir múltiples conjuntos de payloads: uno por posición, sin embargo, mientras que Pitchfork itera a través de cada conjunto de payloads simultáneamente, Cluster bomb itera a través de cada conjunto de payloads individualmente, asegurándose de que se prueben todas las combinaciones posibles de payloads.

Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos dos listas de palabras que sería la primera lista de nombres: 
  • admin 
  • root
  • Administrator
Y la segunda lista de contraseñas:
  • P@ssw0rd
  • toor
  • 123456
Las solicitudes serian así:


Una vez conocidos los tipos de ataques disponibles seguimos con el ejemplo práctico. En nuestro caso concreto elegiremos el de tipo Sniper ya que conseguiremos el usuario y contraseña por separado. A continuación, añadiremos la posición del payload en el campo “username”


Una vez seleccionada la posición vamos a añadir el payload que usaremos en el ataque. En este caso hemos usado una lista de nombre comunes a modo de diccionario. 



Con todo listo podemos iniciar el ataque, que hará peticiones a la web con todos los nombres de usuarios proporcionados.


Podemos observar como con el payload alerts el tamaño de la respuesta cambia, esto es debido a que el mensaje de error es distinto, donde nos dice que la contraseña es incorrecta. De aquí obtenemos que existe un usuario llamado alerts.
Ahora usaremos el mismo método, pero en el campo password para encontrar la contraseña del usuario identificado


Una vez cambiado el usuario con el que se intenta iniciar sesión repetimos el mismo ataque con la contraseña cambiando la lista a una con valores típicos de contraseñas débiles.


En este caso podemos detectar el cambio en la respuesta ya que se trata de una redirección, que nos indica que posiblemente se ha validado.

Probamos a ver si estamos en lo correcto en la página de prueba:

Y con las credenciales obtenidas podemos entrar quedando además resuelto el laboratorio.
De igual manera que he realizado esta prueba con un laboratorio de portswinger hay multitud de páginas y máquinas que pueden servir para practicar con el Intruder. Algunas de ellas son:


Hasta aquí esta introducción al intruder, como podéis suponer tiene multitud de usos y se puede aplicar de formas muy distintas según las necesidades de la auditoria. 
Esperamos que os haya gustado y os vemos en la próxima entrega de FluProject.