Esteganografía do sistema de ficheiros

Ola Habr.

Gustaríame presentarvos un pequeno proxecto sobre esteganografía, feita no meu tempo libre de estudar.

Fixen un proxecto sobre o almacenamento oculto de información no sistema de ficheiros (máis FS).
Isto pódese usar para roubar información confidencial con fins educativos.

Esteganografía do sistema de ficheiros

Escolleuse un Linux FS moi antigo como prototipo ext2.

Implantación

Consideracións de implantación

Se é bo "desentrañar" o estándar ext2, pode substituír que no FS hai un chamado Supermanzanas, que proporciona información básica sobre o sistema. Despois de que me atoparan Bloquear mapa de bits и Táboa de inodos. Case inmediatamente, naceu a idea de gravar información en bloques FS baleiros actualmente. Agora pagaba a pena pensar na protección dun programador armado editor hexadecimal.

Se almacenas información oculta sen cifrado, aínda que sexa borrosa no FS, aínda será demasiado visible, especialmente se o programador sabe que buscar. Polo tanto, decidiuse cifrar todos os bloques do ficheiro fonte. Elixín o cifrado de bloques AES, pero como entendes, isto non é importante.

Para separar os bloques necesarios de todos os demais ao ler, decidiuse engadir un marcador especial a cada bloque ao comezo do bloque. Este token foi cifrado dependendo do número de bloque no ficheiro de orixe. Este truco permitiu inmediatamente non só atopar os bloques necesarios, senón tamén recoñecer a súa orde correcta.

Principio xeral de funcionamento do sistema.

Esteganografía do sistema de ficheiros

Algoritmo de gravación

Os puntos:

  • Primeiro escribe algunha información no sistema de ficheiros fonte;
  • Elimina esta información (non necesariamente toda);
  • O ficheiro que se vai ocultar divídese en bloques de igual lonxitude, engadindo un marcador;
  • Cifra estes bloques;
  • Coloque bloques cifrados en bloques FS baleiros.

Para os amantes dos diagramas de bloques

A continuación móstrase un diagrama de bloques do algoritmo de gravación. O algoritmo recibe catro ficheiros como entrada:
-Imaxe dun sistema de ficheiros modificable;
-Expediente suxeito a esteganografía;
-Arquivo con clave de cifrado para AES;
-Arquivo con marcador.
Esteganografía do sistema de ficheiros

Paga a pena notar de inmediato que este algoritmo ten un inconveniente: despois de escribir o ficheiro no FS, non pode escribir calquera cousa nova no FS, xa que calquera información nova pode acabar nos bloques que asignamos ao noso ficheiro comprimido, aínda que isto tamén abre a posibilidade de "cubrir rapidamente as nosas pistas".

Pero é bastante obvio como se pode solucionar isto: é necesario reescribir o algoritmo para escribir bloques no FS. Esta é unha tarefa comprensible, pero que leva moito tempo.
Para Proof Of Consept non implementei isto.

Como resultado, faranse os seguintes cambios no FS; este é o aspecto do FS antes da esteganografía (gravouse previamente un ficheiro de audio).
Esteganografía do sistema de ficheiros
E así se ve o FS coa información xa comprimida.
Esteganografía do sistema de ficheiros

Algoritmo de lectura

Os puntos:

  • Con coñecemento da clave e do método de construción de marcadores, compón os primeiros N marcadores, coa garantía de que N multiplicado pola lonxitude do bloque do sistema de ficheiros é maior que a lonxitude do ficheiro comprimido;
  • Busca bloques no FS comezando con marcadores;
  • Descifra os bloques recibidos e separa os marcadores;
  • Recolle os bloques resultantes na orde correcta e obtén o ficheiro fonte.

Para os amantes dos diagramas de bloques

A continuación móstrase un diagrama de bloques do algoritmo de gravación. O algoritmo recibe tres ficheiros como entrada:
-Imaxe do sistema de ficheiros;
-Arquivo con clave de cifrado para AES;
-Arquivo con marcador.
Esteganografía do sistema de ficheiros

Despois de que se execute o programa, aparece o ficheiro de lectura, que será o ficheiro extraído do sistema de ficheiros esteganografado; se a clave ou o marcador se especificou incorrectamente, o ficheiro de lectura estará baleiro.
(Para os amantes da beleza, pode inserir non só o ficheiro, senón un "cabeceiro" que contén metainformación: nome do ficheiro, dereitos, hora da última modificación, etc.)

Automatización de arranque

Por comodidade, escribíronse scripts bash para automatizar o lanzamento en Linux (probado en Ubuntu 16.04.3 LTS).
Vexamos o lanzamento paso a paso.
Rexistro:

  1. sudo Copy_Flash.sh "DEVICE" - obtén a imaxe FS de DEVICE (flash);
  2. ./Write.sh “ARQUIVO” “CLAVE” “MARCADOR” – crea un ambiente virtual, descarga as bibliotecas necesarias e executa o script de escritura;
  3. sudo ./Write_Flash.sh "DEVICE": escriba o FS modificado de novo en DEVICE.

Lectura:

  1. sudo Copy_Flash.sh "DEVICE" - obtén a imaxe FS de DEVICE (flash);
  2. ./Read.sh “KEY” 'MARKER” - crea un ambiente virtual, descarga as bibliotecas necesarias e executa o salto para ler;
  3. No directorio actual, abra o ficheiro Read - esta é a información comprimida.

Conclusión

Este método de esteganografía probablemente necesite melloras, probas adicionais e extensión a sistemas de ficheiros máis populares, como Graxa32, NTFS и ext4.
Pero o propósito deste traballo era mostrar o principio polo cal é posible levar a cabo o almacenamento oculto de información no sistema de ficheiros.
Coa axuda deste tipo de algoritmos, pode almacenar información sen medo, e se, se coñece a clave, é posible piratear un sistema deste tipo non por forza bruta (senón por un algoritmo moi longo), entón sen coñecer a clave, este paréceme absolutamente estable, pero isto pode servir como motivo para un artigo separado.

Todo o código está implementado na versión 3.5.2 de Python. Exemplo de traballo presentado na miña canle de youtube. O código completo do proxecto está publicado en GitHub.
(Si, si, sei que para a versión de produción hai que escribir algo "rápido", por exemplo C 😉)
Nesta implementación, o tamaño do ficheiro de entrada para a esteganografía non debe exceder os 1000 kB.

Quero expresar o meu agradecemento ao usuario PavelMSTU para un valioso consello na planificación do estudo e recomendacións sobre o deseño do artigo.

Fonte: www.habr.com

Engadir un comentario