Showing posts with label una. Show all posts
Showing posts with label una. Show all posts

Tuesday, February 14, 2017

Esteganografía en TCP IP Una Proof of Concept en Ruby

Esteganografía en TCP IP Una Proof of Concept en Ruby


Hace tiempo que decidí echar un ojo al concepto de ocultar información dentro de los protocolos TCP, UDP o IP. Mi idea era generar una pequeña prueba de concepto dónde pudiera utilizar un protocolo común, el cual será utilizado como Covert Channel, y transmitir información de manera oculta, como una prueba de esteganografía. Tras estudiar diferentes opciones y revisar algún paper que habla de ello - que la idea no es nueva ni mucho menos y en el libro de Esteganografía & Estegoanálisis se le dedica un capítulo a esta parte -, opté por utilizar los flags de TCP y el número de secuencia de los paquetes TCP.

Figura 1: Esteganografía en TCP/IP: Una PoC en Ruby

En esta prueba de concepto, los paquetes TCP son reales, pero no tienen ningún sentido. Es cierto que se podría lograr un ejemplo de esteganografía más real que permitiese transmitir información sobre tráfico coherente TCP que se genere en el equipo. Es cierto, que si un administrador de red lee el tráfico que generaremos no me encontrará coherencia, y pensará que es tráfico erróneo, pero el mensaje se encuentra ahí, oculto.

Planteamiento

El primer planteamiento es ocultar información dentro de las estructuras que proporciona el protocolo TCP. Si nos fijamos en los flags más famosos de este protocolo, se tienen 6huecos” para almacenar bits. Los flags son: SYN, ACK, PSH, URG, RST y FIN. Aquí tenemos 6 bits y utilizando el número de secuencia o Sequence Number del protocolo se puede aumentar el ratio de bits. Para la prueba de concepto se ha decidido utilizar, solo 2 bits más con el número de secuencia.

En otras palabras, si queremos enviar el mensaje “esto es un secreto”, cada carácter se enviará oculto en los flags y en el número de secuencia de cada paquete TCP. A continuación desglosamos los bits de, por ejemplo, la letra "e", que se traduce en “01100101”, por lo que los 2 bits más significativos serán introducidos como número de secuencia, siendo éste el valor “1”. En el caso de ser “10” sería un “2”, y en el caso de ser “11” sería un “3”. El resto de bits menos significativos se corresponden con los 6 flags comentados anteriormente. Los flags RST, ACK y URG irían a 1. En la captura de Wireshark se puede visualizar.

Figura 2: Visualización de transmisión de letra "e"

En la máquina destino tendremos un programa que es capaz de leer el tráfico TCP y decodificar el tráfico oculto en TCP. ¿Cómo sabemos que el tráfico es especial? Para esta PoC hemos utilizado un puerto destino concreto como clave. Es decir, cuando recibamos un TCP destino 3030 entendemos que es un paquete con esteganografía.

El proceso de decodificación es el proceso inverso al de ocultación. El programa remoto leerá el número de secuencia y esos 2 bits (del 0 al 3) serán los bits más significativos. Después concatenaremos los flags, y obtendremos de nuevo un valor de 8 bits. Este valor se identifica con un carácter. Una vez entendido el mecanismo sencillo que se utilizará para ocultar los caracteres en los paquetes TCP vamos a hablar de la implementación.

Implementación

Para llevar a cabo la prueba de concepto se utilizó Ruby. La librería PacketFu, la cual es parecida a Scapy en Python, permite “jugar” y crear paquetes TCP y datagramas IP a nuestro antojo. Ya fue utilizado para el Port-Knocking con Latch y el modo paranoia. En la siguiente imagen se puede ver el código de la función main. El coder recibe 2 parámetros: Dirección IP destino y mensaje a ocultar en el protocolo TCP.

Figura 3: Coder. Implementación de la función main

El coder invoca un método denominado send_message, el cual proporciona la funcionalidad de ocultar el mensaje en el protocolo TCP, tal y como se explicó anteriormente. La función send_message inyecta el tráfico en la red a través de la función inject y prepara mediante unpack los caracteres que forman el mensaje en formato bytes.

Figura 4: Implementación de la función send_message

Hay una función importante como es write_byte_into_packet que permite ocultar la información en el paquete TCP gracias a PacketFu, tal y como puede verse en la siguiente imagen. En esta imagen se puede ver la explicación de dónde se oculta dentro de un paquete TCP los bits.

Figura 5: Función writ_byte_into_packet

Y, ¿El orden?

El orden de los paquetes TCP importa, ya que no es lo mismo que la “e” de “esto es un secreto” llegue antes o después que la “s”. El mecanismo válido en un ámbito real sería utilizar el Sequence Number para lo que es, y utilizar el ACK Number cómo lo estamos utilizando nosotros en esta prueba de concepto. En este caso, para evitar problemas se ha decidido enviar los paquetes con 1 segundo de diferencia, aunque en entornos LAN no habría problema.

En la siguiente imagen se puede visualizar como el emisor lanza el mensaje a una dirección IP concreta y al puerto 3030. El mensaje es “esto es un secreto”.

Figura 6: Envío del mensaje secreto con esteganografía en TCP/IP

El receptor recibe el tráfico y puede obtener el mensaje oculto uniendo los bits del Sequence Number y los flags TCP, tal y como se puede ver en la imagen. El resultado es el mensaje original. Si viéramos con Wireshark el tráfico veríamos paquetes TCP que podrían ser considerados incoherentes, pero que esconden el mensaje.

Figura 7: Lectura del mensaje por el covert channel en Kali Linux

Quiero agradecer a mi compañero Daniel Ruiz su apoyo y colaboración en llevar la prueba de concepto hacia adelante.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y “Pentesting con Powershell”

Available link for download

Read more »

Tuesday, February 7, 2017

Cómo montar un servidor VPN con OpenVPN y Latch sobre una Raspberry Pi

Cómo montar un servidor VPN con OpenVPN y Latch sobre una Raspberry Pi


Uno de los grupos del Máster de Seguridad de la UEM ha hecho un trabajo tutorizado por el profesor Jorge Rey para implementar una solución de privacidad de conexiones VPN de bajo costo utilizando Raspberry Pi. El software que han utilizado para dicha tarea ha sido OpenVPN, y para dotar a la solución de mayor seguridad, han integrado el servicio Latch tanto en la autenticación de los usuarios, como en la protección del acceso vía SSH a la gestión del sistema operativo en la Raspberry Pi.

Figura 1: Cómo montar un servidor VPN con OpenVPN + Latch sobre Raspberry Pi

El trabajo resultante ha sido una documentación exhaustiva que explica cómo realizar, paso a paso la configuración de todos los elementos. Primero la configuración del sistema operativo en Raspberry Pi, luego la configuración del servicio OpenVPN para que funcionen correctamente las conexiones VPN y, por último pero no menos importante, la configuración de los plugins y SDKs de Latch para proteger tanto el acceso vía SSH como la autenticación de los usuarios vía VPN.

Figura 2: Explicación de configuración de Latch en OpenVPN

La configuración resultante es un servidor VPN de bajo coste con protección que permite a las personas realizar las conexiones en cualquier situación contra un servidor controlado al que, además se ha puesto la protección de Latch para saber quién está accediendo en cada instante.

Figura 3: Documento sobre cómo configurar un Servicio VPN con OpenVPN y Latch sobre Raspberry Pi

En el documento, que he subido a SlideShare y podéis leer tranquilamente, se explica también como sacar partido a las estadísticas de Latch para saber que está pasando en cada momento con el servidor usando Latch Dashboard, aunque también se puede hacer una revisión detallada desde la propia aplicación móvil.

Figura 4: Control del SSH y la autenticación OpenVPN por separado

Si no tenías nada que hacer hoy domingo, ya sabes, día de bricolaje con la Raspberry Pi para tener montado tu propio servidor VPN y que nunca te quedes vendido por hacer una conexión a través de una red WiFi insegura en el momento equivocado. Gracias por la documentación generada a los miembros del grupo: A?lvaro Nu?n?ez-Romero Casado, Javier Jose? Pecete Garci?a, Alejandro Amori?n Nin?o y Juan Antonio Baeza Miralles.


Figura 5: Demo de funcionamiento

Actualización: Les pedí a los autores del proyecto que por favor que hicieran un vídeo en el que se viera cómo funciona el sistema y aquí lo tenéis. ¡Gracias chicos!

Saludos Malignos!

Available link for download

Read more »

Monday, January 9, 2017

Cómo fui mecenas de una banda de Jazz sin gastar 1200€

Cómo fui mecenas de una banda de Jazz sin gastar 1200€


Aunque a diario seguimos recibiendo correos spam clásicos como el del timo del nigeriano - y eso que los filtros antispam ya los capturan sin problema -, en ocasiones llegan otros correos fraudulentos muy elaborados y que a mí me gusta analizar. Los utilizo para aprender de ellos trucos que pueda poner en práctica en futuros ataques de Spear Phishing en proyectos de Ethical Hacking.  En este caso os voy a contar una historia que tiene que ver con uno de esos correos no esperados que me llegan. Es una caso similar al que ya me sucedió con Instagram y que os conté en el artículo "¿Desde cuándo tengo yo Instagram? ¿Y ahora soy así?", el mensaje de correo electrónico recibido provenía de la plataforma VerKami, que muchos conoceréis por las campañas de apoyo a proyectos como los de los capítulos de Cálico Electrónico.

Figura 1: Cómo fui mecenas de una banda de Jazz sin gastar ¡1.200 €!

