Showing posts with label de. Show all posts
Showing posts with label de. Show all posts

Sunday, February 19, 2017

Magento Repair Tool Un XSPA a quitar de tu e Commerce

Magento Repair Tool Un XSPA a quitar de tu e Commerce


El framework Magento es uno de los entornos Open Source más populares dentro del mundo del e-Commerce. Está detrás de una gran cantidad de tiendas en Internet y es fácil toparse con él en una auditoría de seguridad web. En el pasado os había hablado de él cuando me topé con Magento Chek, una pequeña utilidad de comprobación del estado de configuración del framework que podría ser muy útil para hacer una pentesting a la tecnología web, y hoy os vengo a hablar de otro.

Figura 1: Magento Database Repair Tool. Un XSPA a quitar de tu e-Comerce

En esta ocasión se trata de una herramienta especial para corregir un error en la instalación del servidor. En concreto se llama Magento Database Repair Tool, y es una utilidad para troubleshooting en caso de que la base de datos se quede corrupta por alguna de las situaciones explicadas en la documentación de dicha herramienta.

Figura 2: Cuándo usar Magento Database Repair Tootl

Localizarla en Internet, como me apuntó mi amigo rootkit, no es nada complicado. Basta con usar un dork como éste que se ve en la imagen para que, con un poco de Hacking con Buscadores lleguemos a muchos servidores con ella instalada.

Figura 3: Dork para localizar Magento Database Repair Tool en Google.

Una vez que tenemos esta herramienta, es fácil darse cuenta que puede ser utilizada para hacer ataques de XSPA (Cross-Site Port Attack), ya que con poner en la dirección del servidor con la base de datos corrupta la dirección IP y el puerto a escanear, tenemos los mensajes de error que necesitamos para diferenciar un puerto abierto o un puerto cerrado.

XSPA: Escaneado de puertos con Magento Database Repair Tool 

Si el puerto está cerrado, el mensaje de error que obtenemos (después de esperar unos segundos) nos dirá se ha perdido la conexión con el servidor y que no se ha podido hacer nada.

Figura 4: Puerto cerrado. El mensaje informa de "Lost Connection" 

Por el contrario, si el puerto está abierto, el mensaje nos dirá que no se ha podido conectar a la base de datos MySQL que supuestamente debería estar allí. 

Figura 5: Puerto abierto. El mensaje informa de "Can´t connect to MySQL"

Por supuesto, si en ese puerto nos encontráramos con una base de datos MySQL, el mensaje de error volvería a cambiar a un Login Failed que nos indicaría que no tenemos credenciales adecuadas para conectarse con el servidor de bases de datos (y si las tenemos, aún mejor).

Escaneo de DMZ y fortificación de Magento

Con estos mensajes de error, es fácil automatizar un ataque de XSPA para escanear cualquier servidor de Internet o de la DMZ, tal y como se ve en este equipo en el que descubrimos una dirección IP interna con un puerto de Telnet abierto.

Figura 6: Servidor en la DMZ con puerto 23 abierto

Al final, esta herramienta que se instala aparte, no debería estar dentro del path de publicación del sitio web en Internet, así que si la tienes, restringe el acceso a Magento Database Recovery Tool con una lista de control de acceso.


Figura 7: Configuración y uso de Latch en Magento Community

Para terminar, solo como recordatorio, acuérdate de quitar (o restringir su acceso) a Magento Check y añade para fortificar aún más tu entorno Latch a Magento que desde el año pasado está disponible una integración de Latch con Magento Community que tienes disponible.

Saludos Malignos!

Available link for download

Read more »

Fortificación de comunicación entre Wordpress y MySQL Evitar los ataques de NPM Network Packet Manipulation

Fortificación de comunicación entre Wordpress y MySQL Evitar los ataques de NPM Network Packet Manipulation


En varios artículos hemos hablado de cómo hacer ataques de Network Packet Manipulation a entornos de bases de datos. Hablamos de cómo ownear MySQL colocándonos en medio de la comunicación del cliente y el servidor. En otro artículo comentamos cómo hackear Wordpress con la misma técnica. Al final todo se basa en que el tráfico entre las aplicaciones web y el motor de base de datos puede ir sin cifrar, así es por defecto en la instalación de los motores de base de datos y es labor de los administradores configurar las protecciones y el cifrado.

Figura 1: Fortificación de comunicación entre WordPress y MySQL

En el artículo de hoy nos pondremos del lado del Blue Team y hablaremos de cómo fortificar tu Wordpress cifrando las comunicaciones entre éste y el  motor de MySQL.

Punto 0. Mi Wordpress por defecto

Partimos del siguiente esquema:
- Máquina A con dirección IP 192.168.56.103 tiene instalada un Wordpress.
- Máquina B con dirección IP 192.168.56.106 tiene instalado y configurado MySQL por defecto.
Si analizamos las peticiones se puede ver como accediendo al WordPress, entre la máquina 192.168.56.103 y 192.168.56.106 se realizan una serie de consultas a la base de datos. Estos paquetes son susceptibles de ser manipulados.

Figura 2: Trafico de WordPress a MySQL sin cifrar

Punto 1. Fortificando la conexión a MySQL con SSL

En este punto lo que vamos a hacer es preparar los tres componentes necesarios para que MySQL acepte conexiones bajo SSL. En primer lugar hay que consultar si la compilación de MySQL que se está utilizando permite utilizar SSL, si no fuera así habría que instalar una versión más nueva o compilarla con soporte a SSL.

Para verificar esto accedemos a MySQL con un cliente y ejecutamos la siguiente consulta “show variables like ‘%ssl%’;”. Si las variables have_openssl y have_ssl tienen como valor DISABLED significa que está soportado pero no activo. Si por el contrario encontramos el valor NO, significa que la compilación de MySQL no soporta SSL. Si aparece el valor YES, significa que está correctamente configurado y el servidor permite conexión bajo este mecanismo. Además, hay que ver las rutas de las variables ssl_ca, ssl_cert y ssl_key que indican la ruta de la CA, del certificado del servidor y de la clave de éste.

Figura 3: variables de MySQL para configurar SSL

En este punto vamos a utilizar OpenSSL para generar la CA, el certificado y la clave. Para ello ejecutamos las siguientes instrucciones:
- openssl genrsa 2048 > ca-key.pem
- openssl req –sha1 –new –x509 –nodes –days 3600 –key ca-key.pem > ca-cert.pem
Con esto tenemos creado el certificado y la clave privada de la CA. Nos pedirán que rellenemos varios datos como país, ciudad, dominio, e-mail, etcétera.
- openssl req –sha1 –newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
Con esto generamos la clave privada para el servidor. A continuación, exportamos la clave privada del servidor a tipo RSA con la ejecución del siguiente comando:
- openssl rsa -in server-key.pem -out server-key.pem
Por último, generamos un certificado de servidor utilizado el certificado de la CA.
- openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
Los ficheros cacert.pem, server-cert.pem y server-key.pem deben estar en la ruta /etc/mysql. Aunque esto puede ser configurado en el fichero de configuración de MySQL /etc/mysql/my.cnf. Editando dicho fichero y buscando a partir del campo “[mysqld]” debemos descomentar la parte de SSL y asegurarnos de que las variables tienen la configuración adecuada, tal y como puede verse en la siguiente imagen.

Figura 4: Configuración del fichero my.cnf

Ahora, reiniciamos el servicio de MySQL. Una vez el motor arranque y lea la configuración del fichero sabrá de dónde leer la información del certificado, la CA y la clave privada. Ahora, podremos conectarnos con un cliente MySQL a través de SSL. Como ejemplo rápido utilizamos el propio MySQL. La instrucción es la siguiente:
-  mysql –u [user] –p –ssl-ca=[ruta cacert]. 
Para comprobar que la conexión se ha realizado a través de SSL podemos consultar la variable Ssl_Cipher.

Figura 5: Configuración de la conexión

Si abrimos ahora WireShark y aplicamos el filtro de MySQL para ver el tráfico observaremos que ya no vemos nada. Sin embargo, si utilizamos un filtro “tcp.dstport == 3306” veremos que hay conexión con dicho puerto de la máquina 192.168.56.106.

Figura 6: Tráfico cifrado entre WordPress y MySQL

Las consultas están siendo cifradas, y por eso WireShark no reconoce contenido de los datos que se envían al motor de MySQL.

Punto 2. Configurar Wordpress para que cifre con SSL la conexión con MySQL

Ahora, hay que indicar en el fichero wp-config.php de WordPress que éste debe entender los flags de MySQL para SSL. Para ello, añadimos al fichero la instrucción “define(‘MYSQL_CLIENT_FLAGS’, MYSQL_CLIENT_SSL);”, tal y como se puede ver en la imagen siguiente.

Figura 7: Configuración de WordPress

Ahora accedemos al sitio web de nuestro WordPress y las consultas a MySQL irán por un canal cifrado, tal y como puede verse en la imagen. En este momento los ataques de NPM (Network Packet Manipulation) ya no es válido, ya que no podemos detectar y manipular las cadenas de MySQL. Si probamos con WireShark veremos que solo accedemos a la conexión al MySQL, pero nada de las consultas, si que veríamos la conexión al puerto 3306, pero todo cifrado.

Figura 8:Conexión a MySQL desde WordPress

De esta forma estamos fortificando el intercambio de información entre el WordPress y la base de datos MySQL. También se puede forzar a que usuarios concretos sólo puedan hacer conexiones bajo SSL, lo cual es interesante para fortificar.

Más artículos sobre seguridad y fortificación en WordPress:
- Hackear WordPress con ataques de Network Packet Manipulation
- Fortificar WordPress frente ataques de fuerza bruta
- WordPress: Ten cuidado con el cacheo de borradores
- WPHardening: Automatizar la fortifación de WordPress
- Listar los plugins de WordPress
- Configurar Latch en WordPress
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 »

Monday, February 13, 2017

Hoy comienza la campaña de Verano 2016 en 0xWord 0xWord Libros VERANO2016

Hoy comienza la campaña de Verano 2016 en 0xWord 0xWord Libros VERANO2016


Como todos los años, en 0xWord se está trabajando para cerrar el año y hacer inventario. Esta es una tarea que se realiza habitualmente durante el periodo estival veraniego, así que para que todo el que quiera disfrutar de alguno de los libros, pueda hacerlo en sus vacaciones, hemos lanzado desde hoy 2 de Julio, y hasta el 12 de Julio la campaña de verano 2016.

Figura 1: Hoy comienza la campaña Verano 2016 en 0xWord

Para ello hemos rehecho todos los packs con el objeto de incorporar a ellos los libros más recientes como el de Hacking con Tecnologías Web o Got Root. En total tienes 35 libros disponibles que puedes adquirir por separados o en uno de los 11 packs oferta que tienes a tu disposición, más el mítico y obra de coleccionista Pendrive de Cálico Electrónico que hicimos en su momento.

Figura 2: Algunos de los libros del catálogo disponible de 0xWord

Todo el material estará durante diez días con un 10% de descuento aplicando el cupón descuento #VERANO2016 en el proceso de compra.

Figura 3: Cupón con 10% de descuento. Al aplicarlo se descontará el 10% de la compra

Como sabéis, los gastos de envíos son menores en Madrid, y si lo recoges en nuestra tienda de 0xWord en Móstoles no tienes que pagarlos. Después del 12 de Julio, los precios volverán a ser los mismos y anunciaremos el cierre a finales de mes para hacer el proceso de inventario y tomarnos las merecidas vacaciones.

Saludos Malignos!

Available link for download

Read more »

Sunday, February 12, 2017

Intentan envenenar agua de un planta depuradora en UK

Intentan envenenar agua de un planta depuradora en UK


Los ataques a los sistemas SCADA utilizados en el control industrial es algo que puede tener consecuencias graves si no se han hecho los deberes de seguridad adecuados. Los sistemas industriales utilizados en estos entornos están formados por una buena cantidad de componentes de distintos fabricantes, PLCs, protocolos especiales y sistemas que a veces pasan muchos años antes de ser cambiados - o tan siquiera actualizados -. Y por supuesto, tienen vulnerabilidades que aparecen en sistemas PLCs [PLCs exponen passwords, PLCs vulnerables a Brute-Force]  en el equipamiento utilizado en la construcción del sistema y en el software que se haya desarrollado a medida para dicha plataforma.

Figura 1: Intentan envenenar el agua en una planta depuradora en UK

Es un ecosistema complejo del que hay que preocuparse con cariño. Nuestro compañero en Eleven Paths Claudio Caracciolo (@holosec) conoce a la perfección estos entornos por su experiencia trabajando con ellos,  y nos explicó en detalle cómo funciona en la charla que impartió dentro de las Eleven Paths Talks y que puedes ver online ya.


Figura 2: Comprendiendo la seguridad en sistemas industriales

Dicho esto, hoy quería centrarme en un caso explicado en el último informe Data Brech Digest publicado por Verizon, en el que cuentan cómo fue la investigación para descubrir el ataque que se había producido a un planta depuradora de agua de un distrito en Reino Unido. Los equipos de gestión del funcionamiento de la planta depuradora se dieron cuenta de que algo había pasado cuando saltaron las alarmas de control que vigilan que nada vaya mal en la planta al detectarse que la mezcla de componentes químicos que se estaba usando podría dañar la salud de las personas que la bebieran.

Figura 3: Intento de configurar agua "no potable" variando los compuestos químos

Esto sucede porque los sistemas SCADA se crearon para ayudar a los ingenieros a tomar las decisiones de seguridad más adecuadas, pero además del sistema informatizado y automatizados existen controles que verifican que ningún fallo provoque una situación no deseada, como la de que el agua que se entrega a los usuarios sea de mala calidad y nociva para su salud.

Errores en la gestión de la seguridad de la planta depuradora

Tras la investigación realizada por el Equipo de Respuesta ante Incidentes, la explicación resulto ser la acumulación de una serie de BASICS de seguridad no realizados por la empresa que gestiona el IT de la planta de seguridad y que os paso a resumir a continuación.

1) Arquitectura no segmentada de la red
La empresa cuenta con una aplicación web/mobile a la que los clientes se pueden conectar para la gestión de sus cuentas y sus pagos. Esto está alojado en un servidor web, pero que tiene conexión directa con el servidor SCADA, basado en un AS/400 (que también debería fortificarse). Este servidor AS/400, además, tenía conexión de a Internet, por lo que una vez llegado a él se podría sacar datos. Llegando a un servidor, es fácil acceder a las credenciales de acceso a otros servicios, incluso acceder a las passwords de gestión de los PLCs e incluso mucho más fácil, ya que puede que haya sistemas PLC sin passwords o fácilmente saltables.
Figura 4: Arquitectura de red de los sistemas de la planta. Desde el AS/400 acceso a todo.

2) Aplicación de pagos con mala gestión de identidades
Cualquier cliente de la empresa se podía conectar al sistema de pagos con un sistema de credenciales basado en usuario y contraseña, sin que hubiera ninguna protección de Segundo Factor de Autenticación o Autenticación Robusta, lo que permitía a un atacante hacerse fácilmente con alguna cuenta de usuario con ataques simples de phishing, troyanos, etcétera.
3) Aplicación de pagos con vulnerabilidades en el código del backend
La aplicación de pagos no estaba correctamente auditada y desde la sesión de un usuario era posible explotar bugs en el backend que permitieran acceder a los ficheros del servidor. No se sabe si la vulnerabilidad permitía subir una shell, era un ataque de LFI, o un Directory listing, pero con este fallo se podía acceder a los ficheros del servidor.
4) Credenciales de acceso al sistema SCADA en AS/400 sin 2FA
De nuevo, el acceso al sistema SCADA utilizaba usuarios y contraseñas sin ninguna protección de Segundo Factor de Autenticación, así que cualquiera que se hiciera con las credenciales podría entrar a manipular el servidor.
5) Credenciales almacenadas en el servidor de la aplicación de pagos
Como sucede en muchos casos, las herramientas de adminsitración de servidores permiten guardar información de las conexiones que realizan los técnicos para que sea cómodo acceder a ellos a golpe de clic. Según parece, en el servidor de la aplicación de pagos había un fichero .INI con las credenciales del sistema SCADA, así que una vez accedido a los ficheros del servidor fue fácil obtener el acceso al sistema SCADA.
Figura 5: Cúmulo de fallos en la gestión de las credenciales de acceso a los sitemas

6) Reutilización de credenciales en distintos sistemas
Al final, los atacantes se pudieron llevar la base de datos de los usuarios, ya que las credenciales funcionaban en otros sistemas conectados, como el servidor que hospedaba la aplicación financiera de la planta.
Por suerte, al manipular las cantidades de productos químicos con las que se hace la depuración del agua, las alertas de seguridad de la planta levantaron las alertas. De nuevo, un caso en el que el cúmulo de errores de seguridad lleva a que casi Security se convierta en Safety y haya un verdadero problema para los clientes de esta planta. Hay que agradecer que las Infraestructuras Críticas aplican conceptos de defensa en profundidad para no depender totalmente de un sistema informatizado y, en este caso, ha evitado una catástrofe.

Saludos Malignos!

Available link for download

Read more »

Wednesday, February 8, 2017

Últimos cursos charlas y eventos antes del parón del verano de chemaalonso elevenpaths 0xWord

Últimos cursos charlas y eventos antes del parón del verano de chemaalonso elevenpaths 0xWord


No son muchas las actividades que tenemos organizadas para este mes de Julio que, ya bien entrado el verano, es tiempo para que muchos se tomen las más que merecidas vacaciones. Si eres estudiante y has terminado con buenas notas el curso, es momento para hacer los proyectos personales que tenías aparcados, además de aprender cosas periféricas a tus estudios y recargar las pilas para el verano siguiente.

Figura 1: Últimos cursos, charlas y eventos antes del parón del verano


Por si alguno quiere participar en alguna de las cosas en las que participo yo, mis compañeros de Eleven Paths, Telefónica o 0xWord, os dejo la lista de cosas que tengo apuntadas, que como veréis no es muy larga. Aquí va.

Lunes, 4 de Julio: IMPACT Talk en UEM [Alcobendas - Madrid]

Esta tendrá lugar mañana mismo, y será una sesión en plan entrevista más turno preguntas y respuestas del público. Será a partir de las 17:30 horas en el Campus de Alcobendas de la Universidad Europea de Madrid. Puedes apuntarte gratuitamente en el siguiente enlace: IMPACT Talk - Chema Alonso.

Figura 2: IMPACT Talk Chema Alonso

Probablemente será la última sesión que daré antes de Septiembre, después ya os contaré mi calendario para los últimos meses del año.

Jueves, 7 de Julio: Eleven Paths Talks [Online]

Nuestro compañero en Chile, el gran Gabriel Bergel, impartirá una sesión dedicada al análisis de riesgos de seguridad dentro de la gestión de la seguridad de una empresa. Será emitida justo por este canal de Youtube.

Figura 3: Eleven Paths Talks

Es la última de esta primera temporada de Eleven Paths Talks, así que no te la pierdas. Es gratuita, online y de una hora de duración.

Cursos de seguridad en The Security Sentinel [Online]

Las últimas actividades de este mes de Julio son las formaciones que, utilizando los libros de 0xWord como material didáctico, se imparten en The Security Sentinel.

Figura 4: Cursos Online de The Security Sentinel con libros de 0xWord

El calendario de cursos que comienzan en este mes son:
- 11 de Julio: Curso de Seguridad en Redes
- 18 de Julio: Auditoría de Dispositivos Móviles
- 25 de Julio: Curso de Hacking Ético Avanzado
Estos son los últimos del verano, en Agosto creo que la cosa bajará aún más, pero en Septiembre el calendario de actividades volverá a remontar como es habitual. Disfrutad el domingo.

Saludos Malignos!

Available link for download

Read more »

Tuesday, February 7, 2017

Haz tu Proyecto de Fin de Grado Máster con Eleven Paths Universidad PFC PFM

Haz tu Proyecto de Fin de Grado Máster con Eleven Paths Universidad PFC PFM


Como sabéis yo soy un amante del mundo de la educación, así que desde hace unos meses he estado pinchando a mis compañeros del laboratorio de Eleven Paths para que abriéramos una campaña de ayuda a los que jóvenes que están acabando sus estudios y tienen que elegir un Proyecto de Fin de Máster o Proyecto de Fin de Grado, y por fin este viernes se publicó la primera fase de esta iniciativa.

Figura 1: Haz tu Proyecto de Fin de Grado/Máster con Eleven Paths

Hemos abierto 10 Proyectos de Fin de Grado o Máster, para 10 estudiantes que estén en esa fase de sus estudios. Lo que intentamos es ayudarte a realizarlo, al tiempo que colaboramos con material, libros, licencias de software y apoyo de uno de nuestros compañeros, para que lo lleves a buen término.

Figura 2: Página de los diez proyectos publicados en Eleven Paths

Algunos de estos proyectos tienen que ver con nuestras tecnologías, otros no y simplemente son ideas nuestras que nos parecen interesantes para estudiar. Seguro que casi todas, si eres un seguidor atento de este blog o de nuestro trabajo en Eleven Paths, te sonaran. Esto son los 10 proyectos que hemos elegido, por ahora, solo para estudiantes de Universidades Españolas. Tienes más información de cada uno de ellos en la web de los proyectos.

Figura 3: Primeros cuatro Proyectos disponibles
Figura 4: Segundos cuatro proyectos disponibles
Figura 5: Proyectos 9 y 10 publicados

Si la iniciativa funciona bien, habrá una segunda tanda de selección y seguramente lo extenderemos a otros países de latinoamérica. De momento, si quieres participar en esta campaña debes enviarnos un correo electrónico a university@11paths.com con la información siguiente:
- Nombre
- Universidad en la que estás cursando los estudios
- Titulación
- Nombre del profesor/tutor (si lo tienes ya asignado)
- Proyectos en los que estarías interesado
Con estos datos, nos pondremos en contacto contigo y te informaremos de los siguientes pasos. Y cuando lo acabes, directamente estarás en un proceso de selección de Eleven Paths para ver si acabas haciendo prácticas o trabajando con nosotros.

Saludos Malignos!

Available link for download

Read more »

Friday, February 3, 2017

El derecho a la privacidad en mi lista de derechos

El derecho a la privacidad en mi lista de derechos


Ya he hablado en muchas ocasiones de este tema, pero como me parece que aún quedan detalles que discutir y repasar, he decidido dedicarle este artículo de reflexión personal, largo, detallado y dejando claro mi punto de vista personal sobre el Caso del iPhone del terrorista de San Bernardino, los comentarios de muchas personas y la actitud de Apple. Vaya por delante que, todo lo referente a este caso me parece una anécdota puntual utilizado con mucho arte el mundo de los medios de comunicación, y que lo realmente importante de este artículo es mi visión personal sobre el asunto del derecho de la privacidad en los terminales móviles, en las comunicaciones y en los datos generados en el mundo digital.

Figura 1: El derecho a la privacidad en mi lista de derechos

La existencia de documentos que recogen los derechos que como Ser Humano poseo, es algo que me agrada. Pero también poseo derechos por el hecho de ser Europeo y por el hecho de ser Español. Hay una buena lista de derechos que, por suerte, nuestros ancestros nos han legado para disponer de un mundo muy cambiado al que teníamos hace quinientos años.

Sobre mis derechos como ciudadano

Los primeros derechos, los que me parecen más importantes, son los que recoge la Declaración Universal de los Derechos Humanos, donde aparecen artículos como el número tres que cita:
“Todo individuo tiene derecho a la vida, a la libertad y a la seguridad de su persona.”
Son los primeros derechos que cita esta carta por ser los que, por todos los firmantes de aquella declaración, fueron elegidos como los más importantes. Derechos que en muchas situaciones han sido vulnerados por enemigos, criminales e incluso familiares. No hay nada más penoso que ver a un padre como llora porque su hijo o su hija ha sido asesinado o asesinada en la calle. O porque un ataque terrorista ha terminado de golpe con la vida de cientos de personas. Hay malos que atacan esos derechos fundamentales, recogidos como digo, en el Artículo 3. Algunos tan malos como el caso de José Bretón que mató y quemó a sus dos hijos, acabando con la vida de dos niños y marcando el alma de su madre y el resto de sus familiares.

El Artículo 5 dice cosas también muy duras, como que ningún ser humano será sometido a torturas, ni a penas o tratos crueles, inhumanos o degradantes. Algo que por desgracia vemos que pasa sistemáticamente en guerras, en misiones de paz, o en el mismo entorno familiar. Pero también en entornos más cercanos como familiares, trata de blancas en las ciudades nada lejanas de nosotros, como puede ser mi Madrid, Barcelona o Zaragoza. Cada cierto tiempo vemos a una mafia nueva forzando a mujeres a prostituirse o un loco que ha encerrado en la gran Alemania a su hija durante años en un sótano para violarla y abusar de ella cuando quiere.

La lista de derechos que una persona tiene por el mero hecho de existir según la Declaración Universal de los Derechos Humanos es larga. Derecho a la Justicia, a la presunción de inocencia, a defensa, a no ser desterrado,… derecho al Honor, tal y como cita el Artículo 12. Derecho a tener una nacionalidad, a pedir asilo político, a formar una familia, a la propiedad privada, a ser libre de pensamiento y religión, etcétera. Una buena lista de derechos fundamentales que, por desgracia, muchas veces son vulnerados por gobiernos que deben ser sancionados.

También dice el Artículo 21 que todo ciudadano tiene derecho a participar en el gobierno de su país, directamente o por medio de sus representantes. Hay una parte además que dice cómo debe ser el sistema de elección de sus representantes. El punto 3 del artículo 21 dice: “La voluntad del pueblo es la base de la autoridad del poder público; esta voluntad se expresará mediante elecciones auténticas que habrán de celebrarse periódicamente, por sufragio universal e igual y por voto secreto u otro procedimiento equivalente que garantice la libertad del voto”. Es la base sin duda de la democracia, algo que a mí me gusta tener como derecho universal.

Derechos fundamentales también para la Maternidad y la Infancia, que dicen cosas como “La maternidad y la infancia tienen derecho a cuidados y asistencia especiales. Todos los niños, nacidos de matrimonio o fuera de matrimonio, tienen derecho a igual protección social.” Y entre ellos el derecho a la Educación, la Cultura y a participar en la educación de tus hijos.

Son una buena cantidad de derechos que, por desgracia, no se garantizan y cumplen en todos los países de igual forma. Y lo que es peor, que muchas veces son vulnerados por malos que en un determinado momento ejercen un poder ancestral basado en la fuerza y el poder, para arruinar esos derechos a determinadas personas que sufren y que se convierten en víctimas. Víctimas que hay que defender.

Para garantizar estos Derechos Universales, entre los que no está citado el de la privacidad de las comunicaciones, se dice en el Artículo 28: “Toda persona tiene derecho a que se establezca un orden social e internacional en el que los derechos y libertades proclamados en esta Declaración se hagan plenamente efectivos.” Es decir, que la sociedad en la que vive cada individuo, sea una comunidad, un país o cualquier otro orden social, debe proteger estos derechos. Ese orden social es el que debe garantizar los derechos universales, no una empresa como decía en mi artículo de "A los CEOs de las multinacionales no los elige el pueblo". Las empresas tienen otros objetivos, como el lucro y maximizar los beneficios para los accionistas.

Y por último, el Artículo 30 de la Declaración Universal de Derechos Humanos dice:
“Nada en esta Declaración podrá interpretarse en el sentido de que confiere derecho alguno al Estado, a un grupo o a una persona, para emprender y desarrollar actividades o realizar actos tendientes a la supresión de cualquiera de los derechos y libertades proclamados en esta Declaración.”
Es curioso como una declaración marca en el artículo 3 que todo ser humano tiene derecho a la vida y en el artículo 30 dice que nada en esta declaración puede ser interpretado para acabar con un derecho universal. Alguno puede preguntarse… ¿por qué pone esto en el 30? ¿Por qué esta descarga de responsabilidades? Pues porque alguien podría llegar a pensar que, por ejemplo, proteger el derecho a la educación, o a la libertad de culto, podría ser más importante que el derecho a la vida. Es decir, que un estado, por proteger el Derecho a la Libertad de Culto, decidiera aplicar la Pena de Muerte a alguien y acabar con el Derecho a la Vida citado en el artículo 3. Pero… así es. Hay países en los que hay Pena de Muerte por algunos delitos que atentan contra algunos de los Derechos Humanos . Algunos países tan grandes e importantes en el mundo como Estados Unidos. Por ejemplo, en España no existe la Pena de Muerte. Pero en algunos lugares de Estados Unidos sí.

Como habéis visto, la privacidad en las comunicaciones o en los dispositivos móviles no está en la Declaración Universal de Derechos Humanos. Por suerte, los que vivimos en sociedades del primer mundo contamos con más derechos. Derechos como los que nos otorga la Unión Europea por ser España un país que está dentro ella.

En la Carta de los Derechos Fundamentales de Unión Europea se recoge la interpretación que de los Derechos Universales se tiene en la Unión, y hay cosas matizadas como que no solo tenemos derecho a la vida, sino a que tenemos derecho a dignidad en la vida. Algo que tiene que ver también con la forma en la que morimos. Por supuesto, por ser Europeo, tengo derecho a que nunca se me aplique la Pena de Muerte, algo que ningún país de la Unión Europea aplica, a diferencia de Estados Unidos - país creador del iPhone - donde como ya he dicho sí hay Pena de Muerte.

Esto es porque la sociedad de Estados Unidos no es la misma que la sociedad de Europa. Sus derechos los han elegido ellos. Ellos tienen derecho a llevar armas, en Europa ese derecho no existe. Y a mí me gusta que no exista. En Europa también existe protección contra el despido, prohibición del trabajo infantil o solidaridad social por parte de nuestros países. Son derechos que se escribieron y que me gustaría que se cumplan en todos los países de la Unión.

Pero es que además, también quiero que se cumplan mis derechos como ciudadano de España y, por ende, la legislación que debe protegerlos. Derecho a una vivienda, derecho al trabajo, derecho a que las penas de cárcel se orienten a la reinserción y no al castigo. Derecho a Huelga, derecho a libre asociación, derecho a que el domicilio sea inviolable “Ninguna entrada o registro podrá hacerse en él sin consentimiento del titular o resolución judicial.” Derechos como español que deben protegerse. Que los quiero. Y que si el gobierno que esté en un determinado momento no los respeta y protege como mi opinión de ciudadano me de a entender, voy a defender. Usando el derecho a huelga, votando a otro o usando mi derecho a expresarme libremente sin coacción. Y si me quitan esos derechos, lucharé por recuperarlos.

Y para que se cumplan los derechos a nivel nacional, europeo e internacional, debemos contar con leyes y justicia que hagan que se cumplan. Una ley que sirva para poder hacer cumplir, de la mejor forma posible, la protección de los derechos de los seres humanos, desarrollando un articulado detallado y aplicando una serie de sanciones contra aquellos que la incumplan. Así, si alguien viola un domicilio en España para robar, puede ser sancionado con la retirada del derecho de libertad y acabar en la cárcel. Por ejemplo, en ciertos estados de USA si alguien viola el domicilio, la persona que hace el allanamiento puede ser privada por el dueño de la vivienda del derecho a la vida. Sus leyes les permiten hacer eso.

De hecho, en Estados Unidos un terrorista puede ser privado del derecho de libertad, del derecho a la vida si es condenando a pena de muerte e incluso puede ser enviado a alguna cárcel – como ha sucedido durante muchos años en Guantánamo – a sufrir torturas y perder más derechos humanos. Es SU LEY.

En España tenemos otra ley. No se pueden hacer cosas como lo de Guantánamo o condenar a alguien a una inyección letal o una silla eléctrica. Eso sí, cuando un juez lo pide, en España, se hacen análisis forenses a dispositivos móviles. Y esto se hace constantemente. Constantemente es constantemente. Quiero decir, cuando José Bretón mata a sus hijos, se hace un análisis forense de su dispositivo móvil. Lo hacen los cuerpos de seguridad del estado siguiendo un mandato judicial para intentar esclarecer por dónde se movió José Bretón el día que desaparecieron sus hijos. Para saber dónde los podía haber descuartizado, quemado y enterrado.

Pero no solo en España. En Francia, en Alemania, en USA, en UK, en Italia, en Holanda, en Suecia, en Noruega, en cualquier país defensor de los Derechos Humanos, de los derechos de la Carta de Derechos Fundamentales de la Unión Europea y que cuentan con una Ley de país del primer mundo, se hacen análisis forenses de dispositivos móviles. Para muchos, esos análisis forenses de terminales móviles de ladrones, secuestradores, asesinos, terroristas, acosadores, etc… puede suponer una vulneración de la privacidad de esos malos, pero es la ley que hemos elegido los que vivimos en estos países para defender los Derechos Humanos, los Derechos Fundamentales y los Derechos que nos damos en las Cartas Magnas que sirven de fundación de nuestros países.

Y sí, a veces la defensa de la ley obliga a los jueces a tomar la decisión de vulnerar ese derecho a la privacidad de los malos para poder defender los derechos humanos de los individuos no-malos de nuestra sociedad. Para poder defender los derechos de los niños asesinados, de las mujeres acosadas, de los seres humanos comprados, vendidos y explotados. Es así.

Pero es que la paradoja de nuestra ley en España es que para defender el Derecho a la Privacidad de un ciudadano, vulnerado por otro ciudadano, tal vez un juez se vea obligado a vulnerar el Derecho a la Privacidad del malo para defender el Derecho a la Privacidad del bueno. ¿Curioso, no? Pero es la labor de los jueces, que por eso tienen tan dura misión y son tan importantes los tribunales en nuestra sociedad.

Y como se hacen análisis forenses, surgen un montón de empresas que proporcionan herramientas, de investigadores de seguridad que desarrollan exploits, procesos, scripts, mecanismos o estudios sobre cómo hacer este trabajo. Y se dan charlas en DefCON, en BlackHat, en la RSA Conference, y se crean empresas por todo el mundo y se promocionan en conferencias, y se colabora con los cuerpos de seguridad de los estados, etc…. ¿A alguien le sorprende esto?

Sobre Apple y el terrorista de San Bernardino

Dicho todo esto, voy a intentar ahora centrarme un poco más en detalle en el tema que tanta polémica ha desatado. El tema de la colaboración de Apple con el FBI para investigar las conexiones de un terrorista a través de los datos de un terminal iPhone. Para ello, quiero dejar algunos hechos primero, para luego explicar mi conclusión personal.
Hecho 1: En EEUU todos los días se hacen análisis forenses de iPhone y nadie le importa nada. De hecho, en algunos casos se ha forzado a desbloquear el terminal por medio de Touch ID y no he visto a nadie quejarse a voz en cuello en Twitter. Pero es que también ha pasado en Noruega, dentro de la Unión Europea.

Hecho 2: En EEUU todos los días se hacen análisis forenses de iPhone y no he visto a Apple sacar una nota de prensa expresando su deseo de defender la privacidad de sus clientes.

Hecho 3: Si el FBI consigue desbloquear el terminal iPhone del terrorista con la ayuda de una empresa externa a Apple le parece perfecto. No problema.

Hecho 4: A un terrorista en EEUU se le puede quitar el derecho a la vida, el derecho a la libertad, el derecho a no ser torturado, y a nadie le ha importado mucho hasta ahora. Solo a personas realmente comprometidas con la defensa de los derechos humanos, a las que admiro.

Hecho 5: EEUU me importa lo justo, pero si cuando yo voy a EEUU tengo que cumplir su ley y si no lo hago me juego la pena de muerte, cualquier empresa que venga a España tendrá que cumplir la ley de mi país.

Hecho 6: Quien debe defender mis Derechos Universales, mis Derechos Fundamentales por ser Europeo y mis derechos por ser español deben ser los representantes que hayamos elegido democráticamente mis compatriotas y yo. No una empresa, un consejo de administración o ciudadanos de otro país, como EEUU. Ellos deciden sus garantes, yo decido con mis compatriotas los míos. 
Hecho 7: Apple, teniendo la posesión de los certificados digitales raíz en los que se basa el code-signing que protege su sistema operativo iOS siempre puede romper la seguridad del terminal y sacar los datos. Sorry, puede hacer lo que quiera. Si pensabas que no, siento darte el disgusto.

Hecho 8: Apple podría haber recibido el terminal y devuelto el passcode sin tener que llegar a los tribunales. De hecho, podría haberlo hecho sin que hubiera ruido mediatico alguno.

Hecho 9: Apple ha sido parte de PRISM, como parte del programa de colaboración – sin supervisión judicial – de los datos de los usuarios de sus tecnologías que la NSA necesitaba para luchar contra el terrorismo.

Hecho 10: Otras empresas – que también aparecían en PRISM – ya rompieron la privacidad de sus servicios para pillar a los malos, como hizo Google con el pederasta reincidente al que detecto analizando su correo electrónico y denunció a los cuerpos de seguridad, o Microsoft con un pedófilo, que lo detecto escaneando sus ficheros en OneDrive.

Hecho 11: Si Apple entrega lo que el juez le pidió, le estaría dando una llave maestra para hacer forense en local a todos los dispositivos. Eso sí, todos los que luchan contra esta llave, que recuerden que si tienen Touch ID, no necesitan nada más que la huella dactilar que te toman en la frontera o el dedo que tienes en la mano.
Dicho todo esto, mis conclusiones personales y opiniones de toda esta historia son las siguientes:
1) Estoy a favor de la privacidad. Quiero que los jueces y la ley de mi país protejan mi privacidad. Especialmente cuando empresas vigilan mi navegación por todo Internet - como en el caso de Facebook - o se saltan los controles de privacidad de mi navegador - como en el caso de Google -, espían mi WiFi - como en el caso de Google Car - o me trackean para hacer negocio con mis datos - como en el caso de Apple -. Pero no quiero que defiendan la privacidad de un malo que atenta con los derechos de un compatriota mío. Privacidad sí, pero no a cambio de impunidad para los malos. Si tu hija está secuestrada por un tipo y su vida está en riesgo, estaré de acuerdo con que se vulnere la privacidad del malo para saber dónde puede tenerla.

2) Los garantes de mis derechos no son las empresas. Quiero que las empresas cumplan la ley de mi país, es decir, el derecho nacional, el derecho europeo y el derecho internacional, que son las tres esferas que defienden mis derechos. No lo que diga la ley de EEUU, a pesar de ser un país tan importante en el mundo, que tiene poco que ver con mis derechos. Sus debates y sus decisiones con cosas que les atañan a ellos, son cosa suya. Pero cuando un juez de mi país - que no es un país que no respete los derechos humanos - dé una orden a una empresa, quiero que la cumpla si está sujeta a la ley. Incluso la ley de mi país permite a las empresas defenderse vía legal, porque es un derecho que tienen. Y por supuesto, menos aún es garante de mis derechos lo que decida una empresa en su entender de lo que es el bien para todos.

3) Ruido mediático interesado. Apple podría haber recibido el terminal, hecho el trabajo internamente, devolver el passcode sin necesidad de dar ninguna puerta trasera o troyano y se hubiera quedado en uno más de los miles y miles de iPhones a los que se hace un análisis forense en EEUU. Ha sido más marketing que otra cosa. Y si no ha sido así, entonces ha sido negligencia de alguno.

4) Master KEY: No estoy a favor de que se de una llave maestra a los cuerpos de seguridad de un país que no es garante de mis derechos, menos cuando salió un documento en pastebin en el que se decía que la NSA había estado espiando mis comunicaciones con PRISM, el programa en el apareció colaborando Apple – yo tengo un iPhone – y en el que no había supervisión judicial si el ciudadano era extranjero – como yo, que soy español -.
Con esto artículo solo pretendo mostrar mis opiniones personales, más allá de comentarios de 140 caracteres con frases manidas, reflexiones simplistas o mensajes populistas. Me gusta pensar en qué modelo de sociedad quiero tener en mi país y procuro pensar lo que me gustaría que mejorara en mi país, como ya he publicado muchas veces [Braindump: mi grito en "demo"cracia]. Estoy dispuesto a debatir con cualquiera, escuchar opiniones de otros e incluso matizar mis pensamientos con lo que me enseñes, pero de base, aquí está lo que yo pienso.

Saludos Malignos!

Available link for download

Read more »

Cursos y conferencias para la primera quincena de Junio

Cursos y conferencias para la primera quincena de Junio


Con la llegada del mes de Junio bajan un poco las actividades, y con el comienzo en mi nuevo rol no he querido comprometerme con más conferencias, por lo que no hay muchas actividades en las que yo vaya a estar presente. No obstante, desde Eleven Paths y Telefónica estaremos en varios sitios, y los libros de 0xWord estarán en algunos cursos. Éste es el calendario para la primera quincena de este mes:

Figura 1: Cursos y conferencias par la primera quincena de Junio

Eleven Paths Talks  [Online]

Este mes cerramos el calendario de charlas que damos online antes de tener el parón veraniego, pero aún nos quedan cuatro charlas pendientes. Como sabéis, las damos los jueves a las 15:30 hora de España. Estas son las charlas a las que puedes apuntarte durante la primera quincena.
02: OSINT - The power of public information con Diego Samuel Espitia.
08: Análisis de riesgos con Gabriel Bergel.
En la web de Eleven Paths Talks puedes acceder a todas las charlas anteriores, que ya hay una buena cantidad de temas tocados en ellas, desde el pentesting, hasta la Deep Web, pasando por la biometría o los estándares de gestión de la seguridad informática.

InfoSecurity, ISACA y Open Expo [Madrid, Sao Paulo & Londres]

Durante esta primera quincena estaremos en varios eventos den Madrid y Londres. El día 2 estaré yo dando una charla en OpenExpo en Madrid con un juguete nuevo en el que hemos estado trabajando mi compañero Pablo González y yo. El día 7 estaremos hablando de Seguriad IoT en el InfoSecurity de Londres y los días 7 a 9, en Telefónica (Madrid), tendrá lugar una reunión de ISACA en la que hablarán los principales miembros de esta organización, y en la participaremos. 
02 - OpenExpo [Madrid]
07 - InfoSecurity [Londres]
07 - CNASI [Sao Paolo]
08 - ISACA [Madrid]
Como veis, también nuestro compañero CSA de Eleven Paths en Brasil estaré en el evento CNSAI el día 7 de Junio participando en un panel.

Cursos Online en "The Security Sentinel"

Además del curso que da comienzo este lunes orientado al Análisis Forense, durante la primera quincena del mes de Junio comenzarán dos cursos más con libros de 0xWord. En este caso:
06: Curso Online Python para Pentesters
   [libro de Python para Pentesters]
13: Curso Online Hacking Ético de dispositivos móviles
   [libro de Hacking de Comunicaciones Móviles]
Y esto es todo lo que tenemos para la primera quincena del mes. Si hay alguna novedad lo anunciaremos en la web de Eleven Paths en la sección de Eventos, en nuestra Comunidad de Eleven Paths o en nuestra cuenta Twitter (@elevenpaths). Yo, aviso de todas formas siempre con algo de tiempo por mi Canal Telegram.

Saludos Malignos!

Available link for download

Read more »

Wednesday, January 18, 2017

¿Tienes un oído fino Cifrado y esteganografía de datos en ficheros de audio y un test de estegonanálisis con tu oreja

¿Tienes un oído fino Cifrado y esteganografía de datos en ficheros de audio y un test de estegonanálisis con tu oreja


Tras ver la invitación de Chema Alonso para escribir algún artículo en El lado del mal me decidí a enviar un resumen de lo que fue mi proyecto final de carrera de ingeniería informática, en el que tocaba el tema de esteganografía y cifrado de datos en ficheros de audio. Hace poco se habló de una técnica parecida en el artículo "Esteganografía con ficheros de audio: enviar tus documentos ocultos en canciones", pero en este trabajo se añade la capa de cifrado y el trabajo se hace con MatLab, así que espero que os sea de utilidad y complemente un poco más el conocimiento de las técnicas de esteganografía y estegoanálisis.

Figura 1: ¿Tienes un oído fino? Cifrado y esteganografía de datos en
ficheros de audio y un test de estgonanálisis con tu oreja

Considero que todo documento científico debe contar con una breve introducción de los conceptos que se tratarán, así que, para empezar a tener claras las ideas, me gusta empezar siempre con definiciones y, si es posible, dar algunas pinceladas de etimología a los términos sobre los que escribo. Y aquí van:
Definición 1: esteganografía es la ciencia que trata el estudio y la aplicación de un conjunto de técnicas que permiten ocultar o esconder información, de modo que no se perciba su existencia. 
Etimología 1: Estegano-, del griego tégos-/steganos, que significa disimular, disfrazar o cubrir. 
Definición 2: criptografía es el arte de escribir con clave secreta o de un modo enigmático. 
Etimología 2: Cripto-, del griego kryptós, que significa recubierto.
Etimología 3: -grafía, de la raíz del griego grafein, que significa escritura o representación gráfica.
Con todo esto presente, mi objetivo fue construir un criptosistema que fuera capaz de cifrar información y para posteriormente esconderla dentro de un fichero de audio en formato WAV, maximizando la cantidad de mensaje a ocultar y minimizando todo lo posible el ruido introducido. Para la parte del cifrado me decanté por usar cifrado asimétrico RSA y para la de esteganografía, utilicé 2 métodos, uno bastante empleado, como es el LSB y otro no tanto, conocido como Phase Coding.

Explicación del funcionamiento del criptosistema

El sistema consta de dos capas de seguridad, la primera será criptográfica, ya que a toda la información que se pretenda transmitir, le aplicaremos un cifrado asimétrico. Una vez tenemos la información cifrada, realizaremos el proceso de esteganografía, escogiendo para ello un fichero de audio WAV como portador y ocultando en él los datos cifrados en el paso anterior.

Figura 2: Diagrama global del criptosistema

En la Figura 2 vemos cómo encajan todos los subsistemas entre sí, donde las cajas rojas conforman el subsistema criptográfico, que se corresponden con los procesos de cifrado y descifrado. Aquí es importante destacar que el emisor cifra la clave secreta (o clave de sesión) con la clave pública del receptor y que el mensaje se cifra usando la clave secreta, generada automática y aleatoriamente por GPG4WIN.

Las cajas azules conforman el subsistema esteganográfico, que se corresponden con los procesos de ocultación y extracción. El resto de elemento son las entradas y salidas del sistema, y un medio de transmisión.

Explicación general de cada subsistema

Teniendo una visión global del sistema, veamos el comportamiento de cada uno de sus elementos de procesamiento de la información.

Subsistema criptográfico: es el componente que aplica un algoritmo de cifrado o descifrado, en función de la etapa en la que se encuentre la información que procesemos dentro del sistema global. Recurrimos a RSA 2048 bits, mediante la herramienta GPG4WIN. En la Figura 1 se ve el flujo de la información y cuándo entra en juego cada componente. Para gestionar nuestro criptosistema de la forma que queremos, debemos configurar adecuadamente GPG4WIN. Los pasos a seguir son:
1. Crear un certificado de tipo ‘OpenPGP key pair’
2. Introducir algunos datos personales: Dentro de las opciones avanzadas, elegimos el uso que le vamos a dar. En nuestro caso solo queremos cifrar, así que elegimos el método RSA con 2048 bits y marcamos la casilla de ‘Encryption’.
3. Crear una ‘passphrase’ para cifrar la clave privada (este cifrado es tipo simétrico)
Si todo el proceso se ha llevado a cabo correctamente, obtendremos una ventana de confirmación que nos mostrará el ‘fingerprint’ de nuestro certificado. Con este certificado será con el que podamos cifrar/descifrar ficheros. Para cifrar en GPG4WIN lo podemos hacer con el propio gestor de certificados que incluye, llamado Kleopatra. Simplemente lo abrimos y seguimos estos pasos:
1. Elegimos ‘Sign/Encrypt Files’, y marcamos la opción de Encrypt. Seleccionamos el fichero a cifrar.
2. Seleccionamos el certificado que queramos usar para cifrar. En este caso, como ya lo tenemos creado, seleccionamos y añadimos el que hemos hecho anteriormente.
3. Pulsamos en ‘Encrypt’ y esperamos a que el proceso finalice. El programa nos avisará.
Para descifrar en GPG4WIN lo haremos también con Kleopatra:
1. Elegimos ‘Decrypt/Verify Files’, y seleccionamos el fichero a descifrar. También podemos elegir dónde se guardará la información descifrada.2. Introducimos la ‘passphrase’ para nuestro certificado, que se nos indica en pantalla. Cada certificado que creemos tiene su propia ‘passphrase’, de modo que hay que recordarla para poder realizar el proceso de descifrado.3. Pulsamos en ‘OK’ y esperamos a que el proceso finalice.
Subsistema esteganográfico: es el componente que aplica un algoritmo de ocultación o extracción. Depende también de la etapa, y en la misma Figura 2 vemos las interacciones de este componente con el sistema.

1. LSB (Least Significant Bit): es un método de ocultación que se basa en esconder la información en los bits menos significativos del fichero de audio original. El proceso consiste en realizar una sustitución de los bits menos significativos de las muestras del audio original por todos los bits del mensaje. En la Figura 2 vemos un ejemplo de ocultación, donde:
• Audio: muestras de sonido del fichero WAV original. El subíndice indica el número de muestra y el superíndice indica el peso del bit de la muestra.
• Datos: cadena de bits del mensaje original.
• Portador: muestras de sonido del fichero WAV con el mensaje ‘Datos’ incluido.
Figura 3: Ejemplo de ocultación LSB. Sustitución de los bits menos significativos
de las muestras de audio original por los bits del mensaje

2. Phase Coding: Es un método de ocultación que se basa en esconder la información en la fase de las componentes espectrales de la onda de sonido que se obtiene a partir del audio original. El proceso de ocultación es como sigue:
a. Dividimos la señal acústica en varias ventanas de tamaño fijo.
b. Calculamos la DFT (transformada discreta de Fourier) de cada ventana, obteniendo la fase y la magnitud.
c. Elección de puntos de cada ventana candidatos para esconder la información.

i. Todos los puntos que cumplan Thmin < magnitud < Th albergarán el mensaje a ocultar.
• Umbral, Th, es un porcentaje del valor máximo de la señal.
• Umbral mínimo, Thmin, es un valor fijo obtenido de forma empírica, 10^-4 genera 0 errores.
ii. Para cada punto, dejaremos el valor de la fase original, con el siguiente criterio:
• Si bit a ocultar 0, entonces: (-1) x fase
• Si bit a ocultar 1, entonces: (1) x fase
Figura 4: Pasos para aplicar el método de esteganografía de Phase Coding

Implementación de esteganografía con Matlab

Entrando un poco más en materia, paso a explicar cómo implementé ambos algoritmos esteganográficos en Matlab.

• LSB, ocultación:
1. Leer fichero con los datos a esconder
[Datos, count] = fread(fopen(C: utamensaje.txt));
Datos = matriz de ‘count’ filas (cada caracter) y 1 columna.
count = cantidad de caracteres leídos.
2. Leer fichero de audio, que hará de portador
[x,fs] = audioread(ruta);
x = muestras de audio
fs = frecuencia de muestreo
3. Sustituir los bits menos significativos de ‘x’ por todos los bits que haya en ‘Datos’
% La parte del mensaje que cabe justa
coded(1:F_smr,(end-LSB+1):end) = stego_mensaje;
% La parte del mensaje que sobra
coded(F_smr+1,end-sobran+1:end)=Datos(L_esconder-sobran+1:end);
Básicamente estos son los pasos, pero se ve mucho mejor en la Figura 3. Hay que tener en cuenta que hay que moldear bastante las matrices y jugar con los tipos de datos en Matlab, para poder ajustar todos los cálculos, ya que el algoritmo lo hice para poder escoger una cantidad variable de bits menos significativos.
4. Crear un nuevo vector de muestras, que contenga el mensaje sustituido y el resto de muestras originales, es decir, las muestras del fichero portador, incluyendo el mensaje a esconder.
y = coded;
audiowrite(‘C: utaLSB-codedAudio.wav’, y, fs);
• LSB, extracción:
1. Leer fichero de audio, que es el portador del mensaje oculto
[x_ext,fs_ext] = audioread(‘C: utaLSB-codedAudio.wav’);
2. Extraer los bits menos significativos de ‘x_ext’
% Recupero el mensaje, por partes: la divisible, y el resto
% 1º Recupero la parte divisible del mensaje
recup1 = x_ext(1:F_smr,end-LSB+1:end);
% 2º Recupero la parte que falta del mensaje
recup2 = x_ext(F_smr+1,end-sobran+1:end);
% Juntamos todo
recup = vertcat(recup1,recup2);
3. Crear un nuevo fichero que será el mensaje extraído.
fwrite(fopen(C: utamensaje_extraido.txt,w), recup);  
%Recordad que este mensaje extraído está cifrado.
• Phase Coding, ocultación:
1. Leer fichero de audio y dividir la señal en ventanas
[x,fs] = audioread(ruta);
% Longitud archivo portador en muestras
T = length(x);
% Longitud de cada segmento
L = 1024;% Numero de segmentos
N = floor(T/L);
% División en segmentos de la señal (cada columna un segmento)
for n=1:N
xf(:,n) = x((n-1)*L + 1:n*L);
end
2. Calcular DFT y obtener fase y magnitud
% DFT de cada segmento (fft lo hace de golpe)
Xf = fft(xf);
% Matriz de magnitud original
M_ori = abs(Xf);
% Matriz de fases original
P_ori = angle(Xf);
3. Calcular umbrales y obtener los puntos candidatos
Th = porcentaje*max(M_ori(:));Th_min = 0.0001;indhide = find(M_ori<Th & M_ori>Th_min);
4. Calcular umbrales y obtener los puntos candidatos
for k=1:L_esconder % desde 1 hasta el tamaño del mensaje que quiero esconder
if Datos(k)==0
P_hide(indhide(k)) = abs(P_ori(indhide(k)))*(-1);
else
P_hide(indhide(k)) = abs(P_ori(indhide(k)))*(+1);
end
end
5. Crear el audio portador con el mensaje a esconder.
% Mensaje portador con datos ocultos
Xhide = M_ori.*exp(1i*P_ori);
xm = real(ifft(Xhide));
audiowrite(‘C: utaPC-codedAudio.wav’,xm,fs);
• Phase Coding, extracción:
1. Los pasos para extraer son los mismos que para ocultar, desde el 1 al 3 
2. Extraemos la información del vector con los puntos candidatos
% Extraer índices de los puntos con bits ocultos
indhide = find(M_decod<Th & M_decod>Th_min);
indhide = indhide(1:L_esconder);
Decp = P_ decod(indhide);
Recordad que ‘L_esconder’ es el tamaño del mensaje que voy a extraer. En principio lo sabemos de antemano, pero se podría crear un espacio dentro del mensaje a ocultar para indicar cuál es su tamaño, y transmitirlo también una vez cifrado y ocultado. 
3. Extraemos el mensaje oculto
% Mensaje extraído en Datadec
Datadec = (Decp<=0)*0 + (Decp>0)*1;
Guión final y resultados

Bien, ahora que hemos visto cómo funciona cada parte por separado, vamos a hacer un pequeño guión de cómo hacer funcionar todo el sistema.

CIFRADO Y OCULTACIÓN
1. Elegimos un fichero cualquiera que será nuestro mensaje a ocultar.
2. Elegimos un fichero de audio, en formato WAV, que será nuestro portador.
3. Ciframos el fichero con GPG4WIN.
4. Ocultamos el mensaje obtenido en el paso 3 mediante una técnica esteganográfica: LSB o Phase Coding.
5. Obtenemos un fichero WAV con el mensaje incluido. Este fichero lo podemos transmitir o almacenar teniendo 2 ventajas principalmente:
a. Tenemos la información escondida, luego será más difícil encontrarla para cualquiera que no sepa dónde/cómo buscar.
b. Tenemos la información cifrada, de modo que, incluso aunque se llegue a descubrir que tenemos información oculta, sería casi imposible descifrar sin tener la llave.
EXTRACCIÓN Y DESCIFRADO
1. Elegimos un fichero de audio que sea portador.
2. Extraemos el mensaje mediante una técnica esteganográfica: LSB o Phase Coding.
3. Desciframos el fichero obtenido en el paso 2 con GPG4WIN.
Para comprobar que todo este proceso de cifrado y ocultación funciona bien, quise realizar una serie de pruebas a personas de mi entorno. Recurrí para ello al test ABX, que es un tipo de prueba auditiva que se realiza a ciegas, lo que se conoce también como ‘blind test’, es decir, que el sujeto desconoce el origen del audio que escucha. Para hacer las pruebas más sencillas, recurrí a la herramienta llamada Lacinato ABX/Shootouter, que permite cargar ficheros de audio, y realizar la prueba de forma automática, mostrando los resultados obtenidos por cada sujeto. Sin entrar en mucho detalle matemático, necesariamente derivado de este tipo de pruebas, os explico en qué consiste el test ABX.

Figura 5: Herramienta Lacinato ABS/SHootouter

Durante la prueba, una de las muestras recibe el nombre de A y la otra muestra recibe el nombre de B. El programa elige una muestra X, que puede ser cualquiera de las muestras A o B, que el usuario ha indicado como banco de muestras, pero el sujeto no sabe cuál es. La tarea del sujeto es escuchar atentamente todas las muestras, tanto A y B como X, y entonces decidir si X se corresponde con la muestra A o con la muestra B. Por cada vez que el sujeto se vea sometido a esta elección, lo llamaremos intento. Al final de la prueba, se analizan el número de pruebas realizadas, el número de aciertos y fallos.

Las señales acústicas que hemos elegido para el test se pueden agrupar en cuatro tipos diferentes de audio:
Música clásica: Sinfonía nº 6 en Fa mayor, op. 68, “Pastoral”, Ludwig Van Beethoven.
Música comercial: Diamonds, Season One, Emancipator.
Música pop-rock: Cuando los ´árboles se sequen, Casa Grande, Marco Boz y Pablo Páez.
Voz hablada: Blue Sky Bridge, narración en inglés, Fergus Sound Enterprises.
Estos cuatro tipos de audio son muy comunes a día de hoy, por lo tanto, son un adecuado objeto de estudio para nuestro proyecto. Cabe destacar que los formatos de los audio obtenidos son del tipo sin pérdida, concretamente en formato WAV. Esto es así para poder trabajar a partir de un material que ofrezca el menor error posible. Destacar que, para homogeneizar las muestras, todos los audio han sido normalizados y convertidos a monocanal con 16 bits de profundidad. Los resultados que obtuve para cada algoritmo esteganográfico fueron los siguientes:
Resultados para LSB: Para evitar detección auditiva, recomiendo utilizar como máximo los 4 bits menos significativos. Capacidad de ocultación del LSB es el producto del número de muestras del audio original y el valor de LSB elegido en cada caso: numero_muestras x N lsb 
Resultados para Phase Coding: Para evitar detección auditiva, recomiendo utilizar un valor Th ? 10-4.
Es importante tener en cuenta que lo que más pesa a la hora de realizar un buen proceso de ocultación es el fichero portador. En nuestro caso, cuanto más intenso sea el nivel de sonido de nuestra onda portadora, más disimulará el contenido oculto. Por eso he especificado qué tipo de fragmentos musicales he utilizado, y también porque necesitaba una base sobre la que partir. Es por ello que se hace complicado dar un valor preciso que indique cuánta cantidad de información puedo introducir por muestra mediante esta técnica.

Para terminar, ahora que os he soltado toda esta marea de ideas y conceptos, aquí podéis escuchar los ficheros de audio y realizar vosotros mismos vuestras comparativas. Os los dejos organizados por carpetas y por estilos musicales [Audios Codificados, Audios Originales] ¿Hasta dónde sois capaces de detectar el ruido en cada técnica? Empieza el reto ;)

Autor: Jorge Peris (Universidad de Valencia)

Available link for download

Read more »