domingo, junio 30, 2019

WhatBreach: Localiza e-mails asociados a bases de datos robadas

WhatBreach es una herramienta OSINT para buscar cuentas de correo electrónico utilizadas en servicios en Internet que han sido comprometidos y cuyas identidades digitales hayan quedado expuestas. Para ello utiliza la API del servicio Haveibeenpwned.com y de Pastebin.

Figura 1: WhatBreach: Localiza e-mails asociados a bases de datos robadas

Si alguno de ellos detecta una contraseña vinculada a la cuenta de correo electrónico, buscará también el enlace de consulta en el servicio Dehashed, un motor de búsqueda de identidades digitales vulneradas creado para analistas de seguridad, periodistas, compañías de seguridad y personas comunes para ayudar a proteger cuentas y brindar información sobre fugas de información de datos de carácter personal.

Instalación de WhatBreach

La instalación de la herramienta es sencilla, basta obtener una copia desde su repositorio de GitHub ejecutando el comando “git clone https://github.com/Ekultek/WhatBreach” desde nuestro Kali Linux.

Figura 2: Obtención de la copia de WhatBreach de un repositorio de GitHub

Posteriormente instalamos las dependencias de los paquetes necesarios para el funcionamiento de la herramienta ejecutando del comando “pip install -r requirements.txt”. Únicamente necesita los paquetes arrow (versión 0.13.1), requests (versión 2.21.0) y bs4 (versión 0.0.1).

Figura 3: Instalación de las dependencias necesarias para WhatBreach

Funcionamiento de WhatBreach

Para consultar las opciones de la herramienta ésta dispone del parámetro “-h”:

Figura 4: Parámetros de funcionamiento de WhatBreach

Los parámetros principales son los siguientes:

Parámetro obligatorio:
  -e EMAIL, --email EMAIL 
Dirección única de correo electrónico para su búsqueda.

Parámetros opcionales:
-l PATH, -f PATH, --list PATH, --file PATH
 Ruta absoluta del fichero que contiene los correos electrónicos, uno por línea para escanear.

Opciones de búsqueda:
  -nD, --no-dehashed    Suprimir salida proporcionada por el servicio Dehashed.
  -nP, --no-pastebin    Suprimir salida proporcionada por el servicio Pastebin.

Miscelanea:
  -cT, --check-ten-minute
                        Está durante 10 minutos intentando comprobar si la dirección de correo electrónico proporcionada está disponible.
  -d, --download        Intenta descargar la base de datos si hay una
                        disponible

Búsqueda simple de correo electrónico

Para comprobar si la clave de acceso de un correo electrónico ha sido expuesta en Internet, basta ejecutar “python whatbreach.py -e administrador@gmail.com”. Se observa como lo primero que hace WhatBreach hacer una consulta en el servicio “haveibeenpwned” para ver si la cuenta de correo electrónico se ha utilizado en otros servicios que hayan sido comprometidos previamente.

Figura 5: Petición DNS de resolución directa para la obtención de
la dirección IPv4 e IPv6 para el servicio haveibeenpwned

También se observa cómo la herramienta hace uso del servicio “dehashed”, un motor de búsqueda de bases de datos que almacenan identidades digitales expuestas en Internet y creado para analistas de seguridad, periodistas, compañías de seguridad y personas comunes con el objetivo de proteger las identidades digitales comprometidas.

Figura 6: Petición DNS de resolución directa para la obtención
de la dirección IPv4 e IPv6 para el servicio Dehashed.

Para la cuenta de correo electrónico “administrador@gmail.com” , la herramienta detecta que la cuenta de correo electrónico se ha utilizado en tres servicios cuyas identidades digitales han quedado expuestas y han sido detectadas en “haveibeenpwned” o “dehashed”.

Figura 7: Resultados de la búsqueda de administrador@gmail.com

Descarga de la base de datos con identidades digitales expuestas

En el caso de querer descargar las bases de datos en las que aparece una identidad digital presente en “haveibeenpwned”, “pastebin” o “dehashed”, basta añadir el parámetro “-d” o “--download” para descargar la base de datos donde se encuentra la información de la identidad digital comprometida y expuesta. Por ejemplo, para descargar aquellas bases de datos con la informacición de una cuenta de correo electrónico, el comando a ejecutar sería:
“python whatbreach.py -e username@gmail.com -d”.
Analizando el tráfico de red generado, se observa que la herramienta hace uso de “databases.today”, un servicio que recopila una colección gratuita y pública de bases de datos de sitios web para su descarga destinada a periodistas e investigadores.

Figura 8: Uso del servicio databases.today para obtener las
bases de datos con la información de la identidad digital

En caso de que la cuenta de correo electrónico esté presente en “databases.today”, se muestra un enlace de descarga de las bases de datos donde se encuentra esa cuenta de correo electrónico con su contraseña expuesta. En la siguiente figura se muestra el enlace de descarga de una base de datos de un tamaño considerable (179 GB) con identidades digitales que han quedado expuestas en Internet.

Figura 9: Base de datos con identidades digitales de Dropbox preparada para su descarga

Búsqueda de varias identidades digitales de manera automatizada

La herramienta también permite introducir en un fichero de texto varias cuentas de correo electrónico y así automatizar la búsqueda para determinar cuáles han podido quedar comprometidas. Basta utilizar el parámetro “-l” o “--list” junto con la ruta del fichero de texto que contiene las cuentas de correo electrónico (una por línea).

En el siguiente ejemplo se muestra cómo utilizar la herramienta con un fichero de cuentas de correo electrónico. La herramienta mostrará qué cuentas de correo electrónico han podido quedar vulneradas en Internet y cuáles no.

Figura 10: Búsqueda de cuentas de correo electrónico expuestas a través de un diccionario

Lo que no hace esta herramienta es mostrar en qué servicios vulnerados en Internet se han utilizado (con una sola cuenta de correo electrónico sí que lo hace) y permitir la descarga de las bases de datos en caso de estar presente la cuenta de correo electrónico (con una sola cuenta de correo electrónico sí que lo hace).

Conclusiones

Si detectas que una cuenta de correo electrónico ha quedado expuesta porque se ha vulnerado algún servicio en Internet donde era necesaria esa identidad digital, es muy probable que la contraseña de acceso también, lo que indica que alguien más que su dueño conoce ese password, aunque es imposible a priori determinar cuántas personas más a parte de su dueño la conocen y cuantas veces ha sido utilizada.

También es muy probable que las contraseñas expuestas estén presentes en más servicios utilizados por el mismo usuario, aumentando de manera considerable la superficie de exposición del usuario o incluso, la de una organización, si sus miembros utilizan cuentas de correo electrónico corporativas para darse de alta en servicios de Internet que hayan sufrido fugas de información, como se muestra en la siguiente imagen.

Figura 11: Cuentas de correo electrónico corporativas expuestas en Internet

Por todos estos motivos puede ser conveniente el uso de segundos factores de autenticación como Latch y autorización, además de revisar de manera periódica el historial de accesos a una determinada cuenta de correo electrónico, aunque el servicio avise en caso de detectar posibles anomalías de acceso.

Figura 12: Actividad reciente de acceso a una cuenta de correo electrónico

No todos los servicios que detectan anomalías en los accesos de sus usuarios restringen por defecto el acceso.

Autor: Amador Aparicio de la Fuente (@amadapa), escritor de libro "Hacking Web Technologies"

sábado, junio 29, 2019

5 eventos para el 4 de Julio: ElevenPaths, LUCA, AI, Hacking y Futuro.

Esta semana yo voy a estar un poco "fuera de cobertura", así que no voy participar en ningún evento, pero nuestros compañeros están haciendo un buen número de actividades. Así que como todos los sábados os dejo la lista de cosas que tengo en el radar, que como veis, todos son el 4 de Julio. Tomad nota.

Figura 1: 5 eventos para el 4 de Julio: ElevenPaths, LUCA, AI, Hacking y Futuro.

4 de Julio: Desafíos de una autenticación adecuada [Online]
La segunda parte de la ElevenPaths Talk que hicimos anteriormente. Os dejo el vídeo de la primera parte de la sesión, y tenéis la URL con la información sobre la segunda parte de este seminario.

Figura: Los desafíos de una autenticación adecuada (Parte I)

4 de Julio: JTEC Ciberseguridad Colombia 2019 [Bogota]
Web:  Web de ICEX
Diego Espitia, CSA de ElevenPaths, visita estas jornadas el 4 de julio, organizadas por ICEX España Exportación e Inversiones e Incibe, Instituto Nacional de Ciberseguridad, que promueven el sector de la ciberseguridad en Bogotá, Colombia. Nuestro experto participa con la ponencia “Panel sobre ciberseguridad en el sector gubernamental”. Toda la información disponible en la página web oficial del evento.
6 de Julio: LeHACK 2019 [Paris]
Web: LeHack Paris 2019
El 6 de julio, nuestros expertos del equipo de Ideas Locas de CDO de Telefónica, Pablo González y Fran Ramírez presentan en París, Francia la ponencia “Learning how to code doing some hacking and creating AI programs to beat video games”. Más información sobre este evento internacional en su página web.
Figura: Le Hack 2019

4 de Julio:Meet up: Cuando la IA se hace humana: reconociendo los sentidos [Madrid]
Web: Meet UP LUCA
¿Te vas a perder nuestro tercer meetup del año? Piénsalo bien, terracita, cervecita en mano y a aprender de reconocimiento de texto, voz e imágenes. ¡Un buen mix para empezar el verano! Tenemos sol, calor y playa, (No, en Madrid playa no tenemos…) pero sí tenemos verano. ¡Y ya está aquí! Así que para darle la bienvenida hemos querido preparar un último meetup prevacacional.
Figura: Summer LUCA MeetUP "Cuando la IA se hace humana"
Llevaros gafas de sol y ganas de pasarlo bien porque esta vez nos iremos a una terracita, no sin antes escuchar lo que los expertos tienes que contarnos; hablaremos de reconocimiento de imagen y texto, con un enfoque muy técnico, pero a la vez muy aterrizado; porque sabemos que la IA ha dejado de existir solo en el campo teórico y en los libros y ya tiene aplicaciones reales en nuestras vidas (de verano…)
4 de Julio: ‘Todo comienza ahora. Un viaje del Siglo XXI’ [Madrid][Online]
Web: Registro presencial y asistencia online
La periodista y escritora Isabel Durán regresa al mundo editorial, pero esta vez en formato digital con el libro ‘Todo comienza ahora. Buen viaje por el siglo XXI’. Una obra que nace cuando se cumplen tres prodigiosas décadas desde la creación de internet y en el año en que por primera vez la mitad del planeta estará online. Este volumen no es solo un libro. Tú decides si quieres hacer clic en el enlace que te lleva a las fuentes, documentales, películas, la series, las TedTalks, libros, artículos, etc. con los que ahorrarte cientos de horas de búsqueda.
Figura: Todo comienza ahora
Es un refugio contra la infoxicación (exceso de información) que hace que no nos perdamos o frustremos ante la velocidad de la revolución digital que estamos viviendo. Un «campamento base» para inexpertos, guiado por sherpas en el que prestigiosos científicos, pensadores, juristas o artistas toman la palabra a través de entrevistas personales con la autora o de su participación en charlas magistrales en Fundación Telefónica. Para asistir, no olvides descargar tu entrada gratuita en este post. Se permitirá la entrada hasta completar aforo. Este evento será interpretado a lengua de signos española LSE, se podrá seguir en streaming en esta web y en redes con el hashtag #TodoComienzaAhora.
Y ahora, a disfrutar del sábado, que el calorcito invita a tomar algo fresquito y disfrutar de las piscinitas... }:)

Saludos Malignos!

viernes, junio 28, 2019

La Elite #3: Nuevo cómic en @0xWord

Como sabéis, hace un tiempo que comenzamos con la línea de cómics en 0xWord. Podéis disfrutar de la historia de Hacker Épico: Deluxe Edition con una obra de arte de más de 160 páginas preciosas,  del número 1 de Evil:One, el Tomo 1 de Armatura - donde están incluidos los números 1 a 3 de Armatura, y los números 1 y 2 de La Elite. Pues bien, hoy tenemos un nuevo cómic más.

Figura 1: La Elite #3: Nuevo cómic en @0xWord

Se trata del número 3 de La Elite, para que puedas continuar la historia si te hiciste con el Tomo número 1 de Armatura. Además, como sabéis, la historia de Evil:One del que pronto tendremos el número 2 y el final de la mini-serie en el número 3, también están dentro del mismo universo.

Figura 2: La Elite #3 en 0xWord Cómics

Desde hoy están disponibles en la web de 0xWord Cómics, y dentro de unos días estarán en las principales tiendas de cómics en España, para que lo podáis leer. 

Saludos Malignos!

jueves, junio 27, 2019

RUBIKA: Un sistema Anti-Rubber Hose basado en un cubo de Rubik (Parte 3 de 5)

Tras acabar con los primeros prototipos, nos dimos cuenta de que necesitábamos un diseño más profesional si queríamos capturar más y mejores datos para entrenar los algoritmos de Machine Learning que nos permitieran identificar a los usuarios, así que tuvimos que recurrir a profesionales del diseño y la impresión 3D, en este caso Moebyus Machines.

Figura 25: RUBIKA: Un sistema Anti-Rubber Hose basado en un cubo de Rubik (Parte 3 de 5)

Como podéis ver, la impresión de las fichas fue bastante más profesional, y se pusieron pequeños imanes para conseguir que los movimientos fueran mucho más acoplados en cada uno de los giros, y no tuviera que preocuparse el usuario de terminar el movimiento correctamente.

Figura 26: Cubo de Rubik impreso por Moebyus Machines

Como se puede ver en el siguiente vídeo, este prototipo nos daba calidad suficiente para capturar datos de una manera robusta y fiable de cualquier persona que hubiera manejado un Cubo de Rubik alguna vez en su vida.


Figura 27: Captura de datos con prototipo final de Rubik

Sobre este prototipo pusimos las primeras pegatinas y comenzamos a tomar los primeros datos con diferentes usuarios para entrenar nuestros algoritmos de una manera más profesional. Con este cubo es con el que hicimos el paper que os voy a dejar publicado en la siguiente parte de este artículo.

Figura 28: Cubo de Rubik con pegatinas que usamos en las pruebas

Como podéis ver, el diseño final de Rubika tiene un manejo bastante fluido, con toda la electrónica dentro del dispositivo, que ahora vamos a contaros.

Electrónica de Rubika

Para construir la electrónica que necesitábamos, necesitábamos una placa central para construir todo el sistema que fuera lo suficientemente flexible como para añadir un módulo BlueTooth y un módulo de captura de movimientos en el espacio, para saber de qué manera se estaban movimiento las caras del cubo y el cubo en el espacio en si mismo.

Figura 29: Arquitecta de Rubika con un core Atmel Tiny1634,
un módulo BlueTooth LE nRF52 y una IMU GY-25

Los componentes elegidos fueron los que podéis ver en el esquema. Un micro Atmel Tiny1634R con un memoria Flash de 16kB, una EEPROM de 256b y un 1kB de SRAM que funciona a 8 MHz y con solo 18 pines de I/O. El consumo era importante, así que esta placa era perfecta por us poco consumo. Usa un sistema picoPower con valores entre 1.8v y 5.5v.

Figura 30: Esquema conexiones de placas utilizadas

El módulo de BlueTooth LE (Low Energy) que elegimos es el que HOLYIOT-17095 para poder enviar los datos que capturásemos de los movimientos de Rubika a la extensión del navegador para que ésta enviara toda la información al backend y poder hacer los cálculos del algoritmo.

IMU: Inclination Module Unit

Merece una parte importante hablar de cómo funcionan las IMU en este tipo de dispositivos hardware, ya que cada una ofrece un determinado número de Grados de Libertad (DoF: Degrees of Freedoom). Para poder medirlos, una IMU es un dispositivo capaz de medir la fuerza (aceleración) y la velocidad. No mide ángulos directamente y se requieren ciertos cálculos para obtenerlos. Esto nos permitiría saber cómo se mueve el Cubo de Rubik además de cómo se giran las caras, que también lo controlamos, por supuesto.

Figura 31: Control del giro de las caras

Una IMU de 6 DOF (Degrees Of Freedom) usa un acelerómetro de 3 ejes y giróscopo de 3 ejes para saber cómo está siendo manipulado el dispositivo. En el caso de tener 9 DOF, además de un acelerómetro de 3 ejes y giróscopo también de 3 ejes, se usa un magnetómetro (brújula digital) de 3 ejes. Además, se podría tener un hardware que añadiera hasta 10 DOF poniendo un barómetro para calcular la altura relativa al nivel del mar.

Figura 32: Giros en los ejes del cubo medidos por la IMU

Toda la información generada por los sensores que se utilicen - el acelerómetro, giróscopo, magentómetro y/o barómetro - se usa un DMP (Digital Motion Processor) que procesa los datos recibidos por todos ellos, minimiza los efectos de los errores inherentes a cada sensor y calcula los resultados del movimiento en términos de cuaterniones para convertir los resultados en ángulos de Euler. En nuestro caso, Rubika utiliza una IMU GY-25 con 6 DoF que nos permite calcular cómo se está moviendo cada una de las caras haciendo un poco de cálculos.

Figura 33: Prototipo de Rubika acabado con pegatinas finales y cargador de batería

Con esta electrónica, y haciendo todos los cálculos necesarios para saber cómo se estaba moviendo el cubo en cada uno de los tres ejes. Para ello, con cada trama de datos que consta de 8 bytes sabemos cómo está respecto a cada eje. Los 8 bytes se reparten con 1 byte de marca de inicio, 2 bytes (int16_t) para el ángulo del eje Z (Yaw), 2 bytes (int16_t) para el ángulo del eje Y (Pitch)2 bytes (int16_t) para el ángulo del eje X (Roll), además de 1 byte de marca final.


Figura 34: Probando el prototipo final con imanes en las caras

Con la electrónica lista, ya teníamos el cubo completado para terminarlo. Pusimos los imanes en las esquinas de las caras para que el movimiento fuera más fluido, le hicimos un cargador de batería y lo dejamos listo para utilizar en la captura de datos.

Cubo de Rubik Xiaomi Giiker 

Llegado este punto toca hablar del Giiker, un Cubo de Rubik con conexión BlueTooth LE lanzado por Xiaomi que apareció entre que nosotros comenzamos con la idea original allá por 2017, y cuando publicamos Rubika - hace un par de semanas -. Giiker apareció a finales 2018 para reconocer y enviar por BlueTooth LE los movimientos de las caras que se estaban realizando.

Figura 35: Xiaomi Giiker Rubik Cube

Con él apareció una cantidad de software, así que nosotros decidimos que nuestro Rubika - que tenía además acelerómetro y giróscopo como ya hemos explicado - sería compatible con Giiker, haciendo que los datos se codificaran de la misma forma y pudiéramos usar un cubo como Rubika o un Giiker para nuestras pruebas.

Así, cuando la resolución del Cubo de Rubik se hace con un Giiker, los datos que capturamos para el algoritmo de Machine Learning son:
  • Separación temporal entre cada movimiento
  • Media de separaciones temporales
  • Tiempo de resolución de la secuencia
  • Número de movimientos de la secuencia
  • Porcentaje de giros para cada cara en la secuencia
  • Sentido de giro para cada cara en la secuencia
Por otro lado, cuando la secuencia de resolución - o manipulación - del Cubo de Rubik se hace con Rubika, además de los datos anteriores, el algoritmo tiene en cuenta el Posicionamiento del Cubo. Y este posicionamiento se mide como la situación para los ejes - definida por sus valores de "guiñada", balanceo y cabeceo - durante toda la secuencia. Sobre esos datos se calcula:
  • Desviación típica de las medias de cada eje
  • Valor medio de las desviaciones típicas
  • Valor medio de la velocidad angular
Esto nos va a permitir tener un mayor grado de fiabilidad a la hora de aplicar el algoritmo, ya que de cada movimiento tenemos muchos más datos de la persona que resuelve el cubo, gracias al acelerómetro y el giróscopo.

Y con todo esto, ya estamos listos para comenzar a trabajar en la captura de los datos y la generación de un algoritmo que nos permita utilizar una resolución de un Cubo de Rubik usando Rubika como si fuera un sistema de autenticación Anti Rubber Hose.

Saludos Malignos!

miércoles, junio 26, 2019

Python & Metasploit: Librería pymetasploit para integrar scripts

En este blog ya se habló de la automatización de Metasploit a través del uso de msfrpc y el daemon msfrpcd. En aquel caso trabajamos sobre Ruby y sobre la propia herramienta o cliente msfrpc. Hoy quiero contar como hacer esto con el lenguaje más utilizado, muy a mi pesar, ya que yo soy más de Ruby, de la ciberseguridad: Python. El uso de RPC es algo bastante potente, ya que permite integrar diferentes lenguajes para poder utilizar de forma remota un entorno de Metasploit.

Figura 1: Python & Metasploit: Librería pymetasploit para integrar scripts

Es cierto que en la versión 5 de Metasploit hay novedades respecto a la integración de otros lenguajes, pero no está de más conocer las posibilidades que ofrecen las librerías.

¿Cómo te ha dado por probar esto?

Pues la respuesta a esto es sencilla. Yo he utilizado Python siempre que lo he necesitado, es el lenguaje más utilizado en ciberseguridad y, aunque no es mi favorito, lo utilizo. Además, mi compañero Fran Ramírez y yo estamos preparando un workshop que se celebrará la noche del 6 al 7 de julio en París, en la ciudad de las ciencias, dentro del antiguo congreso “Nuit du hack” o como se llamada ahora “LeHack”.

Figura 2: Libros de "Metasploit para pentesters 4ª Edición"
y "Hacking con Metasploit: Advanced Pentesting" de 0xWord.

Lo curioso del workshop es de qué tratará. “Learning how to code doing some hacking and creating AI programs to beat video games”.

Figura 3: Workshops en LeHack

En otras palabras, un workshop dónde se habla de hacking y se utiliza éste para aprender a programar en Python y se hace uso de Open AI para aprender a programar pequeños juegos, apoyándose en Python y en el framework de IA. Curiosa mezcla con el objetivo de aprender a programar con diferentes ámbitos.

Jugando con PyMetasploit

Han salido diferentes versiones de esta librería, la cual aporta una fácil integración de scripting en Python con Metasploit. Gracias a esta librería será realmente sencillo poder interactuar con Metasploit con tus scripts de Python. La instalación se puede hacer de manera sencilla a través de pip. Como nota, si descargas la versión para Python 2.x puedes encontrar un problema con la versión oficial.

Figura 4: Libro de "Python para Pentesters" y "Hacking con Python" de 0xWord

En el Github de la librería se puede encontrar la solución. Si ves que al intentar usar los módulos de Metasploit desde la librería, sale un error similar a “can’t set attributte…” significa que hay una serie de elementos que faltan. Esto se solucionó en el commit siguiente.

Figura 5: Commit para solucionar el bug

Lo primero es montar el daemon de msfrpcd con el que se puede manejar remotamente los objetos de Metasploit. Esta aplicación tiene bastantes opciones para interactuar, desde disponer de SSL para cifrar el canal, utilizar formato JSON, dónde ‘atar’ el servicio, es decir, a qué dirección IP, usuario y contraseña para acceder a Metasploit remotamente, etcétera.

La ejecución y puesta en funcionamiento de msfrpcd puede ser, como se ha comentado, muy variada. Para este ejemplo se ha decidido por un usuario llamado ‘msf’ y una contraseña ‘123abc.’. Además, se indica con el parámetro –f que la aplicación ejecutará en foreground y no en background, como se haría por defecto. Con el parámetro –S, a pesar de parecer lo contrario, lo que se indica es que no se habilite el SSL en las conexiones con el daemon.

Figura 6: Ejecución de msfrpcd

Una vez hecho esto, vamos a probar a abrirnos un intérprete de Python y empezar a jugar. Lo primero es cargar la librería msfrpc e importarla, tal y como se puede ver en la imagen. Una vez hecho esto, vamos a crear un objeto llamado client que representará la conexión con nuestro Metasploit remoto.

En este ejemplo, nuestro Metasploit se encuentra en la dirección IP 10.0.0.31, mientras que la máquina que utilizamos se encuentra en la dirección IP 10.0.0.1. Como se puede ver, se incluyen una serie de parámetros para realizar la conexión con éxito como son:
  • Username: Usuario que se configuró en el lanzamiento de msfrpcd.
  • Password: La contraseña que se configuró en la ejecución de msfrpcd.
  • SSL: El parámetro ssl se configura a False, ya que así se configuró en la ejecución del daemon msfrpcd.
  • Server: Dirección IP dónde se encuentra el daemon de Metasploit al que se quiere conectar remotamente.
El objeto client representa la conexión y el acceso a Metasploit. Con él ya podemos acceder a todos los elementos del framework como exploits, payloads, encoders, módulos auxiliary, etcétera.

Figura 7: Objeto Client en la ejecución de Python en nuestra Kali Linux

Si queremos listar los módulos disponibles en Metasploit podemos ejecutar client.modules.list. Lo interesante en Python es que se puede hacer uso de dir() para ver los métodos disponibles. Si no lo tenemos muy claro, podemos ejecutar dir(client.modules).

Si queremos utilizar un módulo, lo que sería equivalente a ejecutar un use [module] en la consola de Metasploit, debemos ejecutar client.modules.use([tipo módulo],[ruta del módulo]). Es importante utilizar una variable donde se asignará la creación del objeto module, tal y como se puede ver en la imagen, e = client.modules.use(‘exploit’,’windows/ftp/kmftp_utility_cwd’).

Figura 8: Creación del objeto e para tener un objeto module

Con la variable e creada se puede acceder a todas las opciones que tiene un módulo. Es más, se pueden utilizar ‘atajos’ como e.required para ver qué atributos son obligatorios. Si queremos configurar un atributo se ejecutará e[‘nombreAtributo’], tal y como se puede ver en la imagen superior.

Una vez que se tiene el objeto creado y preparado para ser lanzado, es decir, configurado se puede utilizar el método execute para ejecutar el módulo. Es recomendable configurar el payload y las opciones de éste en caso de ser necesario.

Para este ejemplo se utiliza e.execute(payload=[ruta payload]). Se utiliza una Shell_bind_tcp de manera sencilla. Como se puede ver en la imagen se obtiene un resultado donde se dice que el job es identificado con el número 5.

Figura 9: Ejecución del comando sessions

Lo importante es fijarse en el identificador de la sesión, como ocurre en la consola de Metasploit cuando se ejecuta el comando sessions. Para ver el listado de sesiones desde el intérprete podemos ejecutar el método client.sessions.list. Quizá sea interesante lanzar previamente dir(client.sessions) para ver los métodos disponibles.

¿Cómo interactúo con la sesión? 

Aquí llega una parte sencilla. Una vez identificamos el número de la sesión, se puede hacer uso de client.sessions.session([ID de sesión]) para conseguir un canal por el que enviar comandos y recibir respuestas de ejecución. Para ello, creamos un nuevo objeto y lo almacenamos en una variable, por ejemplo, Shell. Este objeto tiene diferentes métodos, entre los que destacan: Shell.write() y Shell.read().

Figura 10: Comandos shell

Como se puede ver es una forma sencilla de integrar un lenguaje como Python en el uso de Metasploit y sus posibilidades. Se te pueden ocurrir una gran cantidad de scripts en Python. Hay que recordar que Armitage, la GUI de Metasploit, utiliza msfrpc para conectar con el framework. Si eres de Python y quieres jugar con Metasploit utiliza pymetasploit o échale un ojo a la versión 5 de Metasploit y a sus novedades referente a esto.
 
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced 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.

martes, junio 25, 2019

Del tiempo personal y su gestión: ¿Cuántos mensajes recibes tú?

Hoy no he llegado a sacar el artículo del blog a tiempo. Ayer no llegué a sacar los artículos por las redes sociales. Tenía otras cosas que hacer. Muchas, de hecho. Y más o menos las saqué todas. Hoy no dormí mucho, y estuve tentando de no escribir nada, pero aún así he sacado unos minutos para hacerlo, y hablar de esto que me falta muchas veces. El tiempo.

Figura 1: Del tiempo personal y su gestión: ¿Cuántos mensajes recibes tú?

Y no es que me falte porque lo malgaste - que os garantizo que no es así - sino porque lo exprimo para sacar más de él. Para sacar más tiempo personal, más tiempo profesional, más tiempo de calidad para cosas que lo merezcan. Y no siempre es fácil.

Mirad, esta es la pinta que tiene una agenda de una semana mía, como puede ser muchas otras. Con reuniones de trabajo, viajes, previsión de cierre, conferencias que dar, actos en los que participar, y reuniones en el colegio de Mi Hacker y Mi Survivor que tener. Una semana cualquiera con viajes en coche de un sitio a otro de la Comunidad de Madrid, con vuelos en avión entre Londres y Madrid y con carreras entre los edificios de Telefónica en Distrito C y en la Gran Vía de Madrid.

Figura 2: Una agenda de una semana en mi vida

Es mi vida. Es ajetreada. Mucho. La he elegido yo. Y por eso soy cada vez más estricto con la inversión de mi tiempo. Por eso, cada vez respondo menos mensajes por las redes sociales, e-mail, etcétera. Un correo me puede quitar entre 3 y 5 minutos en leer y contestar. 20 mensajes me quitan una hora de mi tiempo - y como veis no la tengo muchas veces -. 

Por supuesto, los mensajes de mis compañeros de trabajo, de mis proyectos y de mis amigos son importantes, y tienen prioridad, pero existen muchos "unsolicited e-mails" por múltiples canales que me quitan tiempo, y debo ser firme en decidir qué contesto y qué no contesto.

¿Y cuántos mensajes recibes tú?

Yo he hecho un cálculo del número de mensajes que recibo por todas las redes sociales donde tengo presencia (Linkedin, Twitter, Facebook, Instagram), por los buzones de correos electrónicos, mensajes de WhatsApp, SMSs o iMessages, que utilizo, y por los comentarios en las plataformas que utilizo (YouTube, Blogger, etc..) y el número es aproximadamente de 500 mensajes al día.  Por eso mi petición de que las comunicaciones deben ser responsables del año 2014.

Si contestara todos los mensajes - y generase el efecto e-pingpong - podría pasarme el día entero contestando mensajes.. pero no puedo. El tiempo es muy valioso, y el que envía un mensaje debe ser consciente de eso, de que lo más valioso en la comunicación entre dos personas es el tiempo de la persona que no solicitó el mensaje de consulta. Yo lo hago. Y por eso inicio pocas, muy pocas, comunicaciones. 

Gracias a esa política de mensajería consigo sacar tiempo para hacer todos los proyectos en los que me meto. Todas las coas que hago con mis amigos. Exprimo mi tiempo con las cosas que realmente son una prioridad para mí. ¿Y tú? ¿Haces algo así?

Saludos Malignos!

lunes, junio 24, 2019

RUBIKA: Un sistema Anti-Rubber Hose basado en un cubo de Rubik (Parte 2 de 5)

Con el surgimiento de la idea original de RUBIKA, dimos muchas vueltas. Desde hacer un Cryptex con forma de Cubo de Rubik que almacenara un Token OAuth que solo se liberase para autenticar una cuenta cuando se hubiera resuelto por la persona correcta, hasta usarlo como un Segundo (o Tercer) Factor de Autenticación (2FA). En cualquier caso, lo que estaba claro es que necesitábamos un Cubo de Rubik de un tamaño especial para poder meterle la electrónica que queríamos.

Figura 14: RUBIKA: Un sistema Anti-Rubber Hose basado en un cubo de Rubik (Parte 2 de 5)

El proceso de construcción del Cubo de Rubik tuvo varias fases, y fuimos evolucionando el diseño. Mola mucho ver las fotografías de todo el proceso, que nos llevó de un proceso artesanal a tener que acabar trabajando - después de los prototipos iniciales - con una empresa profesional.

El Pre-Prototipo de Cubo de Rubik en 3D

Antes de comenzar a trabajar en la construcción del Cubo de Rubik impreso en 3D necesitábamos probar si la electrónica era viable o no, así que lo primero que se hizo, para conseguir ver cómo podíamos medir los giros, qué componentes necesitábamos para el hardware y cuántos grados de libertad eran necesarios a la hora de hacer las matemáticas adecuadas para saber cómo y de qué manera se estaba moviendo el cubo.

Figura 15: Un Cubo de Rubik desmontado en la mesa de entrenamiento

Así que lo primero que se hizo fue desmontar un Cubo de Rubik y ponerlo en una mesa de entrenamiento para moverlo manualmente y captura información de los movimientos en un microcontrolador que pudiera servirnos de base para controlar el sistema completo. Al final, como veremos más adelante, el micro elegido fue un Atmel Tiny1634R, pero de momento

Impresión en 3D del primer prototipo de Cubo de Rubik

He de decir, que pensamos que éste iba a ser un proceso sencillo. Es decir, buscar alguna plantilla de Cubo de Rubik en 3D, que seguro que había, escalarla al tamaño adecuado, y darle caña a la Impresora 3D que tenemos en la planta tercera del edificio. Pero no fue tan sencillo. Este es un tutorial de los varios que puedes encontrar que cuenta cómo se debe construir un Cubo de Rubik impreso en 3D.


Figura 16: Cómo imprimir un Cubo de Rubik con una impresora 3D

Así que comenzamos a construir las partes necesarias para hacer, primero el núcleo del cubo, y luego las esquinas del mismo. Y el resultado fue muy peculiar. Parecía mucho más fácil al principio, pero poco a poco fuimos consiguiendo una primera versión de nuestro cubo de Rubik, tal y como podéis ver en las imágenes siguientes.

Figura 17: Estructura de las piezas centrales de las caras.

Como se ve, las seis piezas centrales del núcleo son iguales, así que comenzamos por ellas, que además son las que deberían llevar toda la electrónica. El resto de las piezas no son tan importantes, ya que solo giran esas seis piezas, por lo que había que dedicarle más cariño.

Figura 18: Nucleo central del cubo de Rubik impreso en 3D
Ahora ya se podía ir construyendo el cubo cara a cara. Como podéis ver en los cambios de colores, hubo que repetir muchas veces algunas de las piezas, porque no encajaban bien, se movían demasiado o simplemente no tenían la calidad adecuada.

Figura 19: Construcción de la primera cara del cubo con el núcleo

Y a medida que crecía, había que ir haciendo y rehaciendo las piezas para que encajaran de las mejores de las maneras. No fue fácil, como os he dicho ya anteriormente.

Figura 20: Montando el cubo pieza a pieza

Aquí tenemos una foto de todas las piezas puestas una sobre otra, pero el núcleo fuera. Como se ve, tiene la forma del Cubo de Rubik, pero tiene mucho trabajo aún por hacer.

Figura 21: Todas las piezas montadas y el núcleo fuera

