viernes, mayo 25, 2018

El vídeo del acuerdo entre Telefónica y Netflix y el Amstrad CPC 6128

Ayer fue el día en el que el equipo que había estado trabajando en el acuerdo entre Netflix y Telefónica decidió anunciarlo. Ha sido un largo trabajo de muchas personas durante mucho tiempo pensando en cómo hacer lo mejor para los clientes Movistar, y hubo que limar muchos detalles para conseguir el acuerdo, del que poco a poco se irán conociendo más detalles.

Figura 1: El vídeo del acuerdo entre Telefónica y Netflix y el Amstrad CPC 6128

Lo que sí me encantó fue la forma en la que se presentó en sociedad, por medio de un vídeo que nuestros compañeros de comunicación crearon con el equipo de Netflix. Un vídeo lleno de referencias a muchas cosas y que a mí, personalmente, me encantó.


Figura 2: Vídeo del anuncio del acuerdo entre Telefónica y Netflix

La historia del acuerdo entre Telefónica y Netflix lleva mucho tiempo trabajándose, y en el camino nosotros visitamos el HQ de Netflix en Estados Unidos durante el verano pasado, momento que aproveché para tomarme muchas fotos.

A post shared by Chema Alonso (@chemaalonso) on

Pero no solo eso, también tube la ocasión de preguntarle a Reed Hastings por las nuevas series de SuperHéroes y enseñarle, antes que al gran público, nuestra estrategia con Movistar Home - aún estaba lejos el lanzamiento en el Mobile World Congress de este año -.


Después Reed Hashtings nos acompañó en el Encuentro de Telefónica, donde compartió con todos nosotros muchas de las fases por las que ha pasado la compañía Netflix para llegar a lo que es hoy. Una charla motivadora y llena de enseñanzas sobre cómo transformar un negocio con valentía.

Figura  5: José María Álvarez Pallete y Reed Hastings en el Encuentro

Por fin, las dos compañías cerraron el acuerdo y se anunció en un vídeo en el que se esconden muchos detalles. Por supuesto, Las Chicas del Cable son parte fundamental del anuncio, pero también sale nuestro querido Dalí en las máscaras de La Casa de Papel, o la rata de "La Peste" que se esconde en un rincón del despacho.

Figura 6: El Amstrad CPC6128, la rata, $P y la taza de Late Motiv

Reseñas varias escondidas, como el 4P de la Cuarta Plataforma, la taza del programa de Late Motiv de nuestro Canal #0 o algún detalle más que si buscas encontrarás. Como no, hay un teléfono clásico en la llamada, y un ordenador Amstrad CPC6128 que a alguno ha sorprendido.


No hay mucho misterio en ese ordenador. Se lo regalé yo al jefe hace ya bastante tiempo. En su afán por aprender más por la tecnología nuestro presidente me pidió que le enseñara a programar, así que le compré un Amstrad CPC6128 y se lo puse en su despacho para que programara como lo hacía yo tiempo atrás. Y lo hizo. Quería aprender a pensar como un creador de tecnología, y volver a hacer programas sencillos en BASIC le ayudó. Tiene también el manual al lado para repasar comandos de vez en cuando. Esas cosas me encantan.

Saludos Malignos!

jueves, mayo 24, 2018

Latch Cloud TOTP en Facebook sin SMS ni número de Teléfono

Ayer mismo Facebook anunciaba en su blog corporativo que han modificado el funcionamiento del Segundo Factor de Autenticación en sus sistemas. Hasta el momento, tal y como os habíamos explicado en un artículo, era necesario introducir el número de teléfono si querías utilizar un sistema tipo Latch Cloud TOTP, lo que además generaba el envío de un mensaje SMS.

Figura 1: Latch Cloud TOTP en Facebook sin SMS ni número de Teléfono

Ahora esto ya no es necesario, y es mucho más sencillo configurar un Segundo Factor de Autenticación en Facebook utilizando Latch Cloud TOTP. En el siguiente vídeo que hemos realizado puedes ver, en algo menos de dos minutos, cómo es posible realizar el proceso de configuración desde cero, y cómo funciona su uso.

Figura 2: Cómo configurar Latch Cloud TOTP en Facebook

Si eres usuario de Facebook, utilizar un Segundo Factor de Autenticación como Latch Cloud TOTP te ayudará a mantener tu cuenta infinitamente más segura que utilizando contraseñas complejas, como recomiendan en muchos sitios.

Saludos Malignos!

miércoles, mayo 23, 2018

Air Profiling: Cómo perfilar usuarios por su tráfico WiFi

Hoy mismo ha tenido lugar el webinar que hemos hecho en ElevenPaths dentro de nuestra serie de CodeTalks For Developers sobre Air Profiling, una Prueba de Concepto que explica cómo se pueden hacer perfiles de navegación de usuarios en una red WiFi, por medio del análisis del tráfico que generan sin cifrar, o por medio de los puntos de conexión.

Figura 1: Air Profiling: Cómo perfilar usuarios por su tráfico WiFi

La idea nació dentro de un proyecto de Equinox, utilizando las bases de datos de URLs de apps que tenemos en Tacyt, y en este caso, Guillermo Román Ferrero y Javier Gutierrez Navío, han hecho una implementación.

Como he dicho, el proyecto de Air Profiling permite, a través del tráfico recogido mediante sondas que monitorizan el tráfico WiFi, procesar dicha información y realizar un perfil de los distintos usuarios, enfocado a clientes de dispositivos móviles, del uso de los dispositivos según la información obtenida al analizar su tráfico web.


Figura 2: CodeTalk for Developers "Air Profiling"

Para este proyecto, se han usado tecnologías de análisis de datos de Amazon Web Services, TCPdump y Python. Se ha utilizado una base de datos en ElasticSearch que permite de forma sencilla la recopilación y cruce de los distintos datos, y pintar, gracias a Kibana, gráficos con los resultados de los mismos.

El resultado final es una aplicación web, ubicada en un servidor Django, que permite mostrar los resultados del análisis de datos, mostrando información sobre la navegación web, qué páginas visita dicho usuario, un estudio de los tipos de páginas frecuentadas, la ubicación de los servidores áccedidos, y un timeline que muestra cuando ha realizado peticiones el dispositivo analizado.

Saludos Malignos!

martes, mayo 22, 2018

SmartContrats en Blockchain: Webinar ya en Youtube

Durante este mes, en ElevenPaths hemos tenido una sesión de nuestras ElevenPaths Talks dedicada a los SmartContracts de BlockChain. En dicho seminario, de casi una hora de duración, nuestro equipo de CSA (Chief Security Ambassadors) habla sobre las posibilidades de servicios que pueden construirse sobre BlockChain.

Figura 1: SmartContrats en Blockchain: Webinar ya en Youtube

El seminario ya está disponible en Youtube, por lo que puedes verlo hoy mismo si quieres conocer mucho mejor estas tecnologías. Aquí tienes el vídeo del seminario la sinopsis de esta ElevenPaths Talk:

Figura 2: SmartContrats en BlockChain 

"Que el primer y más importante caso de uso de Blockchain desarrollado, Bitcoin, contenga la palabra “coin”, "moneda" en castellano, ha contribuido en gran medida para que sea identificado únicamente como dinero virtual; pero como ya hemos visto en los #11PathsTalks anteriores (links abajo), nada puede estar más lejos de la realidad. La tecnología de las cadenas de bloques va mucho más allá de simples transacciones monetarias.

El ejemplo más claro son los Smart Contracts o contratos inteligentes, que, construidos a partir de código fuente como cualquier otro programa, pueden adoptar cualquier funcionalidad imaginable; desde la cría virtual de gatitos con CryptoKitties, que llegó a colapsar la red de Ethereum en su boom a principios del año 2018, pasando por el desarrollo de sistemas de voto electrónico o “certificaciones notariales” de procesos de gestión, hasta la creación de otras monedas en forma de token, donde un fallo en su codificación puede llegar a dividir el propio blockchain como sucedió con The DAO.
Si quieres conocer mucho más sobre  esta tecnología, el libro que utilicé yo para aprender es el que escribieron nuestros compañeros Yaiza Rubio y Felix Brezo en 0xWord que lleva por título: BitCoin, la tecnología BlockChain y su investigación.

Saludos Malignos!

lunes, mayo 21, 2018

Huntpad: El notepad para los cazadores de bugs

Hace un tiempo que me topé con una herramienta distinta. Estamos acostumbrados a hablar de herramientas que hacemos nosotros con un objetivo concreto, o que utilizamos de forma frecuente para llevar a cabo algún tipo de tarea relacionada con la ciberseguridad. En el día de hoy quería hablaros de una herramienta llamada Huntpad, la cual tiene un eslogan curioso: es el notepad para los cazadores de bugs.

Figura 1: Huntpad: El notepad para los cazadores de bugs

Puede parecer curioso que en un blog como éste dónde dedicamos artículos a la ciberseguridad y a la tecnología en general hablemos de un bloc de notas, pero como veréis no es un bloc de notas normal. Syhunt Huntpad es un bloc de notas que tiene ciertas características peculiares y muy utilizables en un pentest o en un Ethical Hacking.

¿Qué tiene especial Huntpad?

Porque nos proporciona una serie de funcionalidades que trataremos en este artículo como, por ejemplo, la generación de cadenas para inyectar más comunes, la generación de hashes de ciertas palabras, la manipulación de texto y HTML, codificación o la posibilidad de generar entradas para fuzzear en la detección de un overflow en una aplicación.

Figura 2: HuntPad de SysHunt

Realmente ha sido gratificante ver esta aplicación, por ello voy a mostrar algunas de las muchas posibilidades que ofrece este bloc de notas convertido en una pequeña navaja suiza para el Ethical Hacking. Hay que decir que la herramienta se encuentra disponible para sistemas Windows y se puede obtener desde su sitio web.

Características de Huntpad

A continuación, se muestran alguna de las características que hacen de Huntpad una herramienta interesante:
• Ayuda con la sintaxis. La aplicación nos resalta la sintaxis de diferentes lenguajes, lo cual nos ayuda a poder leer mejor el código. Los lenguajes soportados son: HTML, Javascript, CSS, XML, PHP, Ruby, SQL, Pascal, Perl, Python y VBScript.

• Funciones de inyecciones SQL como, por ejemplo:
o Evasión de filtros.
o Declaraciones UNION.
o Inserción rápida de inyecciones SQL comunes que cubren DB2, Informix, Ingres, MySQL, MSSQL, Oracle y PostgreSQL.
• Funciones de file inclusion:
o Generador de código Quick Shell Upload.
o PHP String Escape (chr).
Funciones XSS (Cross-Site Scripting):
o Evasión de filtros. JavaScript String Escape, CSS Escape.
o Declaraciones de alert para pruebas de vulnerabilidades XSS.
• Generadores de hashing: MD5, SHA-1, SHA-2, SHA 512, RIPEMD, WHIRLPOOL, etcétera.
Figura 3: Generadores de Hashes
• Codificación y decodificación:
o Se aplica en format URL. 
o Se aplica en formato hexadecimal.
o Se aplica en base64, codifica y decodifica.
o Conversión CharCode. 
o Ofuscación de direcciones IP. 
o Codificación JavaScript. 
o HTML Escape.

Figura 4: Opciones de codificación/decodificación

En lo que a codificación y preparación para un entorno web, por ejemplo, en un proyecto de Hacking Web Technologies, se dispone de un gran abanico de posibilidades y opciones, tal y como puede verse en las imágenes.

Figura 5: Opciones en Web Technologies

En la siguiente imagen se puede ver cómo nos genera el código necesario en una inyección y el código para diferentes tipos de herramientas como wget o curl.

Figura 6:Inyecciones para wget o curl

Para finalizar el repaso a Huntpad hay una opción para los exploits de buffer overflow. Nos permite generar una entrada con el tamaño que nos interese. Debemos indicar la longitud de la entrada y el patrón que queremos repetir. Esto es similar a la herramienta pattern_create de Metasploit. Sólo hay que decir que el icono en el Huntpad es una bomba, por lo que todo está dicho.

Por defecto, se nos proporciona la posibilidad de crear un número X de letras A. Es decir, podemos crear una entrada de 128, 256, 512, 1024 o 2048 A’s. También podemos elegir el tamaño que a nosotros nos interese, incluso, el patrón que nos interese. Para este ejemplo, vamos a crear un patrón que se repita y que sea “1234” con una longitud de 2500. En el icono de la bomba pinchamos la opción “[N] x [N]”.

Figura 7¨: Creando un desbordamiento de Buffer

Una curiosa herramienta que puede ayudarnos en un Ethical Hacking, una prueba de SQL Injection, o la generación de un exploit, ya que es un bloc de notas a modo de navaja suiza para disponer de esas pequeñas herramientas todas en una. Sin duda, una herramienta interesante que debemos llevar en la mochila del pentester.

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, mayo 20, 2018

Mi conferencia en X1Red+Segura en vídeo: Datos en tiempos de Cambridge Analytica

Ayer sábado tuve la oportunidad de participar una vez en las jornadas de X1Red+Segura que se organizaron en las instalaciones de la Universidad Politécnica de Madrid en la Ciudad Universitaria y aproveché para hablar de los "Datos en tiempos de Cambridge Analytica".  Pero además aprovecho para dejaros un par de vídeos más para animar el fin de semana.

Figura 1: Mi conferencia en X1Red+Segura en vídeo: Datos en tiempos de Cambridge Analytica

Es una charla que solo había hecho una vez antes, durante el Talent Show de México y no está publicada en vídeo, así que aproveché para hacerla otra vez y que quedara grabada para todos en Internet y subirla a Mi Canal Youtube que luego se me olvidan y se pierden para siempre.

A post shared by Chema Alonso (@chemaalonso) on

La esencia de la charla ya la conocéis, está casi todo recogido en el artículo que escribí hace no demasiado tiempo en este blog y que titulé: "Cambridge Analytica no es ni siquiera la puntita del iceberg en el mundo de hoy", y que podéis leer antes de ver la charla - además de ver alguna de las conferencias que van enlazadas que tienen mucho que ver con lo que cuento en la charla de hoy -.


Figura 3: Datos en tiempos de Cambridge Analytica

La charla la tenéis en vídeo, pero como la grabación que tengo es la del streaming de Internet, para que podáis seguirla un poco mejor he subido las diapositivas que utilicé a mi canal de SlideShare, así que podéis ir siguiendo las diapos a mejor calidad al tiempo que seguís la charla.


Además, como es un domingo más que interesante en términos de deporte, con las carreras de MotoGP, la final del Máster ATP 1000 de Roma de tenis en el que Rafa Nadal se juega otro título, y el Real Madrid en la final de basket de la Final Four, os dejo un par de vídeos que tienen que ver con el deporte.


El primero de ellos es el que nos grabaron los compañeros de comunicación con los deportistas de invierno de la Federación Española de Deportes de Invierno para darnos unos consejos de seguridad con las caídas. Parece que el accidente con mi monopatín que os conté en el post "Surfing the heaven" va a dar mucho juego a los compañeros más gamberros.


Figura 6: Deportistas de Invierno "Consejos para caídas"

Además, este otro que me encanta, en el que cuatro jugadores del Real Madrid echan un partidito amistoso con un rival digno de ellos, 100 niños de Movistar Likes que les pusieron en aprietos y les sacaron muchas sonrisas.


Figura 7: Real Madrid contra 100 niños

Y nada más, ahora a disfrutar el domingo. Yo ya he hecho "Chemagdalenas", voy a hacer algo de deporte ahora, luego a terminar la colección de cromos con Mi Hacker que hacemos juntos, ver algo de deporte en la tele y disfrutar un poco de las horas del domingo con cosas lúdicas. Disfruta tu domingo.

Saludos Malignos!

sábado, mayo 19, 2018

Nuestras conferencias esta semana en @elevenpaths @luca_d3 & @0xWord

Aprovechando el fin de semana os dejo la lista de las conferencias en las que vamos a participar desde ElevenPaths, LUCA Data-Driven Decisions y 0xWord. Además, aprovecho para recordaros que hoy mismo estaré dando una charla en X1Red+Segura en Madrid, donde además podrás adquirir los libros de 0xWord. Yo me entretendré a firmar los que queráis, para que tengáis un "original". La charla de hoy, la doy a las 11:00 y la puedes seguir online por este canal de streaming.

Figura 1: Nuestras conferencias esta semana en ElevenPaths, LUCA D3 & 0xWord

El primero de los eventos para esta semana tiene lugar en Caixa Forum de Madrid y lo organiza la Fundación Querer. En este evento participaré con una charla sobre la educación de los niños, y mi visión de que deberíamos ser educados todos haciendo uso del Big Brain que nos han regalado a nuestra generación.

Figura 2: 21 de Madrid Fundación Querer

El 23 de mayo tenemos un nuevo CodeTalk For Developers en ElevenPaths, en esta ocasión dedicado a las Técnicas de Air Profiling. Será por la tarde, y podrás ver cómo se puede explotar la información que circula por protocolos no seguros en redes WiFi. Tienes más info en la web del seminario.

Figura 3: Técnicas de Air Profiling

Los días 23 y 24 de mayo, en México, tiene lugar el InfoSecurity Summit, donde además de nuestro amigo Kevin Mitnick (que lleva alguno de nuestros juguetes de ElevenPaths), participará nuestro compañero Fabián Chiera con una charla de cómo utilizar BlockChain en el mundo de la Ciberseguridad. Tienes más información en la web de la sesión.

Figura 4: ElevenPaths & Telefónica Business Solutions en InfoSecurity México

El día 24 de mayo, en el Espacio de la Fundación Telefónica en la Gran Vía de Madrid, tendrá lugar el evento de Big Data for Social Good de LUCA, donde tenemos una agenda con varias charlas en las que las soluciones de Big Data se aplican a mejorar nuestra vida. Yo participaré con una pequeña sesión de "Conectar a los desconectados". Ahora hemos abierto el registro al público y puedes reservar tu plaza con el código: WILDWORLD0518


Figura 5: Big Data for Social Good en Madrid

Y por último, el Sábado 26 de Mayo - día de la final de la Champions League - tendrá lugar la edición EastMadHack 2018 en Arganda del Rey. Una jornada de día entero en el que disfrutar el hacking en la zona éste de Madrid. Allí habrá un stand de 0xWord y están entre los ponentes algunos de sus autores, como Daniel Echeverri, que es autor de los libros "Python para Pentesters", "Hacking con Python" y "Deep Web: Tor, Freenet & I2P - Privacidad y anonimato".

Figura 6: EastMadHack 2018 en Arganda del Rey

Y esto es lo que tenemos para esta semana, donde como podéis ver, tenemos un poco de hacking, un poco online, un poco de BigData, un poco en México y en Madrid y un poco de educación para todos. No está mal.

Saludos Malignos!


viernes, mayo 18, 2018

Hashtopolis: Cómo crackear contraseñas de forma distribuida

Una de las acciones más comunes durante la realización de un proyecto de Ethical Hacking, es el crackeo o descifrado de las contraseñas que el analista va encontrando en diferentes partes de los sistemas objetivo o intermedios, de los que va recabando hashes en diferentes algoritmos con una credencial válida que pueda dar paso al siguiente nivel. Y a veces es un proceso lento si la contraseña es robusta, el algoritmo de hashing es complejo o no tenemos suficiente potencia de cómputo.

Figura 1: Hashtopolis: Cómo crackear contraseñas de forma distribuida

En este artículo os traigo una herramienta muy interesante que nos permite, de una manera relativamente sencilla, utilizar hashcat para realizar tareas de descifrado distribuyendo el trabajo entre diferentes ordenadores que se encuentren en una misma red.

Instalando hashtopolis y configurando el entorno

La herramienta que vamos a utilizar para realizar esta tarea se llama Hashtopolis, y se puede acceder a ella en su repositorio de GitHub. Es un sistema cliente-servidor que permite distribuir tareas de hashcat entre diferentes ordenadores.

Figura 2: Hashtopolis en GitHub

Hashtopolis requiere la instalación de un servidor de aplicación (apache2) que albergará una aplicación web que permitirá al usuario gestionar todos los equipos que se estén utilizando para completar las tareas. En los equipos que se deseen utilizar para realizar las tareas, se debe instalar un agente, que no es más que un pequeño programa que se encargará de comunicarse con el servidor para recibir órdenes.

Instalando y configurando el servidor

Lo primero que vamos a hacer es instalar y configurar el servidor, para ello se recomienda utilizar una máquina virtual con un sistema operativo Ubuntu o Debian. Vamos a comenzar por la instalación de las dependencias principales que requerirá la aplicación, para ello ejecutamos los siguientes comandos:
$ sudo apt-get update 
$ sudo apt-get install mysql-server 
$ sudo apt-get install apache2 
$ sudo apt-get install libapache2-mod-php php-mcrypt php-mysql php * 
* (Si se utiliza php7.2 y se tiene problemas con la instalación de php-mcrypt, recomiendo que consultéis este enlace) 
$ sudo apt-get install git curl
Una vez instaladas todas estas dependencias, vamos a descargar hashtopolis desde su repositorio de GitHub para configurar la aplicación web. A continuación, se muestra el comando necesario para realizarlo.
$ git clone https://github.com/s3inlc/hashtopolis.git 
$ cd hashtopolis/src 
$ sudo mkdir /var/www/hashtopolis 
$ sudo cp -R * /var/www/hashtopolis/

$ cd /var/www 
$ sudo chown -R www-data:www-data hashtopolis
Una vez descargada la herramienta, y movida la aplicación web al directorio de servidor de aplicación, vamos a realizar algunas configuraciones en el directorio de apache2. Lo primero, abrimos el siguiente fichero e introducimos el nombre de archivo index.php a continuación de index.html.
$ sudo pico /etc/apache2/mods-available/dir.conf
También vamos a configurar el directorio (hashtopolis) que hemos creado dentro de /var/www como DocumentRoot. Para ello introducimos el comando que se muestra a continuación, y en la línea donde pone DocumentRoot /var/www/html lo modificamos por DocumentRoot /var/www/hashtopolis.
$ sudo pico /etc/apache2/sites-enabled/00*
Una vez realizadas estas configuraciones, si se han seguido todos los pasos, tras reiniciar apache2 mediante el comando sudo service apache2 restart deberíamos ver algo similar a la imagen que se muestra a continuación.

Figura 3: Inicio de la instalación de Hashtopolis

En este punto tenemos casi listo nuestro servidor, únicamente queda la configuración de la base de datos y añadir un usuario para utilizar la aplicación web, vamos a ello. Lo primero vamos a instalar phpmyadmin para que resulte más sencilla la administración.
$ sudo apt-get install phpMyAdmin
Dependiendo de la versión que estéis instalando es posible que tengáis que añadir la sentencia Include /etc/phpmyadmin/apache.conf al final del fichero /etc/apache2/apache2.conf. Una vez instalado phpmyadmin accedemos mediante el navegador introduciendo la dirección IP de nuestra máquina /phpmyadmin. Dentro de phpmyadmin vamos a añadir un nuevo usuario para que utilice hashtopolis, a continuación, se muestra la configuración del usuario.

Figura 4: Añadiendo un usuario en Hashtopolis

Una vez añadido el usuario, volvemos a la página de inicio de hashtopolis introduciendo la dirección IP de nuestra máquina en el navegador y comenzamos la instalación. Los parámetros que se requieren para la instalación se muestran en la siguiente imagen.

Figura 5: Parámetros de instalación

Si la creación de las tablas en la base de datos ha sido satisfactoria, hashtopolis nos mostrará una pantalla para crear un usuario administrador en la aplicación web.

Figura 6: Creación de usuario administrador

Tras crear el usuario administrador, nos aparecerá la pantalla de acceso en el navegador. Introduciendo los datos del usuario administrador tendremos acceso al sistema.

Figura 7: Sistema de Hastopolis

En este punto tendríamos el servidor completamente instalado y funcional. Ahora podemos pasar a la segunda parte. Añadir los agentes a nuestra red.

Instalación de los agentes

Los agentes son los programas que se encargarán de comunicarse con el servidor que hemos configurado previamente para recibir tareas que realizar, y deben instalarse en cada uno de los equipos de la red que queramos que participen en el proceso. Vamos a ver como instalar un agente en un equipo Ubuntu.

Lo primero que debemos tener instalado es hashcat, para ello, basta con ejecutar el siguiente comando:
$ sudo apt-get install hashcat
Una vez instalado hashcat, lo único que tendríamos que hacer es seguir las instrucciones que nos marca la Wiki del proyecto.

Figura 8: Wiki de hashtopolis

Tras ejecutar ese conjunto de comandos, vamos a la aplicación web que hemos configurando anteriormente y pulsamos sobre crear nuevo agente.

Figura 9: Añadir nuevo agente

Como puede observarse hay dos agentes disponibles, uno escrito en C Sharp y otro en Python. Vamos a utilizar el de C Sharp. Pulsamos el botón Create del New voucher y a continuación ejecutamos el siguiente conjunto de comandos.

Figura 10: Creación del agente de C# usando Mono

Si se han seguido todos los pasos anteriores, en este punto el agente estaría activo haciendo pulling cada ciertos segundos al servidor para recibir tareas.

Creación de una tarea para probar el agente

La características principales de la creación de tareas pueden encontrase en la Wiki del proyecto de hashtopolis, en este caso, veremos como crear una tarea sencilla para descifrar un Hash md5. En el siguiente video se muestra como crear una tarea y asignársela a un agente Python para que crackee una lista de hashes md5 haciendo fuerza bruta con un diccionario. Hay que tener en cuenta que el servidor y el agente no están en la misma máquina.


Figura 11: Demo de Hashtopolis

Como puede observarse, el uso de esta herramienta es una forma muy buena de aprovechar todos los recursos computacionales que tengamos para realizar una única acción de manera distribuida. Podemos crear listas muy amplias de contraseñas cifradas y asignarle la tarea a varios agentes que comenzaran a descifrar de manera coordinada, sin estar alojados sobre el mismo ordenador y sin disponer del mismo hardware o arquitectura.

Autor: Santiago Hernández, Security Researcher en ElevenPaths

jueves, mayo 17, 2018

El primer dispositivo IoT de la historia fue una máquina de Coca-Cola

A raíz de un comentario en el artículo sobre el primer ordenador personal de la historia publicado en este mismo blog, donde hicimos una broma sobre que el Altair 8800 era el primer dispositivo IoT, nos hemos acordado de una curiosa historia que habla de la primera máquina que podríamos definir con ese término. Bueno, en este caso Internet aún estaba en su primera fase en la que se denominaba Arpanet (¿entonces la podríamos llamar AoT?) … y el primer dispositivo que digamos era “algo cotidiano” con conexión a dicha red, fue nada más y nada menos que una máquina de refrescos.

Figura 1: El primer dispositivo IoT de la historia fue una máquina de Coca-Cola

El departamento de las ciencias de la computación de la super conocida Universidad de Carnegie Mellon allá por los años 70’s, mantenía una máquina de Coca-Cola que vendía las botellas (eran las de cristal con la forma característica de la marca) 10 céntimos más baratas que cualquier otra máquina en el campus. Como los programadores “de verdad” no funcionan sin cafeína ;) dicha máquina era muy popular entre todos ellos.

Figura 2: Máquina dispensadora y botellas de Coca-Cola de los años 70

A mediados de los 70’s, con la expansión de dicho departamento, la nueva localización de las oficinas de los empleados se situaba lejos de la habitación de los terminales, que, de forma estratégica, era donde se ubicaba la máquina de Coca-Cola. Tener que ir hasta la donde estaba la máquina y ver que, o no había refrescos o bien la acababan de reponer (los reponedores de la máquina eran voluntarios del campus los cuales no tenían ningún calendario establecido, incluso había un manual de cómo se debía reponer), y por lo tanto no estaban lo suficientemente frías, era algo que un ingeniero no podía permitirse.

Un día, un par de empleados decidieron que había que buscar una solución a este gran problema. Y claro está, pasaba por utilizar la electrónica y la informática. Por lo tanto, decidieron instalar micro interruptores en cada una de las seis bandejas de la máquina, de forma que pudieran determinar el número de latas en cada una de ellas. Luego conectaron los micro interruptores a la red local del departamento por Ethernet hasta el servidor principal, que por aquella época era el clásico PDP-10.

También crearon un pequeño programa que informaba, a través de los datos facilitados por los micro interruptores, del estado de las bandejas y por lo tanto del número de latas de la máquina. Pero no sólo informaba si una columna estaba vacía, sino que además era capaz de comprobar si las botellas estaban frías.

Figura 3: Ordenador PDP-10 con 6 módulos de memoria

Todo esto era posible ya que el programa tenía un registro de cuándo la máquina de Coca-Cola fue recargada por última vez y además en qué bandeja. Con esta información el programa era capaz de informar sobre qué columna tenía botellas frías y cuáles no, en base a cuando fue recargada por última vez. Cuando una columna estaba vacía, mostraba el mensaje “EMPTY”, si la columna había sido recargada hacía más de tres horas, mostraba el mensaje “COLD”. En caso contrario, mostraba el tiempo que había transcurrido desde la última recarga, por ejemplo: 1h 3m.

Inicialmente este estado de la máquina de Coca-Cola sólo se podía consultar desde el servidor al que estaba conectado, es decir, sólo aquellos que tuvieran acceso a dicha máquina podían hacerlo, pero el resto de la gente del resto del campus también quería poder consultar el estado de la máquina mientras estaban conectados otros servidores.

Para ello utilizaron el protocolo finger de UNIX el cual fue modificado para informar del estado de dicha máquina, permitiendo así la consulta no sólo desde otros servidores del campus, sino desde cualquier ordenador conectado dentro del campus. Pero más tarde a principio de los años 80, la máquina se conectó a Arpanet, es decir, Internet, llegando a ser accesible a más localizaciones repartidas por todo EEUU.

Figura 4: Estado de Aparnet (más tarde Internet) en octubre de 1980

El comando finger (llamado igual que el protocolo) era un servicio presente en servidores de la época que proveían información sobre los usuarios del sistema, si estaban activos y desde dónde estaban conectados, entre otras cosas (comando que en su día fue muy usado, y “abusado”).

Para consultar el estado de la máquina de Coca-Cola, sólo había que ejecutar el siguiente comando: finger coke@cmua. CMUA era el nombre del servidor al que estaba conectada la máquina y coke era un usuario ficticio en el sistema, el cual respondía con el estado de la máquina de refrescos. Los datos que devolvía este comando eran algo parecido a esto:
> EMPTY EMPTY 1h 3m 
> COLD COLD 1h 4m
El programa de la máquina de Coca-Cola se utilizó durante más de una década e incluso fue re-escrito para Unix VAX. El fin de la máquina llegó cuando Coca-Cola cambió el formato de las botellas retornables por otro menos glamuroso y además no retornable. La vieja máquina no aceptaba este nuevo formato y esto sumado a los cambios realizados por la marca en los diferentes sabores, hicieron que nadie del departamento tuviera ganas de nuevo de cablearla y conectarla de nuevo a la red, al menos por ahora.

De todas formas, la máquina de Coca-Cola estuvo conectada a Arpanet hasta finales de los años 80 y luego, tanto ella como el servidor del departamento, fueron reemplazados. En 1992, los ingenieros decidieron conectar otra vez esta nueva máquina a Internet, pero además, también aprovecharon para conectar no sólo la nueva máquina, sino también una máquina de M&Ms que se encontraba justo al lado de la de refrescos.

Figura 5: Foto no confirmada de una máquina de mediados de los 90
junto a otra de golosinas, en teoría, conectadas a Internet

En ambos, casos la técnica de conexión que usaron fue totalmente distinta, mucho más actualizada a la que originalmente fue usada con la máquina de Coca-Cola. Esta vez no eran micro-interruptores, utilizaban sensores ópticos y la interfaz de conexión estaba conectada a un IBM PC-XT con el nombre COKE.LABS.CS.CMU.EDU con la dirección IP 128.2.209.43. Más adelante incluso llegó a tener su página web en la que se podía consultar incluso los horarios de carga (eso sí, de 2007):

Figura 6: Página web de la máquina de Coca-Cola

La idea gusto mucho, tanto que incluso otras universidades se unieron al proyecto. Este es un listado de algunas de ellas que siguieron la moda de conectar las máquinas de refrescos (la de Rochester incluso mostraba un gráfico del estado de la máquina):
>* Carnegie Mellon University coke and M&M machine (Fixed!)

>* Cocacola and Pepsi at Columbia University

>* University of Wisconsin (appears to be just a maintennance account, not a > real coke-machine-on-the-net)

>* UC Berkeley

>* Rochester Institute of Technology, Computer Science House

> * Soda machine status

> * stock details

> * graphical display and coke temperatures

>* University of Western Australia

>* Coffee machine (Cambridge)
Por lo tanto, creemos que estas evidencias son suficientes para demostrar que una máquina de refrescos fue el primer dispositivo de lo que hoy se conoce como el Internet de las Cosas o Internet of Things (IoT).

Autores:

Fran Ramírez, (@cyberhadesblog) miembro del equipo de Crazy Ideas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

Rafael Troncoso (@tuxotron) es DevOps Tech Lead en USCIS/DHS, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

miércoles, mayo 16, 2018

ShellPop: Generación de Shells POP "like a master"

El mundo de las shells inversas o de tipo bind es un amplio mundo. En todo pentesting es necesario utilizar, casi de manera constante, diferentes tipos de shells, ya que no solo del Meterpreter de Metasploit vive el pentester en un Ehtical Hacking. Es importante disponer en la mochila del pentester de una herramienta que permita obtener y generar una shell en un momento determinado. Sin duda, una de las herramientas importantes en este ámbito es msfvenom de Metasploit o, incluso, desde el propio msfconsole.

Figura 1: ShellPop: Generación de Shells POP "like a master"

Hoy quería hablaros de una herramienta que también proporciona otro punto de vista y otra forma de lograr generar shells en un momento determinado, bajo las circunstancias que tengamos. La herramienta se llama ShellPop y se puede obtener en su repositorio de Github.

Figura 2: GitHub de ShellPop

Para llevar a cabo la instalación de ShellPop se debe descargar desde Github, por ejemplo, con la ejecución del comando git clone. Después, se deben instalar las dependencias de Python, ya que la herramienta está escrita en Python. En primer lugar, se ejecuta la siguiente instrucción apt-get install python-argcomplete –y. Posteriormente, se instalan las dependencias que vienen especificadas en el fichero requirements.txt. Esta operativa se realiza de la siguiente manera: pip install –r requierements.txt.

Figura 3: Instalación en Kali Linux

Una vez tenemos todo preparado y con las dependencias resueltas, debemos instalar la aplicación. Para ello, se utiliza la instrucción python setup.py install. De esta manera dispondremos del comando desde la consola en cualquier instante.

La ayuda que proporciona la herramienta es buena. Si ejecutamos shellpop –h obtenemos un listado de todo lo que podemos hacer con la herramienta. Vemos que la herramienta tiene una serie de opciones con las que podemos ‘settear’ el host y el puerto dónde la shell realizará acción, dependiendo de su naturaleza: reverse o bind.

Además, podemos ver en la ayuda una categoría de tipos de shell, de opciones de encoders e, incluso, opciones de stager, lo cual hace que sea flexible la configuración de las shell. Además, la herramienta proporciona una categoría propia para generar shells para Powershell.

Figura 4: Ayuda de ShellPop

Para obtener el listado de shells disponibles y el tipo de conexión de éstas, podemos ejecutar shellpop –list. Como se puede ver en la siguiente imagen tenemos shells de tipo bind y de tipo reverse. El ID que aparece al lado de la shell es importante, ya que después lo tendremos que indicar si queremos utilizar dicha shell.

Figura 5: Lista de shells

Lo interesante es ver el número de lenguajes distintos en los que disponemos una shell. Lenguajes como Perl, Python, Ruby o PHP proporcionan una base fuerte e interesante, debido a que podemos ejecutar una shell en diferentes plataformas, indiferentemente del sistema y jugando con más con la tecnología y con el lenguaje.

Una opción interesante que proporciona la herramienta es la opción –clip, el cual permite generar la shell y copiarla al portapapeles. Es una opción interesante cuando se quiere llevar el resultado de la ejecución de la herramienta a una herramienta o script propio.

Para mostrar un ejemplo, en mi querido Ruby, ejecutamos la siguiente instrucción shellpop –reverse –number 4 –host [dirección] –port 4444 –handler. Con la opción –reverse indicamos que la shell será inversa y no de tipo bind. La opción –number nos permite indicar, según el índice del listado, la shell que queremos generar. La opción –host nos permite indicar la dirección dónde la shell se atará, en caso de ser de tipo bind o dónde la shell realizará la petición de conexión en caso de ser inversa. Respecto a la opción –port indicamos el puerto sobre el que trabajará la shell. Por último, la opción –handler configura el handler para recibir las conexiones o generarlas, de nuevo en función de si es reverse o bind.

