martes, noviembre 13, 2018

How To FaceSwapping in a video "Chema Alonso" & "Axl Rose" with AI (2 de 2)

Tras ver la base teórica en la primera parte de este artículo, toca meterse ahora de lleno en la parte práctica del entrenamiento. El objetivo, como ya hemos dicho antes, consistía en hacer un vídeo falso de Chema Alonso para poder construir una FakeNews con la que "manipular" la opinión sobre un ejecutivo de una empresa, al más puro estilo Cambridge Analytica.

Figura 10: How To FaceSwapping in a video "Chema Alonso" & "Axl Rose" with AI

Es decir, el objetivo era explicar cómo se puede realizar un APT contra la reputación de un empleado de una empresa con una Fake News en la que apareciera un vídeo falso creado con una GAN (Generative Adversarial Networks) usando DeepFakesApp. Así que vamos al lío.

La parte práctica del proyecto

Desde el martes por la tarde empezamos a intentar entender la tecnología y las posibilidades prácticas que teníamos. Cuando estuve en Chile para participar recientemente en la 8.8 vi una charla sobre Faceswap y las posibilidades que ofrecía la librería. El entrenamiento que requiere es alto, al igual que una gran capacidad de cómputo, pero al alcance de cualquiera.

En esto también teníamos un problema que resolver, ya que no queríamos hacerlo en ninguna cloud y aprovechar la potencia de cómputo sin tenerlo claro y probarlo bien antes. Pero, como pasa siempre, teníamos una limitación de tiempo importante. Esto traducido al lenguaje laboral es igual a “estrés”.

Figura 11: FaceSwap de DeepFakes en GitHub (necesario login)

Sin ponernos nerviosos, empezamos a mirar la librería faceswap de Github. Lo primero es entender el funcionamiento práctico de la aplicación que se proporciona faceswap.py. A continuación, dejamos un pequeño guión:
1. Se necesitarán dos videos. La calidad es importante.
2. El primer video será un video de la persona a la que se quiere sustituir la cara.
3. El segundo video será un video de la persona que queremos coger la cara.
4. Como dije, la calidad es importante y el número de caras y movimientos también. Es importante que las caras tengan muchos puntos de vista, para poder entrenar mejor y de forma más real.
5. De cada video se deben obtener todos los frames.
Figura 12: Obtención de todos los frames del vídeo
6. De cada frame se debe capturar la cara y almacenarlas en dos carpetas, cada carpeta para cada sujeto.
Figura 13: Captura de las caras
7. Aplicamos el entrenamiento. Aquí dependemos del cómputo y del tiempo.
Figura 14: Entrenamiento del algoritmo
8. Una vez creemos que hay suficiente entrenamiento, se generan los frames finales aplicando el entrenamiento sobre los frames originales de la persona que se quiere sustituir.
Figura: Generación de frames finales
9. Generamos video final.
Esto es lo ideal, pero con tan poco tiempo muchas cosas podían fallar, muchas cosas iban a pasar, muchos cafés íbamos a tener que tomar. Así fue, la primera prueba de fuego fue instalar el entorno completo, esto puede suponer problemas, pero al final se consiguió con relativa facilidad. La calidad del video, como comentaba anteriormente, es importante, y nos dimos cuenta con las primeras pruebas que fuimos llevando a cabo, que no salieron nada bien.


Figura 12: Primera prueba del vídeo final elegido

Por último, la generación de los frames A con la cara del sujeto B iba a suponer nuestro último reto. Tras mezclar a Chema Alonso con Mark Zuckerberg o con Rosendo Mercado, y plantearnos al Mono Burgos, llegamos a Axl Rose. Buscábamos el pelo largo que nos simplificase la inclusión, buscábamos una complexión similar, pero tuvimos que ver diferentes parámetros.

Figura 13: FaceSwapping entre Mark Zuckerberg y Chema Alonso con poco enternamiento
El primer parámetro era entender que nuestros colores de piel son distintos, por lo que las caras de Chema Alonso tuvieron que ser “coloreadas” para que se pareciera al color de piel de Axl Rose y no tuvieramos que tener la AI entrenando mucho tiempo. Con un pre-procesado del vídeo conseguíamos ahorrar mucho tiempo.

Esto sucederá siempre, ya que si no el color no será idóneo y se notará mucho, como se ve en la Figura 13, que desestimamos antes de entrenar más porque era difícil de reconocer a Chema Alonso con el pelo tan corto. Hay que indicar que la librería de faceswap tiene parámetros para autoajustar esto, pero no lo conseguimos hacer funcionar como necesitábamos.


Figura 14: Vídeo final usado en la demo de Corporate APT with Fake News

Una vez elegido el vídeo de Axl Rose y entrenado lo suficiente - Chema Alonso no quería que fuera demasiado perfecto para que no quedara un vídeo híperrealista -  teníamos los colores igualados. Tras generar el vídeo final completo, nos encontramos que si nos fijábamos casi pixel a pixel había una mezcla extraña, aunque el vídeo no quedaba mal del todo. Decidimos emplear los últimos momentos a mejorar frame a frame el resultado que ya teníamos con técnicas de post-procesado para darle el toque final que deseáramos.

La Fake News final

El objetivo de este trabajo era demostrar cómo una empresa podría ser atacada por medio de este tipo de técnicas. Atacando la reputación de sus empleados, y de sus ejecutivos, alguien podría hacer daño a una empresa, especialmente si está cotizada en bolsa. Así que, como colofón final, lanzamos un e-mailing dirigido a todos los que habían asistido al evento con una Fake News que utilizaba este vídeo.

Figura 15: Fake News enviada por e-mail con el vídeo generado como prueba de la noticia

Las Fake News pueden hacer mucho daño, como hemos visto, en elecciones políticas, pero también en los entornos corporativos. Es por eso que las campañas de concienciación cuenten con ellas, y que los equipos de Comunicación y Relación con Prensa, estén entrenados para poder responder ante este nuevo tipo de amenazas. Os recomendamos que veáis esta charla sobre Fake News de Chema Alonso.


Figura 16: Data Leakages, APIS and WebScraping en tiempos de Cambridge Analytica

- How To FaceSwapping in a video "Chema Alonso" & "Axl Rose" with AI (1 de 2)
- How To FaceSwapping in a video "Chema Alonso" & "Axl Rose" with AI (2 de 2)

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

No hay comentarios:

Publicar un comentario