Steganograafia failisüsteemis

Tere, Habr.

Soovin tutvustada teile väikest projekti steganograafiast, mis on tehtud vabal ajal õppimisest.

Tegin projekti info peitmise kohta failisüsteemis (edaspidi FS).
See võib olla rakendatav konfidentsiaalse info varastamiseks hariduslikel eesmärkidel.

Steganograafia failisüsteemis

Katseseadmeks valiti päris vana Linuxi FS ext2.

Rakendamine

Rakendamise kaalutlused

Kui korralikult "peenestada" standard ext2, siis saab asendada niiöelda Superblockid, kus on antud põhiteave süsteemi kohta. Minu poolt leiti Ploki Bitmaps ja Inode'i tabel.. Peaaegu kohe sündis idee salvestada teavet FS-i hetkel tühjadesse plokkidesse. Nüüd tuli välja mõelda kaitse programmeerija eest, relvastatud hex-redaktoriga.

Kui hoida peidetud teavet ilma krüpteerimiseta, siis isegi hoolimata selle hajutatusest FS-is, jääb see ikkagi liiga silmatorkavaks, eriti kui programmeerija teab, mida otsida. Seetõttu otsustati krüpteerida kõik algse faili plokid. Valisin plokkkrüpteerimise AES, kuid nagu te mõistate, ei ole see põhimõtteline.

Kasutades plokkide eristamiseks lugemise ajal, otsustati iga ploki algusesse lisada spetsiaalne märk. See märk krüpteeriti sõltuvalt ploki numbrist algses failis. Selline nipp võimaldas mitte ainult vajalikku plokki leida, vaid ka tuvastada nende õige järjekord.

Süsteemi töö üldpõhimõte.

Steganograafia failisüsteemis

Salvestamise algoritm

Punktide kaupa:

  • Esmalt salvestage algsesse failisüsteemi mingi teave;
  • Kustutage see teave (mitte tingimata kogu);
  • Fail peitmiseks jagada plokkideks, millel on sama pikkus, lisades märgi;
  • Krüpteerida need plokid;
  • Paigutada krüpteeritud plokid FS-i tühjadesse plokkidesse.

Plokkdiagrammide armastajatele

Allpool on esitatud salvestamise algoritmi plokkdiagramm. Algoritm saab neli faili sisendiks:
- Muudetud failisüsteemi pilt;
- Fail, mis läheb steganograafia alla;
- AES-ks krüpteerimise võti;
- Märgiga fail.
Steganograafia failisüsteemis

Tasub märkida, et sellel algoritmil on üks puudus: pärast faili salvestamist FS-i, sisestada URL-i (see ei ole kunagi töötanud, kuid sisestusala lubas URL-i määrata, mis segas kasutajaid). salvestada midagi uut failisüsteemi, kuna iga uus teave võib sattuda nendesse plokkidesse, mis me oleme määranud meie steganograafilisele failile, tõsi, see avab võimaluse "kiireks jälgede peitmiseks".

Aga on üsna selge, kuidas seda parandada: on vajalik failisüsteemi plokkide kirjutamise algoritmi ümberkirjutamine. See on arusaadav, kuid erakordselt töömahukas ülesanne.
Proof Of Concept'i jaoks ei ole ma seda rakendanud.

Tulemusena saab olema järgmised muutused failisüsteemis, nii näeb failisüsteem välja enne steganograafiat (enne on salvestatud helifail).
Steganograafia failisüsteemis
Ja nii näeb failisüsteem välja koos juba steganograafilise teabega.
Steganograafia failisüsteemis

Lugemise algoritm

Punktide kaupa:

  • Teades võtit ja markerite koostamise meetodit, koostada esimesed N markereid, tagades et N, korrutatud failisüsteemi ploki pikkusega, on suurem steganograafilise faili pikkusest;
  • Otsida failisüsteemist plokke, mis algavad markeritest;
  • Dekodeerida saadud plokid ja eraldada markerid;
  • Koguda saadud plokid õiges järjestuses ja saada algne fail.

Plokkdiagrammide armastajatele

Allpool on esitatud algoritmi kirjutamise vooskeem. Algoritmi sisendiks on kolm faili:
-Failisüsteemi image;
- AES-ks krüpteerimise võti;
- Märgiga fail.
Steganograafia failisüsteemis

Pärast programmi töötamist ilmub fail Read, mis on steganograafilisest failisüsteemist ekstraheeritud fail; kui võti või marker oli valesti määratud, on fail Read tühi.
(ilusate asjade armastajatele on võimalik lisada mitte ainult faili, vaid ka "päist", mis sisaldab metaandmeid: faili nimi, õigused, viimase muutmise aeg jne.)

Käivitamise automatiseerimine

Mugavuse huvides on kirjutatud bash skriptid, mis automatiseerivad käivitamise Linuxis (katsetatud Ubuntu 16.04.3 LTS peal).
Analüüsime käivitamist samm-sammult.
Salvestamine:

  1. sudo Copy_Flash.sh "DEVICE" — saame failisüsteemi pildi DEVICE'ist (mälupulk);
  2. .\/Write.sh "FILE" "KEY" "MARKER" – loome virtuaalse keskkonna, allalaadime vajalikud raamatukogud ja käivitame kirjutamis skripti;
  3. sudo .\/Write_Flash.sh "DEVICE" – salvestame muudetud failisüsteemi uuesti DEVICE'ile.

Lugemine:

  1. sudo Copy_Flash.sh "DEVICE" — saame failisüsteemi pildi DEVICE'ist (mälupulk);
  2. .\/Read.sh "KEY" 'MARKER' — loome virtuaalse keskkonna, allalaadime vajalikud raamatukogud ja käivitame lugemis-skripti;
  3. Avame praeguses kataloogis faili Read – see on steganograafiline teave.

Kokkuvõte

See steganograafia meetod vajab tõenäoliselt täiendavat töötlemist, testimist ja laiemat rakendamist populaarsematele failisüsteemidele, nagu Fat32, NTFS ja ext4.
Käesoleva töö eesmärgiks oli näidata põhimõtet, mille abil saab teostada peidetud teabe salvestamist failisüsteemis.
Sarnaste algoritmide abil on võimalik teavet ohutult salvestada. Kui süsteemi, mille puhul on teada võti, saab murda, kuigi see nõuab pikka algoritmi, siis ilma võtmeta tundub see süsteem mulle täiesti kindel. Sellegipoolest võib see olla põhjus eraldi artikli jaoks.

Kogu kood on kirjutatud Python 3.5.2 keeles. Töö näide on esitatud minu YouTube kanalis. Projekti täiskood on saadaval github.
(Jah, ma tean, et tootmisversiooni jaoks tuleb kirjutada millegi „kiirema” peale, näiteks C keeles 😉 )
Käesolevas teostuses ei tohi steganograafia sisendfaili suurus ületada 1000 kB.

Soovin tänada kasutajat PavelMSTU kasulike nõuannete eest uurimistöö planeerimisel ja artikli vormimise kohta.

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster