viernes, 14 de octubre de 2016

Doctor, si se me revuelven las tripas… (II): “Toma un poco de #OSINT con #OSRFramework”


Hola secuaces:

Siguiendo con mi curiosidad, con mi afán de saber quién es el ‘señor’ de mi entrada anterior, “Doctor, si se me revuelven las tripas… (I): “Toma un poco de #OSINT con #Tinfoleak””, y siguiendo con ganas de saber por dónde se mueve, voy a usar otra magnífica herramienta. Por supuesto, respetando toda privacidad, pues únicamente pretendo mostraros cómo funciona este framework.

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_

Google Analytics