Para quienes no lo conozcan, VerKami es una web de crowdfunding para proyectos creativos, en los que, haciendo aportaciones económicas, te conviertes en mecenas. El mensaje de correo electrónico en cuestión que recibí me felicitaba por el mecenazgo de un proyecto de música jazz, con una aportación de ¡nada más y nada menos que ¡1.200€! Así que una de dos, o mi alter ego por las noches escucha Jazz y se vuelve muy generoso, o sería algún tipo de spam, fraude o error. Había que investigar más.

Figura 2: Aquí, de mecenas de una banda de Jazz

Lo primero que llama la atención, y que me hizo dudar de si era spam o un e-mail lícito, es que, en su contenido, no solicitan ningún pago ni inicio de sesión. Esto no tiene porque ser significativo, ya que al poner que se ha pagado una buena suma de dinero se genera la urgencia suficiente en el receptor como para que haga clic en un enlace que pueda solicitar después datos o que pueda lanzar un exploit contra la máquina de la víctima. En este caso, el mensaje contiene únicamente un link a la descripción del proyecto, pero algo dudoso, ya que la web a la que apunta no es la de VerKami, sino una redirección a través de un dominio pasarela:
http://mandrillapp.com/track/click/4349534/www.verkami.com
Tras un par de consultas en Google, queda claro que mandrillapp es un servicio de correo transaccional, y estos enlaces que se generan con redirección son únicamente para generar estadísticas de clic en el enlace, así que de momento nada sospechoso.

Viendo que el origen del correo es una dirección del dominio de la plataforma de crowdfunding, que está firmado y además contiene cabeceras DKIM y SPF para confirmar su autenticidad, descarto la idea de que fuera un mensaje de spam en el que se hubiera hecho un ataque de spoofing para suplantar la dirección del remitente del mensaje y me centro en otra de las posibilidades que empezó a pasar por mi cabeza: La posibilidad de la falta de verificación de la dirección de correo electrónico al crearse la cuenta en el servicio. Algo que ya hemos visto que le pasa hasta el mismísimo Paypal o a la compañía Uber.

Figura 3: El mensaje viene con cabeceras DKIM (firma) y SPF

El siguiente paso es más que evidente. Si alguien ha utilizado mi dirección de correo electrónico para crearse una cuenta en este sitio web, no debería tener ningún problema para generar un link de recuperación de contraseña, así que basta con entrar en la web de VerKami, utilizar el método para recuperarla por correo y… La cuenta no existe.

Figura 4: La cuenta no existe

Esto me vuelve a hacer dudar de la veracidad del mensaje de e-mail recibido. Pero no voy a quedarme sin dar respuesta al posible motivo, así que nada mejor que crearse una cuenta y analizar el proceso de registro completo para localizar los puntos débiles del mismo. Nada más iniciar el registro, llama la atención la alerta indicando que te asegures de introducir el correo electrónico correctamente, lo que da pie a pensar que no existe ningún proceso de validación de éste.

Tras terminar de rellenar el formulario con los datos solicitados, tal y como había pensado, compruebo que no existe verificación de la dirección de correo electrónico por ningún lugar, pero sí recibo un mensaje de e-mail dándome la bienvenida al servicio.

Figura 5: Mensaje de bienvenida

Si alguien hubiera errado a la hora de configurar su cuenta de correo electrónico, yo también habría recibido ese mensaje, así que la pregunta era: "¿Por qué no había recibido este correo en mi cuenta previamente al de mecenazgo?" "¿O lo había recibido y lo había ignorado?". Sea como fuere la cosa no acaba aquí, ya que VerKami te ofrece la opción de cambiar la dirección de correo de tu cuenta con la que inicias sesión en la plataforma, característica que no muchos servicios disponen. Por suerte, el control de direcciones de e-mail en uso funciona correctamente y parece no haber forma de confundirlos o adueñarte de una cuenta que no te pertenece.

Figura 6: Verifica que la cuenta no existe ya

Esta opción abre una nueva posibilidad, que es la que más plausible me parece. El mecenas del proyecto se creó una cuenta con una dirección que no es la mía, la actualizo con mi dirección (erróneamente), realizo el pago de mecenazgo, y posteriormente se dio cuenta del error en la dirección de correo electrónico y la corrigió. Es mi teoría, aunque tienen que darse muchas casualidades.

Independientemente de cómo se haya producido, preocupa que a día de hoy siga habiendo tantos  y tantos servicios en los que no se requiera una verificación de la dirección de correo electrónico antes de enviar comunicaciones sensibles, sobre todo en aquellos en los que se realizan transacciones económicas. Lo recomendable seria que el servicio envié un OTP (One-Time Password) a la dirección de correo proporcionada para hacer un comprobación con la sesión del usuario que está dando de alta la dirección de correo electrónico asociado a una cuenta y así verificarlo.

Autor: Ioseba Palop
Senior Engineer en Eleven Paths

Available link for download

Read more »

Thursday, December 29, 2016

CounterCraft Una startup de contra inteligencia española

CounterCraft Una startup de contra inteligencia española


Desde hace poco menos de un año, nuestro ex-compañero y amigo David Barroso (@lostinsecurity), se embarcó en una aventura empresarial para montar una startup de contra-inteligencia. A la start-up, que lanzó junto a dos compañeros más, la bautizó con el nombre de CounterCraft y comenzó el duro camino de emprender para desarrollar su tecnología en un espacio que aún necesita mucho desarrollo en el mercado.

Figura 1: CounterCraft: una startup de contra-inteligencia española

El objetivo de la compañía es automatizar un producto que permita a las empresas ser capaces de detectar a los adversarios que hay dentro de sus sistemas por medio de un conjunto de herramientas que van desde señuelos, automatismos para deception kits, sistemas honeypot o "poisoned apples" que permita saber cuando alguien está haciendo algo que no debería y poder localizarlo cuanto antes, al mismo tiempo que se aprende de su comportamiento de forma sistémica y gestionada.

Figura 2: Equipo fundador de CounterCraft

No hay mucho más que decir por ahora, ya que la compañía no ha querido ir públicamente con demostraciones tecnológicas abiertas a todo el público o explicaciones más detalladas, pero lo cierto es que con las conversaciones privadas y los due diligence técnicos que se han hecho, la empresa ha conseguido levanta ya 1 Millón de € de fondos de inversión de capital semilla, tal y como recoge TechCruch.


Figura 3: Equipo completo de CounterCraft a día de hoy.

A día de hoy se encuentra en la incubadora de Wayra Madrid, como ha explicado el artículo de El Mundo de esta semana, y ha conseguido el apoyo de Adara, un VC que se ha unido junto a Telefónica Open Future_ y Orza para invertir en esta start-up de contra-inteligencia española que está levantando tanta expectación. Enhorabuena a todo el equipo.

Saludos Malignos!

Available link for download

Read more »

Friday, December 23, 2016

Cómo robar una cuenta de Steam que ya es de todos

Cómo robar una cuenta de Steam que ya es de todos


Con el Jet Lag de mi viaje a Miami me levante pronto para aprovechar el tiempo y trabajar antes de comenzar las actividades planificadas para el día. De hecho, madrugué tanto que me dio tiempo hasta escribir este artículo durante el desayuno y dejarlo listo antes de comenzar el día, que todo es planificarse. La historia comenzó cuando me quité el grueso de los correos electrónicos y las acciones más importantes. Como siempre, decidí echarle un ojo a mi pasión, la seguridad informática. Esto es algo que realizo sistemáticamente todos los días. Leo, pruebo o compruebo algo que tiene que ver con Seguridad Informática, Hacking, y desde hace unos meses Big Data antes de comenzar o terminar el día. Obligatorio.

Figura 1: Cómo "robar" una cuenta de Steam que ya es de todo Internet

En este caso me puse a revisar un correo de mi amigo rootkit (que sigue aceptando la invitación que os hice en Mayo a todos para publicar vuestros artículos en el lado del mal) que me hablaba de un buzón temporal de esos que se usan para registrarse en sitios en los que no deseas dejar ningún rastro. Normalmente se utilizan en procesos de descarga que solicitan una dirección de contacto o para darse de alta en servicios que no quieres que sepan quién eres realmente. En este caso se trata del buzón de YOPMail.

Buzones de usar y tirar

La gracia de estos buzones es que normalmente se crea un alias, y durante un tiempo concreto se mantiene vivo. Una vez que se acaba el tiempo, generalmente asociado a una sesión, el buzón se elimina y con él todos los mensajes de correo electrónico que se hayan podido recibir hasta ese momento. Sin embargo, si se recrea ese buzón con el mismo alias, o si realmente el buzón no se elimina, entonces cualquiera podría investigar y saber qué está pasando por ahí y, tal vez en tiempo real, conseguir sacar alguna información jugosa. Esto es algo que Alejandro Ramos (@aramosf), en una de sus múltiples investigaciones que le llevarían más tarde a escribir con esas ideas el libro Hacker Épico, realizó hace mucho tiempo y publicó en un artículo titulado: "En lo qué pierdo el tiempo: Mailinator".

Figura 2: Estudio sobre los mensajes que se reciben en los buzones de Mailinator

El caso del buzón de YOPMail es de esos que no solo reutilizan los buzones, sino que los alias son totalmente públicos y cualquiera puede conectarse a lo que está recibiendo ese buzón en todo momento, así que hay que tener mucho cuidado con lo que conectas allí. Quiero decir, cualquier alias de YOPMail es de todos. En mi caso, en una primera aproximación, me conecté a un buzón para ver qué llegaba.

Una cuenta de Steam asociada a un alias de YOPMail

Como podéis ver, lo que suele llegar casi siempre es SPAM, newsletters, etcétera, uno de los motivos por los que proliferaron este tipo de servicios. Pero, entre la lista de esos mensajes, encontré uno que me llamó la atención. Era un mensaje de Steam para recuperar la contraseña de una cuenta. 

Figura 3: El buzón de YOPMail con el mensaje de STEAM

No tiene mucho sentido que alguien ponga una cuenta de un servicio como Steam asociado a un mensaje de correo electrónico de un servicio como YOPMail, a menos que no conozca como funciona este servicio o que la cuenta que se esté asociando haya sido robada previamente, y el atacante no quiere dejar ningún rastro de ella. 

Figura 4: Solicitud de recuperar cuenta asociada a esta dirección de e-mail de YOPMail

Lo cierto es que quería saber si esto era cierto o se trataba de un ataque de Phishing a uno de los usuarios de Steam, así que tras revisar el mensaje y ver que no parecía tener trampa ni cartón, me conecté y solicité la recuperación de contraseña para esa cuenta y me llegó, de nuevo al buzón de YOPMail, el One-Time Password para recuperar la cuenta.

Figura 5: La cuenta existe y el sistema envía el mensaje al buzón de YOPMail

Una vez introducido el sistema Steam te deja ver todos los usuarios y cuentas conectadas a esa dirección de correo electrónico para que se pueda cambiar, una a una, la contraseña de todas ellas. Como podéis ver, la lista es bastante grande.

Figura 6: Lista de cuentas asociadas a esa dirección de YOPMail

No cambié la contraseña de ninguna de las cuentas, e hice un reporte a Steam porque quizá era una cuenta robada, o una cuenta que funciona con tarjetas de crédito robadas, o similar. Si no, si es de un usuario legítimo, usar YOPMail para recuperar la cuenta no parece lo más inteligente, así que Steam podrá decidir qué debe hacerse en cada caso.

Saludos Malignos!

Available link for download

Read more »

Wednesday, November 30, 2016

Eleven Paths Talks Una serie de webcasts tecnológicos

Eleven Paths Talks Una serie de webcasts tecnológicos


Una de las acciones que hemos comenzado a realizar en Eleven Paths ha sido la planificación de un calendario de seminarios online sobre seguridad informática y tecnología a la que hemos llamado Eleven Paths Talks. Son impartidas vía online y de forma gratuita para que pueda apuntarse cualquier persona a la que le interese la temática. Cada una de estas charlas está impartida por un compañero de Eleven Paths y los asistentes pueden interactuar y participar con preguntas.

Figura 1: Eleven Paths Talks. Una serie de webcasts tecnológicos

Ya se han impartido algunas sesiones, que han quedado grabadas, así que las voy a recopilar en este artículo para que las tengáis a mano y podáis verlas si así lo deseáis. Además, como veréis, tenemos un calendario abierto con las nuevas sesiones que puedes consultar en la web: Eleven Paths Talks.


Figura 2: Eleven Paths Talks 1 - Firma biométrica en entornos sanitarios


Figura 3: Eleven Paths Talks 2 - Equipo de respuesta ante incidentes


Figura 4: Eleven Paths Talks 3 - Conociendo la seguridad en sistemas industriales


Figura 5: Eleven Paths Talks 4 - Metodologías de Testing de Aplicaciones


Figura 6: Eleven Paths Talks 5 - Latch en el mundo IoT


Figura 7: Eleven Paths Talks 6 - Gestión de la seguridad


Figura 8: Eleven Paths Talks 7 - Big Data & InfoSec [Portugués] 


Figura 9: Eleven Paths Talks 8 - Big Data & InfoSec [Español]


Figura 10: Eleven Paths Talks 9 - Defensa en Profundidad 


Figura 11: Eleven Paths Talks 10 - The ISF Standard of Good Practices for Information Security [ENG]


Figura 12: Eleven Paths Talks 11 - Deep Web


Figura 13: Eleven Paths Talks 12 - Técnicas OSINT


Figura 14: Eleven Paths Talks 13 - SealSign en IoT


Figura 15: Eleven Paths Talks 14 - ¿Desaparecerán las contraseñas?

 
Figura 16: Eleven Paths Talks 15 - WordPress in Paranoid Mode

Figura 17: Eleven Paths Talks 16 - Análisis de Riesgos

En el calendario detallado puedes ver las próximas charlas. Como podéis ver, hay sesiones dedicadas a Latch e IoT en la que Jorge Rivera contará como hacer esos proyectos en los que mezcla el mundo físico y la seguridad digital, sesiones en inglés impartida por nuestro CSA en Alemania Sebastian Piecha, charlas en portugués que serán dadas por nuestro CSA en Brasil Leandro Bennaton, o en Español, como las que impartirán nuestro último fichaje como CSA en Chile, Gabriel Bergel. De momento están planificadas hasta Junio.

Saludos Malignos!

Available link for download

Read more »

Friday, November 11, 2016

Cómo una web sabe tu edad idioma y sexo robando los datos de Facebook

Cómo una web sabe tu edad idioma y sexo robando los datos de Facebook


Las técnicas de WebBrowsing Fingerprinting se han especializado durante mucho tiempo en realizar trucos de todo tipo para poder saber quién está delante de la web sin necesidad de que el usuario se lo diga. Desde el uso de las supercookies de todo tipo - hasta de Batería -, pasando por las técnicas de Perfect Pixel hasta averiguar la ubicación de una persona por los archivos que tiene cargados en la caché por haber visitado una web en una localización específica usando una técnica de Time-Based Web History Disclosure. Hoy os quiero contar un caso publicado por el investigador Tom Van Goethem (@tomvangoethem) que tiene que ver con cómo robar tu edad, tu sexo y tu idioma de Facebook por medio de un side-chanel.

Figura 1: Cómo una web sabe tu edad, idioma y sexo robando los datos de Facebook

Aunque lo voy a centrar en el caso de Facebook, este tipo de técnicas, como él explica en su trabajo de investigación disponible en el artículo "Request and Conquer: Exposing Cross-Origin Resource Size" y en la presentación que ha dado recientemente en OWASP AppSec EU, puede aplicarse a otras redes sociales como Twitter o Linkedin que permiten restringir contenido también en función de los parámetros de la persona que está visitando la red social. Vamos por partes para entender el robo de datos.

Browser-Based Timing Attacks

La técnica de robo de datos de las redes sociales remotamente se basa en utilizar una de mis técnicas favoritas para extraer información a ciegas por un side-chanel: El tiempo. Como sabéis, los side-chanels son canales paralelos que, dependiendo de la información a la que se ha accedido, permiten saber si se ha tenido éxito en una acción o no, o conocer más detalles de la información que hay detrás, como en este caso, el tamaño de las respuestas. Por ejemplo, en el caso de los ataques de Time-Based XSPA (Cross-Site Port Attack) en WordPress o Time-Based XSPA en DBKISS se utiliza el tiempo de respuesta para saber si una web tiene un determinado puerto abierto o cerrado. No se necesita tener ningún mensaje de error distinto cuando el puerto está abierto o cerrado y, simplemente con medir el tiempo de respuesta, se puede saber cómo se comportó el servidor que se intentó escanear y cuál es el estado de ese puerto.

Este tipo de ataques basados en el tiempo como side-chanel han sido y son muy populares junto a las técnicas de SQL Injection, como son los ataques de Time-Based Blind SQL Injection using Heavy Queries u otros entornos criptográficos como el caso de Lucky13 o el bug del artículo de ayer que permite enumerar usuarios en un servidor Linux usando un Time-Based info leak en OpenSSH que se produce enviando una contraseña de gran tamaño que se hashea solo cuando el usuario existe.

Figura 2: Ataque clásico. Se descarga el archivo y se mide el tiempo de respuesta para inferir el tamaño (si tiene acceso y se obtiene el recurso completo o si no lo tiene y se obtiene un error)

En este caso, el investigador proponer calcular el tamaño de un recurso descargado desde una web remota usando dos trucos distintos en el navegador. Ambos se producen en dos acciones que se ejecutan en el navegador una vez que se descarga el recurso y que por tanto eliminan cualquier problema que tenga que ver con la latencia de red, la compresión de los ficheros en el servidor, el uso de servidores de caché de red, etcétera. Es decir, el recurso se descarga, se procesa por un algoritmo en el navegador y dependiendo de si el tamaño el mayor o menor, el tiempo que tardará dicho algoritmo será diferente. Midiendo ese tiempo de procesado se puede inferir el tamaño del recurso descargado.

Figura 3: Cache-Storing: Medición del tiempo de almacenamiento y acceso en caché

Los algoritmos que propone el investigador Tom Van Goethem se basan en medir el tiempo de almacenamiento y lectura de la caché por un lado, y por otro en convertir el recurso en un vídeo con una función de Video Parsing.

Figura 4: Video-Parsing. Se mide el tiempo de conversión del recurso

Con estos algoritmos, dados dos recursos de dos tamaños que difieren entre sí en un número de Kilobytes, con un número determinado de mediciones se podría determinar si el navegador ha descargado el recurso de mayor tamaño o el recurso de menor tamaño. ¿Cuántas mediciones y cuanto tiempo? Pues depende de los tamaños de los recursos.

Figura 5: Tiempo que se tarda en averiguar si es el fichero grande o pequeño
en función de la diferencia en tamaño que hay entre ambos.


