lunes, noviembre 19, 2018

Joomla! in Paranoid Mode

Hace ya un par de años de que se convirtiera en realidad la idea inicial que tuvieron Chema Alonso y Pablo González de utilizar los triggers a nivel de tabla en la base de datos que utiliza WordPress para fortificar la plataforma. Aquella idea se convirtió en lo que se conoce como WordPress in Paranoid Mode, y hoy es utilizado por muchos administradores de WordPress que quieren tener listo su plataforma contra la oleada continua de ataques que sufre.

Figura 1: Joomla! in Paranoid Mode

Basado en la misma idea, yo realicé mi Proyecto de Fin de Grado como punto final de los estudios de Ingeniero en Tecnologías de Telecomunicación por la Universidad de Castilla La Mancha. Pero en lugar de aplicar esos conceptos a la fortificación de un WordPress, lo hice para una plataforma Joomla!, por lo que el proyecto se llama "Joomla! in Paranoid Mode".


Figura 2: Primera presentación de My WordPress in Paranoid Mode

Este proyecto responde a la necesidad de proveer una capa más de seguridad a los millones de sitios web desarrollados mediante el CMS Joomla!, aprovechando el uso de los triggers de la base de datos sobre la que se soporta la plataforma. Su funcionamiento es sencillo, ya que sobre la base de datos MySQL, crearemos una serie de triggers que se ejecutaran cuando se produzca una acción sobre las tablas seleccionadas, para consultar el estado de Latch, el gran protagonista en este proyecto. En función del estado, se podrá - o no - acceder a insertar, modificar o eliminar registros de la BBDD de dicho CMS.


Figura 3: Cómo poner Latch a las cuentas de usuario de Joomla!

El alcance de este desarrollo va mucho más allá que proteger nuestro sistema Joomla! a nivel de usuario con el plugin de Latch para Joomla! disponible en GitHub que permite poner un 2nd Factor Authorization, y que se explica en la Guía de Instalación de Latch para Joomla!.


En este proyecto de Joomla! in Paranoid Mode se trata de proteger el acceso a ciertas tablas de la BBDD del sistema a las cuales llamaremos Tablas Críticas aprovechando los triggers de MySQL. En base a estas Tablas Críticas configuraremos tres modos distintos de funcionamiento de la plataforma Joomla!, que serán Read-Only, Edition y Administration. Así pues este sería el esquema de las tablas de la BBDD asociadas a cada modo de funcionamiento:
- Modo Read-Only: Cuando el usuario marque que la plataforma Joomla! que tiene en producción está en modo Read-Only, quiere decir que los triggers de las Tablas Críticas de MySQL no permitirán la Inserción, Modificación o Borrado de ninguno de los registros del sistema, evitando que una vulnerabilidad de un plugin de la plataforma, o un fallo cualquiera a nivel de código de aplicación, pueda ser utilizado por un atacante para alterar el contenido del sistema. 
Solo con esta protección, el 90% de los ataques a plataformas Joomla! se ve eliminado. No se puede modificar, insertar o borrar ningún registro de las tablas que permiten la edición, como son: joomla_content, joomla_content_frontpage, joomla_redirect_links,  ni las necesarias para las tareas de administración, como joomla_users o joomla_extensions.
- Modo Edition: Este modo permitirá a los usuarios con permisos de edición cambiar el contenido y aspecto del sitio, pero no permitirá la gestión de usuarios o los cambios de extensiones en todo el sitio Joomla!, limitando el impacto que podría tener un ataque que requiriese un usuario con privilegios de edición, ya que las Tablas Críticas de usuarios o extensiones seguirían bloqueadas. No se permite acceso a las tablas de administración joomla_users o joomla_extensions.
- Modo Administration: Por último, el modo de administración se abriría solo cuando el administrador del sitio tuviera la necesidad de dar de alta nuevas cuentas o cambiar las extensiones de la plataforma, evitando así que esto esté disponible constantemente disponible para cualquiera que pueda ejecutar una inyección de comandos SQL Injection o una elevación de privilegios por un bug de código.
Cada vez que una consultad de Inserción Modificación o Borrado afecte a una de las Tablas Críticas, se consultará el estado de Latch con un trigger, y si está activado alguno de los modos que prohibe el nivel de acceso que requiere la operación, se bloqueará la operación aprovechando el nivel privilegiado que tienen los tiggers dentro de la BBDD. La estructura de los triggers es la siguiente.

Figura 5: Estructura los tiggers en Joomla! in Paranoid Mode

Los triggers se ejecutan tanto en las operaciones de Insert, como en Update y en Delete. Se puede observar cómo se llama al script desde Python que hace la consulta mediante las MySQL UDF, unas funciones creadas para extender las funcionalidades de MySQL y que nos sirve en este caso para invocar al código externo. Este script tendría la siguiente estructura:

Figura 6: Consulta de Latch desde script de Python

Los códigos APP_ID (Application ID) y SECRET se obtienen de la web de Latch al crear la aplicación que regirá el funcionamiento de ese Latch. El userid se obtiene en la respuesta de la API al realizar el pareado de la cuenta de usuario que va a manejar Joomla! in Paranoid Mode con el APP_ID de Latch que se va a utilizar para tal función. Como podemos ver hay dos tipos de respuesta, que como en cualquier otra aplicación o proceso "latcheado" tiene dos tipos de respuesta:

