Wednesday, 10 April 2019

Autoencoders, GANs y otros chicos (buenos y malos) del montón: La IA al servicio de la Ciberseguridad [3 de 5]

Como nos había pedido nuestro querido, y nunca suficientemente bien valorado jefe, para el Security Innovation Day, cuando nos pidió que le ayudáramos con un Corporate APT a ejecutivos de una empresa haciendo un Face Swapping con él para hacer una Fake News, en nuestra charla de la RootedCON explicamos una vuelta de tuerca del proceso.

Figura 19: Autoencoders, GANs y otros chicos (buenos y malos) del montón:
La IA al servicio de la Ciberseguridad [3 de 5]

No se trataba de hacer la suplantación de la cara de Chema Alonso en el cuerpo de otra persona (por ejemplo un actor) para hacer una difamación. En este caso queríamos hacer algo en Real-Time para convertirnos en él mismo - al menos por Vídeo-Conferencia -.

Caso 3: ¿Cómo convertirse en Chema Alonso?

En la charla elegimos a nuestro CDO en Telefónica, y querido jefe, Chema Alonso, ya que su perfil encajaba perfectamente con una identidad que pudiera ser objetivo de una suplantación para realizar una estafa, tan conocida, como la del CEO. Para este caso, trabajamos con las Generative Adversarial Networks (GANs).


Figura 20: Charla de Corporate APT with Fake News en SID 2018

Queríamos demostrar que con dos redes neuronales enfrentadas se puede generar una imagen resultante que puede engañar a cualquier ojo humano en tiempo real, y sin necesidad de grandes recursos.

Figura 21: Datos del vídeo de origen para la conversión en CDO

Para este caso se utilizaron los siguientes requisitos, que aplicaríamos sobre un vídeo elegido. En nuestro caso un vídeo en el que nuestro compañero habla a la webcam como si fuera una Vídeo-Conferencia y explica cosas con un fondo blanco. Nos pareció bueno para hacer la simulación y extraer de él los rostros necesarios para hacerlo "hablar".
• PC con una NVidia como GPU
• Anaconda / Python 3.5
• OpenCV 3.0
• Dlib 19.4
• Pix2pix-tensorflow
• CUDA 8.0
• CUDNN 6.0
• Drivers aplicables a la GPU
La librería para generar este tipo de caso se puede encontrar en el siguiente Github y se llama face2face-demo. Por usar el formato anterior, proponemos el siguiente paso a paso:

Figura 22: Face2FaceDemo en GitHub
1. Generación de datos de entrenamiento: Como se ha dicho, la elección del vídeo original ayudará a conseguir un mejor o peor resultado, así que esta decisión es bastante importante.
a. Detección del rostro del vídeo fuente, como se puede ver en la siguiente animación en GIF de algunos de ellos. 
b. Detección de las facciones con dlib pose estimator – 68 face landmarks. 
c. En este vídeo se disponían 728 frames.
Figura 23: Detección de facciones en el rostro extraídas del vídeo
2. Entrenamiento del modelo generativo: Se hizo uso de pix2pix-tensorflow. El tiempo utilizado de entrenamiento es de tres días aproximadamente. Hay que tener en cuenta que con una TPU en Google Cloud este tiempo puede reducirse drásticamente.
Una vez que se ha entrenado, hay que probar los límites de los rostros, y las expresiones. Y para ello, se puede utilizar un sistema de visión artificial que en tiempo real captura los rostros de alguien en frente de una webcam e intentar recrear con el modelo generado, la misma secuencia de imágenes. 

Figura 24: Prueba del modelo para detectar los límites
Como se puede ver en el primer vídeo, pueden aparecer errores si se detectan rostros o expresiones no disponibles en el vídeo de origen y el modelo no ha sido entrenado lo suficiente como para poder generarlos.  
3. Testeo del modelo: La entrada de datos serán imágenes a través de la webcam utilizando un sistema de visión artificial. Es decir, cualquier persona que queramos que se ponga delante de la webcam del equipo podrá mover en tiempo real la imagen que se crea, tal y como se ve en el vídeo siguiente. 
El modelo generará los movimientos de esta persona con el aspecto, en este caso, de Chema Alonso. En este caso se puede ver una demo en laboratorio en el que Enrique Blanco controla al jefe.

Figura 25: Demo de Enrique Blanco generando vídeo de Chema Alonso

En la conferencia que dimos en la pasada RootedCON primero probé yo a convertirme en nuestro venerado jefe, Chema Alonso, pero creí que sería mucho más creíble que alguien del público subiera y se convirtiera también en Chema Alonso por unos segundos.

Figura 26: Agus convirtiéndose en Chema Alonso en la pasada RootedCON

El voluntario fue Agus, un clásico de la Rooted que fue premiado durante esta décima edición. Gracias Agus por participar en la demo y pasártelo bien haciendo un poco de "master of puppets" de esta recreación hecha por IA.

Autores: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica y Enrique Blanco (@eblanco_h) es Investigador en el departamento de Ideas Locas CDO de Telefónica

**************************************************************************************************
- La IA al servicio de la Ciberseguridad [1 de 5]
- La IA al servicio de la Ciberseguridad [2 de 5]
- La IA al servicio de la Ciberseguridad [3 de 5]
- La IA al servicio de la Ciberseguridad [4 de 5]
- La IA al servicio de la Ciberseguridad [5 de 5]
**************************************************************************************************

No comments:

Post a Comment