Y aquí el primer prototipo de esta versión montado para poder trabajar. Os garantizo que mover ese Cubo de Rubik era un auténtico reto para que no se te deshiciera en las manos. Grandote, con movimientos imperfectos, y frágil. Pero aún así, he de decir que era funcional.

Figura 22: Primer prototipo funcional del Cubo de Rubik impreso en 3D

Como podéis ver, no habíamos tenido en cuenta la carga de la electrónica, así que teníamos que desmontar el cubo cada vez que necesitábamos recargar las pilas, y además no iba lo fino suficiente como para poder sacar datos de aquellos que estaban acostumbrados a manejar el Cubo de Rubik tradicional.

Figura 23: Pruebas con otras piezas para buscar mejores encajes en las piezas y movimientos más fluidos

Como se puede ver, hicimos muchas pruebas, con muchos colores para reconocer las piezas, buscando mejores acoples, y también añadiendo soluciones para que el movimiento fuera más fluido, como añadir algunos imanes entre las piezas para hacer que se atrajeran a determinados estados.

Primera captura de datos

Incluso con esta versión primigenia de nuestro RUBIKA, ya podíamos empezar a capturar datos que procesabamos en back-end para poder generar los algoritmos de Machine Learning, donde conseguimos sacar las primeras conclusiones.


Figura 24: Capturando datos del primer prototipo

Pero aún debíamos mejorar esto mucho más, así que decidimos ir a por un diseño mucho más profesional y a capturar datos que de verdad nos sirvieran para poder generar los algoritmos adecuados al proceso.

Saludos Malignos!

domingo, junio 23, 2019

Domingo de vídeos: Charlas, Podcasts, Entrevistas, Conferencias y más

Para hoy domingo os traigo algo del material en vídeo que se ha ido generando durante la semana. Algunos vídeos tienen algo más de tiempo, pero los he ido recopilando durante estos días, así que os los traigo juntos todos hoy, para ponerme al día.

Figura 1: Domingo de vídeos: Charlas, Podcasts, Entrevistas, Conferencias y más

El primero que os dejo es la entrevista que me hicieron sobre Escuela42 en Telefónica Madrid. La presentamos hace ya dos semanas, pero el registro para ir a la piscina está ya funcionando. Se trata de un nuevo modelo de aprendizaje pensado en desarrollar la autoformación en disciplinas tecnológicas, así que no hay profesores, no hay libros obligatorios, no hay horarios - estará abierta 24 horas al día en Distrito Telefónica -.


Figura 2: Entrevista sobre Escuela 42

Puedes apuntarte y conocer mucho más de este proyecto tan bonito en la web de Escuela42 Telefónica Madrid para que te apuntes desde ya si quieres transformar tu formación. A partir del momento de salir de ahí, tu forma de aprender será diferente.


Figura 3: ¿Qué es Escuela 42 Madrid Telefónica?

El siguiente de los vídeos realmente es un podcast, el segundo de ElevenPaths Radio, en el que Gonzalo Álvarez Marañón entrevista en esta ocasión a Pedro Pablo Pérez, CEO de ElevenPaths. Una interesante charla para saber mucho más de la persona y el proyecto.


Figura 4: ElevenPaths Radio Temporada 1 capítulo 2 "Pedro Pablo Pérez, CEO de ElevenPaths

Este siguiente vídeo es una pequeña mesa redonda en un evento llamado CISO 2019, en la que Carmen Torrano, Raúl Siles, Eduardo Sánchez y yo hablamos de distintos aspectos que tienen que ver con el mundo de los investigadores de seguridad independientes y la seguridad en general.


Figura 5: CISO Day 2019 "Hacking RoundTable"

El cuarto vídeo es un interesante debate propuesto por el Real Instituto Elcano en el que se trata el tema del ecosistema español de inteligencia artificial. En esta sesión participó nuestra compañera Irene Gómez, directora de AURA en Telefónica


Figura 6: Hacia un ecosistema español de IA

También hemos grabado esta semana una nueva CodeTalk For Developers basada en nuestro quiero Dirty Business Card Reader - que ahora le hemos pasado a nuestro amigo Kevin Mitnick para que lo use en sus charlas -, y que explica cómo funciona el proyecto completo.


Figura 7: CodeTalk For Developers "Dirty" Business Card Reader

Y los dos últimos vídeos son dos vídeos resúmenes de ElevenPaths y LUCA. El primero es una explicación del caso de éxito del proyecto de LUCA con los almacenes TIA en Ecuador. Si quieres conocer todos los casos de éxito y todos los proyectos de LUCA los tienes en la web.


Figura 8: Caso de Éxito de LUCA y Almacenes TIA

Y el último es el acuerdo entre ElevenPaths y BOTECH FPI para luchar contra el fraude en el sector bancario que hemos anunciado esta misma semana para aumentar el alcance de nuestros servicios de seguridad en Telefónica.


Figura 9: Alianza entre ElevenPaths y BOTECH FPI

Y esto es todo lo que tenía guardado para vosotros en forma de vídeos. Espero que disfrutéis alguno y que tengáis tiempo para vosotros el resto del fin de semana.

Saludos Malignos!