Figura 7: Intento de acceso a tabla bloqueada por el Modo de Joomla! in Paranoid Mode

Mediante este desarrollo podemos controlar de una manera más efectiva ataques de fuerza bruta a las contraseñas de los usuarios (con las opciones de 2nd Factor Authentication de Latch a nivel de usuario, y por la configuración del modo Read-Only), así como por ejemplo ataques de SQL Injection, que siguen siendo - año tras año - los ataques más usados por los atacantes, como se ve en el TOP 10 OWASP.

Figura 8: Ataques de inyección de comandos nº 1 en OWASP Top Ten

Una vez entregado el proyecto, este código será liberado para que cualquiera pueda aportar sus ideas para un mayor rendimiento y efectividad del mismo, pero para que entiendas todos los detalles, este miércoles 21 de Noviembre tienes la CodeTalk for Developer de Joomla! in Paranoid Mode donde cuento el proyecto completo.

Figura 9: 21 de Noviembre "Code Talk For Devs: Joomla! in Paranoid Mode"

No quisiera finalizar este artículo sin dar las gracias a mis tutores, Pablo González por parte de ElevenPaths y Marcos Fernández en la UCLM, por su interminable paciencia y apoyo. Gran parte de este proyecto les corresponde a ellos. Dar las gracias también a todo el equipo de ElevenPaths por confiar en mí para su realización.

Autor: Mateo González Fernández

Referencias Joomla! & Latch

[GitHub] Plugin de Latch para Joomla!
[Paper] Guía de Instalación de Latch para Joomla!
[Vídeo] Cómo Proteger Joomla! con Latch en 10 minutos
[Vídeo] Cómo instalar Latch en Joomla! por WebEmpresa

Referencias WordPress in Paranoid Mode

[Libro] Máxima Seguridad en WordPress
[Libro] Hardening GNU/Linux
[GitHub] Plugin de Latch paraWordPress
[Paper] Guía de Instalación de Latch en WordPress
[Paper] WordPress in Paranoid Mode (Parte 1)
[Paper] WordPress in Paranoid Mode (Parte 2)
[Vídeo] Proteger WordPress con Latch
[Vídeo] Proteger WordPress con Latch Cloud TOTP
[Vídeo] My WordPress in Paranoid Mode (conferencia Chema Alonso)
[Vídeo] My WordPress in Paranoid Mode (ElevenPaths Talks de Pablo González)
[Vídeo] My WordPress in Paranoid Mode for Developers (CodeTalk for Devs)
[Vídeo] Ejemplo de uso de Latch en WordPress
[Vídeo] Hardening WordPress like a hacker
[Vídeo] WordPress Demo XSS en WP-UserAgent
[BlogPost] My WordPress in Paranoid Mode
[BlogPost] Máxima Seguridad en WordPress
[BlogPost] Hackear un WordPress con Network Packet Manipulation
[BlogPost] Fortificar comunicación entre WordPress y MySQL
[BlogPost] WordPress Latch Enforcement
[BlogPost] WordPress aún más seguro con Latch Lock After Request
[BlogPost] Fortificar WordPress frente a ataques de fuerza bruta
[BlogPost] Ataques (al corazón) de tu WordPress
[BlogPost] Cómo robarle las contraseñas a los administradores de WordPress
[BlogPost] Agrupar el control de varios WordPress con un solo Latch
[BlogPost] WordPress: Time-Based XSPA (Cross-Site Port Attack)
[BlogPost] Cómo debería ser un WordPress un poco más seguro
[BlogPost] WPHardening: Automatizar fortificación de WordPress
[BlogPost] Protege los borradores de los artículos de tu WordPress
[BlogPost] Registro de cuentas en WordPress públicos
[BlogPost] Riesgos en la ejecución de tareas de Cron
[BlogPost] WordPres: XSS en plugin WP-UserAgent
[BlogPost] Listar los plugins de WordPress en un pentest
[BlogPost] WordPress: SQL Injection en Scarcity Builder Plugin
[BlogPost] Docker WordPress in Paranoid Mode
[BlogPost] Faast for WordPress

domingo, noviembre 18, 2018

GMTCheck Online & Rock Appround the clock de @ElevenPaths

En el año 2014, nuestros compañeros del Laboratorio de ElevenPaths publicaron una herramienta que se llamaba GMTCheck. Esta herramienta se construyó para completar la información que la Plataforma de Ciberinteligencia en aplicaciones móviles Tacyt daba a los investigadores fuera mayor. 

Figura 1: GMTCheck Online & Rock Appround the clock

Se trataba de un pequeño "leak" de información en los metadatos de los ficheros de un .apk para Android que permitía saber (y permite) saber la franja horaria en la que se compiló una aplicación concreta.

Figura 2: Descarga GmtCheck de la web de ElevenPaths

En un estudio de malware, esta información puede ser vital para los procesos de atribución, ya que pueden ayudar a conocer las familias, los orígenes del mismo, y descubrir nuevas amenazas aún ocultas por patrones similares, y nosotros lo utilizamos para ayudar a los departamentos de seguridad a tener una visión clara de todas las apps que aprueban en sus listas MDM, por lo que está incluido dentro las funcionalidades del servicio mASAPP Online que monitoriza constantemente todas las apps aprobadas en una empresa y que hemos lanzado recientemente. 


Figura 3: mASAPP Online

Durante este verano, nuestros compañeros descubrieron otro nuevo leak, en este caso por culpa de un bug de la herramienta aapt que se utiliza para empaquetar aplicaciones .apk. Dicha herramienta utiliza una función para calcular el offset de la zona horaria, pero, por un error de programación nunca se inicializa correctamente, por lo que siempre es cero, tal y como se explicó en el artículo del blog de ElevenPaths.


Con estas dos técnicas, más alguna más utilizada en la investigación del origen del famoso WannaCry, nuestros compañeros hicieron un paper que se llamo "Rock Appround the Clock: Tracking Android malware developers by "AAPT" time zone disclosure bug ... and other hour related tricks" y que llevaron a la DefCON de este año. Aquí un vídeo de un ejemplo de cómo funciona el bug de aapt que se presentó en DefCon.


Figura 5: PoC del bug de AAPT

Ahora, además de tener el paper publicado con toda la información, desde el Laboratorio de ElevenPaths en Málaga y Buenos Aires, han puesto una pequeña web experimental para ayudarte a investigar todos estos bugs o leaks de zona horaria en Applets .Jar o Apps .apk, bajo el nombre de GMTCheck Online.

Figura 6: GMT Check Online de ElevenPaths

Se trata de implementar de forma sencilla todos los trucos que hemos ido utilizando en nuestras investigaciones, y que tan buen resultado han dado a la hora de catalogar la atribución de las familias de malware que vamos descubriendo cada poco en el mundo Android, y que fueron la base de la explicación del libro de "Malware en Android: Discovering, Forensics and Reversing" que publicamos en 0xWord.

Figura 7: Malware en Android: Discovering, Forensics and Reversing

Ese libro fue escrito por Miguel Ángel García del Moral y en el índice podéis ver muchas de las técnicas que usamos en la construcción de estas herramientas que hoy os cuento. Este es uno de los libros que más me enseñó que no conocía y que más disfruté leyendo.

Saludos Malignos!

sábado, noviembre 17, 2018

Eventos para la próxima semana: Del 19 al 24 de Noviembre

Como todos los fines de semana, os dejo la lista de eventos, cursos y charlas donde vamos a participar, además de alguna cita curiosa con alguna conferencia. Yo esta semana no voy a estar de ponente en ninguna charla, que ya llevo muchos evento seguidos. Toca descansar para mí.

Figura 1: Eventos para la próxima semana: Del 19 al 24 de Noviembre

Como siempre, os dejo información de dónde se realiza el evento, y os marco con [G] aquellos que son gratuitos, para que tengáis la información a primera vista.

Lunes, 19 de Noviembre: Curso Profesional de Hacking Ético Experto [Online]

El miso lunes por la tarde da comienzo una nueva edición del Curso Online Profesional de Hacking Ético Experto de nuestros compañeros de The Security Sentinel. Dicha formación tiene una duración lectiva de 180 horas con prácticas y clases teóricas, y es una formación ideal para engancharse al mundo laboral trabajando de pentester o a auditor de seguridad.

Figura 2: Curso Online Profesional de Hacking Ético Experto

El contenido completo del curso lo tenéis en la web de dicha formación. Todos los asistentes, además, recibirán como material de apoyo el libro de 0xWord dedicado a "Pentesting con Powershell" que escribió nuestro compañero Pablo González.

Figura 3: Pentesting con Powershell de 0xWord

Miércoles, 21 de Noviembre: Joomla! en Paranoid Mode [Online]

El próximo 21 de noviembre se impartirá un nuevo CodeTalk de la segunda temporada. En esta ocasión, será el último de la segunda temporada y ya estamos preparando una tercera y algún especial que os iremos contando. El webinar lo impartirá un invitado muy especial, Mateo González, que ha estado realizando su TFG con nosotros. El seminario estará presentado y moderado por nuestro compañero Fran Ramírez, investigador de seguridad en el departamento de Ideas Locas en el área CDO.

Figura 4: Code Talk For Devs "Joomla! en Paranoid Mode"

El proyecto Joomla! in Paranoid Mode da un paso adelante en la defensa de la base de datos de un sistema Joomla!, ya que Latch nos permite la portabilidad de una cuenta entre dispositivos, que es más difícil conseguir mediante la doble autenticación por SMS. En este talk se mostrará cómo Mateo ha ido investigando y trabajando para lograr una solución que proteja la base de datos de los sistemas Joomla! con la tecnología Latch. En el pasado hablamos del Wordpress in Paranoid Mode.

Miércoles, 21 de Noviembre: LibreCON [Bilbao]

Los días 21 y 22 de Noviembre, en el Palacio Euskalduna, tendrá lugar el evento LibreCON, en el que se dan cita ponentes, expositores y asistentes del mundo Open. La cita tiene varios tracks durante los dos, días así que debes revisar la agenda para planificar bien tu asistencia. Tienes toda la información en su web.

Figura 5: LibreCon en Palacio Euskalduna

Entre los ponentes estarán Luis Jiménez del Centro Criptológico Nacional, o nuestro compañero Pablo San Emeterio de ElevenPaths, que darán charlas junto a Richard Stallman  - que como sabéis estuvo por la Fundación Telefónica en Madrid esta semana y aproveché para hacerme una foto con él.
Jueves, 22 de Noviembre: 3er Data Science Awards [Madrid] [G]

El jueves 22, en el Distrito C de Telefónica, tendrá lugar el acto de entrega de los premios del 3er Data Science Awards que organizan nuestros compañeros de Synergic Partners, como sabéis, dentro de la unidad LUCA Data-Driven Decisions de Telefónica.

Figura 7: Data Science Awards en Madrid

Además de estos eventos, hay un par de citas interesantes en el Espacio de la Fundación Telefónica de Madrid que os dejo por aquí,
- 21 de Noviembre 19:00:  Elvira Lindo - 30 maneras de quitarse el sombrero
- 22 de Noviembre 19:00:  Tech & Society: Beth Noveck "Inteligencia colectiva y Democracia"
- 23 de Noviembre 10:00: Uso de Internet "Seguridad y Buenas Prácticas"
Nuestro compañero Pablo San Emeterio de ElevenPaths, junto con Borja Adsuara y Natalia Orenés, darán una jornada sobre el uso de Internet de forma segura y responsable. Puedes reservar tu plaza en la web del evento. 
Figura 8: Seguridad y Buenas Prácticas
23 de Noviembre 19:00: Fuera de Series "Arde Madrid"
24 de Noviembre 11:30: Booktubers 
Y esto es todo lo que tenemos para la semana que viene, que como podéis ver es variado. Cosas en Internet, en Madrid y en Bilbao. Ahora a disfrutar el fin de semana.

Saludos Malignos!

viernes, noviembre 16, 2018

Todas las sesiones del Security Innovation Day 2018 de @ElevenPaths en vídeo

La semana pasada tuvimos ya la sexta edición de nuestro Security Innovation Day 2018 de ElevenPaths, donde contamos algunas de las cosas en las que hemos estado trabajando durante este año, para que nuestros clientes pudieran conocerlas de primera mano, así como probarlas en los puestos que montamos en el descanso.

Figura 1: Todas las sesiones del Security Innovation Day 2018 de ElevenPaths en vídeo

Ahora están disponibles ya todas ellas para verlas online, así que las hemos subido a Youtube para que puedas verlas tranquilamente desde dónde quieras, y cuándo tú puedas. Éste es el evento completo.

01.- Opening Session

La primera de las charlas la impartieron Pedro Pablo Pérez, CEO de ElevenPaths, y Julia Perea, Directora de Seguridad Digital de Telefónica de España. En ella se contaron las principales novedades durante este año, con foco en el anuncio de la disponibilidad de nuestros servicios en modo Self-Service Online, como mASSAP Online, Faast For WordPress o Latch


Figura 2: Opening Session

Además, se explicó cómo funcionan nuestros Security Operation Centers, el trabajo en la Telco Security Alliance, o las vulnerabilidades descubiertas por nuestros equipos de investigación este año, como la última que hemos publicado de CISCO.

02.- On the path towards an Intelligent MSSP

En la segunda sesión, se pudo ver en detalle todo lo que estamos haciendo para construir la mejor red de Security Operations Centers para construir el mejor servicio MSSP. Ahora mismo, nuestros servicios están reconocidos como uno de los mejores por los analistas de la industria, como verás en la presentación, pero aún estamos innovando en ese servicio para mejorar. 

Figura 3: On the path towards an Intelligent MSSP

Alberto Sempere, Director de Producto en ElevenPaths y Ester Tejedor [X] se encargaron de explicar todo este trabajo en detalle.

03.- Our princess is "always" in other castle. Chasing innovation.

Sesión para el equipo de innovación, en la que Sergio de los Santos y Gonzalo Álvarez Marañón se encargaron de contarnos algunas de las tecnologías y patentes en las que hemos estado trabajando. Merece la pena que veas esta charla para que conozcas algunos proyectos como Capacicard o SmartPattern que hemos patentado.


Figura 4: Our princess is "always" in other castle

04.- Beyond innovation

En esta charla Rames Sarwat y Yaiza Rubio (junto con Antonio Bordón) , nos contaron más detalles  sobre nuestro producto estrella de este año. Stela Filetrack, la solución para gestionar el Shadow Data Lake que son todos los ordenadores personales y servicios que utilizan tus usuarios para gestionar documentos.

Figura 5: Beyond innovation

Un producto que permite a cualquier departamento de IT, de Seguridad o CDO, gestionar los documentos que están más allá de los repositorios centrales. En esta tecnología hemos integrado todas nuestras tecnologías documentales, como SealSign, MetaShield Protector, SealPath y Shadow, para hacer una solución "Enterprise Ready" que permita hacer "magia" con los documentos de la compañía.

05.- Corporate APT using FakeNews

En esta charla, que dimos Martina Matarí - del equipo de Seguridad Digital de Telefónica y ganadora del último challenge de Cybersecurity en la Defcon - y yo, hablamos de los ataques a los empleados de una empresa. Comenzamos por los ataques a las identidades, después a los usuarios y acabamos con los ataques a la reputación de los empleados con FakeNews.

Figura 6: Corporate APT using FakeNews

Como ya os he contado, hice una demo con una FakeNews que utilizaba DeepFakes para hacer un vídeo falso mío y contar una noticia falsa que pudiera afectar a la reputación de un empleado. Tenéis más información de esto en el post de "How to Face Swapping Chema Alonso & Axl Rose using DeepFakes".

Saludos Malignos!

jueves, noviembre 15, 2018

Otro bypass de UAC en 2018: Mocking Trusted Directory

Llegando al final del año nos encontramos con un nuevo bypass del sistema UAC (User Account Control) de Windows. El investigador David Wells ha publicado un nuevo método para obtener un bypass de UAC en un detallado artículo que os recomiendo que echéis un ojo, por la sencillez y por su forma didáctica de explicarlo. Además, David Wells ha publicado una PoC (Prueba de Concepto) en Github.

Figura 1: Otro bypass de UAC en 2018: Mocking Trusted Directory

También hay que comentar que, aunque esto se ha publicado hace unos pocos días, el proyecto UACME ya dispone del bypass implementado por si quieres echarle un ojo. Así que, en el artículo de hoy quería comentar cómo funciona este nuevo bypass y cómo se puede llevar a cabo su aprovechamiento en un proyecto de Ethical Hacking.

Figura 2: Artículo sobre "UAC Bypass by Mocking Trusted Directories"

Pronto incorporaremos la PoC publicada en GitHub por David Wells a proyectos como UAC-A-Mola o ibombshell, herramientas que han estado y que estarán en el Arsenal de Black Hat.

Figura 3: PoC publicada por David Wells en GitHub

Como en otros tantos artículos y charlas sobre el UAC hemos comentado, para que existe un bypass de UAC se debe dar algunas circunstancias, por ejemplo, que el usuario que lanza el proceso pertenezca al grupo de administradores. A modo de recopilación dejo algunos requisitos que tenemos a la hora de poder hacer un bypass de UAC:
• AutoElevate a true en el manifest del binario. 
• Binario firmado por Microsoft. 
• Por último, y aunque no lo hemos comentado en algunas ocasiones, el directorio desde el que se ejecuta el binario debe ser un directorio de confianza o ‘trusted directory’.
El objetivo es conseguir que nuestro código, DLL, binario, etcétera, sea ejecutado en un contexto de integridad alto sin que, para ello, el UAC muestre el mensaje. De esto ya hemos hablado mucho en el último año y medio.

David Wells detalla el proceso de elevación

Quizá es una de las partes más gráficas que he encontrado para explicar este proceso. Me ha parecido realmente interesante y por ello lo expongo aquí. Como decíamos en el primer paso, el AutoElevate debe estar puesto a true. En otras palabras, cuando una petición de elevación es generada se produce una llamada RPC a appinfo.dll. En esta llamada se pasa como argumento la ruta al ejecutable con el que se quiere hacer el bypass del UAC.

El servicio leerá el Manifest del binario para obtener el valor potencial de la directiva AutoElevate, si ella existe, lógicamente. Si el valor True es encontrado se considera que es un ejecutable que puede autoelevarse sin sacar el UAC por pantalla. Decir que hay una excepción a esto y es que, si el binario se encuentra en la lista blanca de EXEs, también se considera una ejecución autoelevable, por lo que se chequea si el binario se encuentra en esa lista blanca.

La segunda condición es el chequeo de la firma del binario. Para ello se utiliza wintrust!WTGetSignatureInfo. Esto hace que un potencial atacante no pueda modificar el Manifest de un binario y coloque el Autoelevate a True y engañe al paso anterior. En este punto se comprueba la firma del binario y que éste no ha sido modificado.

El paso tres, o la tercera condición, es que el binario en el que nos apoyaremos para el bypass se ejecuta desde un directorio de confianza. Por ejemplo, C:\Windows\System32, el cuál es el directorio que siempre hemos probado y utilizado para el bypass de UAC.

¿En qué consiste el nuevo bypass de UAC?

Lo curioso de este nuevo bypass es que se utiliza la tercera condición para engañar a una función del sistema que debe validar la ruta como un directorio de confianza. En otras palabras, vamos a crear una ruta en el sistema que se parece, al menos visualmente, a \Windows\System32, pero no será dicha ruta si no que será \Windows \System32. Nótese el espacio que hay detrás de la carpeta Windows.

Por supuesto, no será tan sencillo como crear la carpeta “\Windows \” con el espacio desde el proceso explorer.exe, eso no funcionará, pero si utilizando unas funciones dedicadas a crear directorios y que nos generará dicha carpeta en la raíz del disco.

La DLL Appinfo.dll utiliza RtlPrefixUnicodeString para ver si la ruta al ejecutable comienza por “C:\Windows\System32”. El “truco” está en que si creamos un directorio “C:\Windows \System32” no podemos llevarlo a cabo contra RtlPrefixUnicodeString, pero con la API de CreateDirectory se puede hacer el bypass y se crea en el sistema de archivos, incluido Windows 10.

Figura 4: Creación del directorio con la AP de CreateDirectory en Windows 10