Figura 6: Apertura de handler

El handler arranca y llega la primera conexión, cuando en el target remoto se ejecuta el código. A partir de ahí, disponemos de la posibilidad de interactuar con la shell y lanzar instrucciones en el host remoto.

Figura 7: Conexión activada

Como se puede ver, las posibilidades que ofrece ShellPop son bastante amplias. Me recuerda a una herramienta de la que ya hablamos aquí llamada ZeroDoor de OWASP, con la que se podía crear diferentes shellcodes para diferentes plataformas. Otra herramienta que hay que tener en la mochila del pentester.

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

martes, mayo 15, 2018

Efail: O cómo descifrar e-mails cifrados con S/MIME y OpenPGP usando técnicas de exfiltración

La verdad es que hoy, día de San Isidro, tenía cualquier plan menos ponerme a leer un paper técnico, pero encontrarme esta mañana información del trabajo de Efail merece la pena el cambio de planificación. Se trata de un trabajo que explica cómo se pueden descifrar correos electrónicos que hayan sido cifrados mediante S/MIME u OpenPGP, incluso si los correos tienen mucha antigüedad.

Figura 1: Efail: O cómo descifrar e-mails cifrados
con S/MIME y OpenPGP usando técnicas de exfiltración

Dicho esto, dejadme que os explique un poco el escenario para que sea más fácil de entender por todos, pues si no puede llevar a confusión. Supongamos que Eduardo (Emisor) envía un mensaje cifrado con OpenPGP o S/MIME a Ricardo (Receptor). Para eso, quiere decir que Ricardo tiene la clave privada de descifrado del Mensaje, ya que hemos cifrado el contenido del Mensaje con la Clave Pública de Ricardo.

Figura 2: Efail: Breaking S/MIME and OpenPGP Email Encryption

Supongamos ahora que Ricardo, años después sigue teniendo disponible esa Clave Privada (no ha caducado, y la sigue teniendo en uso). Bien, en ese escenario, un atacante, podría enviar un e-mail, al que llamaremos Mensaje Malicioso que iría cifrado con la Clave Pública de Ricardo, y que podría ser utilizado por el Atacante para descifrar los Mensajes enviados años atrás por Eduardo. ¿Cómo?

Figura 3: Si la Víctima abre un e-mail Mailicioso puede descifrar mensajes antiguos

Pues tan sencillo como metiendo en el Mensaje Malicioso "trozos" del Mensaje de Eduardo a Ricardo que van cifrados para que los descifre y Exfiltrando el contenido descifrado utilizando diferentes técnicas que dependen de:
A) El tipo de cifrado que se utiliza 
B) El cliente de correo electrónico que usa Ricardo.
Si queréis los detalles completos, podéis leeros el paper, pero básicamente utiliza tres tipos de exfiltración basados en el uso de la interpretación del HTML y las Primitivas de los sistemas de cifrado:
- BackChanels: Si el cliente interpreta el código HTML de un e-mail se puede crear un mensaje HTML con una etiqueta IMG que se cargue de un servidor controlado. Este canal que siempre ha sido visto como un riesgo de privacidad - ya os conté alguna aventura mía con esto por culpa de Gmail - también se puede usar para exfiltrar datos usando parámetros en las URLs o dejando las etiquetas sin cerrar. 
- Direct Exfiltration: Se dejan las etiquetas IMG sin cerrar y algunos clientes envían parte del mensaje descifrado al servidor. Esto permite que el Atacante acceda a datos descifrados que le permiten tener duplas de datos cifrados y descifrados. 
- Malleability Gadget: Aquí el paper se centra en cómo utilizar los datos exiltrados para, utilizando las primitivas de OpenPGP y S/MIME que permiten reordenar o inyectar pedazos de mensajes cifrados en el sistema para obtener su descifrado. Es decir, dinámicamente se puede solicitar el motor que descifre cadenas de texto cifrado.
Con estás técnicas, dependiendo de la configuración del cliente de correo electrónico y las versiones de OpenPGP o S/MIME una víctima podría estar descifrando correos electrónicos antiguos con solo abrir un mensaje malicioso hoy en día.  Las versiones afectadas por esta técnica las tenéis en la tabla de la figura siguiente.

Figura 4: Tabla de sistemas afectados

¿Cómo evitar esto?

La forma más sencilla es actualizar el software de S/MIME y de OpenPGP para evitar el uso de las primitivas para modificación y quitar el uso de HTML en la interpretación de mensajes de e-mail. HTML en el e-mail ha sido siempre un leak de privacidad debido a la existencia de Side-Channels para saber si un mensaje ha sido leído o no y desde qué equipo, así que si lo tienes deshabilitado, mejor que mejor.

Si quieres saber más sobre este tema, te recomiendo el libro de Cifrado de las Comunicaciones Digitales que explica todos estos conceptos con extrema facilidad y te permitirá entender mejor este tipo de situaciones.

Saludos Malignos!

Entrada destacada

Mi conferencia en X1Red+Segura en vídeo: Datos en tiempos de Cambridge Analytica

Ayer sábado tuve la oportunidad de participar una vez en las jornadas de X1Red+Segura que se organizaron en las instalaciones de la Unive...

Entradas populares