En la tabla se puede ver cómo usando una combinación de los dos algoritmos, es decir, procesando el recurso en local con el algoritmo de Cache Storing y de Video Parsing, con a partir de diferencias de más de 20 kB en un par de segundos se puede saber si se ha descargado el que tiene 20 kB menos o el que tiene 20 kB más.

Robar tu edad, sexo e idioma a Facebook

Dicho esto, el siguiente paso es averiguar tu edad cuando visitas una web. Para ello se basa robar tu edad de Facebook aprovechando dos cosas:
a) que los usuarios suelen estar logados en Facebook cuando navegan por la web
b) que en Facebook se pueden generar posts restringidos por idioma, edad y sexo del que visita la red social.
Así, un atacante podría crear posts en Facebook con un tamaño que difiera en más de 20 o 30 kB con el tamaño de la respuesta que da Facebook cuando no se pueda acceder a ese recurso (porque no se cumplen las restricciones) y forzar a una web a intentar cargar esos artículos.

Figura 6: Limitar la visibilidad de un post en Facebook

Con un pequeño código en el navegador se podría saber qué post es el que Facebook ha permitido visitar y por lo tanto qué edad tiene la persona que está visitando la web.

Figura 7: Esquema del ataque completo.

Esto se puede hacer de igual forma, como he dejado publicado al principio, en otras redes sociales como Twitter o Linkedin que también permiten publicar artículos con restricciones lo que permitiría a cualquier página web robarte los datos usando estos trucos.

Figura 8: Descubrimiento de edad con carga de posts de Facebook

El resultado es lo que veis arriba, que una web sería capaz de inferir exactamente tu edad haciendo estas mediciones. Aquí tenéis el vídeo de la conferencia en AppSec Eu donde se explica todo esto y se pueden ver las demos en real.

Figura 9: Tom Van Goethem en AppSec Eu 2016

Y por si os interesa, aquí están las respuestas de Facebook y Linkedin cuando se les informó de esta posibilidad de robar los datos de esta forma. No hay mucho cambio que se espere al respecto.

Figura 10: Respuestas de Facebook y Linkedin

Como podéis ver, navegar por páginas webs y tener las sesiones abiertas de vuestras redes sociales no parece que sea la mejor idea, así que navega en privado y sin tener las sesiones abiertas.

Saludos Malignos!

Available link for download

Read more »

Thursday, November 3, 2016

Instalación de Kali Linux desde una memoria USB

Instalación de Kali Linux desde una memoria USB






  • Instalando Kali Linux 


El arranque y la instalación de Kali desde una memoria USB es nuestro método preferido y es la manera más rápida de correrlo. Para hacer esto, primero tenemos que crear la imagen ISO de Kali en una unidad de USB. Si a usted le gustaría añadir persistencia a la memoria USB de Kali Linux, por favor lea el documento completo antes de proceder a crear su imagen.

Preparativos para la copia USB

  1. Descarga Kali linux.
  2. En Windows, descargar Win32 Disk Imager.
  3. No se necesita software especial si usa Linux como su sistema operativo.
  4. Una memoria USB (con por lo menos 2GB de capacidad).

Procedimiento para la instalación de Kali Linux desde una memoria USB

Creando una imagen de Kali en Windows

  1. Conecte su memoria USB en el puerto USB de Windows. Inicie el software Disk Imager Win32.
  2. Elija el archivo ISO de Kali Linux con el que creará la imagen y verifique que la unidad USB que será sobrescriba es la correcta.
  3. kali-usb-install-windows
  4. Una vez que la imagen haya sido creada, expulsar de forma segura la unidad USB desde la máquina Windows. Ahora puede utilizar la memoria USB para arrancar Kali Linux.

Creando una imagen de Kali en Linux

La creación de una memoria USB desde la cual pueda arrancar Kali Linux en un entorno de Linux es fácil. Una vez que haya descargado el archivo ISO de Kali, puede utilizar dd para copiarlo a la memoria USB:
ADVERTENCIA. Aunque el proceso de creación de imágenes de Kali en una memoria USB es muy fácil, usted puede fácilmente destruir particiones arbitrarias con dd si usted no entiende lo que está haciendo. Queda advertido.
  1. Conecte el dispositivo USB al puerto USB de su ordenador Linux.
  2. Compruebe que la ruta de su dispositivo de almacenamiento USB con dmesg.
  3. Proceda (con cuidado) a crear la imagen de Kali Linux en el dispositivo USB:
    dd if=kali.iso of=/dev/sdb
Eso es todo, de verdad! Ahora puede arrancar en un entorno Kali Live / Instalador usando el dispositivo USB. 

Agregando persistencia a su memoria USB de Kali Linux



La adición de persistencia (la capacidad de guardar archivos y los cambios a través de arranques en directo) a su imagen de Kali Linux puede ser muy útil en ciertas situaciones. Para agregar persistencia a su memoria USB de Kali Linux, siga estos pasos.En este ejemplo, asumimos nuestra unidad USB es /dev/sdb. Si desea agregar la persistencia, usted necesitará un dispositivo USB más grande que el que encontrarás en nuestros requisitos anteriores.
  1. Cree la imagen de Kali Linux en su memoria USB como se ha explicado anteriormente, utilizando el “Método de Linux” y dd.
  2. Cree y formatee una partición adicional en la memoria USB. En nuestro ejemplo, podemos utilizar gparted invocando:
    gparted /dev/sdb
  3. Su esquema de particionamiento actual debe ser similar a este: usb-persistence-basic-partitioning
  4. Proceda a formatear la nueva partición para ser utilizada para la persistencia. En nuestro ejemplo, hemos utilizado todo el espacio disponible restante. Asegúrese de que la etiqueta de volumen de la partición recién creada sea la de la persistencia, y dele formato utilizando el sistema de archivos ext4.
    usb-persistence-creating-partition
  5. Una vez que el proceso se haya completado, monte su partición persistente USB utilizando los siguientes comandos:
    mkdir /mnt/usb
    mount /dev/sdb2 /mnt/usb
    echo "/ union" >> /mnt/usb/persistence.conf
    umount /mnt/usb
  6. Conecte la memoria USB en el equipo que desea arrancar. Asegúrese de que su BIOS arrancará desde el dispositivo USB. Cuando la pantalla de arranque de Linux Kali aparezca, seleccione “boot en vivo” en el menú (no presione enter), y presione el botón de tabulación. Esto le permitirá editar los parámetros de arranque. Agregue la palabra “persistence” al final de la línea de parámetro de arranque cada vez que quiera montar su almacenamiento permanente.
    usb-persistence
 via

http://docs.kali.org/installation/kali-linux-live-usb-install

Available link for download

Read more »

Friday, October 21, 2016

Google Chrome Al final era Security Privacy Bug y no una Feature o un Issue

Google Chrome Al final era Security Privacy Bug y no una Feature o un Issue


El próximo 25 de Mayo hará 6 años que, desde el equipo de Informática 64 reportamos al equipo de seguridad de Chromium que en Google Chrome 4 había un comportamiento anómalo de seguridad por como gestionaba las opciones de protección contra la carga del contenido que se hace en una página web. Básicamente, existía un caso en el que aún habiendo sido bloqueada la carga de contenido JavaScript desde un determinado dominio, si este se metía en un iframe se saltaba esta protección.

Figura 1: Google Chrome: Al final era "Security & Privacy Bug" y no una "Feature" o un "Issue"

Para estudiar aquel caso se abrió un ID en el sistema de reporte de bugs con el número 44985 donde dejamos toda la información. Al principio, algunos de los ingenieros defendieron ese comportamiento y lo llegaron a calificar como un problema en la explicación de la "Feature", por lo que en la clasificación le asignaron un "WordFix" y lo dieron por cerrado en una primera catalogación.

Figura 2: Primera catalogación como Feature y se cierra como un "WordFix"

Por supuesto, al poco, comenzó el debate cuando algunos ingenieros no tenían tan claro que ese debiera ser el comportamiento de Google Chrome ante el contenido cargado desde un iframe si el usuario había expresado claramente que no quería cargar ningún JavaScript desde un determinado dominio - viniera o no ese contenido en un iframe -, por lo que se volvió a abrir y se convirtió en una "Issue" en una segunda catalogación.

Tercera catalogación

Con el paso del tiempo, este "Issue" se unió con otras conversaciones que fueron apareciendo posteriormente durante el año 2014 y se le asignó el ID 444744 para que lo estudiaran. En ese momento, la catalogación de este Issue pasó a ser de Privacy & Security-UX Feature con prioridad 3 para ser arreglada.

Figura 3: Tercera catalogación como Privacy & Security-UX Feature

Con este tratamiento, ya se puso en la cola de tareas a corregir, pero aún no se pusieron manos a la obra a corregirla. Tendríamos que esperar aún un par de años para que esto se tomara de otra forma.

Cuarta catalogación

Como yo abrí el caso, cada vez que hay un cambio en el estado de este "Issue" recibo una alerta, y la última me ha traído como sorpresa que ha sido recatalogado esta vez como Security & Privacy Bug con prioridad 2. 

Figura 4: Cuarta catalogación como Security & Privacy Bug

Es decir, la Feature mal explicada que se catalogó inicialmente como un WordFix, que luego se catalogó como Issue, que luego se puso como Privay & Security-UX Feature, ha terminado como Security & Privacy Bug al cabo de 6 años. Hemos pasado de la versión 4 a la versión 49 de Google Chrome, pero nunca es tarde si al final lo acaban corrigiendo.

Saludos Malignos!

Available link for download

Read more »