El resultado en el explorador de archivos se puede incluso ver. Para poder copiar archivos a esta nueva ruta se puede utilizar [System.io.file]::Copy(..). Como veréis con el explorer también se pueden ver dos carpetas “Windows” sobre la raíz.

Figura 5: Dos carpetas Windows en el sistema

Solo que en un System32 no hay nada, ese es el directorio Windows falso. Por otro lado, en la prueba de concepto de David Wells se puede ver el código en otro lenguaje. Se recomienda probarla.

Figura 6: Creación de directorios de confianza falsos con API CreateDirectoryW en la PoC

Cuando se intente ejecutar el binario que hay dentro de “C:\Windows \System32\” se enviará a la API en appinfo.dll antes de realizar el chequeo de directorio de confianza. Este hecho es importante, ya que provocará el bypass.

¿Cómo se provoca este bypass?

La ruta es enviada a la función GetLongPathNameW, el cual convierte la ruta a “C:\Windows\System32\binario.exe”. Nótese que el espacio es eliminado. En este punto tenemos el bypass para que el sistema piense que es una ruta de confianza. Ahora se hace uso de RtlPrefixUnicodeString para el resto de la rutina de elevación que se ha comentado anteriormente.

El investigador David Wells publicó una imagen donde deja muy claro el proceso de este potente y curioso bypass que abre puertas a otros binarios débiles a esta técnica.

Figura 7: Esquema de funcionamiento explicado por David Wells

Seguramente, pronto veamos una versión de este código para Metasploit y otras herramientas. Nosotros trabajaremos para llevarlo a UAC-A-Mola e ibombshell. Sin duda una debilidad en la configuración por defecto de Windows que ayuda, y mucho, en los procesos de Ethical Hacking.

Autor: 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.

miércoles, noviembre 14, 2018

Arduino para Hackers: PoCs & Hacks Just for Fun. Nuevo VBook de @0xWord #Arduino

Ayer se puso a disposición de todo el mundo el nuevo VBook de 0xWord que lleva por título "Arduino para Hackers: PoCs and Hacks Just for Fun". Y como os podéis imaginar está centrado en ayudar a los apasionados del research a meterse en el mundo del Hardware Hacking por medio de Arduino.

Figura 1: Arduino para Hackers: PoCs & Hacks Just for Fun. Nuevo VBook de @0xWord

Como sabéis, Arduino nació como un proyecto en el año 2005 enfocado a estudiantes que querían hacer herramientas simples y de bajo costo en proyectos digitales. Y vaya que si lo consiguieron los creadores de este proyecto. Hoy en día, muchos de los proyectos de hardware hacking utilizan Arduino como base del proyecto. 


Figura 2: Una hucha protegida con Latch y Biometría usando Arduino

Y por supuesto nosotros los utilizamos mucho siempre que hay que construir un poco de hardware. Se ha utilizado en proyectos nuestros de ElevenPaths, en el grupo de Ideas Locas de CDO y en otros proyectos personales de colaboradores de este blog. Aquí os dejo algunos trabajos en los que Arduino fue pieza fundamental.
- La seguridad del IoT con Edison, Arduino y Sinfonier
Y por eso pensamos que estaría genial tener un VBook, ya sabéis, una formación en modo Vídeo-Libro que poder seguir para formaros en esta disciplina durante un año entero y poder comenzar a hacer vuestros propios proyectos. Y ya está disponible para poder comenzar a seguir las explicaciones, hacer las prácticas y comenzar a hacer tus proyectos.
En resumidas cuentas,  Arduino es una plataforma electrónica Open Source diseñada para el uso sencillo tanto de hardware como de software y que tiene la finalidad de dar la capacidad al usuario de hacer sus propios proyectos interactivos. Dicha plataforma permite, de manera rápida y sencilla, la realización de multitud de proyectos de electrónica, automatismos, control, domótica, etcétera, y precisamente este, es uno de los motivos de su éxito: cualquier usuario con conocimientos básicos de informática y electrónica puede programar e implementar proyectos muy interesantes. Se trata de un pequeño cerebro que permite robotizar la vida del usuario.


Figura 4: Latch y un timbre de tu hogar con Arduino

El límite lo marca la imaginación del usuario, pero el abanico de posibilidades abarca desde un sistema para la apertura y cierre de la puerta de un garaje, pasando por un detector de presencia, luz y oscuridad, hasta la implementación de un termómetro o un cilindro neumático.

Este VBook de Arduino para Hackers: PoCs & Hacks Just for Fun pretende ser una guía de autoaprendizaje que permita al usuario conocer Arduino desde un nivel muy básico, realizando PoCs and Hacks ordenados por nivel de dificultad. En el libro se estudian aspectos tan básicos como son la instalación, el manejo de Arduino IDE, la instalación de las librerías, la estructura de un sketch y las funciones principales necesarias en la programación de una placa Arduino


Figura 5: Entrevista a Álvaro Núñez-Romero Casado, autor del VBook

Se trabajan los conceptos relacionados con hardware, las nociones elementales de software, el entorno y lenguaje del desarollador, así como el trabajo con las placas y los diferentes componentes analógicos y digitales disponibles. Todo esto, en el contexto de las explicaciones necesarias para poder entender las diferentes comunicaciones entre dispositivos y conexiones de Arduino a la red, entre las que se incluyen las comunicaciones serial, RF, NFC e Internet. Además, se introducirá al usuario en el interesante mundo de la domótica e IoT

Figura 6: Arduino para Hackers: PoCs and Hacks Just for Fun. Agenda del VBook de 0xWord

Os he subido a SlideShare la agenda completa de este VBook que ha hecho nuestro compañero Álvaro Núñez-Romero Casado. Como se puede ver, se trata de un VBook meramente práctico, ya que se presentan múltiples ejemplos de pequeños proyectos fácilmente realizables debido a todas las ventajas que proporciona Arduino, como flexibilidad, fiablididad y precio. El objetivo final es que el usuario descubra y explore el apasionante mundo que engloba Arduino, con todas sus posibilidades.

Figura 7: 0xWord VBooks

Éste es el Vídeo-Libro número cuatro de la colección de VBooks que puedes cursar en 0xWord:
- VBook 01: Windows Server 2016: Administración y Seguridad 
- VBook 02: Ataques en Redes de datos IPv4 & IPv6 
- VBook 03: Ethical Hacking 
- Packs VBooks 01, 02 y 03 
- VBook 04: Arduino para Hackers: PoCs and Hacks Just for Fun
Saludos Malignos!

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

lunes, noviembre 12, 2018

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

Era un martes normal en la oficina para el equipo de Ideas Locas de CDO. En concreto la mañana del 30 de Octubre. Aproximadamente las 14:15 de la tarde. En ese momento llega una llamada de Chema Alonso. Así comienzan muchas de nuestras aventuras. A horas más raras para recibir una llamada de trabajo. Suele pasar cuando al boss se le ocurre una idea:  “Pablo, ¿conoces el tema de las DeepFakes de las que hablé una vez en mi blog?” Así empezó todo. Comienza una nueva aventura en el equipo.

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

Por supuesto, contesté que sí lo conocía. Había salido en el blog, y llevamos tiempo trabajando con OpenAI para entrenar AI con visión artificial para jugar a juegos clásicos, y hemos hecho cosas con las GAN (Generative Adversarial Networks) en seguridad. Pero debíamos estudiarlo si queríamos hacer algo con ello.


Figura 2: OpenAI jugando a BreakOut

Pero Chema Alonso había decidido hacer una charla diferente para el Security Innovation Day 2018 que tenía lugar el día 7 de Noviembre. Había decidido no hablar de Stela FileTrak que era la estrella del acto y dejárselo a los compañeros para hacer algo diferente en el cierre de la jornada, así que me comentó:  "¿Puedes decirme en unas horas si es viable llevarlo al SID 2018?"

Así trabajamos en Ideas Locas, de forma ágil y, en algunos casos, alocada. La respuesta como podéis imaginar fue afirmativa, por lo que entramos en una espiral de locuras entrenando AI para poner la cara de Chema Alonso en un vídeo de su amado Rosendo Mercado, o en uno de Bon Jovi, o uno de Axl Rose usando DeepFakes, hasta que se presentó el ejemplo del vídeo en el Security Innovation Day 2018 de ElevenPaths.

Figura 3: Ejemplo de la cara de la actriz de Star Wars en el cuerpo de una actriz porno

Tuvimos una semana de trabajo, así que no había mucho tiempo para fallar, pero tiempo más que suficiente para hacer algunas pruebas. Este evento es muy importante para ElevenPaths y para Chema Alonso, que sabéis que le gustar marcar los ritmos de innovación con deliveries en las conferencias importantes. Ya sabemos que cuando se acerca un evento importante, siempre nos puede caer un acelerón con algo nuevo.

La verdad es que nos tocó trabajar mucho, ya que partíamos, prácticamente desde cero, por lo que tuvimos que entender bien qué es lo que queríamos y cómo podíamos llegar a ello. Por suerte, en el equipo de Ideas Locas tenemos diferentes tipos de perfiles. Gente especializada en Ciberseguridad, otros en Inteligencia Artificial, especialistas en desarrollo móvil, en hardware y en temas de Big Data. Nos balanceamos y ayudamos en función de nuestras necesidades. Somos pocos, pero bien distribuidos los perfiles.


En este artículo os vamos a contar qué es lo que fuimos haciendo durante la semana con las tecnologías GAN (Generative Adversarila Netwoks) y las FakeNews, aunque no todo el trabajo fue lo que os contamos en este artículo, ya que otra parte del equipo se dedicó a preparar otras cosas que dejamos para otros momentos. Lo primero es entender la tecnología que está detrás de las DeepFakes. Nuestro compañero Enrique Blanco se encargó de liderar la parte más teórica y hacernos entender cuál era el camino idóneo.

La parte más teórica

Entender la tecnología detrás de DeepFakes no es complicado en absoluto. El funcionamiento de este software se basa en el uso de arquitecturas de Deep learning y algoritmos bien conocidos de Machine Learning. Cada nodo (o neurona artificial) de la capa de entrada contiene un valor numérico que codifica la entrada con la que queremos alimentar a la red. Estos valores se transmiten de manera recurrente a cada una de las capas.

