Steganografia în sistemul de fișiere

Bună, Habr.

Vreau să vă prezint un mic proiect de steganografie, realizat în timpul liber de la studii.

Am realizat un proiect pentru stocarea ascunsă a informației în sistemul de fișiere (în continuare FS).
). Acesta poate fi folosit pentru furtul de informații confidențiale în scopuri educaționale.

Steganografia în sistemul de fișiere

Ca mostră experimentală a fost aleasă o sistem de fișiere Linux destul de vechi ext2.

Implementarea

Considerații de implementare

Dacă analizăm bine standardul ext2, putem observa că în FS există așa-numitele Superbloche, care oferă informații de bază despre sistem. Ulterior, am găsit Bitmap-ul blocurilor și Tabelul Inode.Așa că mi-a venit imediat ideea de a înregistra informația în blocurile care sunt acum goale în FS. Acum trebuia să ne gândim la protecția împotriva programatorului înarmat cu un editor hexazecimal..

Dacă stocăm informația ascunsă fără criptare, chiar și având în vedere că este difuzată în FS, ea va ieși în evidență, mai ales dacă programatorul știe ce trebuie să caute. Din acest motiv, s-a decis să criptăm toate blocurile fișierului sursă. Am ales un cifru pe blocuri AES, dar, după cum înțelegeți, acest lucru nu este esențial.

Pentru a separa blocurile necesare de celelalte la citire, s-a decis să adăugăm un marker special la începutul fiecărui bloc. Acest marker era criptat în funcție de numărul blocului din fișierul sursă. Această șmecherie a permis nu doar găsirea blocurilor necesare, ci și recunoașterea ordinii corecte.

Principiul general de funcționare al sistemului.

Steganografia în sistemul de fișiere

Algoritmul de scriere

Pas cu pas:

  • Mai întâi, scrieți informații în sistemul de fișiere sursă;
  • Ștergeți aceste informații (nu neapărat toate);
  • Împărțiți fișierul care trebuie ascuns în blocuri de aceeași lungime, adăugând un marker;
  • Criptați aceste blocuri;
  • Introduceți blocurile criptate în blocurile goale din FS.

Pentru iubitorii de diagrame de flux

Mai jos este prezentată o diagramă de flux a algoritmului de scriere. Algoritmul primește la intrare patru fișiere:
-Imaginea sistemului de fișiere modificat;
-Fișierul destinat steganografiei;
-Fișierul cu cheia de criptare pentru AES;
-Fișierul cu markerul.
Steganografia în sistemul de fișiere

Merită menționat că acest algoritm are un dezavantaj: după ce un fișier a fost scris în FS, nu se poate nu se pot scrie alte informații în FS, deoarece orice informație nouă ar putea ajunge în acele blocuri pe care le-am rezervat pentru fișierul nostru steganografiat, dar asta deschide și posibilitatea de a „sterge rapid urmele”.

Dar este destul de evident cum poate fi corectat: este necesară rescrierea algoritmului de scriere a blocurilor în FS. Este o sarcină clară, dar incredibil de laborioasă.
Pentru Proof Of Concept nu am implementat asta.

Ca rezultat, vor apărea următoarele modificări în FS, așa arată FS-ul înainte de steganografie (un fișier audio a fost scris anterior).
Steganografia în sistemul de fișiere
Și iată cum arată FS-ul cu informațiile deja steganografiate.
Steganografia în sistemul de fișiere

Algoritmul de citire

Pas cu pas:

  • Cu cunoștința cheii și a modului de construirea markerelor, se pot genera primele N markere, cu garanția că N, înmulțit cu lungimea blocului sistemului de fișiere, este mai mare decât lungimea fișierului steganografiat;
  • Realizați căutarea blocurilor în FS, începând cu markerii;
  • Dezvăluiți blocurile obținute și separați markerii;
  • Adunați blocurile obținute în ordinea corectă și obțineți fișierul original.

Pentru iubitorii de diagrame de flux

Mai jos este prezentat un flux de lucru al algoritmului de scriere. Algoritmul primește ca intrare trei fișiere:
-Imaginea sistemului de fișiere;
-Fișierul cu cheia de criptare pentru AES;
-Fișierul cu markerul.
Steganografia în sistemul de fișiere

După rularea programului apare fișierul Read, care va fi fișierul extras din FS-ul steganografiat; dacă cheia sau markerul au fost specificate incorect, atunci fișierul Read va fi gol.
(pentru cei care apreciază estetică, se pot insera nu doar fișiere, ci și un "header", conținând metainformații: numele fișierului, permisiuni, timpul ultimei modificări etc.)

Automatizarea lansării

Pentru comoditate, au fost scrise scripturi bash care automatizează lansarea pe Linux (testat pe Ubuntu 16.04.3 LTS).
Să analizăm lansarea pas cu pas.
Scriere:

  1. sudo Copy_Flash.sh “DEVICE” — obținem imaginea FS din DEVICE (flash);
  2. .\/Write.sh “FILE” “KEY” “MARKER” – creăm un mediu virtual, descărcăm bibliotecile necesare și lansăm scriptul de scriere;
  3. sudo .\/Write_Flash.sh “DEVICE” – scriem FS-ul modificat înapoi pe DEVICE.

Citire:

  1. sudo Copy_Flash.sh “DEVICE” — obținem imaginea FS din DEVICE (flash);
  2. .\/Read.sh “KEY” ‘MARKER” — creăm un mediu virtual, descărcăm bibliotecile necesare și lansăm scriptul de citire;
  3. În directorul curent deschidem fișierul Read – acesta este informația steganografiată.

Concluzie

Această metodă de steganografie necesită, probabil, îmbunătățiri, teste suplimentare și extinderea la sisteme de fișiere mai populare, cum ar fi Fat32, NTFS și ext4.
Dar scopul acestei lucrări a fost de a arăta principiul prin care se poate realiza stocarea ascunsă a informațiilor în sistemul de fișiere.
Folosind astfel de algoritmi, informația poate fi stocată fără frică. Dacă se cunoaște cheia, un astfel de sistem poate fi spart nu printr-o încercare exhaustivă (ci printr-un algoritm destul de lung), dar fără cunoașterea cheii, acest sistem mi se pare absolut rezistent, totuși aceasta ar putea servi drept motiv pentru un articol separat.

Întregul cod este realizat în limbajul Python versiunea 3.5.2. Exemplul de lucru este prezentat pe canalul meu de youtube. Codul complet al proiectului este publicat pe github.
(Da, da, știu că pentru versiunea de producție trebuie scris în ceva „rapid”, de exemplu în C 😉 )
În această implementare, dimensiunea fișierului de intrare pentru steganografie nu trebuie să depășească 1000 kB.

Vreau să îmi exprim recunoștința utilizatorului PavelMSTU pentru sfaturile valoroase în planificarea cercetării și recomandările privind redactarea articolului.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster