Steganografia sistemului de fișiere

Hei Habr.

Aș dori să vă prezint un mic proiect despre steganografie, făcut în timpul meu liber de la studii.

Am realizat un proiect privind stocarea ascunsă a informațiilor în sistemul de fișiere (mai departe FS).
Acesta poate fi folosit pentru a fura informații confidențiale în scopuri educaționale.

Steganografia sistemului de fișiere

Un Linux FS foarte vechi a fost ales ca prototip ext2.

punerea în aplicare

Considerații de implementare

Dacă este bine să „descălci” standardul ext2, atunci poți înlocui că în FS există așa-numitul Superblocuri, care oferă informații de bază despre sistem. După ce am fost găsit Blocați Bitmap и Tabelul de inoduri. Aproape imediat, s-a născut ideea de a înregistra informații în blocuri FS goale în prezent. Acum a meritat să ne gândim la protecția de la un programator înarmat editor hex.

Dacă stocați informații ascunse fără criptare, atunci, chiar și în ciuda neclarității sale în FS, acestea vor fi în continuare prea vizibile, mai ales dacă programatorul știe ce să caute. Prin urmare, s-a decis criptarea tuturor blocurilor din fișierul sursă. Am ales cifrul bloc AES, dar după cum înțelegeți, acest lucru nu este important.

Pentru a separa blocurile necesare de toate celelalte la citire, s-a decis să se adauge un marker special fiecărui bloc la începutul blocului. Acest token a fost criptat în funcție de numărul blocului din fișierul sursă. Acest truc a făcut imediat posibilă nu numai găsirea blocurilor necesare, ci și recunoașterea ordinii corecte a acestora.

Principiul general de funcționare al sistemului.

Steganografia sistemului de fișiere

Algoritm de înregistrare

Punctele:

  • Mai întâi scrieți câteva informații în sistemul de fișiere sursă;
  • Ștergeți aceste informații (nu neapărat toate);
  • Fișierul de ascuns este împărțit în blocuri de lungime egală, adăugând un marker;
  • Criptați aceste blocuri;
  • Plasați blocuri criptate în blocuri FS goale.

Pentru iubitorii de diagrame bloc

Mai jos este o diagramă bloc a algoritmului de înregistrare. Algoritmul primește patru fișiere ca intrare:
-Imaginea unui sistem de fișiere modificabil;
-Dosar supus steganografiei;
-Fișier cu cheie de criptare pentru AES;
-Fișier cu marker.
Steganografia sistemului de fișiere

Merită remarcat imediat că acest algoritm are un dezavantaj: după ce ați scris fișierul în FS, nu poate scrieți ceva nou în FS, deoarece orice informație nouă poate ajunge în blocurile pe care le-am alocat fișierului nostru arhivat, deși acest lucru deschide, de asemenea, posibilitatea de a „acoperi rapid urmele noastre”.

Dar este destul de evident cum poate fi remediat acest lucru: este necesar să rescrieți algoritmul pentru scrierea blocurilor în FS. Aceasta este o sarcină de înțeles, dar incredibil de consumatoare de timp.
Pentru Proof Of Consept nu am implementat acest lucru.

Ca rezultat, următoarele modificări vor fi aduse FS; așa arată FS înainte de steganografie (un fișier audio a fost înregistrat anterior).
Steganografia sistemului de fișiere
Și așa arată FS cu informațiile deja arhivate.
Steganografia sistemului de fișiere

Algoritm de citire

Punctele:

  • Cu cunoștințele cheii și a metodei de construire a markerilor, compuneți primii N markeri, cu garanția că N înmulțit cu lungimea blocului sistemului de fișiere este mai mare decât lungimea fișierului zip;
  • Căutați blocuri în FS începând cu markeri;
  • Descifrați blocurile primite și separați marcajele;
  • Colectați blocurile rezultate în ordinea corectă și obțineți fișierul sursă.

Pentru iubitorii de diagrame bloc

Mai jos este o diagramă bloc a algoritmului de înregistrare. Algoritmul primește trei fișiere ca intrare:
-Imaginea sistemului de fișiere;
-Fișier cu cheie de criptare pentru AES;
-Fișier cu marker.
Steganografia sistemului de fișiere

După rularea programului, apare fișierul Citire, care va fi fișierul extras din sistemul de fișiere steganograf; dacă cheia sau marcatorul a fost specificat incorect, atunci fișierul Citire va fi gol.
(pentru iubitorii de frumos, puteți introduce nu numai fișierul, ci și un „antet” care conține metainformații: numele fișierului, drepturile, ora ultimei modificări etc.)

Automatizarea pornirii

Pentru comoditate, scripturile bash au fost scrise pentru a automatiza lansarea pe Linux (testat pe Ubuntu 16.04.3 LTS).
Să ne uităm la lansare pas cu pas.
înregistrare:

  1. sudo Copy_Flash.sh „DEVICE” - obțineți imaginea FS de la DEVICE (flash);
  2. ./Write.sh „FIȘIER” „CHEIE” „MARKER” – creați un mediu virtual, descărcați bibliotecile necesare și rulați scriptul de scriere;
  3. sudo ./Write_Flash.sh „DEVICE” – scrieți din nou FS modificat în DEVICE.

Citind:

  1. sudo Copy_Flash.sh „DEVICE” - obțineți imaginea FS de la DEVICE (flash);
  2. ./Read.sh „KEY” „MARKER” - creați un mediu virtual, descărcați bibliotecile necesare și rulați skipt pentru citire;
  3. În directorul curent, deschideți fișierul Citire - acestea sunt informațiile arhivate.

Concluzie

Această metodă de steganografie necesită probabil îmbunătățiri, testare suplimentară și extindere la sisteme de fișiere mai populare, cum ar fi Fat32, NTFS и ext4.
Dar scopul acestei lucrări a fost de a arăta principiul prin care este posibilă stocarea ascunsă a informațiilor în sistemul de fișiere.
Cu ajutorul unor astfel de algoritmi, puteți stoca informații fără teamă și, dacă, dacă cunoașteți cheia, este posibil să piratați un astfel de sistem nu prin forță brută (ci printr-un algoritm foarte lung), atunci fără a cunoaște cheia, aceasta sistemul mi se pare absolut stabil, cu toate acestea, acest lucru poate servi drept motiv pentru un articol separat.

Tot codul este implementat în versiunea Python 3.5.2. Exemplu de lucru prezentat pe canalul meu de youtube. Codul complet al proiectului este postat pe github.
(Da, da, știu că pentru versiunea de producție trebuie să scrieți ceva „rapid”, de exemplu 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 față de utilizator PavelMSTU pentru sfaturi valoroase în planificarea studiului și recomandări privind designul articolului.

Sursa: www.habr.com

Adauga un comentariu