Steganograafia failisüsteemis

Tere, Habr.

Tahaksin teile tutvustada väikest projekti, mis käsitleb steganograafiat, mille tegin oma õpingute kõrvalt.

Tegin projekti, mis tegeleb teabe salajase hoidmisega failisüsteemis (edaspidi FS).
). Seda saab kasutada konfidentsiaalse teabe varastamiseks hariduslikel eesmärkidel.

Steganograafia failisüsteemis

Demona valisin üsna vana Linuxi failisüsteemi ext2.

Rakendus

Rakenduse kaalutlused

Kui standardit ext2 korralikult analüüsida, selgub, et failisüsteemis on olemas nii nimetatud Superbloke, milles on esitatud põhiteave süsteemi kohta. Olen leidnud Bloki bitmapi ja Inode’i tabeli. Peaaegu kohe tekkis idee salvestada teavet hetkeseisuga tühjadesse failisüsteemi blokki. Nüüd oli vaja mõelda kaitsele programmeerija eest, kes on relvastatud hex-redaktoriga.

Kui peidetud teavet salvestada ilma krüpteerimiseta, siis isegi kui see on failisüsteemis hajutatud, on see ikkagi liiga silmatorkav, eriti kui programmeerija teab, mida otsida. Seetõttu otsustasin krüpteerida kõik algfaili blokid. Valisin plokkkrüpteeringu AES, kuid nagu te mõistate, pole see põhimõtteline.

Iga plokkide eristamiseks kõikidest teistest lugemise ajal otsustati igasse plokki lisada spetsiaalne markeerimismarker. See marker krüpteeriti sõltuvalt ploki numbrist algses failis. See trikk võimaldas mitte ainult vajalikke plokke leida, vaid ka nende õiget järjekorda teada.

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

Steganograafia failisüsteemis

Salvestamisalgoritm

Samm-sammult:

  • Esialgsesse failisüsteemi tuleb salvestada mingi teave;
  • Kustutada see teave (mitte tingimata kogu);
  • Fail, mida tuleb peita, jagada sama pikkusega plokkideks, lisades markeri;
  • Krüpteerida need plokid;
  • Paigutada krüpteeritud plokid tühjadesse plokkidesse FS-is.

Plokkdiagrammi armastajatele

Allpool on esitatud salvestamisalgoritmi plokkdiagramm. Algoritm saab sisendiks neli faili:
- Muudetava failisüsteemi pilt;
- Fail, mis tuleb steganograafia alla;
- AES krüpteerimisvõti sisaldav fail;
- Markerifail.
Steganograafia failisüsteemis

Tuleb kohe märkida, et sellel algoritmil on üks puudus: faili salvestamisel FS-i, ei tohi salvestada FS-i mis tahes uut, kuna iga uus teave võib sattuda neisse plokkidesse, mille oleme määranud meie steganograafilisele failile, kuigi see avab võimaluse „kiirete jälgede peitmiseks”.

Aga on üsna selge, kuidas seda parandada: tuleb ümber kirjutada plokkide salvestamise algoritm FS-is. See on arusaadav, kuid äärmiselt töömahukas ülesanne.
Proof Of Concept'i jaoks ma seda ei rakendanud.

Kokkuvõttes saavad FS-is järgmised muudatused, nii näeb FS välja enne steganograafiat (eelnevalt on salvestatud audifail).
Steganograafia failisüsteemis
Ja nii näeb FS välja juba steganograafilise teabega.
Steganograafia failisüsteemis

Lugemisalgoritm

Samm-sammult:

  • Teades võtit ja markerite ülesehituse viisi, koostada esimesed N markerit, tagades, et N, korrutatud failisüsteemi ploki pikkusega on suurem kui steganograafilise faili pikkus;
  • Teha otsing FS-is plokkide leidmiseks, mis algavad markeritest;
  • Dešifreerida saadud plokid ja eraldada markerid;
  • Koguda saadud plokid õiges järjekorras ja saada lähtetükk.

Plokkdiagrammi armastajatele

Allpool on esitatud algoritmi salvestamise vooskeem. Algoritm saab sisendina kolm faili:
-Failisüsteemi pilt;
- AES krüpteerimisvõti sisaldav fail;
- Markerifail.
Steganograafia failisüsteemis

Programmi töö lõpetamisel ilmub fail Read, mis on steganograafiliselt salvestatud fail. Kui võti või marker on valesti määratud, jääb fail Read tühjaks.
(ilusate elementide armastajatele võib mitte ainult faili, vaid ka "pealkirja" lisada, mis sisaldab metaandmeid: faili nimi, õigused, viimane muutmise aeg jne.)

Käivitamise automatiseerimine

Mugavuse huvides on kirjutatud bash skriptid, mis automatiseerivad käivitamist Linuxis (katsetatud Ubuntu 16.04.3 LTS-l).
Lähme käivitamist samm-sammult läbi.
Salvestamine:

  1. sudo Copy_Flash.sh “DEVICE” — saame FS pildi DEVICE'ist (mälupulk);
  2. ./Write.sh “FILE” “KEY” “MARKER” – loome virtuaalse keskkonna, laeme vajalikud teegid ja käivitame kirjutamisskripti;
  3. sudo ./Write_Flash.sh “DEVICE” – kirjutame muudetud FS uuesti DEVICE'isse.

Lugemine:

  1. sudo Copy_Flash.sh “DEVICE” — saame FS pildi DEVICE'ist (mälupulk);
  2. ./Read.sh “KEY” ‘MARKER” — loome virtuaalse keskkonna, laeme vajalikud teegid ja käivitame lugemisskripti;
  3. Avasime praeguses kataloogis faili Read – see on steganograafiline teave.

Kokkuvõte

Käesolev steganograafia meetod vajab tõenäoliselt täiustamist, täiendavat testimist ja laiemat rakendamist populaarsematele failisüsteemidele, nagu Fat32, NTFS ja ext4.
Käesoleva töö eesmärk oli näidata põhimõtet, mille abil on võimalik teavet varjatult salvestada failisüsteemis.
Sarnaste algoritmide abil on võimalik teavet ohutult salvestada. Kui võtme tundmise korral on sarnast süsteemi võimalik purustada, kasutades kuigi mitte täielikku proovimist, siis tundmatu võtmega paistab see süsteem olema täiesti vastupidav. See võib aga olla põhjuseks eraldi artikli kirjutamiseks.

Kogu kood on kirjutatud Python'i versioonis 3.5.2. Töö näide on esitatud minu YouTube'i kanalil. Projekti täielik kood on saadaval github.
(Jah-jah, ma tean, et tootmisversiooniks peaks kirjutama millegil 'kiiremal', näiteks C keeles 😉 )
Käesolevas teostuses ei tohi steganograafia sisendfaili suurus ületada 1000 kB.

Soovin tänada kasutajat PavelMSTU hindamatute soovituste eest uurimistöö planeerimisel ja artikli vormistamise osas.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster