Hola Habr.
M'agradaria presentar-vos un petit projecte
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.
Es va triar un Linux FS molt antic com a prototip
Implementació
Consideracions d'implementació
Si és bo "desentranyar" l'estàndard ext2, podeu substituir que a l'FS hi ha l'anomenat
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
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.
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.
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).
I així es veu el FS amb la informació ja comprimida.
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.
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:
- sudo Copy_Flash.sh "DEVICE" - obteniu la imatge FS de DEVICE (flash);
- ./Write.sh “FITXER” “CLEU” “MARKER”: creeu un entorn virtual, descarregueu les biblioteques necessàries i executeu l'script d'escriptura;
- sudo ./Write_Flash.sh "DEVICE": torneu a escriure l'FS canviat a DEVICE.
Lectura:
- sudo Copy_Flash.sh "DEVICE" - obteniu la imatge FS de DEVICE (flash);
- ./Read.sh “KEY” 'MARKER”: creeu un entorn virtual, descarregueu les biblioteques necessàries i executeu el salt per llegir;
- 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
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.
(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
Font: www.habr.com