domingo, 16 de octubre de 2016

OSRFramework: framework para la investigación de usuarios en fuentes abiertas

Se trata de OSRFramework, (Open Sources Research Framework), desarrollada por Féix Brezo, (@febrezo) y Yaiza Rubio, (@yrubiosec), unos analistas de inteligencia, en el sector de las telecomunicaciones, que pertenecen al grupo de i3Visio.

Se trata de un framework para la investigación de usuarios en fuentes abiertas, capaz de buscar datos en 223 plataformas distintas, entre otras funcionalidades. No usa APIs de las plataformas, (salvo en Skype porque hay que darle permisos), si no que se basa en una aproximación de la url. Extrae la información de una forma automática. Y es de código abierto.

Vamos a proceder.

Primeramente, clonamos o descargamos la herramienta, con

git clone https://github.com/i3visio/osrframework.git

Si listamos el directorio, con

ls -l osrframework

Veremos que tiene un instalador. Instalamos la herramienta con

sudo python setup.py build
sudo python setup.py install

Ahora, si listamos el directorio ‘osrframework.egg-info’, observaremos que tiene unas dependencias.

ls -l osrframework.egg-info

Así que ingresamos al directorio y las instalamos, mediante

cd osrframework.egg-info
sudo pip install -r requires.txt

Ahora, si ingresamos en el segundo directorio de ‘osrframework’ y lo listamos, observaremos los módulos de la herramienta

cd home/marcos/osrframework/osrframework
ls -l

Para comenzar, podemos ejecutar el ‘osrfconsole.py’, para ver qué módulos están disponibles y qué hace cada uno de ellos

python osrfconsole.py

Pinta muy interesante, ¿verdad? Pero ahí no figuran todos. Veamos la ayuda de cada uno de ellos

python searchfy.py --help

Módulo que realiza búsquedas en plataformas, tanto de la web de superficie, como de redes anónimas.

domainfy.py --help

entify.py --help

Módulo al que se le pasan documentos o carpetas o una url para extraer entidades, (emails, hashes, urls, direcciones IPV4, DNI, …)

python enumeration.py --help

Módulo al que se le pasa una estructura de una url y que fuerza la búsqueda de los ‘id’ dentro del sitio y la descarga en local para consultarla offline, en formato ‘.html’. Se descarga toda la lista de usuarios que tiene el sitio.

mailfy.py --help

Módulo al que, dados unos nombres de usuarios, alias o direcciones de correo electrónico, verifica si existe esa cuenta de correo electrónico.

phonefy.py --help

Módulo al que, dado un número de teléfono, procede a su chequeo en listas de Spam.

usufy.py --help

Módulo al que se le introduce un alias, un usuario, o lista, y busca la información, relativa al perfil del mismo en diversas plataformas.

Bueno. Visto esto, es hora de ponerla en funcionamiento con el “voluntario” que teníamos en este perfil de Twitter.

Para ello, y conociendo un alias como conocemos, (antoniobanos_), vamos a llamar a ‘usufy.py’, con

usufy.py -n antoniobanos_ -p all

Esta línea nos devuelve algunos resultados.

Como considero que no me es suficiente, voy a usar otro módulo que no os he presentado antes. Se trata de un generador de Alias.

Este es un módulo al que se le introducen una serie de datos para que genere una lista de posibles alias.

Es realmente interesante. Como teníamos una bonita página en la Wikipedia de este ‘señor’, con algunos datos personales, me es más que suficiente para mostraros cómo trabaja este framework.

Así que, vamos a proceder a generar una lista de posibles alias, mediante

alias_genarator.py

Como podéis ver, es muy fácil de usar. Tras finalizar, se presenta la siguiente pantalla, que nos indica el número de alias posibles que se han generado.

¡Casi nada! 1656 nicks generados, en un fichero de texto con nombre ‘output’. Son demasiados, para mostraros el poder de este framework.

Esto podría tardar demasiado tiempo, en torno a 40 segundos por cada alias. Echad cuentas. No tengo ninguna prisa, pero hay que recortar esta lista. Recordáis que había un perfil en Twitter, ¿verdad? Pues vamos a hacer una cosilla.

Nos dirigimos al sitio de Twitter. Clicamos en “¿Olvidaste tu contraseña?”

Introducimos en alias en cuestión y le damos a buscar.

Y se nos presenta esta bonita pantalla.

¿Qué tenemos? Pues tenemos una dirección de correo, de un dominio que empieza por ‘Y’, seguido de cuatro caracteres, con un ‘.’, seguido de dos caracteres. Y un alias, que empieza por ab, seguido de cinco caracteres. Total… siete caracteres de un alias que comienza por ‘ab’.

Como el módulo de ‘alias_generator.py’ nos había generado 1656 posibles nicks,

wc -l /home/marcos/osrframework/osrframework/output.txt

Seleccionamos aquellos que comienzan por ‘ab’ y los copiamos a un nuevo fichero.

wc -l /home/marcos/osrframework/osrframework/ab

Siguen siendo demasiados. Vamos a hacer otra cosa. Los vamos a copiar a una tabla Excel y le vamos a aplicar una pequeña fórmula para ordenarlos por número de caracteres.

Recodáis que, según una cuenta de recuperación de correo electrónico, tenía un total de siete caracteres, comenzando por ‘ab’. Pues copiamos únicamente los posibles alias con siete caracteres a un nuevo fichero de texto.

wc -l /home/marcos/osrframework/osrframework/Alias-7.txt

Hemos pasado de 1656 posibles nicks, a 4. Casi nada.

Esto es un ejemplo de cómo funciona esta herramienta. Os muestro otros

python enumeration.py --u https://assemblea.cat

python enumeration.py --u https://cup.cat

entify.py --u https://assemblea.cat

entify.py --u https://cup.cat

mailfy.py -N Alias-7.txt

usufy.py -p all -l output.txt

searchfy.py -p all -q antoniobanos

Todos los resultados obtenidos, a excepción del módulo de ‘enumeration.py’, que se descargan en local, son exportados a un fichero en formato ‘profiles.csv’

ls -l | grep profiles.csv
file profiles.csv
wc -l profiles.csv

En mi caso, el fichero ‘profiles.csv’ creado, me ha generado un total de 627 resultados, matando algunos procesos. Y no os digo nada de los miles de resultados obtenidos de la enumeración.

NOTA: Los resultados obtenidos se basan en supuestos. Es decir, que hay que realizar una comprobación ‘manual’ de los datos obtenidos, intentando correlacionarlos entre sí, para determinar si pertenecen a la persona que se está ‘estudiando’.

Por último, de obligada lectura y obligado visionado:

#RetoISACA2015 – OSRFramework, un framework libre para la investigación de usuarios en fuentes abiertas

Taller de Félix Brezo Fernández y Yaiza Rubio Viñuela en Cybercamp 2015

Esto es todo, por ahora. Nos leemos en la siguiente entrada. Se despide este minion, entregado y leal, de vosotros… por ahora.

Marcos @_N4rr34n6_