Lo interesante es que cada borde amortigua o amplifica los valores que transmite. Cada nodo suma todos los valores que recibe y genera uno nuevo basado en una determinada operación o función de activación. El resultado del cálculo se puede recuperar de la capa de salida. Cuando tomamos como entrada a una red neuronal un conjunto de imágenes, debemos hacer uso de arquitecturas efectivas, como Redes Neuronales Convolucionales (CNNs), que es exactamente a lo que DeepFakes está recurriendo.

Entrenar una red neuronal significa encontrar un conjunto de pesos para todos los bordes, de modo que la capa de salida produzca el resultado deseado. Una de las técnicas más utilizadas para lograr esto se llama backpropagation, y funciona reajustando los pesos cada vez que la red comete un error.


Figura 5: Conferencia sobre GANs por David Del Val donde habla de FaceSwapping

La idea básica detrás de la detección de rostros y la generación de imágenes es que cada capa representará progresivamente características complejas básicas, aumentando la abstracción sobre determinadas características del input.

Aunque, en realidad, lo que cada capa es capaz de abstraer no resulta tan sencillo de sintetizar, en el caso de una cara, por ejemplo, la primera capa podría detectar bordes, la segunda sería capaz de detectar ojos u otros detalles de los rostros, etc… Otro recurso que utiliza DeepFakes son los Autoencoders, que se erigen como pieza clave en la tecnología de face swapping. Su teoría y funcionamiento se explican brevemente a continuación.

Autoencoders

Las redes neuronales pueden adquirir infinitas configuraciones en materia de forma y tamaños. Y es exactamente esa forma y el tamaño lo que determina el rendimiento de la arquitectura para resolver un determinado problema. Un autoencoder es un tipo especial de red neuronal cuyo objetivo es hacer coincidir la entrada que se le proporcionó con la mayor semejanza posible.

A primera vista, no parecen resolver ningún problema real, pero el valor de este tipo de arquitecturas reside en las características que se pueden extraer de la abstracción de las entradas que realizan en las capas profundas de su arquitectura. El autoencoder debe comprimir la información para reconstruirla a posteriori.

Figura 6: Descripción de autoencoder

Tras un entrenamiento correcto, el autoencoder aprenderá a representar los valores de entrada en una forma diferente, pero mucho más compacta. El codificador automático se puede desacoplar en dos redes separadas: un codificador y un decodificador, ambos compartiendo la capa en el medio, que a menudo es referida como vector base y representa la imagen de entrada en el llamado espacio latente. Los codificadores automáticos tienen pérdidas naturales, lo que significa que no podrán reconstruir la imagen de entrada a la perfección.

Entrenamiento DeepFakes

Supongamos que tenemos un conjunto de rostros como training dataset que pueden ser usadas como entrada a nuestra arquitectura. El diagrama siguiente muestra una imagen de Chema Alonso reconstruida por DeepFakes que se alimenta a un autoencoder. Su resultado, como se mencionaba anteriormente, es una representación dimensional inferior de esa misma cara  a la que llamaremos "Vector base" o "Cara latente".

Figura 7: Rostro original a rostro reconstruido

Dependiendo de la arquitectura de la red, la cara latente puede no parecer una cara en absoluto. Cuando se pasa a través del Ddecoder, la cara latente se reconstruye. Para monitorizar el rendimiento de una red de este tipo, se mide la bondad de la reconstrucción de la imagen original a partir de la descompresión de la representación obtenida en el espacio latente.

En el caso de DeepFakes, con la finalidad de mezclar caras, entrenar dos autoencoders de forma separada no tendría ningún sentido, pues la representación de los espacios latentes aprendidos por cada uno sería totalmente diferente y no podrían ser usadas al mismo tiempo.  La tecnología de Face Swapping es posible si se codifican dos clases diferentes de inputs en una misma representación latente. Esto se ha conseguido construyendo dos redes neuronales que comparten el mismo encoder pero usan dos decoders diferentes.

Figura 8: Mezcla de dos caras con autoencoders

Durante el entrenamiento, las dos redes de arriba se entrenan por separado. El Decoder A solo se entrena con caras de A (Axl Rose); el Decoder B solo se entrena con caras de B (Chema Alonso). Sin embargo, todas las caras latentes son producidas por el mismo Encoder. Esto significa que el Encoder tiene que identificar características comunes en ambas caras.

Debido a que todas las caras comparten una estructura similar, no resulta imposible que el Encoder adquiera la capacidad de representar caras, ni tampoco resulta descabellado inferir que en la máxima compresión de la información de nuestra red se consigue un vector base común a ambas personas.

Figura 9: Por cada cara de Chema Alonso generada a partir de la cara de Axl Rose, el Discriminador irá diciendo el grado de bondad de la cara generada, es decir, cuánto se parece esa cara a "Chema Alonso". Cuando se supere el umbral marcado, se considerará que la cara ha sido transferida en ese fotograma.

Una vez nuestro modelo ha sido entrenado, la red tendrá la capacidad de generalizar con bastante buen acierto las características de un rostro humano, por lo que podrá decodificar satisfactoriamente distintos gestos y orientaciones de los elementos que componen una cara. Y lo más importante: nuestro modelo tendrá la capacidad de generar nuevos rostros (tanto del sujeto A dado un rostro de B y viceversa) que no existen en nuestro training y/o test dataset con el que se inicializa el Discriminador.

- 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

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares