Esteganografía del sistema de archivos

Hola Habr.

Me gustaría presentarles un pequeño proyecto sobre esteganografía, realizado en mi tiempo libre de estudio.

Hice un proyecto sobre el almacenamiento oculto de información en el sistema de archivos (más FS).
Esto se puede utilizar para robar información confidencial con fines educativos.

Esteganografía del sistema de archivos

Se eligió como prototipo un Linux FS muy antiguo ext2.

implementación

Consideraciones de implementación

Si es bueno "desentrañar" el estándar ext2, entonces puede reemplazarlo en el FS, existe el llamado supermanzanas, que proporciona información básica sobre el sistema. Después de que me encontraron Bloquear mapa de bits и Tabla de inodos. Casi de inmediato nació la idea de registrar información en bloques FS actualmente vacíos. Ahora valía la pena pensar en protegerse de un programador armado. editor hexadecimal.

Si almacena información oculta sin cifrar, incluso a pesar de que esté borrosa en el FS, seguirá siendo demasiado llamativa, especialmente si el programador sabe qué buscar. Por lo tanto, se decidió cifrar todos los bloques del archivo fuente. Elegí cifrado en bloque AES, pero como comprenderás, esto no es importante.

Para separar los bloques necesarios de todos los demás al leer, se decidió agregar un marcador especial a cada bloque al comienzo del bloque. Este token se cifró según el número de bloque en el archivo fuente. Este truco permitió inmediatamente no sólo encontrar los bloques necesarios, sino también reconocer su orden correcto.

Principio general de funcionamiento del sistema.

Esteganografía del sistema de archivos

Algoritmo de grabación

Los puntos:

  • Primero escriba cierta información en el sistema de archivos fuente;
  • Eliminar esta información (no necesariamente toda);
  • El archivo a ocultar se divide en bloques de igual longitud, añadiendo un marcador;
  • Cifre estos bloques;
  • Coloque bloques cifrados en bloques FS vacíos.

Para los amantes de los diagramas de bloques

A continuación se muestra un diagrama de bloques del algoritmo de grabación. El algoritmo recibe cuatro archivos como entrada:
-Imagen de un sistema de archivos modificable;
-Archivo sujeto a esteganografía;
-Archivo con clave de cifrado para AES;
-Lima con rotulador.
Esteganografía del sistema de archivos

Vale la pena señalar de inmediato que este algoritmo tiene un inconveniente: después de escribir el archivo en el FS, no debe escribir cualquier cosa nueva en el FS, ya que cualquier información nueva puede terminar en los bloques que hemos asignado a nuestro archivo comprimido, aunque esto también abre la posibilidad de “cubrir rápidamente nuestras huellas”.

Pero es bastante obvio cómo se puede solucionar esto: es necesario reescribir el algoritmo para escribir bloques en el FS. Esta es una tarea comprensible, pero que requiere mucho tiempo.
Para la prueba de concepto no implementé esto.

Como resultado, se realizarán los siguientes cambios en el FS; así es como se ve el FS antes de la esteganografía (previamente se grabó un archivo de audio).
Esteganografía del sistema de archivos
Y así es como se ve el FS con la información ya comprimida.
Esteganografía del sistema de archivos

Algoritmo de lectura

Los puntos:

  • Con conocimiento de la clave y el método de construcción de marcadores, componga los primeros N marcadores, con la garantía de que N multiplicado por la longitud del bloque del sistema de archivos sea mayor que la longitud del archivo comprimido;
  • Busque bloques en el FS que comiencen con marcadores;
  • Descifrar los bloques recibidos y separar los marcadores;
  • Recopile los bloques resultantes en el orden correcto y obtenga el archivo fuente.

Para los amantes de los diagramas de bloques

A continuación se muestra un diagrama de bloques del algoritmo de grabación. El algoritmo recibe tres archivos como entrada:
-Imagen del sistema de archivos;
-Archivo con clave de cifrado para AES;
-Lima con rotulador.
Esteganografía del sistema de archivos

Después de ejecutar el programa, aparece el archivo de lectura, que será el archivo extraído del sistema de archivos esteganografiado; si la clave o marcador se especificó incorrectamente, entonces el archivo de lectura estará vacío.
(Para los amantes de la belleza, pueden insertar no sólo el archivo, sino también un “encabezado” que contenga metainformación: nombre del archivo, derechos, hora de la última modificación, etc.)

Automatización de inicio

Para mayor comodidad, se escribieron scripts bash para automatizar el inicio en Linux (probado en Ubuntu 16.04.3 LTS).
Veamos el lanzamiento paso a paso.
Grabar

  1. sudo Copy_Flash.sh “DEVICE” - obtiene la imagen FS del DISPOSITIVO (flash);
  2. ./Write.sh “ARCHIVO” “CLAVE” “MARCADOR” – cree un entorno virtual, descargue las bibliotecas necesarias y ejecute el script de escritura;
  3. sudo ./Write_Flash.sh “DEVICE” – escribe el FS modificado nuevamente en DEVICE.

Lectura

  1. sudo Copy_Flash.sh “DEVICE” - obtiene la imagen FS del DISPOSITIVO (flash);
  2. ./Read.sh “KEY” 'MARKER”: cree un entorno virtual, descargue las bibliotecas necesarias y ejecute skipt para leer;
  3. En el directorio actual, abra el archivo Leer; esta es la información comprimida.

Conclusión

Este método de esteganografía probablemente necesite mejoras, pruebas adicionales y extensión a sistemas de archivos más populares, como Fat32, NTFS и ext4.
Pero el objetivo de este trabajo era mostrar el principio mediante el cual es posible realizar el almacenamiento oculto de información en un sistema de archivos.
Con la ayuda de tales algoritmos, puede almacenar información sin miedo, y si, si conoce la clave, es posible piratear dicho sistema no por fuerza bruta (sino mediante un algoritmo muy largo), entonces, sin conocer la clave, esto El sistema me parece absolutamente estable, sin embargo, esto puede servir como motivo para un artículo aparte.

Todo el código está implementado en Python versión 3.5.2. Ejemplo de trabajo presentado en mi canal de youtube. El código completo del proyecto está publicado en gitHub.
(Sí, sí, sé que para la versión de producción necesitas escribir algo “rápido”, por ejemplo C 😉)
En esta implementación, el tamaño del archivo de entrada para esteganografía no debe exceder los 1000 kB.

Quiero expresar mi agradecimiento al usuario. PavelMSTU por sus valiosos consejos en la planificación del estudio y recomendaciones sobre el diseño del artículo.

Fuente: habr.com

Añadir un comentario