martes, noviembre 12, 2019

Instagram y el juego de la insinuación: Como un pequeño "leak" de Machine Learning permite saber el tipo de fotos publicas en cuentas privadas (Parte 3 de 3)

En la última parte de este artículo finalizamos dejando el entorno totalmente montando para comenzar a hacer la prueba sobre una cuenta privada a partir de las recomendaciones que se nos ofrecía. Para ello vamos a analizar el contenido de las imágenes de las cuentas recomendadas y generar un insight de si lo que está publicando esa cuenta es Not Safe/Suitable for Work.

Figura 15: Instagram y el juego de la insinuación: Como un pequeño "leak" de
Machine Learning permite saber el tipo de fotos publicas en cuentas privadas
(Parte 3 de 3)

Las instrucciones para montar el entorno que se ha descrito en las partes anteriores de esta serie de posts están disponibles en el GitHub del proyecto de Instagram Not Safe/Suitable for Work que hemos abierto.

Figura 16: Instagram Not Safe/Suitable for Work WebApp en GitHub

Ahí tienes todos los archivos necesarios, así como las instrucciones para que te puedas montar el mismo entorno que hemos descrito en este estudio.

Lanzando el análisis

Tras introducir las credenciales del perfil vigilante en la página que levantamos en la parte anterior de este artículo e indicar el perfil objetivo, se lanza la búsqueda y comienzan a ejecutar los siguientes pasos:
1. Se comprueba que se produce satisfactoriamente el login en Instagram. 
2. Se comprueba que el usuario objetivo existe. 
3. Se accede al perfil y se comienza a obtener a información en la que estamos interesados a través de Selenium y BeautifulSoup.
Con la información obtenida se hace uso del Docker de Nudity image detection HTTP API montado en Heroku. Tras esperar a que todo el contenido de interés se haya obtenido mediante técnicas de web scrapping, obtendremos otra vista con el nivel de exposición de la cuenta privada, así como un resumen de las puntuaciones de NSFW de las imágenes obtenidas.

Figura 17: Vídeo de PoC Instagram WebApp Scrapper

El vídeo anterior muestra el proceso completo de lanzar la aplicación que hace Web Scraping de las imágenes asociadas a las cuentas recomendadas de una cuenta privada objetivo para obtener un fichero en formato JSON con todas las imágenes listo para analizar su nivel de "Nudity". Este es un ejemplo con la cuenta de Enrique.

Figura 18: PoC resultados de cuentas recomendadas asociadas a una cuenta privada


Ahora, si revisamos nuestra cuenta objetivo para este experimento y analizamos los resultados que hemos obtenido, vemos que es totalmente distinto.

Figura 19: Resultados obtenidos. La primera cuenta tiene un 30% de Nudity,
lo que indica que nuestra cuenta puede tener un porcentaje similar de Nudity.

Como podéis ver, analizando las cuentas recomendadas vemos que la primera tiene un 30% de Nudity que indicaría que nuestra cuenta objetivo @charmingcdo podría tener un porcentaje similar. Pero como somos dueños de esa cuenta, podemos contrastar los resultados reales.

Figura 20: Nuestra cuenta objetivo @charmingcdo en modo público

Si abrimos como público el perfil, podemos hacer web scrapping del contenido de @charmingcdo, tanto en publicaciones como en followers y perfiles seguidos y obtenemos puntuaciones de nsfw moderadamente elevados haciendo uso del mismo proceso que con las cuentas recomendadas.

Como podemos ver en la puntuación que se obtiene de cada una de las fotos que hemos publicado - si quitamos la puntuación de la primera que es la foto de perfil y lo dividimos entre el número de fotos publicadas (4 en total) nos da una media de 20% que no está demasiado equivocada con el nivel que obteníamos para la primera cuenta recomendada - que era del 30% - cuando nuestra cuenta estaba en modo privado, pero que concuerda de maravilla con la media de las dos primeras cuentas recomendadas.

Figura 21: Puntuaciones de "Nudity" de la foto de perfil y las 4 fotos publicadas

Y esta información queda plasmada también si analizamos las estadísticas de las fotos publicadas por un perfil, donde tenemos resultados máximos y mínimos para el nivel de "Nudity" de las imágenes procesadas de la cuenta.

Figura 22: Resumen estadístico de las puntuaciones

Esto demuestra que se puede inferir una correlación entre los perfiles sugeridos por Instagram y el contenido de la cuenta a pesar de que ésta sea privada. Por lo tanto, podemos concluir que parte de la información de un usuario está en cierto modo expuesta, aunque se opte por proteger la cuenta ya que las recomendaciones de las cuentas usan algoritmos que utilizan la similitud de las fotos publicadas de la cuenta.

Figura 23: Machine Learning aplicado a Ciberseguridad

Como habéis podido ver, el utilizar un dato en un algoritmo de Machine Learning para dar generar un sistema de recomendaciones siempre deja algo de la esencia de  los datos utilizados como base de entrenamiento. Sobre este tema también podéis leer el artículo que escribió Chema Alonso sobre "La generación exacta o inexacta de ingishts o cómo me llegan anuncios sobre mi sexualidad" y si quieres saber más sobre el mundo del Machine Learning, te recomendamos el libro de "Machine Learning aplicado a Ciberseguridad".

Saludos.


Autores: Chema Alonso (Contactar con Chema Alonso) y Enrique Blanco (@eblanco_h) miembro del equipo de Ideas Locas en CDO. Puedes contactar con Enrique Blanco en MyPublicInbox.

*****************************************************************************************
- Instagram y el juego de la insinuación (1 de 3)
Instagram y el juego de la insinuación (2 de 3)
Instagram y el juego de la insinuación (3 de 3)
*****************************************************************************************

No hay comentarios:

Publicar un comentario