Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Desanonimación Twitter
Desanonimación Twitter
El anonimato en Internet se utiliza en ocasiones para cometer delitos o faltas, por lo que
las Fuerzas de Seguridad necesitan métodos y herramientas para la identificación de
usuarios maliciosos. En primer lugar, se exploran las técnicas y herramientas utilizadas
que permiten ocultar la dirección IP real, así como métodos y opciones para anonimizar
la navegación web; también se presenta el uso de buzones de correo electrónico
desechables. A continuación, se analiza la información de Twitter que permite obtener
algunos rasgos identificativos, para continuar con las técnicas de identificación basadas
en la búsqueda cruzada de datos en diferentes redes sociales y foros públicos.
Como conclusión, se realiza una prueba de concepto mediante el desarrollo de un script
en Python que, a través de la monitorización de Twitter, permite ver en funcionamiento
las técnicas de identificación descritas tomando como fuente de datos las publicaciones
en Twitter, tanto las que se obtienen en tiempo real como las que se obtienen del
histórico.
Palabras clave: anonimización, desanonimización, Twitter, alias, monitorizar, seguridad.
Abstract
1. Lista de figuras
Figura 9. Captura del proceso de acceso al servicio Gmail con una cuenta existente ..….. 19
Figura 10. Captura del proceso de acceso a Gmail cuando la cuenta no existe …………….. 20
Figura 12. Respuesta de Whois (GNU/Linux) a la consulta sobre el dominio uoc.edu ……….. 21
6
Introducción
2. Introducción
7
Introducción
2.1. Objetivos
Los objetivos específicos que se buscan con el desarrollo de este proyecto son los
siguientes:
De manera adicional, se espera alcanzar los siguientes sub objetivos con carácter
transversal a todas las áreas del Grado.
2.2. Metodología
Debido a que una buena parte del proyecto va a consistir en aprender una nueva
tecnología, la metodología se va a basar, en primer lugar, en la investigación y la
búsqueda de información sobre las técnicas de anonimización existentes. Además, será
necesario comprender el funcionamiento de Twitter y sus APIs públicas. También será
necesario investigar las técnicas o aplicaciones que permiten obtener datos de fuentes
de información para su tratamiento y procesamiento.
En segundo lugar, para el diseño y desarrollo de la prueba de concepto la metodología
a usar será, en la medida de lo posible, un acercamiento al estilo bottom-up en el que
se irá diseñando, programando y ajustando de forma ágil para poder adaptar el código
a los requisitos planteados en el diseño y las modificaciones que puedan surgir con el
fin de mejorar el producto final.
Por otra parte, el desarrollo de la memoria será progresivo, a medida que se avance por
las distintas etapas. De esta forma, en la última fase solo será necesario ensamblar las
distintas partes, darlos el formato y estilo adecuado para su presentación final.
8
Introducción
2.3.2. Tareas
Definición del proyecto (5 días): Elección del objetivo específico del proyecto. El
resultado de esta etapa marca, en principio, cuál será el problema a resolver por el
proyecto y la prueba de concepto.
9
Introducción
Prototipo (20 días): Desarrollo de un prototipo Debido a que se trabajará con una
metodología ágil, las etapas del desarrollo se irán revisitando de forma continua
hasta la versión final.
- Análisis (17 días): Recogida de requisitos según el planteamiento de alto nivel.
- Diseño (17 días): Creación del modelo en lenguaje natural o algorítmico, junto a
los diagramas necesarios.
- Implementación (20 días): Programación en el lenguaje específico, con el
resultado final del código fuente de la aplicación.
- Interfaz de visualización (11 días): Selección de un interfaz de visualización que
permita consumir los datos obtenidos de una forma adecuada.
PoC (16 días): Creación y desarrollo de una prueba de concepto que muestre el
funcionamiento del prototipo generado.
- Prueba de concepto (7 días): Desarrollo de la prueba en un entorno definido y
sobre datos reales.
- Conclusiones (17 días): Extracción de conclusiones del modelo que permitan
comprobar si cumple con el objetivo y cuál es el alcance real.
Presentación (6 días): Desarrollo del material audiovisual que sirva como síntesis
de todo el trabajo.
10
Estado del arte
11
Estado del arte
Por otra parte, hay varios trabajos sobre las técnicas para la re identificación de usuarios
en conjuntos de datos que han pasado por un proceso de anonimización, como el
estudio presentado por Narayanan y Shmatikov [10] en el que a partir de un conjunto de
datos anonimizados de Twitter fueron capaces de re identificar a los usuarios, con el
apoyo de otro conjunto de datos de la red Flickr con un error del 12%. En este mismo
sentido, Nilizadeh, Kapadia y Ahn [11] desarrollaron un algoritmo con una aproximación
mediante la metodología de “divide and conquer” que consigue mejorar la re
identificación, también en conjuntos de datos de redes sociales.
Un ejemplo más concreto y enfocado en la información que proporciona una única red
social es el trabajo de Wondracek, Holz y otros [12] en el que en lugar de usar grandes
conjuntos de datos, se utilizan los datos que proporciona la propia red social que se
analiza. De esta forma, demuestran que es posible identificar a una persona a partir de
los grupos a los que pertenece su usuario en la red social. Es decir, la pertenencia a los
grupos diferencia a unos usuarios de otros hasta el punto de formar una huella única o
al menos común a un conjunto pequeño.
12
Técnicas de anonimización
4. Técnicas de anonimización
4.1. VPN
Como ya se ha mencionado con anterioridad, las VPN o virtual private network por sus
siglas en inglés, son redes privadas virtuales, es decir que se establece una red privada
de manera virtual sobre una red pública –como internet– que permite comunicaciones
de tipo local en redes distantes. Debido al auge y mejoras de las infraestructuras de
Internet, el uso de las VPN está muy extendido en la actualidad en las empresas para
unir redes en sedes que están distantes, o bien para permitir el acceso a recursos de la
intranet a usuarios remotos.
La mayoría de las implementaciones de las VPN se basan en tres protocolos, cada uno
ofrece ciertas ventajas y desventajas:
13
Técnicas de anonimización
14
Técnicas de anonimización
4.2. Proxy
15
Técnicas de anonimización
Figura 4. Esquema general del proxy. Autor Randomicc (Own work) [CC BY-SA 3.0]
El uso de proxies es muy habitual en redes grandes en las que es necesario compartir
una única salida hacia internet. De esta forma, todas las conexiones de los clientes de
dentro de la red quedan anoninimizadas ya que de cara hacia fuera todas se originan
desde la misma IP. Otra característica que pueden ofrecer –si se utilizan técnicas de
autentificación– es la de filtrado de contenidos y perfiles de navegación que permiten
asignar roles a los usuarios con el fin de gestionar los recursos de manera óptima.
Para el caso particular de anonimización de conexiones en internet, existen diferentes
proveedores –muchos de ellos gratuitos– que permiten la navegación web a través de
un proxy, ya sea mediante la redirección del tráfico http y https directamente desde el
equipo, o bien a través de un acceso a una web intermediaria que permite consultar la
página final, actuando de proxy.
Sin embargo, la utilización de proxies limita el uso de servicios que se pueden utilizar, y
por extensión, también limita el número de aplicaciones que se pueden usar de forma
anónima, ya que como se ha dicho con anterioridad, la mayoría de proxies están
especializados en el protocolo HTTP. No obstante, muchas aplicaciones y servicios
permiten el encapsulado de protocolos diversos (como por ejemplo el protocolo de
transferencia de archivos FTP) en paquetes HTTP que extienden las funcionalidades de
los proxies web.
La red TOR (The Onion Router) es un sistema distribuido de equipos que permite
anonimizar conexiones mediante el uso de técnicas de criptografía –para mantener la
privacidad de la información– y la elección de caminos o rutas aleatorias a través de su
red. Fue creada en 2003 por Roger Dingledine y otros a partir del proyecto Onion
Routing. Actualmente es usada en muchos lugares donde existe censura, donde la
libertad de expresión está coartada o bien donde es necesario mantener el anonimato
16
Técnicas de anonimización
por seguridad. Por otra parte, también es usada con fines criminales en parte de la
deepweb.
La red funciona como un conjunto de nodos que permiten crear rutas distintas para cada
conexión, de modo que, en principio, no es posible monitorizar la red para tratar de
discernir las conexiones entre los extremos. La estructura de la red está formada por los
siguientes elementos:
Nodos OR (Onion Router) que son los encargados de transmitir los paquetes a
través de la ruta creada por el host que inicia la comunicación.
Nodos OP (Onion Proxy), hacen de interfaz entre el cliente y la red TOR. Se
encargan de obtener información del servicio del directorio, crear las rutas y
gestionar las conexiones de las aplicaciones de usuario (paso de TCP a
SOCKS).
Servicio de directorio, ofrece información –de forma centralizada, aunque está
replicado– sobre los nodos.
Figura 5. Esquema de la red TOR. Autor Fercufe. Fuente Wikimedia. CC BY-SA 3.0
17
Técnicas de anonimización
Figura 6. Esquema de funcionamiento de la red I2P. Autor: I2P Team. Fuente Wikimedia. CC-BY-SA 4.0
Cada usuario que quiere comunicar mediante la red I2P crea, al menos, un túnel de
entrada y un túnel de salida. Se pueden crear varios túneles de entrada y salida –para
18
Técnicas de anonimización
mejorar el rendimiento– que serán compartidos por los distintos flujos de datos. Cada
túnel está compuesto por dos nodos. Los datos de salida pasan de la aplicación en el
cliente al router local I2P que inicia el cifrado (se usa el protocolo Garlic que permite
empaquetar más de un datagrama IP en cada paquete) y pasa los datos al túnel de
salida. Los datos viajan hasta el punto de salida del túnel en el segundo nodo, y a partir
de ahí van hacia la entrada del túnel o túneles de entrada del destinatario o servidor. De
esta forma, a través de los dos nodos que forman el túnel de entrada, los paquetes de
información llegan hasta el router local del destinatario que serán pasados a su
aplicación correspondiente.
La red I2P se creó como una red en sí misma y no como un proxy que ofrece privacidad
y anonimato hacia el internet público, por lo tanto tiene integrados dentro de su propia
red muchos de los servicios habituales en internet. No obstante, es posible utilizarla para
navegar y usar casi cualquier servicio que se encuentra en la internet pública o Surface
web a través de los Outproxy que hacen de puerta de enlace anónima. Sin embargo,
hay un número limitado y no muy alto de estos servidores de salida, por lo que puede
ser vulnerable a ataque de análisis de tráfico que permitan.
A nivel de aplicación también se usan distintas técnicas para evitar el rastreo y posible
identificación de los usuarios. Dentro del protocolo HTTP, en las peticiones o respuesta
se incluyen una serie de datos que ofrecen información específica del cliente, y que en
conjunto puede suponer una huella digital del dispositivo, y por extensión del usuario.
Cada vez que se accede a una página web, se establecen conexiones con varios
servidores con distintos fines (normalmente para obtener datos de uso). En la siguiente
figura, se muestra una captura de LightBeam que permite ver las conexiones extra (los
triángulos) cuando se visita una página web determinada (los círculos).
19
Técnicas de anonimización
Cabeceras HTTP
Algunas de los campos o cabeceras del protocolo HTTP que ofrecen información
variada y que se envían en cada petición son:
20
Técnicas de anonimización
21
Técnicas de anonimización
22
Técnicas de anonimización
4.8. Otros
Ya se han descrito las principales técnicas y redes que permiten mantener el anonimato
mediante la ocultación de la dirección IP real, y que son las nombradas por la Interpol
en su último informe IOCTA, además de aquellos que proporcionan información que
ayuda a construir una huella digital del dispositivo y sistema que se utiliza. Sin embargo,
y aunque menos sofisticados, existen otros métodos que permiten que no se pueda
identificar al equipo o usuario que se ha conectado a cierto servicio.
En este sentido, el uso de puntos de acceso públicos que no requieren autentificación
(como redes WiFi sin encriptación) o aquellos que sí utilizan protocolos de encriptación
(WEP, WPA), pero que no realizan ningún registro de las conexiones, como pueden ser
puntos de acceso en cafeterías, bibliotecas públicas y otro tipo de establecimiento puede
servir para este fin. Así, este tipo de redes, como la mayoría, utilizan NAT (Network
Address Translation) para la salida hacia internet, de modo que se podría conocer la red
desde la que se ha realizado la conexión (IP pública), pero podría llegar a ser muy difícil
saber quién era el usuario (IP privada o dirección MAC) sin otros métodos (como
cámaras de seguridad u otros).
En el caso de dispositivos móviles o tabletas (o en general cualquier dispositivo que
tenga un receptor de señales de posicionamiento tipo GPS/GLONASS/GALILEO), para
evitar que se envíen datos relativos a la posición geográfica, se puede deshabilitar esta
característica. En ocasiones, la información sobre la localización no forma parte de los
datos explícitos que se manejan, no obstante, puede suponer un riesgo para el
anonimato y la privacidad (ver caso John Mcfee [15]) ya que es habitual que la
localización se incluya como metadatos en las fotografías.
23
Técnicas de identificación
5. Técnicas de identificación
La red social Twitter ofrece una API muy completa de la que se puede sacar mucha
información. La estructura principal está formada por cuatro objetos que se relacionan
entre sí:
24
Técnicas de identificación
A partir de un objeto de tipo Tweet, se pueden obtener los siguientes datos relevantes:
coordinates: si este campo está informado por el usuario o bien por la aplicación
que gestiona la cuenta de Twitter se puede ubicar al usuario en el momento en el que
publicó el tweet en cuestión.
created_at: marca de tiempo en formato UTC, indica a la fecha y hora a la que se
ha publicado el tweet, no se puede modificar.
in_reply_to_screen_name, in_reply_to_status_id: si el tweet es una
repuesta estos campos informan del nombre de usuario y el id respectivamente del
usuario destinatario. Puede ser útil si se está monitorizando la actividad de un usuario
y hacia ese usuario.
lang: muestra el identificador del lenguaje del equipo desde el que se ha publicado
el tweet, en formato BCP 47. Permite obtener al menos algo de información del
sistema del usuario.
place: contiene un objeto de tipo places. Puede indicar que el tweet se publicó desde
un lugar concreto lo que ubicaría al usuario. Sin embargo, se puede indicar un lugar
cualquiera, por lo que no es vinculante.
source: indica la fuente desde la que se ha publicado el tweet. Se podría sacar
información sobre qué dispositivos tiene, o al menos utiliza un usuario.
text: es el contenido publicado en formato UTF-8. Se puede utilizar para filtrar por
palabras clave.
Los atributos más relevantes de los objetos de tipo usuarios son:
created_at: Marca de tiempo con la fecha de creación de la cuenta.
screen_name: alias con el que se identifica la cuenta. Útil para comparar o buscar
usuarios con el mismo alias en otras plataformas.
time_zone: zona horaria declarada por el usuario.
25
Técnicas de identificación
Buscar tweets por palabras clave, y a partir de los tweets identificar a los usuarios
que los publican.
El alias o nombre de usuario es, en muchos casos, una seña de identidad en internet,
por lo que muchos usuarios suelen utilizar el mismo alias para cuentas en distintas
plataformas. Teniendo en cuanta esta situación, a partir de este dato se pueden buscar
perfiles iguales en distintas redes, foros, o en general servicios en internet que tengan
un acceso público. A pesar de no ser concluyentes, en cuanto a que no siempre cuentas
de distintos servicios con el mismo alias pertenecen al mismo usuario, sí que son un
punto de partida para los analistas.
Esta técnica de ayuda a la identificación busca obtener datos de fuentes abiertas que
ofrezcan más información que la que se tiene de partida, en este caso de la que ofrece
Twitter a través de su API. De esta forma, es posible que otro servicio permita obtener
mayor precisión en datos identificativos, bien porque el servicio en cuestión de esta
información (como por ejemplo la fecha de nacimiento en la red social Facebook) o bien
porque el usuario haya compartido más información en otras partes sin tener en cuenta
que alguien podría establecer esta relación.
Para encontrar esta información se pueden recurrir a varios métodos en función de la
plataforma concreta que se analice. En muchas de ellas, es posible comprobar si una
cuenta existe mediante una simple petición HTTP, ya que el alias se incluye
directamente en la URL, como es el caso de Twitter, Facebook y otras:
26
Técnicas de identificación
En otras, sin embargo, la URL no ofrece la información de forma tan clara, o bien es
necesario acceder mediante una cuenta valida, y ya una vez dentro se puede buscar
por cuenta de usuario.
Es importante que el método utilizado consiga que no se informe al usuario objetivo de
que se ha realizado una búsqueda sobre su perfil, ya que de otra forma podría levantar
sospechas. Como el objetivo es conocer si la cuenta existe o no, con tener esa certeza
es suficiente, sin tener que realizar más indagaciones sobre el contenido de la cuenta.
Existen servicios que permiten comprobar la existencia de un Nick o alias en muchas
plataformas a la vez, y con una interfaz web muy amigable, como por ejemplo
CheckUserNames [16] o Namech_k [17] que permiten ver si un alias está disponible en
las principales redes sociales y foros. Además, ofrecen una API –de pago– con el fin de
poder usar el servicio mediante programas o scripts. Por otra parte, también hay
disponibles desarrollos de código abierto que permiten la misma funcionalidad, como
por ejemplo el paquete OSRFramework de i3visio [18] en Python con licencia GPLv3+,
que incluye la utilidad o módulo Usufy que permite realizar una búsqueda por alias en
más de doscientas plataformas de distinto carácter.
27
Técnicas de identificación
Figura 9. Captura del proceso de acceso al servicio Gmail con una cuenta existente
Figura 10. Captura del proceso de acceso a Gmail cuando la cuenta no existe
28
Técnicas de identificación
Al igual que en el caso de los alias, existen varios servicios o plataformas que ofrecen
la búsqueda o validación de correos en diferentes plataformas. Por ejemplo, el servicio
Verify Email [19] permite hacer consultas e correo a través de una interfaz web, aunque
también ofrece una API de pago; este servicio se basa en los mensajes del protocolo
SMTP (Simple Mail transfer Protocol), presumiblemente en la respuesta a la orden RCPT
TO que indica si la cuenta existe en ese dominio o no.
Sin embargo, no es habitual que los usuarios maliciosos utilicen cuentas de correo de
dominios con carácter privativo como los de empresas u organizaciones. Por el
contrario, suelen utilizar correos de plataformas públicas como Gmail, Yahoo, Hotmail,
etc. En este sentido, el paquete mencionado con anterioridad, OSRFramwork, ofrece
una librería llamada Mailfy, que permite comprobar la existencia de direcciones de
correo en varios dominios de correo públicos, y que puede ser utilizado en aplicaciones
o scripts de Python con este fin.
29
Técnicas de identificación
De manera habitual, las consultas se realizan contra un nombre de domino, sin embargo
es posible realizar búsquedas inversas a través del correo electrónico para ver que
dominios están registrados a nombre de una dirección de correo concreta. Un ejemplo
de servicio que ofrece esta posibilidad es View DNS [20] que mediante la opción
“Reverse Whois lookup” permite realizar este tipo de búsquedas.
De esta forma, a partir de la dirección de correo –y en caso de encontrar algún dominio
registrado mediante ella– se podría obtener información más precisa, que en un caso
ideal podría incluir el nombre completo, un teléfono e incluso una dirección postal.
30
Desarrollo del prototipo
6.1. Requisitos
6.2. Análisis
API REST: Permite hacer consultas sobre los distintos objetos de Twitter,
permite obtener los tweets ya publicados por un usuario –su timeline– o bien
realizar consultas sobre tweets según distintos parámetros, como por ejemplo
por contenido o hashtag. El acceso a esta API está limitado por tiempo y número
de consultas, permite realizar 15 consultas cada 15 minutos, además del límite
en el número de objetos devueltos.
31
Desarrollo del prototipo
Streaming API: Permite obtener un flujo de los tweets que se publican en tiempo
real. Al contrario que la API REST, una vez realizada la conexión con el punto
de consumo no hay límite en el número de tweets que se leen.
En ambos casos, es necesario conectarse a Twitter mediante el protocolo Oauth basado
en tokens que permite la autorización de un tipo específico de cuenta destinado a las
aplicaciones. Para crear una cuenta de tipo app solo es necesario disponer de una
cuenta de Twitter válida y dar de alta una app en: https://apps.twitter.com.
Con el propósito de poder acceder a la API de twitter, existen desarrollos de librerías y
módulos en distintos lenguajes que facilitan esta tarea, algunos de ellos llevan el
mantenimiento por parte de Twitter y otros por terceros. Para el desarrollo del prototipo
se va a utilizar el módulo de Python Tweepy [21], que permite manejar la autenticación,
así como el acceso a la REST API y a la Stream API.
Por otra parte, para la consulta y búsqueda de perfiles de usuarios en otros medios es
necesaria una herramienta que permita el acceso automatizado a esta información. Ya
describieron algunas plataformas web que ofrecen esta información, sin embargo, el
acceso a la API que ofrecen es de pago. Por lo tanto, para este propósito se va a utilizar
el conjunto OSRFramework de código abierto y con licencia GPLv3 que ofrece las
opciones necesarias.
El concreto, para la búsqueda de alias en varias plataformas se va a utilizar la aplicación
usufy. Está implementada en Python, y ofrece la búsqueda en más 200 plataformas
distintas. Su funcionamiento se basa en la respuesta web que se obtiene cuando se
accede al perfil de un usuario a través de una URL directamente. Si el usuario no existe
en la plataforma, es posible analizar el código HTML de la página mostrada en busca
de un mensaje de error. La aplicación cuenta con una librería de wrappers o
adaptadores a las plataformas.
Para la tarea de búsqueda de direcciones de correo electrónico en plataformas de correo
públicas se va a utilizar la herramienta de OSRFramework mailfy. También
implementada en Python, permite la búsqueda de correos en más de 20 dominios de
correo públicos. Se basa en las respuestas del protocolo de correo SMTP, en concreto
en la respuesta a RCPT TO que informa si la cuenta de correo existe en el servidor. No
obstante, hay servidores de correo que aceptan los mensajes para cualquier cuenta
aunque no exista, tal vez para evitar la obtención automática de direcciones válidas con
fines maliciosos como el envío masivo de correos (spam).
En ambos caso, tanto usufy como mailfy están diseñados como aplicaciones
independientes y no como módulos para importar en otros proyectos Python, aunque es
posible realizar la parametrización y pasarla a la función main a través de una llamada.
6.3. Diseño
Para el diseño del script según los requisitos previos, se propone el diagrama de casos
de uso y los diagramas de flujo generales correspondientes a cada uno de ellos.
32
Desarrollo del prototipo
33
Desarrollo del prototipo
34
Desarrollo del prototipo
35
Desarrollo del prototipo
36
Desarrollo del prototipo
6.4. Implementación
La interfaz principal del programa es un menú textual interactivo, sin embargo, para la
visualización opcional de los datos en tiempo real se van a utilizar las siguientes
aplicaciones:
Elasticseach 2.4.3
Kibana 4.6.3 (linux-x86)
37
Prueba de concepto
7. Prueba de concepto
Para evitar posibles conflictos éticos y legales por el tratamiento de datos personales
reales obtenidos de Twitter, en la PoC (prueba de concepto) se van a utilizar unas
cuentas de Twitter creadas a propósito para este fin, ya que permiten hacer una
demostración en circunstancias similares a la realidad.
El entorno utilizado para la PoC es una máquina virtual VirtualBox con sistema operativo
Ubuntu 16.04 de 32 bits. Se parte de la configuración necesaria para ejecutar la
aplicación, con todas las dependencias y complementos opcionales.
La estructura de la PoC es la siguiente:
Caso de uso 1: Monitorizar el stream de Twitter mediante la aplicación de un filtro por
palabra clave
38
Conclusiones
8. Conclusiones
39
Conclusiones
40
Fuentes de Información
9. Fuentes de Información
Wikipedia - https://en.wikipedia.org
Twitter Developer Documentation – API https://dev.twitter.com/overview/api
[1] Interactive Advertising Bureau - Estudio anual de redes sociales 2016
http://www.iabspain.net/wp-
content/uploads/downloads/2016/04/IAB_EstudioRedesSociales_2016_VCorta.pdf
[2] Twitter Inc – Investor Relations https://investor.twitterinc.com/index.cfm
[3] Internet Lives Stats - Twitter usage (Consultado el 07/11/2016)
http://www.internetlivestats.com/twitter-statistics/
[4] Edward Snowden - Wikipedia https://en.wikipedia.org/wiki/Edward_Snowden
[5] Europol - Internet Organised Crime Threat Assessment (IOCTA) 2016
https://www.europol.europa.eu
[6] TOR Project https://torproject.org
[7] Invisible Internet Project – I2P www.i2p2.de
[8] Am I unique? https://amiunique.org/
[9] Panopticlick - https://panopticlick.eff.org/
[10] Narayanan and Shmatikov - De-anonymizing Social Networks
https://www.cs.cornell.edu/~shmat/shmat_oak09.pdf
[11] Nilizadeh, Kapadia, Ahn - Community-Enhanced De-anonymization of Online Social
Networks http://www.yongyeol.com/papers/nilizadeh-deanon-2014.pdf
[12] Wondracek, Holz, Kirda, Kruegel - A Practical Attack to De-Anonymize Social
Network Users http://hgi.ruhr-uni-
bochum.de/media/emma/veroeffentlichungen/2011/06/07/deanonymizeSN-
Oakland10.pdf
[13] B. Schneier, Mudge - Cryptanalysis of Microsoft's PPTP Authentication Extensions
(MS-CHAPv2)
https://www.schneier.com/academic/archives/1999/09/cryptanalysis_of_mic_1.html
[14] Tails - https://tails.boum.org/
[15] Graham Cluley - Fugitive John McAfee’s location revealed by photo meta-data
screw-up https://nakedsecurity.sophos.com/2012/12/03/john-mcafee-location-exif/
[16] CheckUserNames http://checkusernames.com/
[17] NameCh_k - https://namechk.com/
[18] OSRFramework - https://github.com/i3visio/osrframework
[19] Verify Email - http://verify-email.org/
41
Fuentes de Información
42
Anexos
10. Anexos
└───muot
│ LICENSE.txt
│ README.txt
│ requirements.txt
│ setup.py
│
└───muot
│ auxfnct.py
│ muot.py
│ __init__.py
│
└───configuration
twitter-API-access.conf
Instalación
osrframework
tweepy
elasticsearch
La forma más sencilla de instalar las dependencias es a través del gestor de paquetes
PyPI y el archivo requirements.txt:
pip install -r requirements.txt
43
Anexos
wget https://download.elastic.co/kibana/kibana/kibana-4.6.3-linux-
x86.tar.gz
Para ejecutar la aplicación hay que ejecutar el archive muot.py a través de python o
directamente si se le ha dado permiso de ejecución:
python muot.py
./muot.py
__init__ : Extensión del constructor para que acepte nuevos parámetros que
serán pasados por referencia.
on_connect: Es llamado al realizar la conexión con el stream de Twitter, para
el propósito de la aplicación solo se encarga de mostrar información por la
salida estándar.
on_status: Este método es llamado cada vez que se publica un tweet nuevo
según el filtro aplicado al stream (por contenido o por usuario en la aplicación).
En concreto, se encarga de grabar una fila nueva en el archivo en el que se
guardan los tweets, y en caso de habilitar el módulo que se comunica con
Elasticsearch (ver punto 6.4) pasa los datos del tweet a este para que sean
indexados.
on_error: Es invocado si se produce algún error en el stream. Para la
aplicación se controlan los errores producidos por sobrepasar el límite de
intentos de conexión.
Función monitorStrem()
Es el método llamado en el caso de uso 1 –monitorizar el stream de Twitter por
palabras clave–. Recibe las palabras clave por la entrada estándar, comprueba
que no se superen los límites impuestos por Twitter (60 caracteres por término y
un máximo de 400 términos).
Crea el objeto que gestiona la autentificación en Twitter, el objeto para conectar
con la Streamer API y lanza la escucha activa mediante el filtrado según los
términos introducidos.
44
Anexos
45
Anexos
46