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_