Esteganografia en el sistema de fitxers

Hola Habr.

M'agradaria presentar-vos un petit projecte esteganografia, fet en el meu temps lliure d'estudiar.

Vaig fer un projecte sobre l'emmagatzematge ocult d'informació al sistema de fitxers (més FS).
Això es pot utilitzar per robar informació confidencial amb finalitats educatives.

Esteganografia en el sistema de fitxers

Es va triar un Linux FS molt antic com a prototip ext2.

Implementació

Consideracions d'implementació

Si és bo "desentranyar" l'estàndard ext2, podeu substituir que a l'FS hi ha l'anomenat Superilles, que proporciona informació bàsica sobre el sistema. Després de trobar-me Bloc de mapa de bits и Taula d'inodes. Gairebé immediatament, va néixer la idea d'enregistrar informació en blocs FS actualment buits. Ara valia la pena pensar en la protecció d'un programador armat editor hexadecimal.

Si emmagatzemeu informació oculta sense xifratge, fins i tot malgrat la seva borrosa a l'FS, encara serà massa visible, sobretot si el programador sap què ha de buscar. Per tant, es va decidir xifrar tots els blocs del fitxer font. Vaig triar el xifrat de blocs AES, però com enteneu, això no és important.

Per separar els blocs necessaris de tots els altres a l'hora de llegir, es va decidir afegir un marcador especial a cada bloc al començament del bloc. Aquest testimoni es va xifrar en funció del número de bloc del fitxer font. Aquest truc va permetre immediatament no només trobar els blocs necessaris, sinó també reconèixer el seu ordre correcte.

Principi general de funcionament del sistema.

Esteganografia en el sistema de fitxers

Algorisme de gravació

Els punts:

  • Primer escriu informació al sistema de fitxers font;
  • Eliminar aquesta informació (no necessàriament tota);
  • El fitxer a amagar es divideix en blocs d'igual longitud, afegint-hi un marcador;
  • Xifra aquests blocs;
  • Col·loqueu blocs xifrats en blocs FS buits.

Per als amants dels diagrames de blocs

A continuació es mostra un diagrama de blocs de l'algorisme de gravació. L'algorisme rep quatre fitxers com a entrada:
-Imatge d'un sistema de fitxers modificable;
-Expedient subjecte a esteganografia;
-Fitxer amb clau de xifratge per a AES;
-Arxiu amb marcador.
Esteganografia en el sistema de fitxers

Val la pena assenyalar de seguida que aquest algorisme té un inconvenient: després d'escriure el fitxer a l'FS, no pot escriure qualsevol cosa nova a l'FS, ja que qualsevol informació nova pot acabar als blocs que hem assignat al nostre fitxer comprimit, encara que això també obre la possibilitat de "cobrir ràpidament les nostres pistes".

Però és bastant obvi com es pot solucionar això: cal reescriure l'algorisme per escriure blocs a l'FS. Aquesta és una tasca comprensible, però increïblement llarga.
Per a Proof Of Consept no ho vaig implementar.

Com a resultat, es faran els canvis següents al FS; així és el que sembla el FS abans de l'esteganografia (un fitxer d'àudio s'ha gravat prèviament).
Esteganografia en el sistema de fitxers
I així es veu el FS amb la informació ja comprimida.
Esteganografia en el sistema de fitxers

Algorisme de lectura

Els punts:

  • Amb el coneixement de la clau i el mètode de construcció de marcadors, compondre els primers N marcadors, amb la garantia que N multiplicat per la longitud del bloc del sistema de fitxers és més gran que la longitud del fitxer comprimit;
  • Cerca blocs a l'FS començant amb marcadors;
  • Desxifrar els blocs rebuts i separar els marcadors;
  • Recolliu els blocs resultants en l'ordre correcte i obteniu el fitxer font.

Per als amants dels diagrames de blocs

A continuació es mostra un diagrama de blocs de l'algorisme de gravació. L'algorisme rep tres fitxers com a entrada:
-Imatge del sistema de fitxers;
-Fitxer amb clau de xifratge per a AES;
-Arxiu amb marcador.
Esteganografia en el sistema de fitxers

Un cop s'executa el programa, apareix el fitxer de lectura, que serà el fitxer extret del sistema de fitxers esteganografiat; si la clau o el marcador s'han especificat incorrectament, el fitxer de lectura estarà buit.
(Per als amants de la bellesa, podeu inserir no només el fitxer, sinó una "capçalera" que conté metainformació: nom del fitxer, drets, hora de darrera modificació, etc.)

Automatització d'arrencada

Per comoditat, es van escriure scripts bash per automatitzar el llançament a Linux (provat a Ubuntu 16.04.3 LTS).
Vegem el llançament pas a pas.
Rècord:

  1. sudo Copy_Flash.sh "DEVICE" - obteniu la imatge FS de DEVICE (flash);
  2. ./Write.sh “FITXER” “CLEU” “MARKER”: creeu un entorn virtual, descarregueu les biblioteques necessàries i executeu l'script d'escriptura;
  3. sudo ./Write_Flash.sh "DEVICE": torneu a escriure l'FS canviat a DEVICE.

Lectura:

  1. sudo Copy_Flash.sh "DEVICE" - obteniu la imatge FS de DEVICE (flash);
  2. ./Read.sh “KEY” 'MARKER”: creeu un entorn virtual, descarregueu les biblioteques necessàries i executeu el salt per llegir;
  3. Al directori actual, obriu el fitxer de lectura: aquesta és la informació comprimida.

Conclusió

Aquest mètode d'esteganografia probablement necessita millores, proves addicionals i extensió a sistemes de fitxers més populars, com ara Greix 32, NTFS и ext4.
Però l'objectiu d'aquest treball era mostrar el principi pel qual és possible dur a terme l'emmagatzematge ocult d'informació al sistema de fitxers.
Amb l'ajuda d'aquests algorismes, podeu emmagatzemar informació sense por, i si, si coneixeu la clau, és possible piratejar aquest sistema no per força bruta (sinò per un algorisme molt llarg), aleshores sense conèixer la clau, això El sistema em sembla absolutament estable, però això pot servir com a motiu per a un article separat.

Tot el codi està implementat a la versió 3.5.2 de Python. Exemple de treball presentat al meu canal de youtube. El codi complet del projecte està publicat a GitHub.
(Sí, sí, sé que per a la versió de producció cal escriure alguna cosa "ràpid", per exemple C 😉)
En aquesta implementació, la mida del fitxer d'entrada per a l'esteganografia no hauria de superar els 1000 kB.

Vull expressar el meu agraïment a l'usuari PavelMSTU per a un valuós consell en la planificació de l'estudi i recomanacions sobre el disseny de l'article.

Font: www.habr.com

Afegeix comentari