• Marcos Pablo Russo

Twint

Dentro de la parte de OSINT tenemos esta herramienta que nos sirve especialmente más la parte de SOCMINT. Es una herramienta avanzada que realiza scraping sobre una cuenta de la red social Twitter, sin tener que usar la API del proveedor. Esta herramienta está desarrollada en Python.


Scraping es una técnica que sirve para extraer información de páginas web de forma automatizada. En nuestro caso haremos scraping de cuentas de la red social Twitter, extrayendo todos los datos de la misma, como tweets publicados, followers, follogins, etc.


Esto es muy útil cuando tenemos que investigar un perfil determinado en las redes sociales, este tipo de investigación se llama SOCMINT (Social Media Intelligence) que es uno de los tipos de inteligencia que componen el mundo OSINT, al igual que humint, geomint, etc.


Lo más interesante de esta herramienta es que realiza un scrapping de la red social y de forma anónima, de esta forma ni dejamos rastros dentro de una investigación y como dijimos no necesitamos la API del proveedor.

Otra de las ventajas, es que podremos exportar los resultados a Elastic Search y Kibana para poder tratar los datos de una forma muy potente, como también de archivos CSV o bases de datos.


Características básicas:

  • Desarrollado en Python 3.6.

  • No utiliza ningún tipo de autentificación ni API.

  • No usa ningún emulador típico de navegadores.

  • Permite ejecutar operadores de búsqueda consultas especiales de Twitter.

  • Scrapea Tweets de usuarios específicos.

  • Recoleta hastags, topics, tendencias o cualquier dato que circule en Tweets públicos.

  • Puede recuperar casi todos los Tweets en comparación con los límites establecidos en la API con 3200 Tweetes.

  • Rápida configuración inicial.

  • Anonimato al no iniciar sesión en Twitter.

  • Sin limitación de precios de número de consultas por API.

  • Permite exportar los resultados a ficheros, CSV, JSON, SQLite o ElasticSearch.

  • Permite explotar los datos extraídos con gráficos y estadísticas mediante Kibana a través de la conexión con ElasticSearch.

  • Tiene la funcionalidad de interactuar de manera gráfica con los datos almacenados en SQLite a través del framework Twint Graph Visualizer.

Búsqueda de tweets:

  • De un determinado usuario.

  • Favoritos de alguien.

  • Con un contenido concreto.

  • Si tiene fotos.

  • Geolocalización.

  • En unas fechas dadas.

  • De usuarios verificados.

Guardar el contenido para su posterior consulta:

  • En ficheros csv.

  • En un .txt.

  • En json.

  • En base de datos SQLite.

El resultado de la consulta devuelto dependerá de la tarea que se realice, obtendremos la fecha y hora que se creó los tuits, el usuario, y el contenido del mismo. El número de resultados devueltos se limitará aproximadamente a 3200 (límite puesto por Twitter según los comentarios de los desarrolladores).



Instalación


Lo requerimientos que vamos a necesitar en Python son las siguientes librerías.

  • Python 3.6

  • aiohttp

  • aiodns

  • beautifulsoup4

  • cchardet

  • elasticsearch

  • pysocks

  • pandas (>= 0.23.0)

  • aiohttp_socks

  • schedule

  • geopy

  • fake-useragent

  • py-googletransx

Para esto vamos a bajar desde github el software e instalarlo.


   # git clone https://github.com/twintproject/twint.git 
   # cd twint # pip3 install -r requirements.txt 
   # python3 setup.py install

Otra forma de instalación es utilizando el comando pip3.

$ pip3 install twint



Utilización


Tenemos varias opciones para realizar búsquedas. Vamos a mostrar una serie de opciones que tiene con su significado correspondiente.

Para poder ver todas las opciones que tenemos ejecutando:

$ twint -h

Algunas de las opciones que utiliza es:

  • --following

  • --followers

  • --favorites

  • -s <string de búsqueda>

  • --year <limitar la búsqueda a un año en particular>

  • -o <output> <file.txt o file.csv>

  • --databse <nombre de la base de datos en sqlite>

  • -g="48.8800048,2.385939,1km" (permite la geolocalización de latitud, longitud y un radio de 1km)

  • --favorites (todos los tuits del usuario que tiene como favoritos).

  • --user-full (información de cada persona)

  • --retweets (Los últimos 900 tuits que incluye los retuit desde el profile del usuario)

  • --resume <file.txt> (Resumen de cada comienzo de búsqueda desde el último scroll-id grabado)

Para ver los tweets de un usuario con el tiempo de línea ingresamos:


  $ twint -u USUARIO

Podemos también buscar a un usuario en particular y los tweets que tuvo antes de un año determinado.


También podemos ver los seguidores mediante la opción --follower.


También podemos ver lo que sigue, mediante la opción --following.


Ahora podemos buscar los tuits que tengan al menos de 100 likes.


Podes obtener tanto las imágenes (--images) que tiene en la red social como también los videos (--videos).

$ twint -u shakira --images --videos


Con la opción -s permite realizar búsquedas en el texto, en nuestro ejemplo buscaremos la palabra linux.



Otra forma también al realizar una búsqueda es verificar que la información que se muestra es verificada por el usuario, esto lo realizamos mediante la opción --verified.



Otra forma que me permite es realizar una búsqueda de una fecha determinada y horario determinado mediante la opción --since AÑO-MES-DIA HORA:MINUTOS:SEGUNDOS.



Mediante la opción -o podemos realizar la salida en un archivo, nos va a mostrar por pantalla y también lo ira grabando en un archivo.



También podemos indicarlo que quieres generar un archivo csv indicándole con la opción --csv.


Otra opción de salida es grabar a una base de datos, la cual será una base de datos SQLite. esto lo realizamos mediante la opción --database.



     $ twint -s "Donal Trump" --verified --database tweet.sql 

Mediante la herramienta sqlitebrowser podemos ver la base de datos que logramos mediante el comando anterior.



Al abrrir la base de datos veremos que nos encontramos con una estructura de 8 tablas en la base. En este caso vamos a concentrarnos en la tabla "tweets". Expandimos la taba de tweets y vamos a ver los campos que la componen.



Vamos ahora ya finalmente y para ir cerrando este post, ir a la solapa "Execute SQL" en dónde armaremos una query que nos traiga los tweets en donde se haya usado la palabra hacking (o cualquiera que quisiéramos encontrar).



Podes obtener de los tuits que nos muestre los email mediante la opción --email y los números telefónicos con la opción --phone.



Crear un container de Twint


Una forma sencilla de crear un container con esta maravillosa herramienta, es la siguiente:

FROM ubuntu:latest

RUN apt-get update && apt-get upgrade -y \
    && apt-get install python3 python3-pip -y \
    && pip3 install twint \
    && apt-get clean

# Run the application.

CMD ["/bin/bash"]

La forma de crearlo es:

$ docker build . -t twint:latest

Una vez que lo tengamos creado lo ejecutamos de la siguiente forma:

$ docker run -ti --rm twint:latest twint -h
$ docker run -ti --rm twint:latest twint -u shakira


Conclusión


Es una excelente herramienta para realizar búsqueda de información de perfiles y sus relaciones, sin necesidad de estar logueado y al descubierto, y sin necesidad de API.