miércoles, noviembre 02, 2016

Cloakify: Exfiltrar datos usando Pokemons, Emojis o StarTrek

En alguna ocasión hemos hablado de la prueba de Data Exfiltration que en un proceso de Ethical Hacking se debe realizar en algunas ocasiones. La tarea siempre es divertida, ya que te pones en el lugar un empleado o persona con acceso a la información privada e intentas crear un camino para saltarse los mecanismos de protección como pueden ser los sistemas de DLP (Data Loss Prevention), los servicios que usando Machine Learning analizan las actividades de usuario con las herramientas de Human Behavior Analytics o los mismos antimalware que vigilan el end-point.

Figura 1: Cloakify. "Exfiltrar datos usando Pokemos, Emojis o StarTrek"

Para muchos, es más divertido romper cristales que ponerlos, y en este caso se trata de romper cristales sin que nos vean. De todos modos, hoy en día, el atacante tendrá cierta parte de ventaja, ya que se disponen de muchos canales y formas de extraer información de una organización. Hoy hablaremos de Cloakify, una herramienta que todo pentester debe llevar en su mochila para este tipo de pruebas.

Figura 2: Cloakify en GitHub

La herramienta aporta una curiosa forma de cifrar y ocultar información para que analistas y sistemas de detección no lo vean como algo de interés. Además, cualquier puede generarse su payload, entendiendo payload como la forma para cifrar y descifrar. Una de las cosas curiosas de Cloakify es que te permite generar ficheros de texto con emojis, pokemons o ubicaciones de pokemons y códigos de StarTrek. Por supuesto, para poder sacar dicha información quizá debamos añadir alguna técnica como la encapsulación a través de DNS, utilizar un canal encubierto, como por ejemplo Gmail, o cualquier otro medio.

Punto de partida

Para el ejemplo de partida, queremos cifrar el fichero ideas de desarrollo.docx, para que pase desapercibido ante los ojos de otros usuarios. Para ello existen diversos ciphers, pero como dije antes, me llamó mucho la atención los emojis, los pokemons y StarTrek. En la imagen, se puede ver cómo se ha cifrado con los ciphers comentados anteriormente. El tamaño del fichero crece considerablemente, y deberá ir acompañado con un canal de filtrado de datos, como se comentó anteriormente.

Figura 3: Cifrado del fichero con emoji, Pokemon y StarTrek

Las posibilidades que Cloakify ofrece son bastantes, como se puede ver en la siguiente imagen. Además, se dispone de la posibilidad de crear nuestro propio cipher, incluso dotándolo de entropía. A continuación, mostramos los diferentes ciphers con los que se puede jugar.

Figura 4: Todos los ciphers disponibles en Cloakify

Podemos resumir que Cloakify es un conjunto de herramientas que proporcionan técnicas para evadir DLP/MLS, al analista, los controles de aplicaciones o la detección de AV. Todo está basado en cifrado utilizando listas. La herramienta puede convertir cualquier tipo de fichero, ejecutables, zip, imágenes, etcétera, en una lista de cadenas, difíciles de detectar o de imaginar qué son.

Cloakify: Acción!

Para llegar a cabo la transformación de los datos reales en una lista de strings, simplemente hay que ejecutar archivo, escrito en Python, cloakify.py. La sintaxis de ejecución es la siguiente:
cloakify.py [fichero a convertir] [cipher] > [fichero resultante]
Por ejemplo:
python cloakify.py ideas.docx ciphers/pokemonGo.ciph > pokemon.txt.
¿Cómo está funcionando Cloakify?

En primer lugar, codifica en Base64 el payload. Después, aplica el cipher para generar un listado de strings. Una vez, se extrae la información de dónde se requiera, utilizando el medio o vía que se quiera, se puede utilizar Decloakify para hacer el proceso inverso y obtener el fichero original.

Figura 5: fichero codificado como lista de pokemons

Como bien indican los desarrolladores de la herramienta, Cloakify no tiene un esquema seguro de cifrado, ya que es vulnerable a ataques de análisis de frecuencia (vease critografía y criptoanálisis al uso). Por esta razón, se recomienda utilizar noiseTools, es decir, herramientas que generen ruido, en este caso scripts que añadan entropía al proceso de cifrado. Para la generación de entropía Cloakify proporciona diferentes scripts:
• PrependID.py.

• PrependLatLonCoords.py.
• PrependTimestamps.py.
Cada uno añade información distinta y “pseudo-aleatoría” con el objetivo de mejorar la resistencia a los ataques para detectar y descifrar el mensaje. Para crear nuestro propio cipher debemos:
• Generar un listado de al menos 66 palabras únicas, pueden ser frases o símbolos.
• Generar el listado de forma aleatoria.
• Eliminar duplicados.
Figura 6: Listado de palabras para hacer un cipher

En la imagen superior vemos como creamos un fichero denominado Luca.ciph, con el que metemos nombres, frases, números, etcétera. Cuando utilizamos el cipher con Cloakify, obtenemos el fichero ideas.docx original en un listado de strings en un fichero de texto, con las palabras que hemos utilizado anteriormente para crear el cipher, tal y como se puede ver en la siguiente imagen.

Figura 7: Fichero cifrado con el cipher creado

Para generar la entropía utilizamos, en este caso, el script PrepentTimeStamps.py. Tal y como se puede ver en la imagen, se añade entropía de marcas de tiempo, aunque sean la misma palabra al final.

Figura 8: Generando entropia

Para volver a obtener el fichero original utilizamos Decloakify de la siguiente manera:
python decloakify [fichero cifrado] [cipher] > [nombre fichero descifrado]
El resultado es la obtención del mismo fichero que se cifró al principio. Lógicamente, el proceso de Decloakify, debería realizarse una vez se ha exfiltrado la información de la organización, en el modo auditoría o hacking ético.

Figura 9: Decodificación del fichero

Como se puede ver, esta herramienta tiene un uso sencillo y potente, y merece estar en la mochila de cara a un hacking ético. De todos modos, la suma de herramientas y técnicas será más eficiente, y podrá aportarnos un mayor valor en este tipo de pruebas, por lo que se recomienda la utilización de canales encubierto y ofuscación o cifrado mediante textos “sin valor” como emojis o nombres y ubicaciones de pokemons. Disfruta de tu exfiltración.

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

Entrada destacada

Infraestructuras Críticas y Sistemas Industriales: Auditorías de Seguridad y Fortificación de @0xWord

Desde hoy está disponible a la venta un nuevo libro de 0xWord centrado en la seguridad de los Sistemas Industriales y las Infraestructuras...

Entradas populares