miércoles, 22 de diciembre de 2010

Burlar la censura de tu gobierno usando los canales permitidos

Steg0

Internet, tal y como lo conocemos, está pasando por un momento que, según opinan muchos, marcará un antes y un después en la red. Por ello, debemos prepararnos generando y desarrollando nuevas ideas.

La idea que vamos a ver llegó a mi en una conversación con Román, algún comentario suyo, o incluso puede que una mezcla de ambas. Me pareció tan potente que quería, al menos, demostrar que era posible llevarla a cabo.

Pensemos en Internet como en un flujo continuo y gigantesco de todo tipo de datos. Estos datos pueden estar clasificados según contenido, protocolo, etc. Para un censor que implante un mecanismo de censura habrá datos permitidos y datos que están prohibidos. Pero, ¿que pasa si metemos datos prohibidos de forma oculta en datos permitidos para que pasen por el filtro sin problema? Hace poco veíamos algunas herramientas de esteganografía que hacían algo parecido, incrustaban datos dentro de otros sin modificar a simple vista el contenedor.

Si combinamos ésto con la creciente cantidad de servicios de compartición de contenidos multimedia, tenemos la ecuación completa.

La herramienta SYND(E) [Share your nasty docs (eyeless)], made in SbD, nos permite hacer ésto de forma automática. Está pensada para enviar un fichero de un punto a otro (u otros) incrustándolo en fotografías y subiéndolo a un depósito público como es Imageshack. El receptor solo tendrá que descargar las fotos y extraer el contenido. El funcionamiento es el siguiente:

El usuario A selecciona una lista de fotografías (en formato JPEG), una clave de cifrado y el fichero a enviar.
El programa hace las verificaciones pertinentes, fragmenta el fichero en pedazos ajustados a lo almacenable en cada foto, los cifra con la clave de cifrado y el algoritmo AES de 128 bits, los incrusta en las fotografías y las sube a Imageshack.
Después de ésto genera un fichero de configuración con la contraseña cifrada (con doble SHA512) y la lista de fotos. Este fichero deberá ser enviado al receptor (preferiblemente por un canal seguro).
El usuario (usuarios) B usa el programa con el fichero de configuración generado, inserta la clave de cifrado (debe de ser comunicada por un canal seguro) y si coincide procede a descargar las fotos, extraer los datos, descifrarlos y recomponerlos en el fichero a recibir.

Ya que dicho así puede sonar un tanto abrumador, vamos a ver una demo de cómo funciona.

El programa tiene el objetivo de demostrar que la idea es posible, por lo que algunos errores no están controlados y depende de programa externos. Está pensado para entornos tipo Unix, es software libre, programado en Ruby, utiliza curl para la interacción con la API de Imageshack, wget para descargar y steghide para trabajar con las fotos.

Necesitamos estas dependencias, en Debian o sus derivados (como Ubuntu) se instalarían con el siguiente comando (con permisos de root):

apt-get install ruby curl wget steghide

En las primeras líneas de código del programa (editable con un editor de texto sin formato) encontrareis algunas opciones de configuración. La más interesante es poder configurarle un proxy HTTP para la subida, con lo que podemos mejorar la privacidad.

Teniendo todo preparado, vemos las opciones del programa.

Steg1

El programa se maneja mediante ficheros de configuración. El de descarga lo genera él, por lo que solo tendremos que preocuparnos por el de subida. El formato es el siguiente:

clave_de_cifrado
/ruta/del/fichero/secreto.zip

/home/yo/foto01.jpg
/home/yo/foto02.jpg
...

Para el ejemplo he elegido como fichero secreto La Declaración Universal de los Derechos Humanos en formato PDF. El fichero de configuración queda así:

clave_cifrado_sbd
derechos.pdf

demo/watchmen.jpg
demo/world.jpg
demo/sc1.jpg
demo/sc2.jpg

Para verificar que todo está bien y que las fotos tienen la capacidad suficiente para albergar el PDF vamos a utilizar la opción -s.

Steg2

Perfecto, ahora con la opción -u pondremos a funcionar el programa, los datos quedarán almacenados en Internet (el contenido y las fotos subidas a Imageshack) y generaremos el fichero de configuración de salida.

Steg3

La estructura del fichero de configuración de salida es la siguiente (clave de cifrado cifrada en un doble SHA512 y lista de links a las fotos).

77d708398595708f184a7f99009938aef4915a218862e05d025dc84264b61d9e91638958241ca570c540d3e9e660f3df61dff848e889c75a86ca84edaef19198
http://img832.imageshack.us/img832/7497/watchmenk.jpg
http://img37.imageshack.us/img37/7074/worldrw.jpg
http://img832.imageshack.us/img832/6682/sc1o.jpg
http://img716.imageshack.us/img716/9112/sc2rg.jpg

Como curiosidad podéis visitar la dirección de cualquiera de las fotos y veréis que es visible, como una foto cualquiera. Para recuperar el fichero, con la opción -d solo tendremos que pasarle el fichero de configuración, la clave de cifrado y el fichero donde guardar la descarga (si queréis probar a descargarlo vosotros aquí tenéis la configuración de salida, la clave de cifrado ya sabéis que es "clave_cifrado_sbd").

Steg4


Como podemos ver el fichero ha llegado intacto y el SHA1 es el mismo, por lo que no ha cambiado nada.

Steg5


Preguntas que pueden surgir:

- ¿Que ventajas tiene esto?

Nuestro fichero secreto va a ser troceado, cifrado (AES de 128 bits), incrustado de forma oculta en fotografías y éstas van a ser subidas a un almacén público gigantesco. Las posibilidades de recuperar el fichero íntegro son muy remotas ya que está fragmentado (y un atacante no debería saber el orden ni la localización de los fragmentos), cifrado y entre muchísimas mas fotos.

Además, el canal está permitido por un posible censor, por lo que podríamos compartir cualquier tipo de datos por esa vía, por muy fuerte que fuera la censura.

- Alguna desventaja tendrá, ¿no?

Si, por ejemplo que aumenta mucho el tráfico generado. Tenemos que enviar los datos y las fotos. Además, dependemos de un tercero, y al haber muchos fragmentos la disponibilidad puede caer en cuanto uno de ellos deje de estar disponible. Esto último se solucionaría copiando los datos en varios servicios diferentes para crear redundancia.

- Pero, ¿y si bloquean Imageshack?

No hay problema, ésta misma implementación de puede portar a cualquier servicio que no modifique los datos cuando se suben. Para imágenes tenemos muchos más servicios del estilo de Imageshack, Flickr, etc. Y no solo eso, también podemos usar como contenedor vídeo, texto (comentarios en foros, blogs, pastebin, etc), audio, etc ...

- No me gusta, la herramienta me resulta muy arcaica.

La herramienta pretende demostrar que la técnica es posible, usable y enseñar como funciona. Cualquiera es libre de hacer una herramienta de botón gordo, integrarlo con algún programa de compartición de ficheros, etc ...

Descargar SYND(E)

Fuente: SecuritybyDefault

No hay comentarios: